Susi Server

PX4 DDS Sink

Node ID: px4DdsSink · Role: Sink · Realtime config: no

Description

Publishes FusionHub’s GlobalFusedPose to PX4 as an external GPS source (SensorGps on ‘/in/sensor_gps’). PX4 treats FusionHub as a real GPS receiver - EKF2 fuses the position natively, and body-yaw is carried via SensorGps.heading. Enables FusionHub to act as the primary navigation filter for a companion-computer + PX4 drone stack.

Inputs / Outputs

Config aliases

Px4DdsSink, px4DdsSink, px4Sink

Properties

The following fields are exposed in the node’s Properties panel in the UI. Types map to UI widgets (e.g. string → text input, number → numeric, boolean → toggle, select → dropdown, json → JSON editor).

KeyLabelTypeDefaultDescription / Notes
namespaceTopic Namespacestring/fmuPX4 uXRCE-DDS client namespace (matches UXRCE_DDS_NAMESPACE on PX4). Default ‘/fmu’. Use ‘/px4_1/fmu’ etc. for multi-vehicle.
bridgeEndpointBridge Endpointstringtcp/[::1]:7447Zenoh locator of the zenoh-bridge-ros2dds process. Loopback by default; the bridge auto-spawned by any Zenoh node binds to tcp/[::]:7447 so this works out of the box.
autoSpawnBridgeAuto-spawn Bridge ProcessbooleantrueWhen on, fusionhub spawns the bundled zenoh-bridge-ros2dds process automatically. Turn off if you’re already running it.
deviceIdDevice IDnumber1608515585Unique device_id written to SensorGps to distinguish FusionHub from real GPS receivers. Any non-zero u32 works.
fixTypeFix Typeenum:3D,RTK_FLOAT,RTK_FIXED,DEAD_RECKONING3DGPS fix quality reported to PX4. RTK_FIXED signals highest confidence (lowest innovation noise in EKF2).
ephHorizontal Accuracy (m)number0.5SensorGps.eph — horizontal position std dev in meters.
epvVertical Accuracy (m)number1.0SensorGps.epv — vertical position std dev in meters.
headingAccuracyHeading Accuracy (rad)number0.05Standard deviation of the body-yaw estimate (rad, ~3° default).
satellitesUsedSatellites Usednumber16Reported satellite count. Cosmetic for PX4’s EKF2 but affects ground-station displays.

Example node definition

A full node definition in config.json looks like the block below. Paste it under the sinks key of your config, keyed by the node’s instance name (any identifier; it doesn’t have to match the node ID).

{
  "sinks": {
    "px4DdsSink": {
      "inputEndpoints": [
        "inproc://globalFusedPose_data"
      ],
      "inputDataFilter": [
        "GlobalFusedPose"
      ],
      "settings": {
        "autoSpawnBridge": true,
        "bridgeEndpoint": "tcp/[::1]:7447",
        "deviceId": 1608515585,
        "eph": 0.5,
        "epv": 1.0,
        "fixType": "3D",
        "headingAccuracy": 0.05,
        "namespace": "/fmu",
        "satellitesUsed": 16
      }
    }
  }
}

Field reference

FieldPurpose
inputEndpointsList of upstream endpoints this node connects to (outEndpoint / dataEndpoint values from upstream nodes).
inputDataFilterOptional whitelist of data types. Messages whose type isn’t in the list are dropped at the subscriber.
settingsAll user-configurable fields — see the Properties table above.

Connections can also be declared at the top-level connections array when settings.explicitConnections is true, as an alternative to filling inputEndpoints on each node.

Loading documentation…