diff --git a/docker-compose.robot b/docker-compose.robot new file mode 100644 index 0000000..5e4f0fa --- /dev/null +++ b/docker-compose.robot @@ -0,0 +1,133 @@ +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