Skip to main content

Mission Monitor Widget

Widget Type: rc-mission-monitor

Mission Monitor

Displays a 3D scene with the robot's pose and a "snail trail" of recent positions on top of a base map. Used to watch a mission in progress.

The widget extends the shared environment config (Mapbox token, Google Maps API key, optional origin and tiles URL).

Configuration

mapBoxToken Mapbox token used to render the base map.

googleMapsApiKey Google Maps API key used for base imagery.

origin (optional) Origin used when creating a new scene. { "lat": <number>, "lng": <number>, "alt": <number> }.

tilesUrl (optional) Tile server URL. When omitted, derived from the SDK URL.

parentFrame (optional) The parent frame in which positions are interpreted (e.g. WGS84, UTM60S, seed).

snailTrailQuery (optional) Query that produces the recent positions to draw as the snail trail:

  • topic: telemetry topic
  • maxAge: { "value": <number>, "unit": "s" | "m" | "h" }
  • expression: stringified function returning [lon, lat, alt] (or equivalent) from each payload
  • pollRate: poll rate in Hz

snailTrailColor Theme color used to draw the snail trail (e.g. magic).

robotConfig How to render the robot. Two shapes are supported:

  • Bound model — drives a 3D model from one or more telemetry topics:

    {
    "type": "boundModel",
    "robotBindings": [
    { "source": "/mavlink/GLOBAL_POSITION_INT", "binding": "position" }
    ]
    }
  • Spot model — renders the Spot model directly from a dynamic map source:

    {
    "type": "spotModel",
    "source": "/map/dynamicMaps/spot"
    }
{
"mapBoxToken": "<your-mapbox-token>",
"googleMapsApiKey": "<your-google-maps-key>",
"parentFrame": "WGS84",
"snailTrailQuery": {
"topic": "/mavlink/GLOBAL_POSITION_INT",
"maxAge": { "value": 5, "unit": "h" },
"expression": "(payload) => [payload.lon / 10e6, payload.lat / 10e6, payload.alt / 10e6]",
"pollRate": 1
},
"snailTrailColor": "magic",
"robotConfig": {
"type": "boundModel",
"robotBindings": [
{ "source": "/mavlink/GLOBAL_POSITION_INT", "binding": "position" }
]
}
}

Example (Spot)

{
"mapBoxToken": "<your-mapbox-token>",
"googleMapsApiKey": "<your-google-maps-key>",
"parentFrame": "UTM60S",
"snailTrailQuery": {
"topic": "/spot/graphnav/ros/anchor",
"maxAge": { "value": 1, "unit": "h" },
"expression": "(payload) => [payload.pose.pose.position.x, payload.pose.pose.position.y, payload.pose.pose.position.z]",
"pollRate": 1
},
"snailTrailColor": "magic",
"robotConfig": {
"type": "spotModel",
"source": "/map/dynamicMaps/spot"
}
}