File size: 21,531 Bytes
4d9b003 2a3436a 4d9b003 026560c 4d9b003 2a3436a 4d9b003 be62f78 4d9b003 be62f78 4d9b003 be62f78 4d9b003 2a3436a 4d9b003 2a3436a 4d9b003 be62f78 2a3436a 4d9b003 026560c 2a3436a 026560c 4d9b003 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 | {
"schema_version": "5.1",
"name": "diffusion-planner-p150",
"tt_metal_version": "0.65.2.dev11169+g44d66500520",
"arch": "blackhole",
"device_count": 1,
"producer": {
"tt_kernel_version": "0.1.0",
"created_at": "2026-10-16T23:23:20.408349+00:00",
"hostname": "hchang-bh"
},
"weights": {
"repo_id": "AutowareFoundation/diffusion_planner",
"revision": "423efde67f5414734da43a7ad856c17ceb8b51aa",
"allow_patterns": [
"diffusion_planner_encoder.onnx",
"diffusion_planner_decoder.onnx",
"diffusion_planner_turn_indicator.onnx",
"diffusion_planner.param.json"
],
"ignore_patterns": null,
"repo_type": "model"
},
"auxiliary_weights": [],
"mesh": null,
"entrypoint": null,
"resources": null,
"capabilities": null,
"env": {},
"bundled": null,
"deps": null,
"container": {
"image": {
"registry": "hf",
"repository": "diffusion-planner-p150",
"tag": "tt-model/diffusion-planner-p150:a2386953943b",
"digest": "sha256:a2386953943be0ec71ee587a956df942c7d2225f00d2ce8c1bcce4e67ea999ff"
},
"kind": "tt-dit-server",
"runtime": {
"app": "tt_diffusion_planner.server.app:app",
"mesh_shape_env": "TT_MESH_SHAPE",
"packages": [
"numpy>=1.24.4,<2",
"huggingface_hub",
"safetensors",
"pyyaml",
"onnx>=1.17,<2"
],
"lock": "requirements.lock"
},
"serve": {
"hardware": "p150",
"mesh_device": "P150",
"port": 20000,
"max_model_len": null,
"max_num_seqs": null,
"block_size": null,
"server_timeout": null,
"capabilities": null,
"additional_config": {},
"args": [],
"env": {
"TT_WEIGHTS_REVISION": "423efde67f5414734da43a7ad856c17ceb8b51aa",
"TT_METAL_VISIBLE_DEVICES": "0",
"HF_HUB_DISABLE_IMPLICIT_TOKEN": "1",
"DIFFUSION_PLANNER_DISPATCH": "eth",
"DIFFUSION_PLANNER_NUM_CQS": "1",
"DIFFUSION_PLANNER_VARIANT": "default",
"DIFFUSION_PLANNER_LN_FP32": "enc.mixer.*,dec.*",
"DIFFUSION_PLANNER_HIDDEN_FP32": "",
"DIFFUSION_PLANNER_SPLIT_MATMUL": "enc.island.*,enc.pre.*,dec.*",
"DIFFUSION_PLANNER_ATTN_FP32_ACC": "",
"DIFFUSION_PLANNER_ATTN_MATMUL": "enc.fusion.attn,dec.*",
"DIFFUSION_PLANNER_ENC_CH2D": "1",
"DIFFUSION_PLANNER_ATTN_FAST": "1",
"DIFFUSION_PLANNER_DEC_MMCFG": "1",
"DIFFUSION_PLANNER_LN_KERNEL": "2",
"DIFFUSION_PLANNER_LN_RESID": "1",
"DIFFUSION_PLANNER_SPLIT_KCAT": "2",
"DIFFUSION_PLANNER_ATTN_SMASK": "1",
"DIFFUSION_PLANNER_ATTN_SMSM": "1",
"DIFFUSION_PLANNER_ATTN_FUSED": "1",
"DIFFUSION_PLANNER_KCAT_EMIT": "1",
"DIFFUSION_PLANNER_LN_TR": "1",
"DIFFUSION_PLANNER_KCAT_L1": "1",
"DIFFUSION_PLANNER_KCAT_ACT_ONCE": "0",
"DIFFUSION_PLANNER_ATTN_L1": "2",
"DIFFUSION_PLANNER_DEC_L1": "2",
"DIFFUSION_PLANNER_ENC_L1": "0",
"DIFFUSION_PLANNER_FUS_L1": "0",
"DIFFUSION_PLANNER_ENC_KCAT": "1",
"DIFFUSION_PLANNER_LIN_ACT": "0",
"DIFFUSION_PLANNER_KCAT_ACT": "1",
"DIFFUSION_PLANNER_LN_SPLIT": "1",
"DIFFUSION_PLANNER_LN_SFPU_BCAST": "1",
"DIFFUSION_PLANNER_COMPACT": "2",
"DIFFUSION_PLANNER_AGENT_BUCKETS": "32,64,96,128,192",
"DIFFUSION_PLANNER_HOST_FAST": "1",
"DIFFUSION_PLANNER_INPUT_TRIM": "1",
"DIFFUSION_PLANNER_PRECISION": ""
}
},
"serve_profiles": [
{
"hardware": null,
"mesh_device": null,
"port": null,
"max_model_len": null,
"max_num_seqs": null,
"block_size": null,
"server_timeout": null,
"capabilities": null,
"additional_config": {},
"args": [],
"env": {},
"name": "default",
"description": null
}
],
"default_profile": null,
"code_dir": "code",
"verify": [
"assert 'single_chip_arch_1cq_no_dispatch_s' in open('/opt/tt-metal/tt_metal/impl/dispatch/topology.cpp').read()",
"from tt_diffusion_planner.ttaw.device import eth_dispatch_patch_present as p; assert p(), 'ttaw does not see the ETH patch'",
"assert 'dual_kernel_min_dram_dest_page_bytes' in open('/opt/tt-metal/ttnn/cpp/ttnn/operations/data_movement/reshape_view/device/reshape_rm_program_factory.cpp').read()",
"import tt_diffusion_planner.server.app as a; assert a.app",
"from tt_diffusion_planner.server.app import parse_mesh_shape as p; assert p('1x1') == p('(1, 1)') == p('1,1') == (1, 1)",
"import numpy; assert int(numpy.__version__.split('.')[0]) < 2, numpy.__version__",
"import onnx, yaml, huggingface_hub, safetensors, PIL",
"from tt_diffusion_planner.api import DiffusionPlanner; assert DiffusionPlanner.DEFAULT_REVISION == '423efde67f5414734da43a7ad856c17ceb8b51aa'",
"import ttnn; assert hasattr(ttnn, 'DispatchCoreConfig') and hasattr(ttnn, 'begin_trace_capture') and hasattr(ttnn, 'execute_trace') and hasattr(ttnn, 'release_trace')",
"from pathlib import Path; d = Path('/opt/tt-metal/tt_diffusion_planner/samples'); assert all((d / f).is_file() for f in ('kashiwanoha_dense.npz', 'kashiwanoha_dense.reference.json'))",
"from pathlib import Path; d = Path('/opt/tt-metal/tt_diffusion_planner/tt/kernels'); assert all((d / f).is_file() for f in ('ln32_reader.cpp', 'ln32_compute.cpp', 'ln32_writer.cpp', 'kcat_reader.cpp', 'kcat_compute.cpp', 'kcat_writer.cpp', 'smask_reader.cpp', 'smask_compute.cpp', 'smask_writer.cpp', 'ln32s_reader.cpp', 'ln32s_compute.cpp', 'ln32s_writer.cpp', 'ln32_sfpu.h', 'smsm_reader.cpp', 'smsm_compute.cpp', 'smsm_writer.cpp', 'fattn_reader.cpp', 'fattn_compute.cpp', 'fattn_writer.cpp'))"
],
"built": {
"image": "tt-model/diffusion-planner-p150:a2386953943b",
"repo": "changh95/diffusion-planner-p150",
"tt_model_version": "0.1.0",
"created_at": "2026-10-16T22:45:25+00:00",
"tt_metal": {
"sha": "44d66500520fda9f2c7060c0f6b41ec48f7ab37e",
"describe": "v0.80.0-dev20261006-78-g44d6650052-dirty",
"dirty": true,
"scm_version": "0.65.2.dev11169+g44d66500520",
"mode": "local",
"remote": "https://github.com/tenstorrent/tt-metal.git",
"branch": "main",
"pushed": true
},
"code_sha256": "5da22b97bbf89b03f83133089a6a3d01a8862a7a1601437774063d8118d9cae3",
"image_digest": "sha256:a2386953943be0ec71ee587a956df942c7d2225f00d2ce8c1bcce4e67ea999ff"
},
"card": {
"description": "Diffusion Planner v5.0, a 14.55M-parameter diffusion-transformer planner: six MLP-Mixer entity encoders and a 6-block transformer fusion encoder over 564 scene tokens, a 3-block DiT decoder with adaLN (self-attention over the ego and 320 agents, cross-attention to the scene) evaluated 11 times by a 10-step DPM-Solver++(2M) loop, and a turn-indicator head; the whole plan runs on the device. The 15 planner tensors of the Autoware node go in (ego and neighbour histories, lanes with speed limits, route lanes, polygons, line strings, goal pose, ego shape, turn-indicator history, in the ego frame). Out come an 8 s ego trajectory (80 poses at 10 Hz with velocity and acceleration), an 8 s predicted path for every valid neighbour and a turn-indicator command, with the pre- and post-processing of the `autoware_diffusion_planner` node (input normalization, agent ordering, velocity smoothing, force stop, turn-indicator decision).",
"attribution": "Derived from [AutowareFoundation/diffusion_planner](https://huggingface.co/AutowareFoundation/diffusion_planner) (tag `v5.0`), the Diffusion Planner network that TIER IV trained for Autoware's [`autoware_diffusion_planner`](https://github.com/autowarefoundation/autoware_universe/tree/9ceaccf026c31ffc5319bc9eeb4bd7bede0af3fd/planning/autoware_diffusion_planner) trajectory planner, with unmodified weights. Diffusion Planner: Zheng et al., [arXiv:2501.15564](https://arxiv.org/abs/2501.15564). See the original model card for training details.",
"prerequisites": null,
"quickstart": "Send the sample scene shipped in this repo (a scripted scene on Autoware's Kashiwanoha map, 88 neighbours) to `/predict`, on the port `tt serve` reported:\n\n```bash\ncurl -sLO https://huggingface.co/changh95/diffusion-planner-p150/resolve/main/code/tt_diffusion_planner/samples/kashiwanoha_dense.npz\nprintf '{\"inputs\": {\"format\": \"npz\", \"data\": \"%s\"}}' \"$(base64 -w0 kashiwanoha_dense.npz)\" > req.json\ncurl -s localhost:20000/predict -H 'Content-Type: application/json' -d @req.json\n```\n\n`code/tt_diffusion_planner/server/client.py` in this repo (standard library only) builds the same request from any\n`.npz` of the 15 tensors, with per-request `params`.\n",
"architecture": null,
"status": null,
"intended_use": "Ego trajectory planning and neighbour motion prediction for Autoware-style driving stacks: research, prototyping and offline evaluation of recorded or simulated scenes, with the outputs of one `autoware_diffusion_planner` node. The caller builds the planner tensors from its own ROS messages and Lanelet2 map.",
"out_of_scope_use": null,
"usage": "`POST /predict` takes one planning instant (the 15 planner tensors) as JSON and returns the ego plan, the\nneighbour predictions and the turn-indicator command. `GET /health` and `GET /info` report the server and device\nstate (`/info` lists the 15 tensors with their shapes); `GET /v1/models` is a stub, not a chat API.\n\n| request field | meaning |\n| --- | --- |\n| `inputs` | `{\"format\": \"npz\", \"data\": \"<base64 .npz>\"}` or `{\"format\": \"json\", \"arrays\": {name: nested list}}` with exactly the 15 raw tensors of the node's `create_input_data()`, float32, ego (`base_link`) frame, before normalization: `sampled_trajectories` [1,321,81,4], `ego_agent_past` [1,31,4], `ego_current_state` [1,10], `neighbor_agents_past` [1,320,31,11], `static_objects` [1,5,10], `lanes` [1,140,20,33], `lanes_speed_limit` [1,140,1], `route_lanes` [1,25,20,33], `route_lanes_speed_limit` [1,25,1], `polygons` [1,10,40,3], `line_strings` [1,60,20,4], `goal_pose` [1,4], `ego_shape` [1,3], `turn_indicators` [1,31], `delay` [1,1] |\n| `params` (optional) | `velocity_smoothing_window` (default 8), `stopping_threshold` (0.3 m/s), `turn_indicator_keep_offset` (-1.25), `return_denoising_steps` (false) |\n| `output_format` (optional) | `json` (default) or `npz` (adds the poses as a lossless base64 npz) |\n\nResponse for the sample scene (the trajectory cut to 3 of 80 rows, the predicted-agents array elided):\n\n```json\n{\"model\": \"diffusion-planner-p150\", \"frame_id\": \"base_link\", \"num_poses\": 80,\n \"columns\": [\"x\", \"y\", \"yaw\", \"cos\", \"sin\", \"velocity\", \"acceleration\"],\n \"trajectory\": [[0.3644, 0.01, -0.0169, 0.9964, -0.0169, 3.8033, -0.0392], [0.7626, -0.0021, -0.0412, 0.9968, -0.0412, 3.7994, -0.5496], [1.1517, -0.0281, -0.0674, 0.9942, -0.0672, 3.7444, -0.4683], \"... 77 more rows\"],\n \"turn_indicator\": {\"command\": 1, \"command_name\": \"DISABLE\", \"keep_selected\": true, \"held\": false, \"logits\": [-15.96, -5.12, -5.235, -0.764, 5.502], \"probabilities\": [1.7e-09, 8.4e-05, 7.5e-05, 0.0066, 0.9932]},\n \"predicted_agents\": {\"format\": \"npz\", \"key\": \"predicted_agents\", \"dtype\": \"float32\", \"shape\": [88, 80, 5], \"data\": \"<base64 npz>\"},\n \"meta\": {\"predicted_agent_columns\": [\"x\", \"y\", \"yaw\", \"cos\", \"sin\"], \"force_stop\": false,\n \"valid_counts\": {\"ego\": 1, \"neighbor\": 88, \"static\": 0, \"lane\": 123, \"route\": 17, \"polygon\": 0, \"line_string\": 60, \"goal\": 1, \"ego_shape\": 1, \"turn\": 1}},\n \"timing_ms\": {\"preprocess\": 2.4, \"device\": 22.8, \"postprocess\": 1.2, \"total\": 36.9, \"decode\": 8.4, \"model_call\": 26.7}}\n```\n\n- `trajectory`: 80 poses at 0.1-8.0 s in `base_link` (the ego frame of the inputs), metres, radians, m/s and\n m/s², post-processed like the node's `~/output/trajectory`: velocity from consecutive poses, a forward moving\n average over `velocity_smoothing_window` poses, force stop (poses frozen once the smoothed speed falls below\n `stopping_threshold`), acceleration by finite difference. `yaw` is what `tf2::getYaw` reads from the node's\n quaternion; `cos` / `sin` are the raw network outputs.\n- `turn_indicator.command`: 0 NO_COMMAND, 1 DISABLE, 2 ENABLE_LEFT, 3 ENABLE_RIGHT.\n- `predicted_agents`: one 80-point path (x, y, yaw, cos, sin) in `base_link` per non-empty neighbour row, in input\n order (`meta.predicted_agent_rows`).\n- A Python API with the same outputs (`tt_diffusion_planner.DiffusionPlanner`) is described in\n [`code/PYTHON.md`](code/PYTHON.md), including what the caller keeps between plans; it needs a tt-metal build\n with the two patches in this repo's [`patches/`](patches/) directory.\n\n### Example output\n\n\n\nPlans computed by this package for 33 consecutive planning instants of nuScenes scene-0061 (Singapore: following a\nvan, then a left turn; 2 Hz, shown at 7 frames/s), drawn from above with the lanes, the neighbours' predicted paths\nand the ego plan. Also as [MP4](media/demo_tt.mp4). **Non-commercial use only:** rendered from the nuScenes\ndataset, © Motional AD Inc., CC BY-NC-SA 4.0 and the [nuScenes Terms of Use](https://www.nuscenes.org/terms-of-use);\nMotional does not endorse this work. Attributions for every file in `media/`: [`media/ATTRIBUTION.md`](media/ATTRIBUTION.md).\n",
"performance": "Agreement with the fp32 CPU reference of the same network (same weights, same pre- and post-processing, same\ninitial solver state); gates: ego plan max ≤ 1.0 m and mean ≤ 0.3 m over the 8 s, turn command equal, neighbour\npaths' median per-agent max ≤ 1.5 m:\n\n| eval | this package | fp32 CPU reference | scenes |\n| --- | --- | --- | --- |\n| Ego plan difference (max / mean over 8 s), sample scene `kashiwanoha_dense` | 2.0 cm / 0.8 cm, turn command equal | – | 1 |\n| Ego plan difference, sample scene `straight_road` | 2.3 cm / 0.9 cm, turn command equal | – | 1 |\n| Ego plan difference, gate set: worst max / worst mean (median of the means) | 0.346 m / 0.154 m (1.3 cm) | – | 99 |\n| Turn command equal, gate set | 99 of 99 | – | 99 |\n| Neighbour paths, median per-agent max difference, worst scene of the gate set | 0.094 m | – | 99 |\n| Held-out scenes within every gate: worst ego max / worst mean | 50 of 50: 0.507 m / 0.174 m | – | 50 |\n| Module output PCC, sample scenes: encoder categories / scene encoding / teacher-forced decoder steps (minimum) | 0.999948 / 0.999976 / ≥ 0.9999995 | – | 2 |\n| Open-loop distance to the logged nuScenes drive at 8 s, ADE / FDE | 4.75 m / 11.87 m | 4.74 m / 11.87 m | 92 |\n| Turn command equal to the logged blinker, nuScenes | 88 of 92 | 88 of 92 | 92 |\n\nGate set: the 2 shipped sample scenes, 5 scripted research scenes and 92 planning instants converted from nuScenes\nv1.0-mini (Singapore and Boston). Held-out scenes, never used to choose the device numerics: the 33 consecutive\ninstants of nuScenes scene-0061, 4 full-capacity and noisy-initial-state scenes and 13 scenes at every agent-bucket\nboundary. The open-loop rows compare with one human driver, not a planning benchmark; the paper's nuPlan\nclosed-loop benchmark was not run, and the weights repo publishes no dataset-level metric to compare with.\n\n| speed (batch 1, warm) | input | median | throughput |\n| --- | --- | --- | --- |\n| Device time per plan, back-to-back trace replays, up to 31 neighbours | `straight_road` sample | 17.44 ms | 57.3 plans/s |\n| Device time per plan, 32-63 neighbours | nuScenes scene-0103 instant | 19.25 ms | 51.9 plans/s |\n| Device time per plan, 64-95 neighbours | `kashiwanoha_dense` sample (88 neighbours) | 20.00 ms | 50.0 plans/s |\n| Device time per plan, 96-127 / 128-191 / 192-320 neighbours | synthetic: `kashiwanoha_dense` with neighbours replicated to 96, 127 / 128, 191 / 192, 320 | 21.13 / 22.33 / 26.66 ms | 47.3 / 44.8 / 37.5 plans/s |\n| Python `model()` call (pre-processing, device, post-processing) | `kashiwanoha_dense` sample | 26.7 ms (p99 27.5) | 37.4 plans/s |\n| Served `POST /predict`, server `timing_ms.total` | `kashiwanoha_dense` sample (152 kB request) | 37.2 ms | – |\n| Served `POST /predict`, client round trip on loopback | `kashiwanoha_dense` sample | 41.6 ms | – |\n\nMeasured with this package's code on one p150 in an 8-vCPU AMD EPYC-Rome host: `code/scripts/bench.py` (100 warm\niterations per stage; device time = median of 3 rounds of 50 back-to-back trace replays) and 50 served requests of\nthe sample scene (after 5 warm-up requests) to this package's server app run on the host with the serve settings.\nThe device time depends on the number of neighbours: each plan runs the trace of the smallest agent bucket that\nholds the scene, with outputs equal to the full-capacity trace. The host stages (pre-processing, tensor packing,\ntransfers, post-processing) take about 7 ms of the `model()` call, and request decoding 8.6 ms of the served time.\n",
"limitations": "- Do not use it to drive or control a vehicle, in closed loop or as any safety function: it is not a certified\n Autoware component and has no functional-safety qualification.\n- Do not use its outputs as a Diffusion Planner benchmark: the weights are TIER IV's, trained on synthetic and real\n driving data that is not published. On nuScenes, a domain they were not trained on, the plans are plausible but\n conservative (moving plans about 17 % shorter than the logged drive), on CPU and p150 alike.\n- Not a ROS 2 node: it serves HTTP and Python only. Building the 15 planner tensors from ROS messages and the\n Lanelet2 map is the caller's. The API is stateless: the node's turn-indicator hold window, the agent and ego\n histories and the initial-solver-state prefix between plans are the caller's, and the node's guidance services\n (start, stop, centerline guidance) are not available.\n- Batch 1, one plan per request; requests are served one at a time. The v5.0 capacities (320 neighbours, 140 lanes,\n 25 route lanes, 10 polygons, 60 line strings) and 10 solver steps are fixed; the map entities are always\n computed at full capacity.\n- One p150 only. The image runs device dispatch on the chip's Ethernet cores, so multi-chip meshes are not supported.\n- Differences from the deployed node: the output stays in `base_link` (the node transforms it to `map` with the ego\n pose), the turn command is decided without the node's 1 s hold window, and the `delay` input is accepted and\n ignored (the node's multi-step mode does not read it). Outputs were compared with the fp32 CPU reference, not with\n TensorRT.\n- Device numerics (fp32 residual streams, LayerNorm, attention and solver state; split bf16 + fp32 matmul\n operands; bf16 weights in the encoder MLPs) move the plan slightly from the fp32 reference, by a few cm on most\n scenes and up to 0.35 m (gate set) or 0.51 m (a synthetic scene with 192 neighbours) at the worst; the effect\n differs from scene to scene. Neighbour paths are gated only by their median, so single agents can differ more:\n on the `kashiwanoha_dense` sample the per-agent max difference is 8.6 cm median, 0.23 m at the 90th percentile\n and 3.72 m for the worst of 88 agents.\n",
"risks": null,
"licensing": "- Weights: [AutowareFoundation/diffusion_planner](https://huggingface.co/AutowareFoundation/diffusion_planner) at tag `v5.0` (commit `423efde67f5414734da43a7ad856c17ceb8b51aa`), Apache-2.0 per its model card. Downloaded by `tt serve` at that commit, not redistributed here. The upstream card states that TIER IV trained the models on its synthetic and real driving data; the dataset composition is not published.\n- Pre- and post-processing ported from autoware_universe [`planning/autoware_diffusion_planner`](https://github.com/autowarefoundation/autoware_universe/tree/9ceaccf026c31ffc5319bc9eeb4bd7bede0af3fd/planning/autoware_diffusion_planner) (Apache-2.0).\n- Port and serving code (`code/`) and the tt-metal patches in `patches/`: Apache-2.0.\n- Sample scenes `code/tt_diffusion_planner/samples/`: `kashiwanoha_dense.npz` is derived from the Apache-2.0 Lanelet2 map [AutowareFoundation/map-carla-kashiwanoha](https://huggingface.co/datasets/AutowareFoundation/map-carla-kashiwanoha) (0.2.0) with a scripted ego, route and agents; `straight_road.npz` is generated by this repo's code. Both Apache-2.0.\n- Demo media in `media/` are renders, not part of the package. The demo video and `media/*_NC.*` come from nuScenes: **non-commercial use only**, CC BY-NC-SA 4.0, © Motional AD Inc.; Motional does not endorse this work. The renders of the sample scenes: Apache-2.0. Full attributions: [`media/ATTRIBUTION.md`](media/ATTRIBUTION.md).\n",
"related": "- The [Autoware collection](https://huggingface.co/collections/changh95/autoware-6ac890f41c8ca4ad23b6ef55): the other Autoware perception and planning models packaged for the p150.\n",
"license": {
"id": "apache-2.0",
"name": null,
"link": null
},
"pipeline_tag": "robotics",
"base_model": [
"AutowareFoundation/diffusion_planner"
]
}
}
} |