【自律型ロボット製作記】#3 Hector SLAMとmove_baseで自律走行させる
こんにちは、InomaCreateです。
前回、Hector SLAMからマップが作成できることを確認しました。
今回は、Hector SLAMと自律走行のためのナビゲーションを組み合わせて自律走行させてみました。
動作環境:
・ラズパイ3B+ (Ubuntu16.04 + ROS kinetic)
・UbuntuPC (Ubuntu16.04 + ROS kinetic)
Navigation Stackは、ロボットを自律走行させるためのROSのパッケージ群です。
今回は、その中でも目的地までのナビゲーションを実施してくれるmove_baseパッケージと前回試した自己位置&地図生成を行うHector_SLAMを組み合わせて自律走行させてみます。
以下Gitにmove_baseとHector_SLAMのサンプルがありますので、そちらを活用させていただきました。
https://github.com/DaikiMaekawa/navigation2d_example
事前準備
※事前準備は、すべてubuntuPC側の設定です。
まずは、前回記事で入れたように、Hector_SLAMのパッケージをインストールします。(前回記事参照)
【自律型ロボット製作記】#2 RPLiDAR A1M8 レーザースキャナでSLAMを試す
あとは、ナビゲーションに関連しそうな依存パッケージを入れておきます。
navigatinのサンプルをgitからクローンして、catkin_makeを実行します。
$ git clone https://github.com/DaikiMaekawa/ros-navigation2d-example
$ cd ../
$ catkin_make
launchファイルの変更
今回使用したサンプルは、roomba用になっていますので、起動時にエラーが出ました。
したがって、不要なノードをコメントアウトして削除しておきます。
■ros-navigation2d-expample/launch/move_base.launch
1 |
<!--<node pkg="roomba_500_series" type="roomba500_light_node" respawn="false" name="roomba500_light_node" output="screen"/>--> |
■ros-navigation2d-expample/launch/hector_hokuyo.launch
1 |
<!--<node pkg="hokuyo_node" type="hokuyo_node" name="hokuyo_node"/>--> |
実行方法
以下ディレクトリへ移動します。
move_baseのlaunchを起動します。※ubuntu PC側
ロボット側で、rplidarのlaunchを起動します。※ロボット(ラズパイ側)
ロボット側でmotor駆動用のノードを起動します。※ロボット(ラズパイ側)
Rvizが立ち上がり、マップ上にロボットが表示せます。
2D Nav Goalボタンを押して目的地を指定すると、ロボットが自律走行を始めます。
単純な目的地であれば、うまく自律走行することができました!
ただし、モーターへの出力制御が調整できていないのか、カーブ走行がうまくいかず、遠くの目的地へ行くには、こまめに目的地を指定しないとうまくいきません。まだまだ改善点が多いですね。
最後に
キャタピラー型のため、迂回が苦手なので、障害物がうまく避けれないことや、速度を速くすると自己位置を見失うなどいろいろ細かな課題はありますが、とりあえず、簡単な自律走行が実現できてよかったです!
Navigationの仕組みや、各パラメータの意味を理解するなどまだまだ勉強することが盛り沢山ですが、少しずつ理想のロボットに近づけるように頑張っていきます!
それでは!!
参考
本記事を作成するにあたり、以下サイトを参考にさせていただきました。ありがとうございます。
http://tokunn.hateblo.jp/entry/2017/02/04/181018
hector_slamと2D Navigationを組み合わせてRoombaを自律移動させる
スポンサーリンク
コメント
inobo_dcmotor.py のプログラムを参考にさせていただきたいので、公開していただけるとありがたいです。
返信遅れ申し訳ありません。
inobo_dcmotor.pyについては、以下のブログにソースを貼っていますので参考にしていただければと思います。
https://inomacreate.com/original-robot01/