13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ROSとGazeboによる自律移動シミュレーション 〜SLAMの実装〜

Last updated at Posted at 2018-03-21

はじめに

■ROSとGazeboによる自律移動シミュレーション
1.モデル作成
2.SLAMアルゴリズムの比較の導入
3.SLAMの実装 ← 今ココ

前回はSLAMアルゴリズムの比較を行いました。なので今回は実際にSLAMを実装してシミュレーションと実機上で動かしてみたいと思います。
今回用いるSLAMライブラリは以下にしようと思います。

SLAMライブラリ 採用理由
Google Cartographer 前回の比較動画より、マッピングと自己位置推定の精度が良いように感じられたから。また、個人的にGraph-basedアルゴリズムを使ってみたいというのもあります。

導入環境

  • OS:Ubuntu 16.04
  • ROSバージョン:Kinetic
  • ロボットシミュレータ:Gazebo

ROSパッケージ

SLAMを実装するに当たり、以下のROSパッケージを作成しました。

SLAM-Robot_Codeパッケージには以下のサブパッケージが含まれます!

サブパッケージ 用途
slambot_controller SLAMロボット実機のコントローラー
slambot_description SLAMロボットモデルの描写
slambot_gazebo gazeboでのシミュレーション
slambot_navigation ナビゲーション(パス・プランニング等)
slambot_sensing センサ起動
slambot_slam SLAM実行
slambot_teleop テレ・オペレーション用
(PS4コントローラ、キーボード)

実行方法

デプス・カメラで障害物を認識しつつ、SLAMで自己位置推定しながら障害物を回避する動作をシミュレーションと実機で動かしてみました。

①シミュレーションの場合

1

<実行手順>
以下3つのlaunchを実行する。

$ roslaunch slambot_gazebo vehicle_controller_sim.launch

 → gazeboシミュレータ起動(車輪制御、デプス・カメラ)

$ roslaunch slambot_navigation navigation_without_map.launch

 → SLAM起動

$ roslaunch slambot_navigation user_interface.launch

 → Rviz起動(ユーザーによるゴールの設定が可能)

全てのlaunchを起動すると以下のようなノードグラフとなります。

<ノードグラフ>
1

<実行結果>
(画像をクリックするとYouTubeへジャンプします。)
obstacle_avoidance_simu

②実機の場合

1

<実行手順>
以下4つのlaunchを実行する。

$ roslaunch slambot_controller vehicle_controller_node

 → 車体(車輪)制御起動

$ roslaunch slambot_sensing xtion_pro_live.launch

 → デプス・カメラ起動

$ roslaunch slambot_navigation navigation_without_map.launch

 → SLAM起動

$ roslaunch slambot_navigation user_interface.launch

 → Rviz起動(ユーザーによるゴールの設定が可能)

全てのlaunchを起動すると以下のようなノードグラフとなります。

<ノードグラフ>
1

<実行結果>
(画像をクリックするとYouTubeへジャンプします。)
obstacle_avoidance_hw
※動画ではホイールが車体の中心に取り付けられていますが、現在は車体前方に取り付けられています。

さいごに

いかがでしたでしょうか?
シミュレーション、実機共に見事障害物を避けて目標地点に到達することができました。
今回、SLAMアルゴリズムとしてGoogle Cartographerを用いましたが、次回以降はgmappingや他のアルゴリズムも試してみたいと思います。

余談ですが、私の開発アプローチとしてまずはシミュレーションで狙い通りの動作をすることを確認した後に、実機で動作確認を行ってます。
このアプローチ方法の利点として、不確定要素の多い実機で動作確認するよりモデル上で動作確認した方が不具合の発見が容易になる利点があります。
皆さんも是非お試しください(^^)v
でも、今回作成したモデルのパラメータは結構適当なのであしからず!

13
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?