networks: # create a local network app_net: driver: bridge ipam: config: - subnet: "172.16.238.0/24" volumes: # remembers qgroundcontrol config qgroundcontrol_config: # remembers ignition config, downloaded models etc ignition_config: services: # gazebo ignition (simulator) sim: container_name: sim hostname: sim image: jgoppert/auav_f22_sim:latest command: terminator --geometry=800x500+800+0 -e ". /opt/ros/foxy/setup.sh && colcon build --symlink-install --event-handler console_direct+ && . ./install/setup.sh && ros2 launch auav_f22_gazebo sample.launch.py; read -p 'press enter'" build: context: sim environment: - DISPLAY=${DISPLAY} - IGN_GAZEBO_SYSTEM_PLUGIN_PATH=/usr/lib - IGN_GAZEBO_RESOURCE_PATH=/usr/share/mavlink_sitl_ign_gazebo/models # PURT, lat, lon, alt - PX4_HOME_LAT=40.41537099446224 - PX4_HOME_LON=-86.93289541090424 - PX4_HOME_ALT=185 # simulation speed, increase to run faster than real time - PX4_SIM_SPEED_FACTOR=1.0 volumes: - /tmp/.X11-unix:/tmp/.X11-unix:ro - ignition_config:/home/docker/.ignition - $PWD/sim/ws:/workdir:rw privileged: true deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] networks: app_net: ipv4_address: 172.16.238.2 # ground control station gcs: container_name: gcs hostname: gcs image: jgoppert/auav_f22_gcs:latest # run qgc hiding output command: bash -c "./QGroundControl.AppImage 2> /dev/null" build: context: gcs privileged: true environment: - DISPLAY=${DISPLAY} volumes: - /tmp/.X11-unix:/tmp/.X11-unix:ro # create a persistant named volume to remember qgc settings - qgroundcontrol_config:/home/docker/.config/QGroundControl.org networks: app_net: ipv4_address: 172.16.238.3 # px4 (autopilot) px4: container_name: px4 hostname: px4 image: jgoppert/auav_f22_px4:latest command: terminator --geometry=800x500+0+500 -e "px4_build.sh && px4_start.sh; read -p 'press enter to close'" build: context: . dockerfile: px4/Dockerfile environment: - PX4_SIM_HOSTNAME=sim - PX4_OFFBOARD_HOSTNAME=172.16.238.12 - PX4_GCS_HOSTNAME= 172.16.238.3 - DISPLAY=${DISPLAY} - PX4_SIM_MODEL=iris volumes: # pass through for X11 - /tmp/.X11-unix:/tmp/.X11-unix:ro # mount .git readwrite for development - ./.git:/home/docker/.git:rw # mount source readwrite for development - ./px4/PX4-Autopilot:/home/docker/px4/PX4-Autopilot:rw # mount scripts directory read only for development - ./px4/bin:/home/docker/bin:ro networks: app_net: ipv4_address: 172.16.238.11 # onboard computer onboard: container_name: onboard hostname: onboard image: jgoppert/auav_f22_onboard:latest #command: bash -c ". ~/ws/install/setup.sh && ros2 launch auav_f22 sample.launch.py" command: terminator --geometry=800x500+0+0 -e ". ~/px4_ros_com_ros2/install/setup.sh && colcon build --symlink-install --event-handler console_direct+ && . ./install/setup.sh && ros2 launch auav_f22 sample.launch.py; read -p 'press enter'" build: context: onboard environment: - DISPLAY=${DISPLAY} volumes: - /tmp/.X11-unix:/tmp/.X11-unix:ro - $PWD/onboard/ws:/home/docker/ws:rw networks: app_net: ipv4_address: 172.16.238.12 # grader grader: profiles: - donotstart container_name: grader hostname: grader image: jgoppert/auav_f22_grader:latest #command: bash -c ". ~/ws/install/setup.sh && ros2 launch auav_f22 sample.launch.py" command: terminator --geometry=800x500+0+0 -e ". ~/px4_ros_com_ros2/install/setup.sh && colcon build --symlink-install --event-handler console_direct+ && . ./install/setup.sh && ros2 launch auav_f22_grader grade.launch.py; read -p 'press enter'" build: context: grader environment: - DISPLAY=${DISPLAY} volumes: - /tmp/.X11-unix:/tmp/.X11-unix:ro - $PWD/grader/ws:/home/docker/ws:rw networks: app_net: ipv4_address: 172.16.238.13 # vim: set et fenc=utf-8 ff=unix sts=2 sw=2 ts=4 :