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さんに教えていただきました。
https://twitter.com/dandelion1124/status/1861741933141594330
調べてみると、Nav2のドキュメントに使い方の記載がありました。今回は基本的にこのページに書かれていることをなぞって進めていきますが、ドキュメント内の画像はだいぶ古いので本記事には適宜スクリーンショットを貼り付けておきます。
Turtlebot3のJazzy対応について
2022年11月頃のHumble向けの更新を最後にしばらく更新が停止していましたが、2024年12月ごろから更新が再開しているようです(現状はREADMEの更新のみです)。
手順
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-bringupJazzy以降では新しいGazebo(Gazebo Classicではない方)に対応するためのdescriptionパッケージとしてROBOTIS公式ではなくNav2で用意しているdescriptionパッケージを使用します。今回使用するのは、nav2_minimal_tb3_simパッケージです。URDFもこのパッケージにまとまっています。
起動
source /opt/ros/jazzy/setup.bashros2 launch nav2_bringup tb3_simulation_launch.py headless:=FalseRViz
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はサポート終了予定です。


関連記事
- (Updated )CHAMPをROS 2 Humbleへアップグレードした際にやったこと4脚ロボット制御用のROSパッケージであるCHAMPを、ROS 2 Humbleに対応させるためにPull Requestを作成しました。その際に遭遇した内容については、その他のROS 2パッケージにおいてもROS 2 GalacticからROS 2 Humbleに移行する際に影響する可能性がありそうなので共有します。
- (Updated )osrf/rockerを使ってPC内に複数のROS distroの開発環境を整える方法Dockerを使ってGUIアプリケーションを起動するには、起動にちょっと工夫が必要だったり一筋縄では行かないことが多いです。 osrf/rockerというツールを使うと一筋縄では行かない部分を少しだけ簡単にできるので、その使い方を紹介します。
- turtlesimを全方向移動に対応させるPRをマージしてもらった話ROSのチュートリアルでよく使われるシミュレータにturtlesimがあります。このturtlesimをholonomic motion、つまり、オムニホイールやメカナムホイールを搭載したロボットのように全方向移動できるようにするためのPull Request(PR)を出して、無事にマージしてもらえました(rostut
- ROS2でコンピュータ同士が通信できない場合の対処方法ROS2ではノード間の通信にDDS(Data Distribution Service)を使用しています((DDSについては@youtalkさんの記事が詳しいです。 DDS (Data Distribution Service) とは | ros.youtalk.jp https://ros.youtalk.jp/20
- JetsonでROS1/ROS2を使う際のCUDA互換性問題と解決策古いJetson上でROS 1/ROS 2とCUDAを組み合わせる際に直面するJetPack・Compute Capability・GCCバージョンの制約と、共有ライブラリ分離やカスタムL4T Baseイメージによる解決策をまとめた調査メモ。





