Appendix K: IDL Package Layout (Informative)

The canonical file layout for SpatialDDS IDL is as follows. Implementations distributing the IDL as a package SHOULD preserve this directory structure so that #include paths and module hierarchies stay portable across projects.

spatialdds-idl/
├── types.idl              # Common typedefs (Time, Vec3, Mat3x3, Mat6x6, Mat12x12, etc.)
├── core.idl               # Core profile (PoseSE3, FramedPose, GeoPose, GeoAnchor,
│                          #   PlannedTrajectory, EntityBinding, BlobRef, etc.)
├── common.idl             # Sensing common (StreamMeta, FrameHeader,
│                          #   FrameQuality, MetaKV, etc.)
├── discovery.idl          # Discovery profile (Announce, CoverageQuery,
│                          #   CoverageResponse, TopicMeta, etc.)
├── anchors.idl            # Anchor registry (AnchorSet, AnchorDelta,
│                          #   AnchorEntry, etc.)
├── argeo.idl              # AR + Geo (NodeGeo, FrameTransform, etc.)
├── sensing/
│   ├── vision.idl         # Vision profile
│   ├── lidar.idl          # LiDAR profile
│   ├── rad.idl            # Radar profile (detection + tensor)
│   ├── vio.idl            # IMU / VIO profile
│   └── radio.idl          # Radio fingerprint profile (1.5+)
├── semantics.idl          # 2D/3D detection, classification
├── slam_frontend.idl      # SLAM front-end primitives
├── mapping.idl            # Mapping profile (MapMeta, MapAlignment, etc.)
├── events.idl             # Spatial events (SpatialEvent, ZoneState, etc.)
└── provisional/
    ├── rf_beam.idl         # RF beam profile (Provisional)
    ├── radio.idl           # Radio fingerprint examples (Provisional)
    ├── neural.idl          # Neural field examples (Informative only in 1.6)
    └── agent.idl           # Agent task coordination (Informative only in 1.6)

This repository organizes the v1.6 IDL files in a flat layout under idl/v1.6/ (with examples/ for provisional and informative profiles); both organizations are valid as long as #include paths and module declarations match.

Module namespacing follows the IDL module declarations:

  • spatial::corecore.idl
  • spatial::commoncommon.idl and types.idl
  • spatial::discodiscovery.idl
  • spatial::sensing::visionsensing/vision.idl
  • spatial::sensing::lidarsensing/lidar.idl
  • spatial::sensing::radsensing/rad.idl
  • spatial::sensing::radiosensing/radio.idl
  • spatial::viovio.idl
  • spatial::semanticssemantics.idl
  • spatial::slam_frontendslam_frontend.idl
  • spatial::argeoargeo.idl
  • spatial::anchorsanchors.idl
  • spatial::mappingmapping.idl
  • spatial::eventsevents.idl

Generated language bindings SHOULD preserve this module hierarchy:

  • C++: spatial::core::PoseSE3
  • Python: spatial.core.PoseSE3
  • Rust: spatial::core::PoseSE3