Closed tanacchi closed 6 years ago
思い出したけど amcl はLaserScan を読むから自己位置推定は2次元データに頼るしか無いけど constmap 生成は PointCloud2 も使えるから障害物回避は3次元データが使えるな
mcl_3dl という 3D データを用いた自己位置推定をしてくれる パッケージがあることが判明したので amcl での自律移動が完成したら挑戦してみたいと思います。 Cartographer を研究した甲斐がココで出るかもしれない
とりあえず amcl がまともに動いていないのでそこから
amcl 解決しました。
costmap の方は obstacle layer がうまく反映されていない様子
local_costmap が反映されるようになりました。 planning もうまく行ってるみたいです。
こんな感じの WARN が最初から吐かれ続けてて、途中で自己姿勢が破綻して死ぬ
[ WARN] [1536978662.922726679, 1300.000000000]: Costmap2DROS transform timeout. Current time: 1300.0000, global_pose stamp: 1299.6100, tolerance: 0.3000 [ WARN] [1536978662.922797335, 1300.000000000]: Could not get robot pose, cancelling reconfiguration
move_base が odom を読めていなかったのでリマップしました21b139 navigation 中に自己位置が発散するのは変わりないですが、 自力で復帰してくれるようになりました。
自己位置が発散するときに出されていたメッセージ↓
[ WARN] [1536980660.581022365, 1330.030000000]: Unable to get starting pose of robot, unable to create global plan [ WARN] [1536980660.669485799, 1330.110000000]: Map update loop missed its desired rate of 4.0000Hz... the loop actually took 0.2700 seconds [ WARN] [1536980660.675607970, 1330.120000000]: Control loop missed its desired rate of 10.0000Hz... the loop actually took 0.3300 seconds [ WARN] [1536980661.549016316, 1330.280000000]: Unable to get starting pose of robot, unable to create global plan [ WARN] [1536980661.717854315, 1330.450000000]: Control loop missed its desired rate of 10.0000Hz... the loop actually took 0.3300 seconds
とりあえず WARN が吐かれている部分を1つずつ潰していこうかと思います
gazobo 上のロボットモデルに合わせて footprint, obstacle_range, raytrace_range を再調整したら 発散も殆ど無くうまいこと自律移動できるようになりました。
障害物ギリギリのところを攻めていってるのでもうすこし余裕を持たせたい
上の方で言っていた
WARN が吐かれる問題は解決できました。
( transform_tolerance
パラメータの位置が間違っていました。。。)
navigation 精度はかなり向上し、多少の障害物の追加には対応できる程度になりました。
しかしまだ navigation 中にいろいろ言われますねえ
[ WARN] [1536994673.061862824, 1308.860000000]: Control loop missed its desired rate of 10.0000Hz... the loop actually took 0.3400 seconds [ WARN] [1536994674.169948289, 1309.280000000]: Map update loop missed its desired rate of 4.0000Hz... the loop actually took 0.2900 seconds [ WARN] [1536994674.173181728, 1309.280000000]: Control loop missed its desired rate of 10.0000Hz... the loop actually took 0.4200 seconds [ERROR] [1536994675.589021925, 1309.780000000]: Extrapolation Error: Lookup would require extrapolation into the future. Requested time 1309.280000000 but the latest data is at time 1308.970000000, when looking up transform from frame [odom] to frame [map] [ERROR] [1536994675.591052334, 1309.790000000]: Global Frame: odom Plan Frame size 306: map [ WARN] [1536994675.591398551, 1309.790000000]: Could not transform the global plan to the frame of the controller
Global Planner の設定を追加すると WARN が激減しました。
[ WARN] [1537075729.544982814, 1399.790000000]: Map update loop missed its desired rate of 4.0000Hz... the loop actually took 0.2900 seconds [ WARN] [1537075729.546536883, 1399.800000000]: Control loop missed its desired rate of 10.0000Hz... the loop actually took 0.3400 seconds
残りはこのくらいか
壁のギリギリをすり抜けようとして段差に引っかかって死んでるので対処しましょう
上の WARN については シミュレータ動かしながらだし仕方ないということで妥協しようかな。。
そもそも planner 関連のパラメータファイルが読まれていない説が浮上した
読み込めていることが確認できました。
次にmcl_3dl の導入にも挑戦してみようかと思います
amcl での自己位置推定&自律移動はほぼ完成したので閉じます
後輩たちへ
Navigation Stack の全貌を理解した上で頑張ってもらいところだけど 時間がないので最悪パラメータ調整のハウツーだけで、いいです、今回は。
作業内容
gazebo 上で 「goal に対し安定した navigation ができる」ことを目標とします。
シミュレーション環境を立ち上げる
roslaunch fifth_robot_description navigation.launch
rviz 上で
2D Nav Goal
をマップ上に置き、動作を観察するシミュレーション環境をキルする
fifth_robot_description 内の
config/navigation/
ディレクトリ以下にあるパラメータファイル群をいじる1 ~ 4 を繰り返す
変化があったら、その都度コミットし、 変化の詳細を書くこと
パラメータ調整のための参考資料
amcl
ROSのナビゲーションamclについて理解を深めてみる 公式ドキュメント
move_base
ROSのナビゲーションmove_baseについて理解を深めてみる ROS move baseでdwa local plannerを使ってみる ROS Navigation Tuning Guide 公式ドキュメント
gmapping
gmapping 公式ドキュメント
理解のための参考資料
Navigation Stack を理解する ←おすすめ ROSの活用による屋外の歩行者空間に適応した自律移動ロボットの開発 navigationスタックを理解できそう CIR-KIT-withB 5号機ドキュメント2016 navigation 公式ドキュメント amcl 公式ドキュメント move_base 公式ドキュメント Setup and Configuration of the Navigation Stack on a Robot costmap_2d 公式ドキュメント Configuring Layered Costmaps costmap_2d staticmap costmap_2d obstacles base_local_planner 公式ドキュメント navigationTroubleshooting
ちなみにCartographer の時もそうだったけど これらは全てこれまでに自分が一通り読んで 再度読むべきと思ってブックマークに登録してたものです