こんにちは、アールティの加藤です。
アールティが販売する小型移動プラットフォームロボットRaspberry Pi MouseのシミュレータパッケージROS 2版に、SLAM&Navigationサンプルが追加されました。このサンプルはRaspberry Pi Mouseの実機をお持ちではない方でも、お手元のシミュレータ環境でお試しいただけます。本記事ではSLAM&Navigationサンプルの詳細や実行方法についてご紹介します。
Raspberry Pi Mouseの紹介
Raspberry Pi MouseはメインボードにRaspberry Piを使用した左右独立二輪方式の小型移動プラットフォームロボットです。全長13cm、重さ700gと小型であるため、持ち運びや開発スペースの確保も簡単です。
ROS 2パッケージを利用すると、たとえば次の動画のように、特定の色の物体を追従するような動作や周囲環境の地図を作成するSLAMなどが簡単に行えます。
Raspberry Pi Mouseの詳細な特徴については、下記の製品ページをご覧ください。
Raspberry Pi Mouseは下記の販売ページから購入できます。
シミュレータパッケージの紹介
本記事で紹介するシミュレータパッケージを使用すると、Gazeboというロボットシミュレータ環境でRaspberry Pi Mouseのサンプルプログラムを動作させることができます。パッケージの詳細については下記のGitHubリポジトリをご覧ください。
次の動画のようにシミュレータ環境でRaspberry Pi Mouseを動かすことができます。
SLAM&Navigationサンプルの紹介
SLAM&Navigationサンプルでは、Raspberry Pi Mouseに搭載したLiDARを使用して、SLAMによる地図生成とNavigationによる自律移動を行うことができます。
シミュレータ環境でSLAMサンプルを実行している様子は下記の動画をご覧ください。
Navigationサンプルを実行している様子は下記の動画をご覧ください。
インストール方法
ROS 2環境のセッティングやパッケージのインストール方法は下記のSoftware Tutorialsをご覧ください。
次のコマンドを実行してRaspberry Pi Mouseのシミュレータとサンプルのパッケージをインストールします。
sudo apt install ros-humble-raspimouse-sim sudo apt install ros-humble-raspimouse-slam-navigation
また、Raspberry Pi Mouseをキーボードで操作する場合は下記のコマンドを実行してパッケージをインストールします。
sudo apt install ros-humble-teleop-twist-keyboard
以上でインストールは完了です。
SLAM&Navigationサンプルの動作手順例
SLAM
Raspberry Pi Mouseのシミュレータ上でSLAMサンプルを実行する方法をご紹介します。
まず、次のコマンドを実行してRaspberry Pi MouseとLake Houseのモデルが配置されたシミュレータ環境を表示します。
ros2 launch raspimouse_gazebo raspimouse_with_lakehouse.launch.py lidar:=urg
lidarはurg、lds、rplidarのいずれかを指定することができます。
さらに、次のコマンドを実行してRaspberry Pi Mouseをキーボードで操作可能にします。
ros2 run teleop_twist_keyboard teleop_twist_keyboard
最後に、次のコマンドを実行してSLAMサンプルを実行します。
ros2 launch raspimouse_slam pc_slam.launch.py
SLAMサンプルが実行できたら、Raspberry Pi Mouseをキーボードで操作して地図を作成していきます。
Raspberry Pi Mouseを走らせていると、下記の動画のように少しずつ地図ができあがっていきます。
地図が完成したら、次のコマンドを実行して保存します。
ros2 run nav2_map_server map_saver_cli -f ~/MAP_NAME
MAP_NAMEは任意の名前を指定できます。
以上でSLAMサンプルは完了です。次はNavigationサンプルを実行します。
Navigation
Raspberry Pi Mouseのシミュレータ上でNavigationサンプルを実行する方法をご紹介します。
まずはSLAMサンプルと同じく、次のコマンドを実行してRaspberry Pi MouseとLake Houseのモデルが配置されたシミュレータ環境を表示します。
ros2 launch raspimouse_gazebo raspimouse_with_lakehouse.launch.py lidar:=urg
lidarはurg、lds、rplidarのいずれかを指定することができます。
さらに、次のコマンドを実行してNavigationサンプルを実行します。
ros2 launch raspimouse_navigation pc_navigation.launch.py map:=$HOME/MAP_NAME.yaml
引数mapにはSLAMで作成した地図ファイルのパスを指定してください。
Navigationサンプルが実行できたら、RVizの画面上部にある「2D Pose Estimate」を選択して、Raspberry Pi Mouseの初期位置・姿勢をクリックで指定します。
次に、RVizの画面上部にある「Nav2 Goal」を選択して、Raspberry Pi Mouseの目標位置・姿勢を指定します。
目標位置・姿勢を指定すると、下記の動画のようにRaspberry Pi Mouseが自律移動を開始します。
SLAM&Navigationサンプルのカスタマイズ
SLAM&Navigationサンプルでは、デフォルトでLake Houseの中に6つの黒い箱が配置されたワールドが表示されます。
ワールドに配置するオブジェクトは、raspimouse_sim/raspimouse_gazebo/worlds/にあるlakehouse.sdfというSDFファイルを編集することでカスタマイズが可能です。
黒い箱の配置
lakehouse.sdfに下記のように記述すると黒い箱を配置できます。
<model name="black_cube11"> <include> <uri>model://cube_30cm_black</uri> </include> <pose>-0.5 0 0.075 0 0 0</pose> </model>
下図はデフォルトのワールドに黒い箱を4つ追加した様子です。
家具の配置例
下記のように記述することで、たとえばOpenRoboticsが公開しているBedside Tableのモデルをワールドに配置することも可能です。
<include> <uri> https://fuel.gazebosim.org/1.0/OpenRobotics/models/BedsideTable </uri> <pose>0.8 0 0 0 0 0</pose> </include>
以上のようにRaspberry Pi Mouseを走らせるワールドを自由に編集できるので、様々な環境でSLAM&Navigationサンプルをお試しください!
おわりに
本記事ではRaspberry Pi MouseのシミュレータパッケージROS 2版に追加されたSLAM&Navigationサンプルを紹介しました。このサンプルは実機のRaspberry Pi Mouseをお持ちでなくても、お手元のシミュレータ環境でお試しいただけます。ぜひご活用ください! また、SLAM&Navigationサンプルのソースコードは下記のGitHubリポジトリで公開しています。