ロボット研究開発、ソフトウェア開発、コンテンツ制作配信

【自律型ロボット製作記】#3 Hector SLAMとmove_baseで自律走行させる

こんにちは、InomaCreateです。
前回、Hector SLAMからマップが作成できることを確認しました。
今回は、Hector SLAMと自律走行のためのナビゲーションを組み合わせて自律走行させてみました。
動作環境:
・ラズパイ3B+ (Ubuntu16.04 + ROS kinetic)
・UbuntuPC (Ubuntu16.04 + ROS kinetic)

スポンサーリンク

Navigation Stack

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を試す

あとは、ナビゲーションに関連しそうな依存パッケージを入れておきます。

$ sudo apt-get install ros-kinetic-joy ros-kinetic-teleop-twist-joy ros-kinetic-teleop-twist-keyboard ros-kinetic-laser-proc ros-kinetic-rgbd-launch ros-kinetic-depthimage-to-laserscan ros-kinetic-rosserial-arduino ros-kinetic-rosserial-python ros-kinetic-rosserial-server ros-kinetic-rosserial-client ros-kinetic-rosserial-msgs ros-kinetic-amcl ros-kinetic-map-server ros-kinetic-move-base ros-kinetic-urdf ros-kinetic-xacro ros-kinetic-compressed-image-transport ros-kinetic-rqt-image-view ros-kinetic-gmapping ros-kinetic-navigation

navigatinのサンプルをgitからクローンして、catkin_makeを実行します。

$ cd ~/catkin_ws/src/
$ git clone https://github.com/DaikiMaekawa/ros-navigation2d-example
$ cd ../
$ catkin_make

launchファイルの変更

今回使用したサンプルは、roomba用になっていますので、起動時にエラーが出ました。
したがって、不要なノードをコメントアウトして削除しておきます。

■ros-navigation2d-expample/launch/move_base.launch

■ros-navigation2d-expample/launch/hector_hokuyo.launch

実行方法

以下ディレクトリへ移動します。

$ cd catkin_ws/src/ros-navigation2d-example/launch/

move_baseのlaunchを起動します。※ubuntu PC側

$ roslaunch move_base.launch

ロボット側で、rplidarのlaunchを起動します。※ロボット(ラズパイ側)

$ roslaunch rplidar_ros rplidar.launch

ロボット側でmotor駆動用のノードを起動します。※ロボット(ラズパイ側)

$ rosrun inobo_motor inobo_dcmotor.py

Rvizが立ち上がり、マップ上にロボットが表示せます。
2D Nav Goalボタンを押して目的地を指定すると、ロボットが自律走行を始めます。

単純な目的地であれば、うまく自律走行することができました!
ただし、モーターへの出力制御が調整できていないのか、カーブ走行がうまくいかず、遠くの目的地へ行くには、こまめに目的地を指定しないとうまくいきません。まだまだ改善点が多いですね。

最後に

キャタピラー型のため、迂回が苦手なので、障害物がうまく避けれないことや、速度を速くすると自己位置を見失うなどいろいろ細かな課題はありますが、とりあえず、簡単な自律走行が実現できてよかったです!
Navigationの仕組みや、各パラメータの意味を理解するなどまだまだ勉強することが盛り沢山ですが、少しずつ理想のロボットに近づけるように頑張っていきます!

それでは!!

参考

本記事を作成するにあたり、以下サイトを参考にさせていただきました。ありがとうございます。
http://tokunn.hateblo.jp/entry/2017/02/04/181018

hector_slamと2D Navigationを組み合わせてRoombaを自律移動させる

   

スポンサーリンク

いいね!を押すと、
最新記事をお届けします。

Twitter で
関連記事(一部広告含む)

コメント

  • inobo_dcmotor.py のプログラムを参考にさせていただきたいので、公開していただけるとありがたいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


ページトップボタン