ラズパイマウスでROS 2を動かしてみた

ROS 2とRaspberry Pi Mouseでナビゲーション

ラズパイマウスでROS 2を動かしてみた
こんにちは、しゅうです。
以前、ROS 1とRaspberry Pi Mouse(ラズパイマウス)でナビゲーションを行うためのパッケージ公開に関する記事を出しました。
Raspberry Pi Mouseでナビゲーション
こんにちは、しゅうです。 この度、ROS Melodic及びNoeticに対応したRaspberry Pi Mouse用のナビゲーションパッケージを公開しました。 パッケージの概要 今回ご紹介するパッケージ、rt-net/raspimou...

今回はROS 2 Foxy版のパッケージ公開についての報告をしていきます。

ROS 2パッケージの概要について

今回ご紹介するROS 2パッケージ、rt-net/raspimouse_slam_navigation_ros2についてご説明します。
GitHub - rt-net/raspimouse_slam_navigation_ros2: ROS 2 SLAM and Navigation packages for Raspberry Pi Mouse
ROS 2 SLAM and Navigation packages for Raspberry Pi Mouse - rt-net/raspimouse_slam_navigation_ros2

こちらのパッケージは、ROS 2 Foxy環境でラズパイマウスを使ってSLAMとナビゲーションが行えます。SLAMではslam_toolboxを使い、ナビゲーションではNavigation2を使用しています。

使用するROS 2パッケージや機材など

本ブログでは、Raspberry Pi Mouse V3にRaspberry Pi 4とLiDARを搭載したラズパイマウスを使用します。また、ラズパイマウスを遠隔操作するためのPC(Remote PC)も用意します。

Raspberry Pi 4を搭載するには、ラズパイマウス本体と接続するためのオプションキットNo. 7が必要です。

ラズパイマウスとRemote PCは共にUbuntu 20.04とROS 2 Foxyをインストールして使用します。
Raspberry Pi 3Bの代わりにRaspberry Pi 4を搭載する際に、ラズパイマウス本体と接続するためのが必要になります。

また、本ブログでは以下の機材も使用します。

その他、機材などの詳細については、rt-net/raspimouse_slam_navigationのREADMEを参照してください。

デバイスドライバーのインストールについては、RT Software Tutorialsを参照してください。

また、ラズパイマウスとRemote PCは同じネットワークに繋がっている必要があります。また、同じROS_DOMAIN_IDも設定している必要があります。詳しくはこちらのRT Software TutorialsのROS 2タブを参照してください。

インストール方法

Raspberry Pi Mouse V3

まずは、ラズパイマウス側で必要なROS 2パッケージをインストールします。以下のコマンドを実行しましょう。

cd ~/ros2_ws/src
# Clone the ROS packages
git clone -b $ROS_DISTRO-devel https://github.com/rt-net/raspimouse_ros2_examples
git clone -b $ROS_DISTRO-devel https://github.com/rt-net/raspimouse_description
git clone -b $ROS_DISTRO-devel https://github.com/rt-net/raspimouse_slam_navigation_ros2
# Install dependencies
rosdep install -r -y -i --from-paths . --ignore-src

# make and install
cd ~/ros2_ws
colcon build --symlink-install
source ~/ros2_ws/install/setup.bash

Remote PC

次に、Remote PC側に必要なROS 2パッケージをインストールします。以下のコマンドを実行しましょう。

cd ~/ros2_ws/src
# Clone the ROS packages
git clone -b $ROS_DISTRO-devel https://github.com/rt-net/raspimouse_description
git clone -b $ROS_DISTRO-devel https://github.com/rt-net/raspimouse_slam_navigation_ros2
# Install dependencies
rosdep install -r -y -i --from-paths . --ignore-src

# make and install
cd ~/ros2_ws
colcon build --symlink-install
source ~/ros2_ws/install/setup.bash

実行方法

SLAM

slam_toolboxパッケージを使用して、ラズパイマウスの周辺地図を生成します。
まずはラズパイマウス上で、次のコマンドを実行します。ラズパイマウスのモータやLiDARを起動したり、ゲームパッドで制御するためのノードを起動しています。

ros2 launch raspimouse_slam robot_bringup.launch.py lidar:=rplidar joyconfig:=f710

そして、Remote PC側で次のコマンドを実行します。モータの回転数とLiDARから受け取ったデータを使って地図を作るノードを起動しています。

ros2 launch raspimouse_slam pc_slam.launch.py

下記画像のようなRVizの画面が表示されます。

ラズパイマウスを動かして、目的の地図が完成したら次のコマンドを実行しましょう。地図の保存を行なうノードを起動しています。MAP_NAMEは保存したい地図の名前にしましょう。

ros2 run nav2_map_server map_saver_cli -f ~/MAP_NAME

コマンドを実行すると、MAP_NAME.yamlMAP_NAME.pngの2つのファイルが生成されます。
pngファイルを開くと生成された地図を確認できます。

ナビゲーション

SLAMで生成した地図をNavigatoin2パッケージに取り込み、ラズパイマウスを自律移動させます。

まずはラズパイマウス上で、次のコマンドを実行します。ラズパイマウスのモータとLiDARを起動するためのノードを起動しています。

ros2 launch raspimouse_navigation robot_navigation.launch lidar:=rplidar

Remote PC上で、次のコマンドを実行します。自己位置推定と経路生成用のノードを起動し、RVizを立ち上げます。(下記画像を参照)
引数のmap_fileパラメータには、SLAMで生成した地図(yamlファイル)を指定してください。

ros2 launch raspimouse_navigation pc_navigation.launch.py map:=/path/to/MAP_NAME.yaml

無事RVizが起動したら、まずは初期位置・姿勢を合わせます。RVizの画面上部の2D Pose Estimateをクリックしましょう。 地図上でラズパイマウスが存在すべき尤もらしい位置をクリックし、そのままホールドします。 ホールドしながらカーソルを動かし、表示されている矢印の向きをラズパイマウスの尤もらしい向きに合わせてからボタンを離します。

初期位置・姿勢の指示が完了したら、次は目標位置・姿勢を指示します。RVizの画面上部のNavigation2 Goalをクリックしましょう。地図上で、初期位置・姿勢を合わせた時と同様に、地図上をクリックして目標位置を、ホールドしたままカーソルを動かして目標姿勢を指示しましょう。すると、ラズパイマウスが自律移動を開始します。

Raspberry Pi Mouseの停止方法

下記画像のようなナビゲーション用のパネルがRViz左下に表示されます。 Cancelボタンを押すと自律移動が中断されます。

ラズパイマウスを停止させる別の方法として、モータへの電源供給を止める方法もあります。
安全に気をつけながらラズパイマウスに搭載されたスイッチを操作してモータ用電源をOFFにしましょう。

また、次のコマンドを実行すると、ソフトウェア側からモータ電源をON / OFFできます。

# モータ電源をOFFにする
ros2 service call /motor_power std_srvs/srv/SetBool data:\ false
# モータ電源をONにする
ros2 service call /motor_power std_srvs/srv/SetBool data:\ true

まとめ

今回はラズパイマウスのROS 2パッケージのうち

  • SLAM ナビゲーションパッケージのインストール方法
  • SLAMの実行と地図の保存方法
  • ナビゲーションの実行とRVizの操作方法

についてご説明しました。

次回はラズパイマウス用のslam_toolboxおよびNavigation2のパラメータチューニング方法について説明します。

タイトルとURLをコピーしました