目次
- 導入
- move_base (ナビゲーション)
- ROSで遊んでみる
- ソフトウェア構成をみる
- amcl (自己位置推定)
- ROSで遊んでみる ← いまココ
- ソフトウェア構成をみる
- 原理をみる (準備編)
- 原理をみる (応用編)
- gmapping (地図生成)
- ROSで遊んでみる
- ソフトウェア構成をみる
- 原理をみる(応用編)
- 原理をみる(準備編 その1)
- 原理をみる(準備編 その2)
はじめに
本節ではNavigation Stack の子分的存在の一つである,amcl について記述します.子分だからといって,技術的に劣っているとかそういうことではありません.move_baseという頭からみたらサポート役という位置づけであって,こちらも技巧的に組まれています.
やりたいことは,自己位置推定です.スリップ等でずれまくってしまうオドメトリ情報を,地図とセンサ情報を駆使して補正しようという発想です.
さて,ソフトウェア構成内の位置づけとしては,下記の図に示すとおりです.
環境
- OS: Ubuntu 14.04
- ROS: Indigo
- モデル:Husky
- パッケージ:husky_navigation
- チュートリアル:Husky AMCL Demo
Husky AMCL Demo について
amcl を使った自己位置推定を体感します.ただし,地図は既に作成されたものを使用しています.
ROSで遊んでみる
例によって,遊んでみましょう.
インストール
Navigation Stack を理解する - 2.1 move_base: ROSで遊んでみる でインストールしたパッケージで十分です.
各種launch ファイルの起動
i. Husky シミュレータの起動(gazebo)
$ roslaunch husky_gazebo husky_playpen.launch
ii. ビジュアライザの起動(rviz)
$ roslaunch husky_viz view_robot.launch
今回は地図を使いますので,ワールド座標系の原点は /map フレームとしておきます.初期状態では,/map フレームと /odom フレームと /base_link フレームは一致しています.
iii. move_base の起動
$ roslaunch husky_navigation amcl_demo.launch
これで,自己位置推定付きでナビゲーションが可能な状態となります.
自己位置推定を体感する
Navigation Stack を理解する - 2.1 move_base: ROSで遊んでみる と同じ要領で目標を設定すれば,動きます.しばらく遊んでいると,いくつか違いに気がつきます.
大域的コストマップが地図全体に割り当てられる
2.1 move_base: ソフトウェア構成をみるでは部分的にしか割あたらなかった大域的コストマップが,地図全体に行き渡っています.いい眺め(?)です.
/odom フレームと/map の補正が確認できる
オドメトリの原点である/odom フレームが,ワールド座標系の原点である/map フレームからずれた位置に表示されています.これは,move_base のチュートリアルではなかった挙動です.amcl がオドメトリのずれを補正してくれていることが理解できます.
おわりに
遊べるのはこんなところです.rvizで遊ぶ分にはあまり違いはなさそうですが,amcl が裏でかなりいい仕事をしているのです.次項以降でその辺りを紐解いていきます.
Next: 3.2 amcl: ソフトウェア構成をみる
Prev: 2.2 move_base: ソフトウェア構成をみる