Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SpatialDDS Demo

Reference demos for the SpatialDDS 1.6 draft spec (https://spatialdds.org), running on CycloneDDS. The repo bundles the upstream IDL under idl/v1.6, mirrors the manifest examples in manifests/v1.6, and ships four runnable demos that build on top of a shared spatialdds/envelope/v1 transport.

Multi-operator fusion canvas dashboard

Cesium web demo

Demos in this repo

Demo Path What it shows
Multi-operator fusion (flagship) multi_operator_fusion/ Three AV fleet operators + one 6G base station share Detection3D observations. A platform fuser does NN-gated track fusion and publishes unified FusedTracks. Rerun renders per-operator split-screen + fused view.
nuScenes → SpatialDDS → Rerun nuscenes/ Publishes nuScenes v1.0-mini AV data (ego pose, 6 cameras, LiDAR, 5 radars, 3D annotations) over DDS envelopes; visualizes in Rerun.
DeepSense 6G → SpatialDDS → Rerun deepsense/ Publishes DeepSense 6G Scenario 9 V2I data (60 GHz phased-array beam, FMCW radar, camera, GPS, 2D lidar) over DDS envelopes.
AR demo ar_demo/ Bootstrap → discovery → coverage query → localization → catalog → anchor flow for AR clients. Includes a Cesium web UI backed by an HTTP-to-DDS bridge (bridges/web_bridge/).
Benchmarks benchmarks/ Latency, discovery, multi-operator, and coverage-query benchmark scripts + plotting.

If you're new here, start with multi-operator fusion — it exercises the full envelope transport with real datasets.

Bridges

Protocol bridges live under bridges/ and work with every demo above without per-demo wiring:

Bridge Path What it does
Web (HTTP/WebSocket) bridges/web_bridge/ FastAPI server with two surfaces: legacy REST endpoints (/v1/localize, /v1/catalog/query, /v1/stream) for the Cesium demo, plus a generic subscribe-based protocol (/ws, /api/topics, /api/stats) so any browser app can listen to or publish envelopes by topic pattern with optional rate limits. Ships a 2D top-down canvas dashboard at / and a topic-list debug page at /debug.
MCAP record / replay bridges/mcap_bridge/ Records spatialdds/envelope/v1 traffic to an MCAP file and replays it back onto a CycloneDDS domain. Lossless (RELIABLE+KEEP_ALL), Foxglove-compatible, no per-demo wiring.
ROS 2 bridges/ros2_bridge/ Bidirectional bridge between SpatialDDS topics and ROS 2 topics. v0 covers PoseStamped, NavSatFix, Imu, CompressedImage, Detection3DArray, plus FusedTrackSet reverse. Conversion layer is duck-typed so 80% is testable without ROS 2 installed.
MQTT bridges/mqtt_bridge/ Bidirectional bridge between SpatialDDS and MQTT (local Mosquitto or AWS IoT Core). MQTT topic = SpatialDDS logical_topic, payload = same JSON. QoS/retain inferred from topic suffix (meta = retained, frames = best-effort, decisions = at-least-once). Loop prevention via _bridge_id + non-overlapping inbound/outbound filters.

Two HTTP servers — which one do I want?

ar_demo/http_binding.py bridges/web_bridge/server.py
Purpose Spec-compliance REST wrapper that mirrors the discovery payload shapes HTTP-to-DDS bridge that the Cesium / canvas dashboard talks to
Port (default) 8080 8088
Used by ar_demo/run_all_tests.sh, the AR demo README run_bridge_server_docker.sh, web/, bridges/web_bridge/static/
Run with DDS? No (in-process registration) Yes (publishes/subscribes envelopes)

They are not interchangeable. Use the bridge for the web/canvas demos; use the HTTP binding when you just want to exercise the registration/search payload shapes.

Browser UIs

Each demo brings its own browser visualisation — both served by the web bridge:

  • AR demo → 3D Cesium-Ion view of VPS coverage + catalog + localisation + anchor publication. Run via ar_demo/README.md.
  • Multi-operator fusion → 2D top-down canvas at http://localhost:8088/ (debug topic-list at /debug) — operator egos + trails, detection wireframes, planned trajectories, fused tracks, conflict markers, live metrics. Run via multi_operator_fusion/README.md.

About

No description, website, or topics provided.

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages