Skip to content

Tools and workflows

The tools on this page are not marine-specific, but marine teams use them every day. Field time is short, so good logging and fast analysis tools pay for themselves on the first deployment.

Packages

Project What it does ROS Vehicles Activity
rosbag2
ROS 2 tooling working group
Record and replay ROS 2 data. MCAP is the default storage format in current ROS 2 releases. ROS 2 Any Active
Oct 2026
MCAP
Foxglove
Open container format and libraries for timestamped multi-sensor logs (C++, Python, Go, Rust, and more). ROS 2 Non-ROS Any Active
Oct 2026
rosbags
Ternaris
Pure Python library to read, write, and convert ROS 1 and ROS 2 bags without a ROS installation. Useful in data pipelines. Non-ROS Any Active
Oct 2026
PlotJuggler
Davide Faconti
Time-series plotting for live topics and bag files. Fast for controller and EKF tuning. ROS 2 ROS 1 Any Active
Oct 2026
RViz2
Open Robotics
Standard 3D visualization for ROS 2 (TF, point clouds, markers, images). ROS 2 Any Active
Oct 2026
Lichtblick
Lichtblick Suite
Open-source robotics visualization and log analysis app, forked from the last open-source Foxglove Studio release. ROS 2 ROS 1 Any Active
Oct 2026
foxglove_bridge
Foxglove
WebSocket bridge that streams ROS topics to Foxglove and Lichtblick. Check the Foxglove SDK repository for newer development. ROS 2 ROS 1 Any Low activity
Oct 2025
QGroundControl
Dronecode Foundation
Ground control station for MAVLink vehicles (ArduSub, ArduPilot Rover, PX4). Common as the topside pilot interface for the BlueROV2. Non-ROS ROV USV Active
Oct 2026
Neptus
LSTS (University of Porto)
Command, control, and mission review software of the LSTS toolchain (IMC protocol). Non-ROS AUV USV Active
Oct 2026
industrial_ci
ROS-Industrial
Ready-made CI scripts that build and test ROS packages on GitHub Actions, GitLab CI, and other services. ROS 2 ROS 1 Any Active
Jun 2026
action-ros-ci
ROS tooling working group
GitHub Action that builds and tests a ROS 2 workspace with colcon. ROS 2 Any Active
May 2026
awesome-maritime-robotics
ROS Maritime Community Working Group
The working group's earlier link list of open-source maritime robotics software. This catalog supersedes and extends it. Non-ROS Any Active
Nov 2025
best-of-robot-simulators
Kimberly McGuire and contributors
Ranked, regularly updated list of robot simulators, including marine ones. Good for a wider survey. Non-ROS Any Active
Oct 2026

Logging

  • Record everything raw. Raw sensor data lets you reprocess navigation and perception after the mission. Record the state estimate and the controller commands too.
  • Use MCAP. It is the default rosbag2 storage format in current ROS 2 releases, and many tools (Lichtblick, Foxglove, PlotJuggler, the mcap CLI) read it.
  • Split and compress. Use --max-bag-duration or --max-bag-size so that a power loss destroys at most one file. The MCAP storage presets (zstd_fast, zstd_small, fastwrite) set the compression.
  • Do not log through slow links. Record on the vehicle and download after recovery.
# Record everything to MCAP with fast zstd chunk compression, in 5-minute files
ros2 bag record -a -s mcap --storage-preset-profile zstd_fast \
  --max-bag-duration 300 -o dive_$(date +%Y%m%d_%H%M)
  • Analyze without ROS. rosbags reads and writes ROS 1 and ROS 2 bags in pure Python, so data scientists do not need a ROS installation.

Visualization and tuning

Tool Use it for
RViz2 TF trees, point clouds, markers, sonar and camera images, live
PlotJuggler Time series: EKF innovations, controller errors, thruster commands. Live or from bags
Lichtblick Open-source web and desktop app for multi-panel dashboards from MCAP files or a live bridge
QGroundControl Pilot interface and parameters for ArduSub, ArduPilot Rover, and PX4 vehicles
rqt_graph, ros2 doctor Check node connections and the environment

Geodesy and coordinate tools

Task Tool
WGS 84 ↔ UTM in ROS geodesy from geographic_info
Local ENU tangent plane, geoid heights GeographicLib (LocalCartesian)
Any coordinate reference system, in Python pyproj
Pressure to depth (TEOS-10) GSW Python (gsw.z_from_p)
GNSS fixes into the EKF navsat_transform_node in robot_localization

See Frames and conventions for the rules.

Development environment

  • Containers. Docker images make simulation and dependencies reproducible across a team. SUAVE and POSIM publish images; Blue and auv_controllers include development container setups. For GPU simulators, install the NVIDIA Container Toolkit.
  • Workspaces. Use vcs (vcstool) with a .repos file to pin the repositories of a vehicle stack, and rosdep for system dependencies.
  • Target hardware. Many vehicles run on ARM computers (Raspberry Pi, NVIDIA Jetson). Build and test on ARM in CI, or cross-compile, before you go to the field.

Continuous integration

  • Build and test each package on every pull request with action-ros-ci or industrial_ci.
  • Add a headless simulation test: launch the vehicle in Gazebo or Stonefish, run a short mission, and check that it reaches the waypoints.
  • Add unit tests for frame conversions and message parsing in drivers; these find the expensive bugs early.
  • Release packages to the ROS build farm, so users can install them with apt.

Field laptop checklist

  • Offline copies of documentation, maps, and charts
  • All dependencies installed; no internet needed to build
  • Same software versions as the vehicle (container image tag or .repos pins)
  • Bag analysis tools installed (PlotJuggler, Lichtblick, rosbags)
  • Enough disk space and a second drive for backups