Gazeboモデル
ライトローバーGazeboモデルについて
ライトローバーGazeboモデルは、Gazeboで使用可能なライトローバーのモデルファイルです。
実機と同じサイズで、二輪駆動による走行、LiDARによる障害物検知のシミュレーションを行うことができます。
Gazebo上での動作の安定化のため、実機と比べて質量、重心位置を調整しています。
あくまでシミュレーション用のモデルのため、実機と異なる挙動となることもあるかと思いますが、ご了承ください。
動作確認環境
以下の環境で動作確認を行っています。
OS | Ubuntu 18.04 |
ROS | ROS Melodic |
Gazebo | 9.0.0 |
CPU | Core i5 8259U |
メモリ | 8GB |
ストレージ | SSD 256GB |
グラフィック | Intel Iris Plus Graphics 655 |
ライトローバーに搭載されているRaspberry Piでは動作確認を行っておりませんのでご注意ください。
導入方法
ROS desktopの導入およびcatkinワークスペースは作成済みとします。
ここでは、catkinワークスペースのディレクトリ名を「catkin_ws」として記述します。
またビルドコマンドには「catkin build」を使用しますが、「catkin_make」でも使用可能です。
lightrover_rosパッケージのインストール
ライトローバーGazeboモデルの動作にはlightrover_rosパッケージが必要です。
シェルを立ち上げ次のコマンドでcatkin_wsに移動します。
cd ~/catkin_ws/src
githubからlightrover_rosのソースコードをクローンします。
git clone https://github.com/vstoneofficial/lightrover_ros.git
ビルドしましょう。
catkin build lightrover_ros
ビルドエラーが出なければ、lightrover_rosのセットアップは完了です。
その他必須パッケージのインストール
シェルを立ち上げ、次のコマンドで必須パッケージをインストールします。
sudo apt install ros-melodic-joint-state-controller ros-melodic-effort-controllers ros-melodic-position-controllers ros-melodic-ros-control ros-melodic-ros-controllers
lightrover_descriptionパッケージのインストール
ライトローバーGazeboモデルは、lightrover_descriptionパッケージによって提供されます。
シェルを立ち上げ、次のコマンドでcatkin_wsに移動します。
cd ~/catkin_ws/src
githubからlightrover_descriptionのソースコードをクローンします。
git clone https://github.com/vstoneofficial/lightrover_description.git
ビルドしましょう。
catkin build
ビルドエラーが出なければ、lightrover_descriptionのセットアップは完了です。
使用方法
シェルを立ち上げ、roscoreの起動を完了しておいてください。
Rvizでのモデル表示確認
シェルを立ち上げ、以下のコマンドを入力してください。
roslaunch lightrover_description display_on_rviz.launch
正常に動作した場合、以下の画像のようにrvizが起動し、ライトローバーのモデルが表示されます。
もしも以下の画像のようにモデルが真っ白に表示され、RobotModel等の項目でエラーが出ている場合、起動したdisplay_on_rviz.launchおよびroscoreを一度終了させた後、再度起動をお試しください。
Gazeboシミュレータの立ち上げ
シェルを立ち上げ、以下のコマンドを入力してください。 なお、display_on_rviz.launchを起動している場合は予め終了しておいてください。
roslaunch lightrover_description gazebo_sample_world.launch
以下のようにGazeboが立ち上がり、ライトローバーが出現します。
青い面は、LiDARから発せられるレーザーを表しています。
この状態で、視点移動やオブジェクトの配置等が可能です。
視点を調整すると、以下のように、ライトローバーを横から確認することもできます。
以上でシミュレータ環境の準備が整いました。
lightrover_descriptionパッケージには、sample_world以外のworldでモデルを起動できるlaunchファイルが含まれています。以下で起動可能です。
〇empty_world(ライトローバー以外のオブジェクトが無いワールド)
roslaunch lightrover_description gazebo_empty_world.launch
また、launchファイルの以下の部分を書き換えて頂くか、起動時に引数として指定頂くことで、他の任意ワールドファイルでシミュレータ環境を起動することができます。
<arg name="world_name" value="$(find lightrover_description)/worlds/lightrover_sample.world"/>
シミュレータを起動したら、シミュレータ上のライトローバーを制御するノードを起動していきます。
実機のライトローバーを制御するノードを起動するのと同様にお考え下さい。
マウス(タッチパッド)による操作
マウス(タッチパッド)を用いて速度指令値を出力するmouse-teleopを使用してみましょう。
mouse-teleopを導入していない場合は、マウス操作で走行ページの手順に従い、mouse-teleopをインストールしてください。
シェルを起動し、以下のコマンドを実行します。
roslaunch lightrover_description lightrover_mousectrl.launch
しばらく待つと、以下のような画面が表示されます。
画面上でマウスをドラッグすることで、ライトローバーを走行させることができます。
ゲームパッドによる操作
PCに接続したゲームパッドを用いて速度指令値を出力してみましょう。
ゲームパッドで走行のページを参考に、必要パッケージや設定値のセットアップを行ってください。
使用するゲームパッドのデバイスファイルパスを確認したら、以下のコマンドでlaunchファイルを開き、確認したファイルパスを記述してください。
gedit ~/catkin_ws/src/lightrover_description/launch/lightrover_joycon.launch
一通りの設定が完了したら、シェルで以下のコマンドを実行します。
roslaunch lightrover_description lightrover_joycon.launch
コントローラーを操作し、Gazeboの中でライトローバーが走行するjことを確認してください。
SLAM(gmapping)
シミュレーション環境で地図を作ってみましょう。
SLAMをしようではソースからビルドしていますが、通常のUbuntu PCの環境であればバイナリインストールも可能です。
sudo apt install ros-melodic-slam-gmapping ros-melodic-navigation
インストールが完了したら次のlaunchファイルでgmappingを起動します。
roslaunch lightrover_description lightrover_gmapping.launch
新たなシェルでlightrover_mousectrl.launchまたはlightrover_joycon.launchを起動してライトローバーを走行させ、地図を作成していきましょう。
地図が完成したらSLAMをしようの手順に従い保存してください。
navigation
gmappingを使って作成した地図を使って、シミュレーター上のライトローバーを自律走行させてみましょう。
自律走行させようの記載に従い、navigationスタックのセットアップおよび地図の作成と移動を行ってください。
以下のコマンドでライトローバーGazeboモデル用のnavigationのlaunchファイルを開き、移動させた地図のパスを設定します。
gedit ~/catkin_ws/src/lightrover_description/launch/lightrover_move_base_dwa.launch
地図ファイルのパスを設定するのはlaunchファイルの以下の箇所です。
<arg name="map_file" default="$(find lightrover_ros)/map/test.yaml"/>
ファイルパスを設定後launchファイルを保存し、以下のコマンドでlaunchファイルを起動します。
roslaunch lightrover_description lightrover_move_base_dwa.launch
launchファイルを起動したら自律走行させようの手順に従い、ライトローバーモデルを走行させてみましょう。
なお、ここで使用しているlightrover_move_base_dwa.launchは、使用するパラメータとしてlightrover_rosパッケージにある実機用のパラメータを使用しています。
シミュレータ用に行ったパラメータの変更は実機の挙動にも反映されるのでご注意ください。