version: "3.9" services: # Base image containing dependencies. base: image: ghcr.io/bjoernellens1/ros2-base:humble build: context: . dockerfile: docker/Dockerfile tags: - ghcr.io/bjoernellens1/ros2-base:humble args: ROS_DISTRO: humble UNDERLAY_WS: cps_bot_mini_ws OVERLAY_WS: overlay_ws target: base x-bake: platforms: - linux/arm64 - linux/amd64 # Interactive shell stdin_open: true tty: true # Networking and IPC for ROS 2 network_mode: host ipc: host # Needed to display graphical applications privileged: true environment: # Allows graphical programs in the container. - DISPLAY=${DISPLAY} - QT_X11_NO_MITSHM=1 - NVIDIA_DRIVER_CAPABILITIES=all volumes: # Allows graphical programs in the container. - /tmp/.X11-unix:/tmp/.X11-unix:rw - ${XAUTHORITY:-$HOME/.Xauthority}:/root/.Xauthority # Overlay image containing the project specific source code. overlay: extends: base image: ghcr.io/bjoernellens1/cps_bot_mini_ws/bot:overlay build: context: . dockerfile: docker/Dockerfile tags: - ghcr.io/bjoernellens1/cps_bot_mini_ws/bot:overlay target: overlay x-bake: platforms: - linux/arm64 - linux/amd64 volumes: - .:/repo # # Additional dependencies for GUI applications # guis: # extends: overlay # image: ghcr.io/bjoernellens1/cps_bot_mini_ws/bot:guis # build: # context: . # dockerfile: docker/Dockerfile # tags: # - ghcr.io/bjoernellens1/cps_bot_mini_ws/bot:guis # target: guis # x-bake: # platforms: # - linux/arm64 # - linux/amd64 # command: > # /bin/bash # # Robot State Publisher # robot_state_publisher: # extends: overlay # command: > # ros2 launch cps_loki_bringup rsp.launch.py # Controller controller: extends: overlay command: > ros2 launch cps_loki_bringup robot_controller.launch.py devices: - /dev/ttyUSB0:/dev/ttyUSB0 - /dev/ttyACM0:/dev/ttyACM0 restart: unless-stopped # teleop teleop: extends: overlay command: > ros2 launch cps_loki_bringup robot_joy_teleop.launch.py devices: - /dev/input:/dev/input restart: unless-stopped # lidar lidar: extends: overlay command: > ros2 launch cps_loki_bringup robot_lidar.launch.py devices: - /dev/ttyUSB0:/dev/ttyUSB0 #- /dev/ttyUSB1:/dev/ttyUSB1 - /dev/ttyACM0:/dev/ttyACM0 # mapping mapping: extends: overlay command: > ros2 launch cps_loki_bringup robot_mapper.launch.py # navigation navigation: extends: overlay #command: > # ros2 launch cbot_mini_bringup robot_navigation.launch.py # map_subscribe_transient_local:=true command: > ros2 launch nav2_bringup bringup_launch.py slam:=True map:=/repo/map.yaml use_sim_time:=False use_composition:=True params_file:=/overlay_ws/src/cps_loki_bringup/config/nav2_params.yaml depends_on: - lidar - controller - teleop # # rviz2 # rviz2: # extends: guis # command: > # rviz2 # # Needed to display graphical applications # privileged: true