Skip to content

autoware_camera_streampetr: node cannot start with the published model (runtime parameters missing from ml_package v1.0) #13545

Open

Description

@mauromarinoni

Checklist

  • I've read the contribution guidelines.
  • I've searched other issues and no duplicate issues were found.
  • I'm convinced that this is not my fault but a bug.

Description

autoware_camera_streampetr expects its runtime parameters in the model's
ml_package_camera_streampetr.param.yaml. These are model_params.trt_precision, use_temporal,
backbone_path, head_path, position_embedding_path, the *_engine_path, workspace_size and the
post_process_params. The only published model does not contain them: Hugging Face
AutowareFoundation/camera_streampetr, tag v1.0, which is the one the ansible artifacts role downloads; main
is identical. With the official artifacts the node therefore cannot start.

The package's example config/ml_package_camera_streampetr.param.yaml has these parameters, but it is written for
a 7-class model (TRAFFIC_CONE, BARRIER), while the published model has 5 classes.

Expected behavior

ros2 launch autoware_camera_streampetr streampetr.launch.xml with the artifacts installed by the ansible role
(camera_streampetr v1.0) starts the node and builds the TensorRT engines.

Actual behavior

The node stops at startup: model_params.backbone_path (and the other runtime parameters) is not declared.
streampetr.launch.xml loads only:

  • model_param_path, i.e. $(var model_path)/ml_package_camera_streampetr.param.yaml from the artifact, which has
    class_names (5), detection_range, the input size, num_proposals, rois_number and the memory lengths;
  • node_param_path, i.e. config/camera_streampetr.param.yaml, which has no model or runtime parameters.

Steps to reproduce

  1. Install the artifacts with the ansible role (camera_streampetr revision v1.0), e.g. Autoware 1.10 /
    universe-devel-cuda-jazzy.
  2. ros2 launch autoware_camera_streampetr streampetr.launch.xml
  3. The node fails on the undeclared model_params.backbone_path.

To check the artifact directly:
curl -sL https://huggingface.co/AutowareFoundation/camera_streampetr/resolve/v1.0/ml_package_camera_streampetr.param.yaml
shows only the model parameters, with 5 classes. The tags of the repository are only v1.0.

Versions

  • autoware_universe 0.53.0 (Autoware 1.10); same files on main (2026-10-26)
  • Ubuntu 24.04, ROS 2 Jazzy, CUDA 13.0, TensorRT 10.13
  • Artifact: AutowareFoundation/camera_streampetr v1.0

Possible causes

The configuration was split into node parameters and ML-package parameters, with the runtime parameters moved into
the ml_package file of the model, and the classes went from 5 to 7. The published artifact was not updated
accordingly, and the artifacts role still pins v1.0.

Either of these would fix it:

  • publish a new artifact (e.g. v1.1) whose ml_package includes the runtime parameters, and bump the artifacts
    role. If the 7-class model is not available, that ml_package should keep 5 classes and post-process lists
    sized for 5;
  • or keep the model-independent runtime parameters (precision, temporal flag, ONNX/engine paths relative to
    $(var model_path), workspace) in config/camera_streampetr.param.yaml, so that a model-only ml_package works.
    The per-class post-process lists still need to match class_names.

Additional context

Our workaround is to pass the missing parameters in our launch, with the post-process lists sized for the 5
classes of v1.0:

<param name="model_params.trt_precision" value="fp16"/>
<param name="model_params.use_temporal" value="true"/>
<param name="model_params.backbone_path" value="$(var model_path)/simplify_extract_img_feat.onnx"/>
<param name="model_params.head_path" value="$(var model_path)/simplify_pts_head_memory.onnx"/>
<param name="model_params.position_embedding_path" value="$(var model_path)/simplify_position_embedding.onnx"/>
<param name="model_params.backbone_engine_path" value=""/>
<param name="model_params.head_engine_path" value=""/>
<param name="model_params.position_embedding_engine_path" value=""/>
<param name="model_params.workspace_size" value="32"/>
<param name="post_process_params.confidence_threshold" value="[0.36, 0.39, 0.38, 0.41, 0.43]"/>
<param name="post_process_params.circle_nms_dist_threshold" value="0.0"/>
<param name="post_process_params.iou_nms_search_distance_2d" value="10.0"/>
<param name="post_process_params.iou_nms_threshold" value="0.5"/>
<param name="post_process_params.yaw_norm_thresholds" value="[0.3, 0.3, 0.3, 0.3, 0.0]"/>

With these, the engines build and the node runs on simulated camera images (CARLA 0.10).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions