docker-sgp-tools provides ready-to-use Docker Compose files and Dockerfiles for running SGP-Tools and its ROS2 companion package in two main scenarios:
- Simulation: Full-stack GUI container (Gazebo, ArduPilot SITL, ROS2, Foxglove, SGP-Tools).
- Robot/Edge/BlueOS: Minimal ROS2/SGP-Tools container, usable directly on a robot or as a BlueOS extension.
| Compose File | Use Case | Features |
|---|---|---|
sim-compose.yml |
Simulation/Dev | GUI, ROS2, Gazebo, ArduPilot SITL, SGP-Tools, Foxglove. Requires Nvidia GPU. |
robot-compose.yml |
Robot/Production | Minimal ROS2/SGP-Tools. Runs on robot or deployable as a BlueOS extension. |
- Docker Engine
- Docker Compose
- NVIDIA Container Toolkit (for GPU support in simulation)
- Optional for multi-arch builds: Buildx
git clone --recurse-submodules https://github.com/itskalvik/docker-sgp-tools.git
cd docker-sgp-toolsdocker compose -f sim-compose.yml pull
docker compose -f sim-compose.yml up -d
docker compose -f sim-compose.yml exec sgptools bashdocker compose -f sim-compose.yml stop # stop containers, keep data/volumes
docker compose -f sim-compose.yml down # stop and remove containers/volumes/networks/imagesFor robot deployment onboard a custom ASV:
docker compose -f robot-compose.yml up -d
docker compose -f robot-compose.yml exec sgptools bash-
The
robot-compose.ymlfile can be customized for device paths, data log locations, and environment variables as needed. -
See the BlueOS SGP-Tools README for step-by-step instructions on deploying as a BlueOS extension on a Blue Robotics Blue Boat.
gz sim -v4 -r blueboat_waves.sdf
sim_vehicle.py -v Rover -f rover-skid --model JSON --console --map -N -L RATBeach
-
Wait for
AHRSandGPSto turn green in MAVProxy. -
If errors (
paramftp: bad count), restart sim_vehicle.py.
ros2 launch ros_sgp_tools asv.launch.py
- Open Foxglove web (https://app.foxglove.dev/)
- Connect to ROS2 bridge at
ws://localhost:8765
-
Simulation container:
-
Ubuntu, ROS2 Humble, Gazebo, MAVProxy, ArduPilot SITL, Foxglove bridge, SGP-Tools, all required plugins and environment scripts.
-
Includes ros_entrypoint_sitl.sh to automatically set up Gazebo/ArduPilot/ROS2 plugin paths on container start.
-
NVIDIA GPU required for Gazebo reliability.
-
-
Robot container:
-
Lightweight image: ROS2, SGP-Tools, minimal ROS2 nodes, sensor drivers.
-
Designed for ARM64 and AMD64 targets (supports BlueOS and bare-metal robot computers).
-
To build containers for both ARM64 and AMD64:
docker buildx create --name multi-arch --platform "linux/arm64,linux/amd64" --driver "docker-container"
docker buildx use multi-arch
docker compose -f sim-compose.yml build
# or
docker compose -f robot-compose.yml build
-
The robot container can be deployed as a BlueOS extension on compatible vehicles (e.g., BlueRobotics BlueBoat).
-
See the BlueOS SGP-Tools README for detailed instructions, swap size configuration, file upload, and mission launch procedures.
- Based on Dockerfiles from:


