TurtleBot3 + Gazebo + Navigation2 (ROS 2 Jazzy)

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のドキュメントに使い方の記載がありました。今回は基本的にこのページに書かれていることをなぞって進めていきますが、ドキュメント内の画像はだいぶ古いので本記事には適宜スクリーンショットを貼り付けておきます。

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/ROS2のGUIをWebブラウザ経由でお手軽に試せるDockerfileを公開しました ROS/ROS 2のGUIをWebブラウザ経由でお手軽に試せるDockerfileとDockerイメージを公開しています。その特徴と使用方法を紹介します。 今回紹介するのは Ubuntu Desktop(...

ROSパッケージのインストール

nav2-bringup(とその依存パッケージ)をインストールすることで必要なパッケージをまとめてそろえることができます。

sudo apt install ros-jazzy-nav2-bringup

Jazzy以降では新しいGazebo(Gazebo Classicではない方)に対応するためのdescriptionパッケージとしてROBOTIS公式ではなくNav2で用意しているdescriptionパッケージを使用します。今回使用するのは、nav2_minimal_tb3_simパッケージです。URDFもこのパッケージにまとまっています。

GitHub
GitHub - ros-navigation/nav2_minimal_turtlebot_simulation: A minimum description & simulation of the... A minimum description & simulation of the TB4 using standard ROS-GZ tools - ros-navigation/nav2_minimal_turtlebot_simulation

起動

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メッセージに切り替わっていくようです

GitHub
Switch from Twist to TwistStamped for cmd_vel · Issue #1594 · ros-navigation/navigation2 Right now we use Twist which contains no time based information. This may be important for detecting old or out of order messages in async applications. A surve...

Gazeboのバージョン

Gazebo Classicではなく、新しい方のGazeboを使います。

GazeboもROSと同様にアルファベット順に名称が決まっており、ROS 2 JazzyではGazebo Harmonicを使います。

※2025年でGazebo Classicはサポート終了予定です。

Qiita
【令和最新版】Gazebo(旧Ignition)の現在 - Qiita はじめに2022年 4月からIgnitionの名前がGazeboに変更され、ROS界隈に破壊と混沌をもたらしました。それに加えてバージョンGardenからパッケージ名,API,メッセージ型等全て...

この記事が気に入ったら
フォローしてね!

よかったらシェアしていただけると励みになります!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Memotekiの管理人です。このブログには学んだことや共有しておきたいことをマイペースにメモしていきます。2020年からは日記も書き始めました。

コメント

コメントする


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

目次