Keep the project’s ROS setup.
ROS jobs on Aqua run headless on shared compute nodes. Most problems come from running different code, or sharing a network, without realising it.
-
Keep your project’s ROS distribution, middleware and environment. Read
package.xml, launch files, Pixi tasks and setup scripts before changing anything. -
Don’t assume
/opt/ros/humbleexists on Aqua. Source the intended underlay and overlay inside the job. - Keep heavy builds off the login node.
Confirm the code that actually runs.
Editing src/ does not always update an installed copy. New
entry points, packaging changes and compiled code need a rebuild. Record
what the job resolves in its log:
ros2 pkg prefix YOUR_PACKAGE
python3 -c "import YOUR_MODULE; print(YOUR_MODULE.__file__)"
printenv | grep -E '^(ROS_|RMW_)' | sort
These commands only read. The last line shows ROS and middleware settings after activation, which is what the nodes really use.
Keep jobs from hearing each other.
Jobs sharing a node can discover each other’s ROS participants. Give each job its own discovery setup:
- Allocate ROS domain IDs deliberately. A hash of the job ID can collide, and very many processes in one domain can still run out of ports.
- For single-node jobs, localhost-only discovery can help, but other jobs on the same host still share localhost. Verify the isolation you get.
- Check the settings after Pixi or container activation. Activation can override variables passed by PBS, so the scheduler record shows what you asked for, not what the nodes used.
Start reliably, stop cleanly.
- Wait for subscribers to confirm they are ready before playing bags. A short-lived ready signal can vanish before a slow model finishes loading.
- Use startup and inactivity timeouts so a stuck pipeline ends instead of burning walltime.
- Pass child-process errors up, track the processes the run starts, and clean up only those.
Prove every sensor produced output.
- Save bag timestamps, clock source, playback rate, QoS and topic remappings with the run configuration.
- Count expected messages or results per sensor. A run that exits cleanly can still have skipped data.
- If transport seems broken, test a minimal publisher/subscriber pair inside the same allocation before blaming the middleware.
Ask for these checks up front.
With the aqua-hpc skill installed, the agent already knows these checks. Ask for a smoke case first:
Run these bags headlessly on Aqua with the existing launch file [launch],
varying [sensor configuration] and [model]. Before scaling, verify the overlay
paths that actually run, the effective ROS domain and discovery settings,
readiness before playback, and message coverage per sensor.
Prepare one smoke case first; do not submit the full set yet.
Full detail: ROS reference.