Files
..
2026-02-11 17:54:06 +03:00
2026-02-11 17:54:06 +03:00
2026-02-11 17:54:06 +03:00
2026-02-11 17:54:06 +03:00
2026-02-11 17:54:06 +03:00

Build Image

ROS Jazzy + GZ Harmonic

docker buildx build -f gz_harmonic_sim_dev.dockerfile -t sim_dev:gz_harmonic .

NOTICE

When you build code in container with error:

fatal: detected dubious ownership in repository at '/code/PX4-Autopilot' To add an exception for this directory, call: git config --global --add safe.directory

you should run this command in container:

git config --global --add safe.directory '*'

Ubuntu With GUI&GPU Support

  1. Install nvidia-container-toolkit

    curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
    && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
        sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
        sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
    
    sudo apt install -y nvidia-container-toolkit
    sudo systemctl restart docker
    
  2. Run container with docker compose

    # in host bash
    # x11 permission
    xhost +local:root
    # 修改 docker-compose-ubuntu.yml 中${HOST_WS} 为你主机上的工作空间的目录
    docker compose -f docker-compose-ubuntu.yml up -d
    docker exec -it sim_dev_container bash
    
    # in container bash 
    git config --global --add safe.directory '*'
    cd /simulation_ws
    sudo apt update
    rosdep install --from-paths src/autonomy --ignore-src -r -y
    /simulation_ws/src/autonomy/drivers/mavros/mavros/scripts/install_geographiclib_datasets.sh
    colcon build --symlink-install --packages-up-to mavlink mavros px4_bringup
    

How to enter container again with bash

# get container id
docker container ls -a

# start container if not
docker container start [container id]

docker exec -it [container id] bash

WSL2 With GUI&GPU Support

NOTICE: replace ~/code on your host

docker run -it \
    -v ~/code:/code \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    -v /mnt/wslg:/mnt/wslg \
    -v /usr/lib/wsl:/usr/lib/wsl \
    -e DISPLAY=$DISPLAY \
    -e WAYLAND_DISPLAY=$WAYLAND_DISPLAY \
    -e XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR \
    -e PULSE_SERVER=$PULSE_SERVER \
    --device=/dev/dxg \
    --device /dev/dri/card0 \
    --device /dev/dri/renderD128 \
    --gpus all sim_dev:gz_harmonic

docker-compose

docker compose -f docker-compose-wsl.yml up -d
docker exec -it sim_dev_container bash
cd /simulation_ws
sudo apt update
rosdep install --from-paths src/autonomy --ignore-src -r -y
/simulation_ws/src/autonomy/drivers/mavros/mavros/scripts/install_geographiclib_datasets.sh
colcon build --symlink-install --packages-up-to mavlink mavros px4_bringup

Simulation

build simulation worksapce

MAKEFLAGS="-j4" colcon build --symlink-install \
    --packages-up-to \
    mavlink mavros mavros_extras px4_bringup vins_estimator usb_cam \
    --cmake-args \
    -DCMAKE_BUILD_TYPE=RelWithDebInfo \
    -DCMAKE_CXX_STANDARD=17 \
    -DCMAKE_EXPORT_COMPILE_COMMANDS=ON