autonomy ros2 doctor

Diagnose common SROS 2 secured-graph misconfigurations (version skew, keystore, transport) before they fail silently

Synopsis

Check the local environment for the misconfigurations that make a secured
governed graph (autonomy ros2 run --governed-bridge + SROS 2 Strategy=Enforce)
fail SILENTLY — participants discover each other but deliver zero messages, with
no error anywhere. doctor turns each into an up-front OK/WARN/FAIL line with the
fix inline.

Checks:
  SROS 2 security env    ROS_SECURITY_ENABLE/STRATEGY/KEYSTORE are coherent
                         (Enforce + a keystore, not Permissive / keystore-less).
  SROS 2 keystore        the keystore is structurally complete + signed
                         (reuses 'autonomy ros2 keystore verify').
  RMW implementation     RMW_IMPLEMENTATION is FastDDS (DDS-Security in the
                         governed stack is FastDDS-specific).
  FastDDS version        reports the local FastDDS version — under Enforce a
                         peer on a DIFFERENT version silently fails the
                         DDS-Security handshake (the Isaac 2.6.10 vs host
                         2.6.11 trap; fix with ISAAC_USE_SYSTEM_ROS=1).
  Large-data transport   the large-data FastDDS profile is installed, so
                         encrypted image topics aren't silently dropped (#1239).

Pure filesystem + env inspection — needs neither ros2 nor docker. In an
environment with nothing sourced, every check SKIPs.

Exit code:
  0   no check FAILed (SKIPs for unconfigured checks don't count).
  1   any check FAILed.

Examples:
  autonomy ros2 doctor
  autonomy ros2 doctor --keystore /var/lib/autonomyops/ks --large-data
  autonomy ros2 doctor --output json

Usage

autonomy ros2 doctor [flags]

Options

      --keystore string   path to the SROS 2 keystore to check for completeness (defaults to $ROS_SECURITY_KEYSTORE)
      --large-data        also check the large-data FastDDS transport profile (matches 'ros2 run --large-data')
  -o, --output string     output format: text|json (default "text")

Options inherited from parent commands

      --require-signed-manifest   Refuse to start if the SHA256SUMS release manifest or its cosign signature is missing/invalid (Tier 2 binary-integrity check; default: build-time compile-in via -ldflags -X, build-hardened artifacts=true, all others=false)

See also

  • autonomy ros2 — Execute governed ROS2 commands under AutonomyOps policy