navigation (move_base) でロボットが一時停止を繰り返す
navigation (move_base) を動かしていると、設定速度を上げるとロボットが一時停止→移動をこまめに繰り返すようになった(低速のときは問題なかった)。
そのときに出力されていたエラーが以下のもの。
[ERROR] [1609950201.266020807]: Extrapolation Error: Lookup would require extrapolation into the future. Requested time 1609950201.261970043 but the latest data is at time 1609950201.165888008, when looking up transform from frame [odom] to frame [map]
どうやらtfの[map]→[odom]の更新したときのタイムスタンプがおかしいらしい。
原因
navigationでは[map]→[odom]のtfはamclで更新している。
調べてみると、やはりamclの方に問題があったようだ。
速度を上げると(位置の分散が大きくなるため)amclのパーティクル数が増え、処理時間が増えたことでタイムスタンプの更新が遅くなり、その結果としてタイムスタンプが遅れてしまったらしい。
対策
amclのパラメータである"max_particles"を下げることで解決できる(amcl.launchを使っている場合はその中にmax_particlesが記載されているあはずです)。
私は"min_particles"を500、"max_particles"を600程度にすることで一時停止することなく移動できるようになった。
なお、もし低速でも同じエラーが出る場合は"min_particles"の設定値も下げると解決できる可能性がある。
※ min_particlesとmax_particlesはモンテカルロフィルタの粒子数です。これを減らすと位置推定の精度やロバスト性が下がる可能性があるため、下げすぎないことをおすすめします。
Author And Source
この問題について(navigation (move_base) でロボットが一時停止を繰り返す), 我々は、より多くの情報をここで見つけました https://qiita.com/ReoNagai/items/101398b4579644fa97be著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .