2026年2月28日土曜日

DockerでROS2のGazeboを起動する方法について

 あまプロではROSのGazeboを使う事が有ります。
インストールがややこしかったので、あメログ。

 Windows10上のDockerのコンテナにUbuntuを構築して、Ubuntu上でGazebo Simを起動してみます。

  1. いきなり端折りますが、Docker Desktopをインストールして、WSLを有効にしておいて下さい。 
    インスートラをダウンロードして、インストールするだけなので、そない難しくないと考えます。 
    既にインストール済みの方は最新版のDockerDesktopとWSLにアップデートして下さい。
    WSLのアップデートは
    wsl --update

    で行えます。
  2.  WindowsStoreでUbuntuをインストールする  Ubuntuインストール時にユーザとパスワードを求められるので、適当に決めて入力する。


  3. スタートメニューにUbutu24.04 LTSが追加されるので、クリックしてターミナルのUbuntuを起動する。


  4. Ubuntuターミナルで設定変更する
    sed "s/\"credsStore\": \"desktop.exe\"//g" ~/.docker/config.json
  5. UbuntuターミナルでROSのコンテナを作成する
    docker run --name ros2 -d  --env="DISPLAY=:0"   --env="WAYLAND_DISPLAY=$WAYLAND_DISPLAY"   --env="XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR"   --env="QT_X11_NO_MITSHM=1"   --env="LIBGL_ALWAYS_SOFTWARE=1"   --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw"   --volume="/mnt/wslg:/mnt/wslg:rw"  --device=/dev/dri:/dev/dri  ros:jazzy-perception

     もしドライバ周りでエラーが発生する場合は--deviceを削除した下記でコンテナ作成して下さい。
    docker run --name ros2 -d  --env="DISPLAY=:0"   --env="WAYLAND_DISPLAY=$WAYLAND_DISPLAY"   --env="XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR"   --env="QT_X11_NO_MITSHM=1"   --env="LIBGL_ALWAYS_SOFTWARE=1"   --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw"   --volume="/mnt/wslg:/mnt/wslg:rw"  ros:jazzy-perception 

    ros用コンテナが作成されます。

  6. Dockerの設定⚙のResourcesのWSL integrationでUbuntu 24.04を有効にする


  7.  Ubuntuターミナルでコンテナを起動する
    docker start ros2
  8.  Ubuntuターミナルでコンテナに入る
    docker exec -it ros2 bash
  9.  UbuntuターミナルでGazeboをインストールする
    sudo apt update && sudo apt install -y ros-jazzy-ros-gz
  10. Ubuntuターミナルでros設定
    source /opt/ros/jazzy/setup.bash
    echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
    source ~/.bashrc
  11. UbuntuターミナルでGazebo起動
    ros2 launch ros_gz_sim gz_sim.launch.py gz_args:='-r empty.sdf'
    そうすると、コンテナのGUIがホストのディスプレイに表示されて上記の様にWindowsのアプリの様に表示されます。
    あんまないやろうけど、コンテナのGUIをホストで表示したい場合にはこれでできます。

0 件のコメント:

コメントを投稿

つっこみ