Docker上のROS2 Foxy環境でNavigation2を動かす


はじめに

以前ubuntu20.04上のROS2 Foxy環境にTurtlebot3のシミュレーション環境とNavigation2をインストールしてNavigation2を動かす記事を書きました。

執筆時現在Navigation2 ドキュメントのGetting Startedの方法でTurtlebot3パッケージをインストールして簡単にNavigation2が動かせるようになっていたので、今回はubuntu20.04環境がない方向けにDocker上にROS2 Foxy環境を構築してNavigation2を実行する方法を書きます。

動作環境

Dockerが動く環境であればubuntuでもMacでもWindowsでも何でも可。
Docker自体のインストール方法については省略します。

docker-ros2-desktop-vncでROS2環境の構築

Docker上のROS2 Foxy環境構築にはTiryohさんが公開している
docker-ros2-desktop-vncを使用します。

こちらubuntu-desktop-lxde-vncを使ってブラウザ上でGazeboやrvizも動くGUIのROS2環境がコマンド1行で構築できる非常に便利なリポジトリです。

Dockerが使える環境で以下のコマンドを実行

$ docker run -p 6080:80 --shm-size=512m tiryoh/ros2-desktop-vnc:foxy

最初はImageのダウンロードをするので時間がかかります。(全部で4.8GBくらい)
以下実行後画面

docker run -p 6080:80 --shm-size=512m tiryoh/ros2-desktop-vnc:foxy
Unable to find image 'tiryoh/ros2-desktop-vnc:foxy' locally
foxy: Pulling from tiryoh/ros2-desktop-vnc
a70d879fa598: Pull complete 
c4394a92d1f8: Pull complete 
10e6159c56c0: Pull complete 
54ce6fc330e9: Pull complete 
1956e2222f9d: Pull complete 
1c994628a0c6: Pull complete 
e56a311ab0d9: Pull complete 

ダウンロードが終わったらブラウザを開いて、以下アドレスにアクセス

http://127.0.0.1:6080/

こんな感じの画面になります。

ROS2とGazeboの動作確認

左下メニューのSystem ToolsLXTerminalからターミナル起動

適当なGazeboデモを実行

$ gazebo /opt/ros/foxy/share/gazebo_plugins/worlds/gazebo_ros_camera_demo.world 

Gazeboが起動してモデルが動いていれば成功

Navigation2とTurtlebot3パッケージのインストール

Navigation2のインストール

$ sudo apt install ros-foxy-navigation2
$ sudo apt install ros-foxy-nav2-bringup

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

$ sudo apt install ros-foxy-turtlebot3*

Turtlebot3の環境変数の設定

source /opt/ros/foxy/setup.bash
export TURTLEBOT3_MODEL=waffle
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/opt/ros/foxy/share/turtlebot3_gazebo/models

Navigation2の実行

以下を実行してTurtlebot3 GazeboワールドとNavigation2を起動
最初はモデルの読み込みに時間がかかります。

$ ros2 launch nav2_bringup tb3_simulation_launch.py

rviz2とGazeboが起動したらあとはNavigation2ドキュメント通り
rviz2上で2D Pose Estimateをクリックして地図上の位置をドラックして初期位置を指定、
Navigaton2 Goalをクリックして地図上の移動したい場所をドラックしてゴールを指定。

Gazebo上のモデルが指定したゴールに向かって動き出せば成功です。

参考