hector_slamと2D Navigationを組み合わせてRoombaを自律移動させる
開発環境
OS
- Ubuntu12.04
ROS ver
- Hydro
距離センサ
- UTM-30LX
移動台車
- iRobot Create (500 series)
はじめに
今回はROSの中でも基礎中の基礎であるnavigationについて解説します。
navigationはセンサーの情報を元に目的地への経路を計画し台車に速度指令を出力します。
台車としては研究用の特別価格で7万円で2台セットのRoombaを購入して動かします。
概要
move_baseはnavigation関係のプラグインを集め実体化しているものです。
それぞれのプラグインの定義は別々のパッケージに存在しますがどれもnav_coreのインタフェースを満たすように設計されています。
プラグインはパラメータになっているので名前を変更することで入れ替えが可能であり、この辺りを理解するにはpluginlibを学ぶことをおすすめします。
自己位置推定を行うamclは完全に独立しているのでこちらも自由に入れ替えることができます。
ハードウェア要求
今回は例としてRoombaを使うと決めているため議論の余地はないですが任意のロボットにnavigationを適用する際には以下の要求を満たしているかどうかを意識すると良いでしょう。
ディファレンシャル・ドライブ且つホロノミック型のロボットであること
車両のどこかに平面レーザがマウントされていること
ロボットの形が方形か円形であること
これら三つの要求は必須ではありませんが、標準の構成ではパフォーマンスを向上させるために必要な要素です。しかし、各種プラグインは入れ替えが可能なので、それぞれのロボット向けにある程度カスタマイズすることができる。
使い方
gmapping(オドメトリと距離センサの情報を使ったSLAMのパッケージ)で地図を作成し、amclで自己位置推定を行うのがROSの中ではもっとも一般的です。
しかし、Roombaのオドメトリは精度が悪くamclのパラメータ調整が非常にシビアなので今回はオドメトリを使用しません。
hector_slamを使用してオドメトリ無しで地図を描かせながら自律移動をさせてみましょう。
サンプルはGitHubにアップしました。
$ roslaunch navigation2d_example move_base.launch
システム図
オドメトリフリーと言いつつもlocal_plannerの計画のためにmove_baseにodomトピックを与えています。
まあ、自己位置推定はURGのみで行ってますけどね。
blog comments powered by Disqus
Published
Category
ROSTags
Profile
千葉工大産のロボットナビゲーションエンジニア
ros-jpの勉強会の主催やロボカップ世界大会優勝チームのリーダをやってました。
badge_description about badge's
総訪問者数
ツイート