ROS 2 JazzyでGazebo(旧Ignition)上のTurtleBot3をNavigation2(Nav2)を動かすまで+その過程で調べたことのメモです。
背景
ROS 2 HumbleまではROBOTIS公式のe-manualを参照すればよかったのですが、現状はJazzyのサポートがないためその他のリソースを参照しながら実行する必要があります。
Foxyのときに試してみたログはZennのスクラップに公開しています。
ちなみに、2024年5月ごろに実機を動かした際のログを下記のスクラップに公開しています。Gazeboではなく実機で動かしたい場合はこの内容が参考になると思います。
Nav2では検証用にTurtlebot3を動かすためのlaunchを用意しており、それがJazzyに対応しているとXで@dandelion1124さんに教えていただきました。
調べてみると、Nav2のドキュメントに使い方の記載がありました。今回は基本的にこのページに書かれていることをなぞって進めていきますが、ドキュメント内の画像はだいぶ古いので本記事には適宜スクリーンショットを貼り付けておきます。
手順
ROS 2 Jazzyがインストールされた環境の用意
docker-ros2-desktop-vncをWEBブラウザ経由で使うか、ros2_setup_scripts_ubuntuを使ってUbuntuにインストールするのがおすすめです。今回はdocker-ros2-desktop-vncをWEBブラウザ経由で使います。
ROSパッケージのインストール
nav2-bringup(とその依存パッケージ)をインストールすることで必要なパッケージをまとめてそろえることができます。
sudo apt install ros-jazzy-nav2-bringup
Jazzy以降では新しいGazebo(Gazebo Classicではない方)に対応するためのdescriptionパッケージとしてROBOTIS公式ではなくNav2で用意しているdescriptionパッケージを使用します。今回使用するのは、nav2_minimal_tb3_simパッケージです。URDFもこのパッケージにまとまっています。
起動
source /opt/ros/jazzy/setup.bash
ros2 launch nav2_bringup tb3_simulation_launch.py headless:=False
RViz
2D Pose Estimateで適当にそれっぽい位置・姿勢を指定します。
たまにNavigationがinactiveのまま反応しないこともありました。理由はきちんと調べていませんが、ノードの再起動で復活しました。
Nav2 Goalで目標とする位置・姿勢を指定します。走行中はNavigation 2のパネルのFeedbackがactiveになります。
指定位置(ゴール)までたどり着くとNavigation 2のパネルのFeedbackがreachedになります。
一連の動画です。
チュートリアルの手順は以上です。
@dandelion1124さんに教えていただくまでは、ROBOTISが公式で公開しているパッケージを調整したりしていたのですが、Nav2のドキュメントに従えば特にコードを編集したりすることなくあっという間にチュートリアルを終えることができました。次は実機をNav2で動かしたいと思います。
調べている過程で気づいたことのメモ
いくつか気づきがあったのでメモしておきます。HumbleからJazzyへ移行する際はリンク先の内容を参考にしていただくと良いと思います。
Navigationで使うメッセージ
JazzyではTwistメッセージからTwistStampedメッセージに切り替わっていくようです
Gazeboのバージョン
Gazebo Classicではなく、新しい方のGazeboを使います。
GazeboもROSと同様にアルファベット順に名称が決まっており、ROS 2 JazzyではGazebo Harmonicを使います。
※2025年でGazebo Classicはサポート終了予定です。
コメント