{
  "id": "robot-localization",
  "revision": "dfacbbe033effb48f24871959b0d63e24d4975710abc57260e01495a8c739d80",
  "regions": [
    {
      "id": "fleet",
      "label": "Fleet coordination"
    },
    {
      "id": "robot",
      "label": "Robot-local execution"
    }
  ],
  "nodes": [
    {
      "id": "lidar",
      "label": "Lidar adapter",
      "kind": "N15",
      "region": "robot",
      "ports": [
        {
          "id": "sample",
          "profile": "P06",
          "contract": "LidarSampleV1",
          "polarity": "Offer"
        },
        {
          "id": "clock",
          "profile": "P24",
          "contract": "ClockRefV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "imu",
      "label": "IMU adapter",
      "kind": "N15",
      "region": "robot",
      "ports": [
        {
          "id": "sample",
          "profile": "P06",
          "contract": "ImuSampleV1",
          "polarity": "Offer"
        },
        {
          "id": "clock",
          "profile": "P24",
          "contract": "ClockRefV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "align",
      "label": "Clock alignment",
      "kind": "N07",
      "region": "robot",
      "ports": [
        {
          "id": "lidar",
          "profile": "P06",
          "contract": "LidarSampleV1",
          "polarity": "Require"
        },
        {
          "id": "imu",
          "profile": "P06",
          "contract": "ImuSampleV1",
          "polarity": "Require"
        },
        {
          "id": "kernel",
          "profile": "P02",
          "contract": "FusionStepV1",
          "polarity": "Require"
        },
        {
          "id": "policy",
          "profile": "P24",
          "contract": "TimeAlignmentV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "fusion",
      "label": "Native fusion kernel",
      "kind": "N16",
      "region": "robot",
      "ports": [
        {
          "id": "compute",
          "profile": "P02",
          "contract": "FusionStepV1",
          "polarity": "Offer"
        },
        {
          "id": "pose",
          "profile": "P09",
          "contract": "PoseEstimateV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "pose",
      "label": "Pose authority",
      "kind": "N21",
      "region": "robot",
      "ports": [
        {
          "id": "update",
          "profile": "P09",
          "contract": "PoseEstimateV1",
          "polarity": "Require"
        },
        {
          "id": "snapshot",
          "profile": "P01",
          "contract": "PoseSnapshotV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "fleet",
      "label": "Fleet pose subscriber",
      "kind": "N22",
      "region": "fleet",
      "ports": [
        {
          "id": "pose",
          "profile": "P01",
          "contract": "PoseSnapshotV1",
          "polarity": "Require"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "lidar",
      "kind": "H02",
      "incidences": [
        {
          "node": "lidar",
          "port": "sample",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "align",
          "port": "lidar",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "imu",
      "kind": "H02",
      "incidences": [
        {
          "node": "imu",
          "port": "sample",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "align",
          "port": "imu",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "fuse",
      "kind": "H05",
      "incidences": [
        {
          "node": "fusion",
          "port": "compute",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "align",
          "port": "kernel",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "pose",
      "kind": "H02",
      "incidences": [
        {
          "node": "fusion",
          "port": "pose",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "pose",
          "port": "update",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "publish",
      "kind": "H02",
      "incidences": [
        {
          "node": "pose",
          "port": "snapshot",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "fleet",
          "port": "pose",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "time",
      "kind": "H31",
      "incidences": [
        {
          "node": "lidar",
          "port": "clock",
          "role": "lidarClock",
          "ordinal": 0
        },
        {
          "node": "imu",
          "port": "clock",
          "role": "imuClock",
          "ordinal": 1
        },
        {
          "node": "align",
          "port": "policy",
          "role": "alignment",
          "ordinal": 2
        }
      ]
    }
  ]
}
