version: "3.9" services: # Base image containing dependencies. base: image: ghcr.io/bjoernellens1/ros2_bot_mini/bot_mini:base build: context: . dockerfile: docker/Dockerfile args: ROS_DISTRO: humble target: base # 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 example source code. overlay: extends: base image: ghcr.io/bjoernellens1/ros2_bot_mini/bot_mini:overlay build: context: . dockerfile: docker/Dockerfile target: overlay # Robot State Publisher robot_state_publisher: extends: overlay command: > ros2 launch bot_mini_bringup rsp.launch.py stdin_open: true tty: true # Networking and IPC for ROS 2 network_mode: host ipc: host # Controller and teleop controller: extends: overlay command: > /controller_startup.sh devices: - /dev/ttyUSB0:/dev/ttyUSB0 - /dev/ttyACM0:/dev/ttyACM0 - /dev/input/js0:/dev/input/js0 # 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 depends_on: - robot_state_publisher # MicroRos Agent microros_agent: image: microros/micro-ros-agent:humble command: > serial --dev /dev/ttyUSB1 -v6 devices: - /dev/ttyUSB1:/dev/ttyUSB1 # 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 # sensors sensors: extends: overlay command: > ros2 launch bot_mini_bringup robot_lidar.launch.py stdin_open: true tty: true # Networking and IPC for ROS 2 network_mode: host ipc: host depends_on: - robot_state_publisher # Localization localization: extends: overlay command: > ros2 launch bot_mini_bringup robot_localization.launch.py devices: - /dev/ttyUSB0:/dev/ttyUSB0 - /dev/ttyUSB1:/dev/ttyUSB1 - /dev/ttyACM0:/dev/ttyACM0 - /dev/input/js0:/dev/input/js0 # 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 depends_on: - controller - microros_agent # mapping mapping: extends: overlay command: > ros2 launch bot_mini_bringup robot_mapper.launch.py # Interactive shell stdin_open: true tty: true # Networking and IPC for ROS 2 network_mode: host ipc: host depends_on: - localization # navigation navigation: extends: overlay command: > ros2 launch bot_mini_bringup robot_navigation.launch.py map_subscribe_transient_local:=true stdin_open: true tty: true # Networking and IPC for ROS 2 network_mode: host ipc: host depends_on: - localization # # Behavior demo using Python and py_trees # demo-behavior-py: # extends: overlay # command: > # ros2 launch tb3_autonomy tb3_demo_behavior_py.launch.py # tree_type:=${BT_TYPE:?} # enable_vision:=${ENABLE_VISION:?} # target_color:=${TARGET_COLOR:?} # # Behavior demo using C++ and BehaviorTree.CPP # demo-behavior-cpp: # extends: overlay # command: > # ros2 launch tb3_autonomy tb3_demo_behavior_cpp.launch.py # tree_type:=${BT_TYPE:?} # enable_vision:=${ENABLE_VISION:?} # target_color:=${TARGET_COLOR:?}