WIndowsのPCでROS2を使うために、WSL2とDockerを利用してみました。
gazeboやrVizなどを使ってSLAMをやってみたのでそのやり方を紹介します。
WSL2とUbuntuのセッティング
PowerShellを管理者で起動して、以下を実行してWSL2をインストールします。
| wsl –install |
続いて、Ubuntuをインストールします。
| wsl –install -d Ubuntu-22.04 |
Ubuntuをインストールしたらまずは以下を実行します。
| sudo apt update && sudo apt upgrade -y |
Docker Desktopのインストール
以下の公式サイトからインストーラをダウンロードします。
URL:https://www.docker.com/ja-jp/
Windows版にはAMD64とARM64がありますが、Intel CPUはAMD64になります。
ARMベースのCPU以外は全てAMD64でいいみたいです。
Docker Desktopを起動して左下にEngine runningと出ている状態で以下を実行します。
| docker run -it \ –name ros2_gazebo \ –net=host \ -e DISPLAY=$DISPLAY \ -v /tmp/.X11-unix:/tmp/.X11-unix \ osrf/ros:humble-desktop |
gazeboの実行
以下を実行して必要なものをインストールします。
| apt update apt install -y gazebo apt install -y ros-humble-turtlebot3* apt install -y ros-humble-gazebo-ros-pkgs |
ROS環境を読み込みます。
| source /opt/ros/humble/setup.bash |
環境変数を設定してモデルを指定します。
| export TURTLEBOT3_MODEL=burger |
続いて、以下を実行します。
| ros2 launch turtlebot3_gazebo empty_world.launch.py |
これでロボットが表示されたgazeboのウィンドウが開きました。
ロボットを操作
別ターミナルを起動して以下を実行します。
| docker exec -it ros2_gazebo bash source /opt/ros/humble/setup.bash export TURTLEBOT3_MODEL=burger ros2 run turtlebot3_teleop teleop_keyboard |
ターミナル上で以下のキーを押すとgazebo上のロボットを操作することが出来ます。
| w → 前進 x → 後退 a → 左回転 d → 右回転 s → 停止 |
続いて、ロボットのセンサ情報を可視化するためのrVizを起動します。
さらに別ターミナルを起動して以下を実行します。
| docker exec -it ros2_gazebo bash source /opt/ros/humble/setup.bash export TURTLEBOT3_MODEL=burger rviz2 |
gazeboから情報を受け取るために設定ファイルを読み込みます。
rViz上の左上にあるメニューで以下を選択します。
| File → Open Config |
以下のファイルを選択します。
| /opt/ros/humble/share/turtlebot3_gazebo/rviz/tb3_gazebo.rviz |
この状態でgazebo上でロボットを動かすとrVizでセンサ情報を可視化することが出来ます。
SLAM
地図を作成するために以下を実行します。
| ros2 launch turtlebot3_cartographer cartographer.launch.py use_sim_time:=True |
ターミナル上で以下のキーを押すとgazebo上のロボットを操作することが出来ます。
地図が作成で着たら以下を実行して保存します。
| ros2 run nav2_map_server map_saver_cli -f ~/my_map |
保存した地図を使用するようにNavigation2を起動するために以下を実行します。
これを実行するときは新しいターミナルを立ち上げて実行します。
| ros2 launch turtlebot3_navigation2 navigation2.launch.py \ map:=~/my_map.yaml use_sim_time:=True |
rViz上で、ロボットの初期位置を設定するためにツールバー上にある2D Pose Estimateをまずクリックし、続いてロボットの位置をマップ上でクリックし、ドラッグして向きを合わせます。
最後に、ゴールを指定するため、Nav2 Goal をクリックしてからマップ上をクリック&ドラッグします。
これでロボットが自動で動き出したので、SLAMを実行することができました。
まとめ
WindowsのPC上でROS2を実行し、gazeboとrViz等を駆使してSLAMをシミュレーション上で実行することが出来ました。


コメント