Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Yoshi Ri
- Taekjin Lee
- Lei Gu
Authors
multi_object_tracker
Purpose
The results of the detection are processed by a time series. The main purpose is to give ID and estimate velocity.
Inner-workings / Algorithms
This multi object tracker consists of data association and EKF.
Data association
The data association performs maximum score matching, called min cost max flow problem. In this package, mussp[1] is used as solver. In addition, when associating observations to tracers, data association have gates such as the area of the object from the BEV, Mahalanobis distance, and maximum distance, depending on the class label.
EKF Tracker
Models for pedestrians, bicycles (motorcycles), cars and unknown are available. The pedestrian or bicycle tracker is running at the same time as the respective EKF model in order to enable the transition between pedestrian and bicycle tracking. For big vehicles such as trucks and buses, we have separate models for passenger cars and large vehicles because they are difficult to distinguish from passenger cars and are not stable. Therefore, separate models are prepared for passenger cars and big vehicles, and these models are run at the same time as the respective EKF models to ensure stability.
Inputs / Outputs
The interfaces below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_interfaces_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input channel configuration
Multiple inputs are pre-defined in the input channel parameters (described below) and the inputs can be configured.
rule of the channel configuration
- ‘none’ or empty : Indicates that this detection input channel is not used/disabled
- Any other string : Specifies a custom channel name to be used for the detection input, configured in
schema/input_channels.schema.json
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Example configurations:
- Single detection input:
input/detection01/objects: /perception/object_recognition/detection/objects
input/detection01/channel: detected_objects # general input channel type
input/detection02/objects: input/objects02
input/detection02/channel: none # Disabled
- Multiple detection inputs:
# lidar centerpoint
input/detection01/objects: /perception/object_recognition/detection/lidar_centerpoint/objects
input/detection01/channel: lidar_centerpoint
# lidar short_range centerpoint
input/detection02/channel: /perception/object_recognition/detection/centerpoint_short_range/objects
input/detection02/objects: lidar_centerpoint_short_range
# camera lidar fusion
input/detection03/objects: /perception/object_recognition/detection/clustering/camera_lidar_fusion/objects
input/detection03/channel: camera_lidar_fusion
# camera lidar fusion based irregular object detection
input/detection04/objects: /perception/object_recognition/detection/irregular_object/objects
input/detection04/channel: camera_lidar_fusion_irregular
# detection by tracker
input/detection05/objects: /perception/object_recognition/detection/detection_by_tracker/objects
input/detection05/channel: detection_by_tracker
# radar
input/detection06/objects: /perception/object_recognition/detection/radar/objects
input/detection06/channel: radar
# disable
input/detection07/objects: input/objects07
input/detection07/channel: none # Disabled
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Parameters
Node parameters
The node launch parameters below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_param_values_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input Channel parameters
{{ json_to_markdown(“perception/autoware_multi_object_tracker/schema/input_channels.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_multi_object_tracker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(multi_object_tracker): tracker batch trigger on stale target stream (#13181)
- Fix tracker batch trigger on stale target stream
- style(pre-commit): autofix
- Fix channel optimizer timer behavior
- Restore input manager optimizer order
- Address review: freshness cap, target hysteresis, gradual latency shift
- cap the freshness timeout so a rate-dropped channel is not relaxed into the 'fresh' condition by its own grown interval statistics
- call optimizeChannelTimings() only from the optimizer timer, not from InputManager::getObjects()
- keep the current target stream unless another fresh stream exceeds its latency by the hysteresis, while a stale target still fails over at once
- rate-limit the increase of target_stream_latency_ so the batch window does not jump backward and export objects older than the tracker time
- add deterministic regression tests for the three behaviors above Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> Claude-Session: https://claude.ai/code/session_011NwvLwTeX7F3cyKJHNAMwP
- fix(multi_object_tracker): keep batch window open to the target stream during latency convergence (#13259)
* fix(multi_object_tracker): keep batch window open to the target stream during latency convergence The gradual target latency shift moves the batch window end while the window start stays at the export watermark; measurements below the window start are dropped by getObjectsOlderThan(). After a target dropout and recovery, the recovered stream's measurements fall into that gap for the whole convergence period. The window start now stays at or below the target stream's newest measurement, bounded by the 1-second interval. Also:
- push objects with the node's current_time so association processing time is not folded into the stream latency statistics
- de-vacuize SelectsLargestLatencyStreamAfterTimingOptimization by placing the high-latency channel off the default target index
- add a dropout-failover-recovery regression test
* refactor(multi_object_tracker): flatten getObjectTimeInterval bound selection The target stream's newest measurement is fetched once, and the window bounds are clamped with min/max: the window end stays at or above it, the window start at or below it, within the 1-second interval. ------------------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
docs(mkdocs_macros): render README interfaces and parameters from node design files (#13225)
- feat(autoware_multi_object_tracker): enhance node design with additional subscribers, publishers, and parameter descriptions
- feat(mkdocs_macros): enhance node design documentation with YAML interface and parameter rendering
- feat(node): update autoware_system_design_format to 0.4.0
- docs(mkdocs_macros): fix heading levels, inline ros__parameters, and typos
- render generated sections at a configurable heading level (default h3)
- document schemas that inline ros__parameters without a $ref
- fix 'fo channel' typos in interface descriptions
* feat(mkdocs_macros): enhance identifier formatting with line-break opportunities ---------
-
fix(autoware_multi_object_tracker): protect exported trackers from overlap-merge deletion (#13088)
- lazy merge for only confident tracker wins
- style(pre-commit): autofix
- replace channel dominant to sum-up score
* store channel_support to snapshot ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_launch | |
| autoware_perception_launch |
Launch files
- launch/multi_object_tracker.launch.xml
-
- input/detection01/objects [default: input/objects01]
- input/detection02/objects [default: input/objects02]
- input/detection03/objects [default: input/objects03]
- input/detection04/objects [default: input/objects04]
- input/detection05/objects [default: input/objects05]
- input/detection06/objects [default: input/objects06]
- input/detection07/objects [default: input/objects07]
- input/detection08/objects [default: input/objects08]
- input/detection09/objects [default: input/objects09]
- input/detection10/objects [default: input/objects10]
- input/detection11/objects [default: input/objects11]
- input/detection12/objects [default: input/objects12]
- input/odometry [default: /localization/kinematic_state]
- output/objects [default: objects]
- output/merged_objects [default: merged_objects]
- input/detection01/channel [default: none]
- input/detection02/channel [default: none]
- input/detection03/channel [default: none]
- input/detection04/channel [default: none]
- input/detection05/channel [default: none]
- input/detection06/channel [default: none]
- input/detection07/channel [default: none]
- input/detection08/channel [default: none]
- input/detection09/channel [default: none]
- input/detection10/channel [default: none]
- input/detection11/channel [default: none]
- input/detection12/channel [default: none]
- tracker_setting_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/multi_object_tracker_node.param.yaml]
- data_association_matrix_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/data_association_matrix.param.yaml]
- input_channels_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/input_channels.param.yaml]
- publish_merged_objects [default: false]
- ego_source [default: tf]
Messages
Services
Plugins
Recent questions tagged autoware_multi_object_tracker at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Yoshi Ri
- Taekjin Lee
- Lei Gu
Authors
multi_object_tracker
Purpose
The results of the detection are processed by a time series. The main purpose is to give ID and estimate velocity.
Inner-workings / Algorithms
This multi object tracker consists of data association and EKF.
Data association
The data association performs maximum score matching, called min cost max flow problem. In this package, mussp[1] is used as solver. In addition, when associating observations to tracers, data association have gates such as the area of the object from the BEV, Mahalanobis distance, and maximum distance, depending on the class label.
EKF Tracker
Models for pedestrians, bicycles (motorcycles), cars and unknown are available. The pedestrian or bicycle tracker is running at the same time as the respective EKF model in order to enable the transition between pedestrian and bicycle tracking. For big vehicles such as trucks and buses, we have separate models for passenger cars and large vehicles because they are difficult to distinguish from passenger cars and are not stable. Therefore, separate models are prepared for passenger cars and big vehicles, and these models are run at the same time as the respective EKF models to ensure stability.
Inputs / Outputs
The interfaces below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_interfaces_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input channel configuration
Multiple inputs are pre-defined in the input channel parameters (described below) and the inputs can be configured.
rule of the channel configuration
- ‘none’ or empty : Indicates that this detection input channel is not used/disabled
- Any other string : Specifies a custom channel name to be used for the detection input, configured in
schema/input_channels.schema.json
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Example configurations:
- Single detection input:
input/detection01/objects: /perception/object_recognition/detection/objects
input/detection01/channel: detected_objects # general input channel type
input/detection02/objects: input/objects02
input/detection02/channel: none # Disabled
- Multiple detection inputs:
# lidar centerpoint
input/detection01/objects: /perception/object_recognition/detection/lidar_centerpoint/objects
input/detection01/channel: lidar_centerpoint
# lidar short_range centerpoint
input/detection02/channel: /perception/object_recognition/detection/centerpoint_short_range/objects
input/detection02/objects: lidar_centerpoint_short_range
# camera lidar fusion
input/detection03/objects: /perception/object_recognition/detection/clustering/camera_lidar_fusion/objects
input/detection03/channel: camera_lidar_fusion
# camera lidar fusion based irregular object detection
input/detection04/objects: /perception/object_recognition/detection/irregular_object/objects
input/detection04/channel: camera_lidar_fusion_irregular
# detection by tracker
input/detection05/objects: /perception/object_recognition/detection/detection_by_tracker/objects
input/detection05/channel: detection_by_tracker
# radar
input/detection06/objects: /perception/object_recognition/detection/radar/objects
input/detection06/channel: radar
# disable
input/detection07/objects: input/objects07
input/detection07/channel: none # Disabled
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Parameters
Node parameters
The node launch parameters below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_param_values_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input Channel parameters
{{ json_to_markdown(“perception/autoware_multi_object_tracker/schema/input_channels.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_multi_object_tracker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(multi_object_tracker): tracker batch trigger on stale target stream (#13181)
- Fix tracker batch trigger on stale target stream
- style(pre-commit): autofix
- Fix channel optimizer timer behavior
- Restore input manager optimizer order
- Address review: freshness cap, target hysteresis, gradual latency shift
- cap the freshness timeout so a rate-dropped channel is not relaxed into the 'fresh' condition by its own grown interval statistics
- call optimizeChannelTimings() only from the optimizer timer, not from InputManager::getObjects()
- keep the current target stream unless another fresh stream exceeds its latency by the hysteresis, while a stale target still fails over at once
- rate-limit the increase of target_stream_latency_ so the batch window does not jump backward and export objects older than the tracker time
- add deterministic regression tests for the three behaviors above Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> Claude-Session: https://claude.ai/code/session_011NwvLwTeX7F3cyKJHNAMwP
- fix(multi_object_tracker): keep batch window open to the target stream during latency convergence (#13259)
* fix(multi_object_tracker): keep batch window open to the target stream during latency convergence The gradual target latency shift moves the batch window end while the window start stays at the export watermark; measurements below the window start are dropped by getObjectsOlderThan(). After a target dropout and recovery, the recovered stream's measurements fall into that gap for the whole convergence period. The window start now stays at or below the target stream's newest measurement, bounded by the 1-second interval. Also:
- push objects with the node's current_time so association processing time is not folded into the stream latency statistics
- de-vacuize SelectsLargestLatencyStreamAfterTimingOptimization by placing the high-latency channel off the default target index
- add a dropout-failover-recovery regression test
* refactor(multi_object_tracker): flatten getObjectTimeInterval bound selection The target stream's newest measurement is fetched once, and the window bounds are clamped with min/max: the window end stays at or above it, the window start at or below it, within the 1-second interval. ------------------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
docs(mkdocs_macros): render README interfaces and parameters from node design files (#13225)
- feat(autoware_multi_object_tracker): enhance node design with additional subscribers, publishers, and parameter descriptions
- feat(mkdocs_macros): enhance node design documentation with YAML interface and parameter rendering
- feat(node): update autoware_system_design_format to 0.4.0
- docs(mkdocs_macros): fix heading levels, inline ros__parameters, and typos
- render generated sections at a configurable heading level (default h3)
- document schemas that inline ros__parameters without a $ref
- fix 'fo channel' typos in interface descriptions
* feat(mkdocs_macros): enhance identifier formatting with line-break opportunities ---------
-
fix(autoware_multi_object_tracker): protect exported trackers from overlap-merge deletion (#13088)
- lazy merge for only confident tracker wins
- style(pre-commit): autofix
- replace channel dominant to sum-up score
* store channel_support to snapshot ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_launch | |
| autoware_perception_launch |
Launch files
- launch/multi_object_tracker.launch.xml
-
- input/detection01/objects [default: input/objects01]
- input/detection02/objects [default: input/objects02]
- input/detection03/objects [default: input/objects03]
- input/detection04/objects [default: input/objects04]
- input/detection05/objects [default: input/objects05]
- input/detection06/objects [default: input/objects06]
- input/detection07/objects [default: input/objects07]
- input/detection08/objects [default: input/objects08]
- input/detection09/objects [default: input/objects09]
- input/detection10/objects [default: input/objects10]
- input/detection11/objects [default: input/objects11]
- input/detection12/objects [default: input/objects12]
- input/odometry [default: /localization/kinematic_state]
- output/objects [default: objects]
- output/merged_objects [default: merged_objects]
- input/detection01/channel [default: none]
- input/detection02/channel [default: none]
- input/detection03/channel [default: none]
- input/detection04/channel [default: none]
- input/detection05/channel [default: none]
- input/detection06/channel [default: none]
- input/detection07/channel [default: none]
- input/detection08/channel [default: none]
- input/detection09/channel [default: none]
- input/detection10/channel [default: none]
- input/detection11/channel [default: none]
- input/detection12/channel [default: none]
- tracker_setting_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/multi_object_tracker_node.param.yaml]
- data_association_matrix_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/data_association_matrix.param.yaml]
- input_channels_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/input_channels.param.yaml]
- publish_merged_objects [default: false]
- ego_source [default: tf]
Messages
Services
Plugins
Recent questions tagged autoware_multi_object_tracker at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Yoshi Ri
- Taekjin Lee
- Lei Gu
Authors
multi_object_tracker
Purpose
The results of the detection are processed by a time series. The main purpose is to give ID and estimate velocity.
Inner-workings / Algorithms
This multi object tracker consists of data association and EKF.
Data association
The data association performs maximum score matching, called min cost max flow problem. In this package, mussp[1] is used as solver. In addition, when associating observations to tracers, data association have gates such as the area of the object from the BEV, Mahalanobis distance, and maximum distance, depending on the class label.
EKF Tracker
Models for pedestrians, bicycles (motorcycles), cars and unknown are available. The pedestrian or bicycle tracker is running at the same time as the respective EKF model in order to enable the transition between pedestrian and bicycle tracking. For big vehicles such as trucks and buses, we have separate models for passenger cars and large vehicles because they are difficult to distinguish from passenger cars and are not stable. Therefore, separate models are prepared for passenger cars and big vehicles, and these models are run at the same time as the respective EKF models to ensure stability.
Inputs / Outputs
The interfaces below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_interfaces_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input channel configuration
Multiple inputs are pre-defined in the input channel parameters (described below) and the inputs can be configured.
rule of the channel configuration
- ‘none’ or empty : Indicates that this detection input channel is not used/disabled
- Any other string : Specifies a custom channel name to be used for the detection input, configured in
schema/input_channels.schema.json
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Example configurations:
- Single detection input:
input/detection01/objects: /perception/object_recognition/detection/objects
input/detection01/channel: detected_objects # general input channel type
input/detection02/objects: input/objects02
input/detection02/channel: none # Disabled
- Multiple detection inputs:
# lidar centerpoint
input/detection01/objects: /perception/object_recognition/detection/lidar_centerpoint/objects
input/detection01/channel: lidar_centerpoint
# lidar short_range centerpoint
input/detection02/channel: /perception/object_recognition/detection/centerpoint_short_range/objects
input/detection02/objects: lidar_centerpoint_short_range
# camera lidar fusion
input/detection03/objects: /perception/object_recognition/detection/clustering/camera_lidar_fusion/objects
input/detection03/channel: camera_lidar_fusion
# camera lidar fusion based irregular object detection
input/detection04/objects: /perception/object_recognition/detection/irregular_object/objects
input/detection04/channel: camera_lidar_fusion_irregular
# detection by tracker
input/detection05/objects: /perception/object_recognition/detection/detection_by_tracker/objects
input/detection05/channel: detection_by_tracker
# radar
input/detection06/objects: /perception/object_recognition/detection/radar/objects
input/detection06/channel: radar
# disable
input/detection07/objects: input/objects07
input/detection07/channel: none # Disabled
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Parameters
Node parameters
The node launch parameters below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_param_values_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input Channel parameters
{{ json_to_markdown(“perception/autoware_multi_object_tracker/schema/input_channels.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_multi_object_tracker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(multi_object_tracker): tracker batch trigger on stale target stream (#13181)
- Fix tracker batch trigger on stale target stream
- style(pre-commit): autofix
- Fix channel optimizer timer behavior
- Restore input manager optimizer order
- Address review: freshness cap, target hysteresis, gradual latency shift
- cap the freshness timeout so a rate-dropped channel is not relaxed into the 'fresh' condition by its own grown interval statistics
- call optimizeChannelTimings() only from the optimizer timer, not from InputManager::getObjects()
- keep the current target stream unless another fresh stream exceeds its latency by the hysteresis, while a stale target still fails over at once
- rate-limit the increase of target_stream_latency_ so the batch window does not jump backward and export objects older than the tracker time
- add deterministic regression tests for the three behaviors above Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> Claude-Session: https://claude.ai/code/session_011NwvLwTeX7F3cyKJHNAMwP
- fix(multi_object_tracker): keep batch window open to the target stream during latency convergence (#13259)
* fix(multi_object_tracker): keep batch window open to the target stream during latency convergence The gradual target latency shift moves the batch window end while the window start stays at the export watermark; measurements below the window start are dropped by getObjectsOlderThan(). After a target dropout and recovery, the recovered stream's measurements fall into that gap for the whole convergence period. The window start now stays at or below the target stream's newest measurement, bounded by the 1-second interval. Also:
- push objects with the node's current_time so association processing time is not folded into the stream latency statistics
- de-vacuize SelectsLargestLatencyStreamAfterTimingOptimization by placing the high-latency channel off the default target index
- add a dropout-failover-recovery regression test
* refactor(multi_object_tracker): flatten getObjectTimeInterval bound selection The target stream's newest measurement is fetched once, and the window bounds are clamped with min/max: the window end stays at or above it, the window start at or below it, within the 1-second interval. ------------------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
docs(mkdocs_macros): render README interfaces and parameters from node design files (#13225)
- feat(autoware_multi_object_tracker): enhance node design with additional subscribers, publishers, and parameter descriptions
- feat(mkdocs_macros): enhance node design documentation with YAML interface and parameter rendering
- feat(node): update autoware_system_design_format to 0.4.0
- docs(mkdocs_macros): fix heading levels, inline ros__parameters, and typos
- render generated sections at a configurable heading level (default h3)
- document schemas that inline ros__parameters without a $ref
- fix 'fo channel' typos in interface descriptions
* feat(mkdocs_macros): enhance identifier formatting with line-break opportunities ---------
-
fix(autoware_multi_object_tracker): protect exported trackers from overlap-merge deletion (#13088)
- lazy merge for only confident tracker wins
- style(pre-commit): autofix
- replace channel dominant to sum-up score
* store channel_support to snapshot ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_launch | |
| autoware_perception_launch |
Launch files
- launch/multi_object_tracker.launch.xml
-
- input/detection01/objects [default: input/objects01]
- input/detection02/objects [default: input/objects02]
- input/detection03/objects [default: input/objects03]
- input/detection04/objects [default: input/objects04]
- input/detection05/objects [default: input/objects05]
- input/detection06/objects [default: input/objects06]
- input/detection07/objects [default: input/objects07]
- input/detection08/objects [default: input/objects08]
- input/detection09/objects [default: input/objects09]
- input/detection10/objects [default: input/objects10]
- input/detection11/objects [default: input/objects11]
- input/detection12/objects [default: input/objects12]
- input/odometry [default: /localization/kinematic_state]
- output/objects [default: objects]
- output/merged_objects [default: merged_objects]
- input/detection01/channel [default: none]
- input/detection02/channel [default: none]
- input/detection03/channel [default: none]
- input/detection04/channel [default: none]
- input/detection05/channel [default: none]
- input/detection06/channel [default: none]
- input/detection07/channel [default: none]
- input/detection08/channel [default: none]
- input/detection09/channel [default: none]
- input/detection10/channel [default: none]
- input/detection11/channel [default: none]
- input/detection12/channel [default: none]
- tracker_setting_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/multi_object_tracker_node.param.yaml]
- data_association_matrix_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/data_association_matrix.param.yaml]
- input_channels_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/input_channels.param.yaml]
- publish_merged_objects [default: false]
- ego_source [default: tf]
Messages
Services
Plugins
Recent questions tagged autoware_multi_object_tracker at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Yoshi Ri
- Taekjin Lee
- Lei Gu
Authors
multi_object_tracker
Purpose
The results of the detection are processed by a time series. The main purpose is to give ID and estimate velocity.
Inner-workings / Algorithms
This multi object tracker consists of data association and EKF.
Data association
The data association performs maximum score matching, called min cost max flow problem. In this package, mussp[1] is used as solver. In addition, when associating observations to tracers, data association have gates such as the area of the object from the BEV, Mahalanobis distance, and maximum distance, depending on the class label.
EKF Tracker
Models for pedestrians, bicycles (motorcycles), cars and unknown are available. The pedestrian or bicycle tracker is running at the same time as the respective EKF model in order to enable the transition between pedestrian and bicycle tracking. For big vehicles such as trucks and buses, we have separate models for passenger cars and large vehicles because they are difficult to distinguish from passenger cars and are not stable. Therefore, separate models are prepared for passenger cars and big vehicles, and these models are run at the same time as the respective EKF models to ensure stability.
Inputs / Outputs
The interfaces below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_interfaces_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input channel configuration
Multiple inputs are pre-defined in the input channel parameters (described below) and the inputs can be configured.
rule of the channel configuration
- ‘none’ or empty : Indicates that this detection input channel is not used/disabled
- Any other string : Specifies a custom channel name to be used for the detection input, configured in
schema/input_channels.schema.json
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Example configurations:
- Single detection input:
input/detection01/objects: /perception/object_recognition/detection/objects
input/detection01/channel: detected_objects # general input channel type
input/detection02/objects: input/objects02
input/detection02/channel: none # Disabled
- Multiple detection inputs:
# lidar centerpoint
input/detection01/objects: /perception/object_recognition/detection/lidar_centerpoint/objects
input/detection01/channel: lidar_centerpoint
# lidar short_range centerpoint
input/detection02/channel: /perception/object_recognition/detection/centerpoint_short_range/objects
input/detection02/objects: lidar_centerpoint_short_range
# camera lidar fusion
input/detection03/objects: /perception/object_recognition/detection/clustering/camera_lidar_fusion/objects
input/detection03/channel: camera_lidar_fusion
# camera lidar fusion based irregular object detection
input/detection04/objects: /perception/object_recognition/detection/irregular_object/objects
input/detection04/channel: camera_lidar_fusion_irregular
# detection by tracker
input/detection05/objects: /perception/object_recognition/detection/detection_by_tracker/objects
input/detection05/channel: detection_by_tracker
# radar
input/detection06/objects: /perception/object_recognition/detection/radar/objects
input/detection06/channel: radar
# disable
input/detection07/objects: input/objects07
input/detection07/channel: none # Disabled
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Parameters
Node parameters
The node launch parameters below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_param_values_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input Channel parameters
{{ json_to_markdown(“perception/autoware_multi_object_tracker/schema/input_channels.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_multi_object_tracker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(multi_object_tracker): tracker batch trigger on stale target stream (#13181)
- Fix tracker batch trigger on stale target stream
- style(pre-commit): autofix
- Fix channel optimizer timer behavior
- Restore input manager optimizer order
- Address review: freshness cap, target hysteresis, gradual latency shift
- cap the freshness timeout so a rate-dropped channel is not relaxed into the 'fresh' condition by its own grown interval statistics
- call optimizeChannelTimings() only from the optimizer timer, not from InputManager::getObjects()
- keep the current target stream unless another fresh stream exceeds its latency by the hysteresis, while a stale target still fails over at once
- rate-limit the increase of target_stream_latency_ so the batch window does not jump backward and export objects older than the tracker time
- add deterministic regression tests for the three behaviors above Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> Claude-Session: https://claude.ai/code/session_011NwvLwTeX7F3cyKJHNAMwP
- fix(multi_object_tracker): keep batch window open to the target stream during latency convergence (#13259)
* fix(multi_object_tracker): keep batch window open to the target stream during latency convergence The gradual target latency shift moves the batch window end while the window start stays at the export watermark; measurements below the window start are dropped by getObjectsOlderThan(). After a target dropout and recovery, the recovered stream's measurements fall into that gap for the whole convergence period. The window start now stays at or below the target stream's newest measurement, bounded by the 1-second interval. Also:
- push objects with the node's current_time so association processing time is not folded into the stream latency statistics
- de-vacuize SelectsLargestLatencyStreamAfterTimingOptimization by placing the high-latency channel off the default target index
- add a dropout-failover-recovery regression test
* refactor(multi_object_tracker): flatten getObjectTimeInterval bound selection The target stream's newest measurement is fetched once, and the window bounds are clamped with min/max: the window end stays at or above it, the window start at or below it, within the 1-second interval. ------------------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
docs(mkdocs_macros): render README interfaces and parameters from node design files (#13225)
- feat(autoware_multi_object_tracker): enhance node design with additional subscribers, publishers, and parameter descriptions
- feat(mkdocs_macros): enhance node design documentation with YAML interface and parameter rendering
- feat(node): update autoware_system_design_format to 0.4.0
- docs(mkdocs_macros): fix heading levels, inline ros__parameters, and typos
- render generated sections at a configurable heading level (default h3)
- document schemas that inline ros__parameters without a $ref
- fix 'fo channel' typos in interface descriptions
* feat(mkdocs_macros): enhance identifier formatting with line-break opportunities ---------
-
fix(autoware_multi_object_tracker): protect exported trackers from overlap-merge deletion (#13088)
- lazy merge for only confident tracker wins
- style(pre-commit): autofix
- replace channel dominant to sum-up score
* store channel_support to snapshot ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_launch | |
| autoware_perception_launch |
Launch files
- launch/multi_object_tracker.launch.xml
-
- input/detection01/objects [default: input/objects01]
- input/detection02/objects [default: input/objects02]
- input/detection03/objects [default: input/objects03]
- input/detection04/objects [default: input/objects04]
- input/detection05/objects [default: input/objects05]
- input/detection06/objects [default: input/objects06]
- input/detection07/objects [default: input/objects07]
- input/detection08/objects [default: input/objects08]
- input/detection09/objects [default: input/objects09]
- input/detection10/objects [default: input/objects10]
- input/detection11/objects [default: input/objects11]
- input/detection12/objects [default: input/objects12]
- input/odometry [default: /localization/kinematic_state]
- output/objects [default: objects]
- output/merged_objects [default: merged_objects]
- input/detection01/channel [default: none]
- input/detection02/channel [default: none]
- input/detection03/channel [default: none]
- input/detection04/channel [default: none]
- input/detection05/channel [default: none]
- input/detection06/channel [default: none]
- input/detection07/channel [default: none]
- input/detection08/channel [default: none]
- input/detection09/channel [default: none]
- input/detection10/channel [default: none]
- input/detection11/channel [default: none]
- input/detection12/channel [default: none]
- tracker_setting_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/multi_object_tracker_node.param.yaml]
- data_association_matrix_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/data_association_matrix.param.yaml]
- input_channels_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/input_channels.param.yaml]
- publish_merged_objects [default: false]
- ego_source [default: tf]
Messages
Services
Plugins
Recent questions tagged autoware_multi_object_tracker at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Yoshi Ri
- Taekjin Lee
- Lei Gu
Authors
multi_object_tracker
Purpose
The results of the detection are processed by a time series. The main purpose is to give ID and estimate velocity.
Inner-workings / Algorithms
This multi object tracker consists of data association and EKF.
Data association
The data association performs maximum score matching, called min cost max flow problem. In this package, mussp[1] is used as solver. In addition, when associating observations to tracers, data association have gates such as the area of the object from the BEV, Mahalanobis distance, and maximum distance, depending on the class label.
EKF Tracker
Models for pedestrians, bicycles (motorcycles), cars and unknown are available. The pedestrian or bicycle tracker is running at the same time as the respective EKF model in order to enable the transition between pedestrian and bicycle tracking. For big vehicles such as trucks and buses, we have separate models for passenger cars and large vehicles because they are difficult to distinguish from passenger cars and are not stable. Therefore, separate models are prepared for passenger cars and big vehicles, and these models are run at the same time as the respective EKF models to ensure stability.
Inputs / Outputs
The interfaces below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_interfaces_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input channel configuration
Multiple inputs are pre-defined in the input channel parameters (described below) and the inputs can be configured.
rule of the channel configuration
- ‘none’ or empty : Indicates that this detection input channel is not used/disabled
- Any other string : Specifies a custom channel name to be used for the detection input, configured in
schema/input_channels.schema.json
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Example configurations:
- Single detection input:
input/detection01/objects: /perception/object_recognition/detection/objects
input/detection01/channel: detected_objects # general input channel type
input/detection02/objects: input/objects02
input/detection02/channel: none # Disabled
- Multiple detection inputs:
# lidar centerpoint
input/detection01/objects: /perception/object_recognition/detection/lidar_centerpoint/objects
input/detection01/channel: lidar_centerpoint
# lidar short_range centerpoint
input/detection02/channel: /perception/object_recognition/detection/centerpoint_short_range/objects
input/detection02/objects: lidar_centerpoint_short_range
# camera lidar fusion
input/detection03/objects: /perception/object_recognition/detection/clustering/camera_lidar_fusion/objects
input/detection03/channel: camera_lidar_fusion
# camera lidar fusion based irregular object detection
input/detection04/objects: /perception/object_recognition/detection/irregular_object/objects
input/detection04/channel: camera_lidar_fusion_irregular
# detection by tracker
input/detection05/objects: /perception/object_recognition/detection/detection_by_tracker/objects
input/detection05/channel: detection_by_tracker
# radar
input/detection06/objects: /perception/object_recognition/detection/radar/objects
input/detection06/channel: radar
# disable
input/detection07/objects: input/objects07
input/detection07/channel: none # Disabled
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Parameters
Node parameters
The node launch parameters below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_param_values_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input Channel parameters
{{ json_to_markdown(“perception/autoware_multi_object_tracker/schema/input_channels.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_multi_object_tracker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(multi_object_tracker): tracker batch trigger on stale target stream (#13181)
- Fix tracker batch trigger on stale target stream
- style(pre-commit): autofix
- Fix channel optimizer timer behavior
- Restore input manager optimizer order
- Address review: freshness cap, target hysteresis, gradual latency shift
- cap the freshness timeout so a rate-dropped channel is not relaxed into the 'fresh' condition by its own grown interval statistics
- call optimizeChannelTimings() only from the optimizer timer, not from InputManager::getObjects()
- keep the current target stream unless another fresh stream exceeds its latency by the hysteresis, while a stale target still fails over at once
- rate-limit the increase of target_stream_latency_ so the batch window does not jump backward and export objects older than the tracker time
- add deterministic regression tests for the three behaviors above Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> Claude-Session: https://claude.ai/code/session_011NwvLwTeX7F3cyKJHNAMwP
- fix(multi_object_tracker): keep batch window open to the target stream during latency convergence (#13259)
* fix(multi_object_tracker): keep batch window open to the target stream during latency convergence The gradual target latency shift moves the batch window end while the window start stays at the export watermark; measurements below the window start are dropped by getObjectsOlderThan(). After a target dropout and recovery, the recovered stream's measurements fall into that gap for the whole convergence period. The window start now stays at or below the target stream's newest measurement, bounded by the 1-second interval. Also:
- push objects with the node's current_time so association processing time is not folded into the stream latency statistics
- de-vacuize SelectsLargestLatencyStreamAfterTimingOptimization by placing the high-latency channel off the default target index
- add a dropout-failover-recovery regression test
* refactor(multi_object_tracker): flatten getObjectTimeInterval bound selection The target stream's newest measurement is fetched once, and the window bounds are clamped with min/max: the window end stays at or above it, the window start at or below it, within the 1-second interval. ------------------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
docs(mkdocs_macros): render README interfaces and parameters from node design files (#13225)
- feat(autoware_multi_object_tracker): enhance node design with additional subscribers, publishers, and parameter descriptions
- feat(mkdocs_macros): enhance node design documentation with YAML interface and parameter rendering
- feat(node): update autoware_system_design_format to 0.4.0
- docs(mkdocs_macros): fix heading levels, inline ros__parameters, and typos
- render generated sections at a configurable heading level (default h3)
- document schemas that inline ros__parameters without a $ref
- fix 'fo channel' typos in interface descriptions
* feat(mkdocs_macros): enhance identifier formatting with line-break opportunities ---------
-
fix(autoware_multi_object_tracker): protect exported trackers from overlap-merge deletion (#13088)
- lazy merge for only confident tracker wins
- style(pre-commit): autofix
- replace channel dominant to sum-up score
* store channel_support to snapshot ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_launch | |
| autoware_perception_launch |
Launch files
- launch/multi_object_tracker.launch.xml
-
- input/detection01/objects [default: input/objects01]
- input/detection02/objects [default: input/objects02]
- input/detection03/objects [default: input/objects03]
- input/detection04/objects [default: input/objects04]
- input/detection05/objects [default: input/objects05]
- input/detection06/objects [default: input/objects06]
- input/detection07/objects [default: input/objects07]
- input/detection08/objects [default: input/objects08]
- input/detection09/objects [default: input/objects09]
- input/detection10/objects [default: input/objects10]
- input/detection11/objects [default: input/objects11]
- input/detection12/objects [default: input/objects12]
- input/odometry [default: /localization/kinematic_state]
- output/objects [default: objects]
- output/merged_objects [default: merged_objects]
- input/detection01/channel [default: none]
- input/detection02/channel [default: none]
- input/detection03/channel [default: none]
- input/detection04/channel [default: none]
- input/detection05/channel [default: none]
- input/detection06/channel [default: none]
- input/detection07/channel [default: none]
- input/detection08/channel [default: none]
- input/detection09/channel [default: none]
- input/detection10/channel [default: none]
- input/detection11/channel [default: none]
- input/detection12/channel [default: none]
- tracker_setting_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/multi_object_tracker_node.param.yaml]
- data_association_matrix_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/data_association_matrix.param.yaml]
- input_channels_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/input_channels.param.yaml]
- publish_merged_objects [default: false]
- ego_source [default: tf]
Messages
Services
Plugins
Recent questions tagged autoware_multi_object_tracker at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Yoshi Ri
- Taekjin Lee
- Lei Gu
Authors
multi_object_tracker
Purpose
The results of the detection are processed by a time series. The main purpose is to give ID and estimate velocity.
Inner-workings / Algorithms
This multi object tracker consists of data association and EKF.
Data association
The data association performs maximum score matching, called min cost max flow problem. In this package, mussp[1] is used as solver. In addition, when associating observations to tracers, data association have gates such as the area of the object from the BEV, Mahalanobis distance, and maximum distance, depending on the class label.
EKF Tracker
Models for pedestrians, bicycles (motorcycles), cars and unknown are available. The pedestrian or bicycle tracker is running at the same time as the respective EKF model in order to enable the transition between pedestrian and bicycle tracking. For big vehicles such as trucks and buses, we have separate models for passenger cars and large vehicles because they are difficult to distinguish from passenger cars and are not stable. Therefore, separate models are prepared for passenger cars and big vehicles, and these models are run at the same time as the respective EKF models to ensure stability.
Inputs / Outputs
The interfaces below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_interfaces_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input channel configuration
Multiple inputs are pre-defined in the input channel parameters (described below) and the inputs can be configured.
rule of the channel configuration
- ‘none’ or empty : Indicates that this detection input channel is not used/disabled
- Any other string : Specifies a custom channel name to be used for the detection input, configured in
schema/input_channels.schema.json
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Example configurations:
- Single detection input:
input/detection01/objects: /perception/object_recognition/detection/objects
input/detection01/channel: detected_objects # general input channel type
input/detection02/objects: input/objects02
input/detection02/channel: none # Disabled
- Multiple detection inputs:
# lidar centerpoint
input/detection01/objects: /perception/object_recognition/detection/lidar_centerpoint/objects
input/detection01/channel: lidar_centerpoint
# lidar short_range centerpoint
input/detection02/channel: /perception/object_recognition/detection/centerpoint_short_range/objects
input/detection02/objects: lidar_centerpoint_short_range
# camera lidar fusion
input/detection03/objects: /perception/object_recognition/detection/clustering/camera_lidar_fusion/objects
input/detection03/channel: camera_lidar_fusion
# camera lidar fusion based irregular object detection
input/detection04/objects: /perception/object_recognition/detection/irregular_object/objects
input/detection04/channel: camera_lidar_fusion_irregular
# detection by tracker
input/detection05/objects: /perception/object_recognition/detection/detection_by_tracker/objects
input/detection05/channel: detection_by_tracker
# radar
input/detection06/objects: /perception/object_recognition/detection/radar/objects
input/detection06/channel: radar
# disable
input/detection07/objects: input/objects07
input/detection07/channel: none # Disabled
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Parameters
Node parameters
The node launch parameters below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_param_values_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input Channel parameters
{{ json_to_markdown(“perception/autoware_multi_object_tracker/schema/input_channels.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_multi_object_tracker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(multi_object_tracker): tracker batch trigger on stale target stream (#13181)
- Fix tracker batch trigger on stale target stream
- style(pre-commit): autofix
- Fix channel optimizer timer behavior
- Restore input manager optimizer order
- Address review: freshness cap, target hysteresis, gradual latency shift
- cap the freshness timeout so a rate-dropped channel is not relaxed into the 'fresh' condition by its own grown interval statistics
- call optimizeChannelTimings() only from the optimizer timer, not from InputManager::getObjects()
- keep the current target stream unless another fresh stream exceeds its latency by the hysteresis, while a stale target still fails over at once
- rate-limit the increase of target_stream_latency_ so the batch window does not jump backward and export objects older than the tracker time
- add deterministic regression tests for the three behaviors above Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> Claude-Session: https://claude.ai/code/session_011NwvLwTeX7F3cyKJHNAMwP
- fix(multi_object_tracker): keep batch window open to the target stream during latency convergence (#13259)
* fix(multi_object_tracker): keep batch window open to the target stream during latency convergence The gradual target latency shift moves the batch window end while the window start stays at the export watermark; measurements below the window start are dropped by getObjectsOlderThan(). After a target dropout and recovery, the recovered stream's measurements fall into that gap for the whole convergence period. The window start now stays at or below the target stream's newest measurement, bounded by the 1-second interval. Also:
- push objects with the node's current_time so association processing time is not folded into the stream latency statistics
- de-vacuize SelectsLargestLatencyStreamAfterTimingOptimization by placing the high-latency channel off the default target index
- add a dropout-failover-recovery regression test
* refactor(multi_object_tracker): flatten getObjectTimeInterval bound selection The target stream's newest measurement is fetched once, and the window bounds are clamped with min/max: the window end stays at or above it, the window start at or below it, within the 1-second interval. ------------------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
docs(mkdocs_macros): render README interfaces and parameters from node design files (#13225)
- feat(autoware_multi_object_tracker): enhance node design with additional subscribers, publishers, and parameter descriptions
- feat(mkdocs_macros): enhance node design documentation with YAML interface and parameter rendering
- feat(node): update autoware_system_design_format to 0.4.0
- docs(mkdocs_macros): fix heading levels, inline ros__parameters, and typos
- render generated sections at a configurable heading level (default h3)
- document schemas that inline ros__parameters without a $ref
- fix 'fo channel' typos in interface descriptions
* feat(mkdocs_macros): enhance identifier formatting with line-break opportunities ---------
-
fix(autoware_multi_object_tracker): protect exported trackers from overlap-merge deletion (#13088)
- lazy merge for only confident tracker wins
- style(pre-commit): autofix
- replace channel dominant to sum-up score
* store channel_support to snapshot ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_launch | |
| autoware_perception_launch |
Launch files
- launch/multi_object_tracker.launch.xml
-
- input/detection01/objects [default: input/objects01]
- input/detection02/objects [default: input/objects02]
- input/detection03/objects [default: input/objects03]
- input/detection04/objects [default: input/objects04]
- input/detection05/objects [default: input/objects05]
- input/detection06/objects [default: input/objects06]
- input/detection07/objects [default: input/objects07]
- input/detection08/objects [default: input/objects08]
- input/detection09/objects [default: input/objects09]
- input/detection10/objects [default: input/objects10]
- input/detection11/objects [default: input/objects11]
- input/detection12/objects [default: input/objects12]
- input/odometry [default: /localization/kinematic_state]
- output/objects [default: objects]
- output/merged_objects [default: merged_objects]
- input/detection01/channel [default: none]
- input/detection02/channel [default: none]
- input/detection03/channel [default: none]
- input/detection04/channel [default: none]
- input/detection05/channel [default: none]
- input/detection06/channel [default: none]
- input/detection07/channel [default: none]
- input/detection08/channel [default: none]
- input/detection09/channel [default: none]
- input/detection10/channel [default: none]
- input/detection11/channel [default: none]
- input/detection12/channel [default: none]
- tracker_setting_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/multi_object_tracker_node.param.yaml]
- data_association_matrix_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/data_association_matrix.param.yaml]
- input_channels_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/input_channels.param.yaml]
- publish_merged_objects [default: false]
- ego_source [default: tf]
Messages
Services
Plugins
Recent questions tagged autoware_multi_object_tracker at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Yoshi Ri
- Taekjin Lee
- Lei Gu
Authors
multi_object_tracker
Purpose
The results of the detection are processed by a time series. The main purpose is to give ID and estimate velocity.
Inner-workings / Algorithms
This multi object tracker consists of data association and EKF.
Data association
The data association performs maximum score matching, called min cost max flow problem. In this package, mussp[1] is used as solver. In addition, when associating observations to tracers, data association have gates such as the area of the object from the BEV, Mahalanobis distance, and maximum distance, depending on the class label.
EKF Tracker
Models for pedestrians, bicycles (motorcycles), cars and unknown are available. The pedestrian or bicycle tracker is running at the same time as the respective EKF model in order to enable the transition between pedestrian and bicycle tracking. For big vehicles such as trucks and buses, we have separate models for passenger cars and large vehicles because they are difficult to distinguish from passenger cars and are not stable. Therefore, separate models are prepared for passenger cars and big vehicles, and these models are run at the same time as the respective EKF models to ensure stability.
Inputs / Outputs
The interfaces below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_interfaces_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input channel configuration
Multiple inputs are pre-defined in the input channel parameters (described below) and the inputs can be configured.
rule of the channel configuration
- ‘none’ or empty : Indicates that this detection input channel is not used/disabled
- Any other string : Specifies a custom channel name to be used for the detection input, configured in
schema/input_channels.schema.json
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Example configurations:
- Single detection input:
input/detection01/objects: /perception/object_recognition/detection/objects
input/detection01/channel: detected_objects # general input channel type
input/detection02/objects: input/objects02
input/detection02/channel: none # Disabled
- Multiple detection inputs:
# lidar centerpoint
input/detection01/objects: /perception/object_recognition/detection/lidar_centerpoint/objects
input/detection01/channel: lidar_centerpoint
# lidar short_range centerpoint
input/detection02/channel: /perception/object_recognition/detection/centerpoint_short_range/objects
input/detection02/objects: lidar_centerpoint_short_range
# camera lidar fusion
input/detection03/objects: /perception/object_recognition/detection/clustering/camera_lidar_fusion/objects
input/detection03/channel: camera_lidar_fusion
# camera lidar fusion based irregular object detection
input/detection04/objects: /perception/object_recognition/detection/irregular_object/objects
input/detection04/channel: camera_lidar_fusion_irregular
# detection by tracker
input/detection05/objects: /perception/object_recognition/detection/detection_by_tracker/objects
input/detection05/channel: detection_by_tracker
# radar
input/detection06/objects: /perception/object_recognition/detection/radar/objects
input/detection06/channel: radar
# disable
input/detection07/objects: input/objects07
input/detection07/channel: none # Disabled
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Parameters
Node parameters
The node launch parameters below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_param_values_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input Channel parameters
{{ json_to_markdown(“perception/autoware_multi_object_tracker/schema/input_channels.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_multi_object_tracker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(multi_object_tracker): tracker batch trigger on stale target stream (#13181)
- Fix tracker batch trigger on stale target stream
- style(pre-commit): autofix
- Fix channel optimizer timer behavior
- Restore input manager optimizer order
- Address review: freshness cap, target hysteresis, gradual latency shift
- cap the freshness timeout so a rate-dropped channel is not relaxed into the 'fresh' condition by its own grown interval statistics
- call optimizeChannelTimings() only from the optimizer timer, not from InputManager::getObjects()
- keep the current target stream unless another fresh stream exceeds its latency by the hysteresis, while a stale target still fails over at once
- rate-limit the increase of target_stream_latency_ so the batch window does not jump backward and export objects older than the tracker time
- add deterministic regression tests for the three behaviors above Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> Claude-Session: https://claude.ai/code/session_011NwvLwTeX7F3cyKJHNAMwP
- fix(multi_object_tracker): keep batch window open to the target stream during latency convergence (#13259)
* fix(multi_object_tracker): keep batch window open to the target stream during latency convergence The gradual target latency shift moves the batch window end while the window start stays at the export watermark; measurements below the window start are dropped by getObjectsOlderThan(). After a target dropout and recovery, the recovered stream's measurements fall into that gap for the whole convergence period. The window start now stays at or below the target stream's newest measurement, bounded by the 1-second interval. Also:
- push objects with the node's current_time so association processing time is not folded into the stream latency statistics
- de-vacuize SelectsLargestLatencyStreamAfterTimingOptimization by placing the high-latency channel off the default target index
- add a dropout-failover-recovery regression test
* refactor(multi_object_tracker): flatten getObjectTimeInterval bound selection The target stream's newest measurement is fetched once, and the window bounds are clamped with min/max: the window end stays at or above it, the window start at or below it, within the 1-second interval. ------------------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
docs(mkdocs_macros): render README interfaces and parameters from node design files (#13225)
- feat(autoware_multi_object_tracker): enhance node design with additional subscribers, publishers, and parameter descriptions
- feat(mkdocs_macros): enhance node design documentation with YAML interface and parameter rendering
- feat(node): update autoware_system_design_format to 0.4.0
- docs(mkdocs_macros): fix heading levels, inline ros__parameters, and typos
- render generated sections at a configurable heading level (default h3)
- document schemas that inline ros__parameters without a $ref
- fix 'fo channel' typos in interface descriptions
* feat(mkdocs_macros): enhance identifier formatting with line-break opportunities ---------
-
fix(autoware_multi_object_tracker): protect exported trackers from overlap-merge deletion (#13088)
- lazy merge for only confident tracker wins
- style(pre-commit): autofix
- replace channel dominant to sum-up score
* store channel_support to snapshot ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_launch | |
| autoware_perception_launch |
Launch files
- launch/multi_object_tracker.launch.xml
-
- input/detection01/objects [default: input/objects01]
- input/detection02/objects [default: input/objects02]
- input/detection03/objects [default: input/objects03]
- input/detection04/objects [default: input/objects04]
- input/detection05/objects [default: input/objects05]
- input/detection06/objects [default: input/objects06]
- input/detection07/objects [default: input/objects07]
- input/detection08/objects [default: input/objects08]
- input/detection09/objects [default: input/objects09]
- input/detection10/objects [default: input/objects10]
- input/detection11/objects [default: input/objects11]
- input/detection12/objects [default: input/objects12]
- input/odometry [default: /localization/kinematic_state]
- output/objects [default: objects]
- output/merged_objects [default: merged_objects]
- input/detection01/channel [default: none]
- input/detection02/channel [default: none]
- input/detection03/channel [default: none]
- input/detection04/channel [default: none]
- input/detection05/channel [default: none]
- input/detection06/channel [default: none]
- input/detection07/channel [default: none]
- input/detection08/channel [default: none]
- input/detection09/channel [default: none]
- input/detection10/channel [default: none]
- input/detection11/channel [default: none]
- input/detection12/channel [default: none]
- tracker_setting_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/multi_object_tracker_node.param.yaml]
- data_association_matrix_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/data_association_matrix.param.yaml]
- input_channels_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/input_channels.param.yaml]
- publish_merged_objects [default: false]
- ego_source [default: tf]
Messages
Services
Plugins
Recent questions tagged autoware_multi_object_tracker at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Yoshi Ri
- Taekjin Lee
- Lei Gu
Authors
multi_object_tracker
Purpose
The results of the detection are processed by a time series. The main purpose is to give ID and estimate velocity.
Inner-workings / Algorithms
This multi object tracker consists of data association and EKF.
Data association
The data association performs maximum score matching, called min cost max flow problem. In this package, mussp[1] is used as solver. In addition, when associating observations to tracers, data association have gates such as the area of the object from the BEV, Mahalanobis distance, and maximum distance, depending on the class label.
EKF Tracker
Models for pedestrians, bicycles (motorcycles), cars and unknown are available. The pedestrian or bicycle tracker is running at the same time as the respective EKF model in order to enable the transition between pedestrian and bicycle tracking. For big vehicles such as trucks and buses, we have separate models for passenger cars and large vehicles because they are difficult to distinguish from passenger cars and are not stable. Therefore, separate models are prepared for passenger cars and big vehicles, and these models are run at the same time as the respective EKF models to ensure stability.
Inputs / Outputs
The interfaces below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_interfaces_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input channel configuration
Multiple inputs are pre-defined in the input channel parameters (described below) and the inputs can be configured.
rule of the channel configuration
- ‘none’ or empty : Indicates that this detection input channel is not used/disabled
- Any other string : Specifies a custom channel name to be used for the detection input, configured in
schema/input_channels.schema.json
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Example configurations:
- Single detection input:
input/detection01/objects: /perception/object_recognition/detection/objects
input/detection01/channel: detected_objects # general input channel type
input/detection02/objects: input/objects02
input/detection02/channel: none # Disabled
- Multiple detection inputs:
# lidar centerpoint
input/detection01/objects: /perception/object_recognition/detection/lidar_centerpoint/objects
input/detection01/channel: lidar_centerpoint
# lidar short_range centerpoint
input/detection02/channel: /perception/object_recognition/detection/centerpoint_short_range/objects
input/detection02/objects: lidar_centerpoint_short_range
# camera lidar fusion
input/detection03/objects: /perception/object_recognition/detection/clustering/camera_lidar_fusion/objects
input/detection03/channel: camera_lidar_fusion
# camera lidar fusion based irregular object detection
input/detection04/objects: /perception/object_recognition/detection/irregular_object/objects
input/detection04/channel: camera_lidar_fusion_irregular
# detection by tracker
input/detection05/objects: /perception/object_recognition/detection/detection_by_tracker/objects
input/detection05/channel: detection_by_tracker
# radar
input/detection06/objects: /perception/object_recognition/detection/radar/objects
input/detection06/channel: radar
# disable
input/detection07/objects: input/objects07
input/detection07/channel: none # Disabled
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Parameters
Node parameters
The node launch parameters below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_param_values_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input Channel parameters
{{ json_to_markdown(“perception/autoware_multi_object_tracker/schema/input_channels.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_multi_object_tracker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(multi_object_tracker): tracker batch trigger on stale target stream (#13181)
- Fix tracker batch trigger on stale target stream
- style(pre-commit): autofix
- Fix channel optimizer timer behavior
- Restore input manager optimizer order
- Address review: freshness cap, target hysteresis, gradual latency shift
- cap the freshness timeout so a rate-dropped channel is not relaxed into the 'fresh' condition by its own grown interval statistics
- call optimizeChannelTimings() only from the optimizer timer, not from InputManager::getObjects()
- keep the current target stream unless another fresh stream exceeds its latency by the hysteresis, while a stale target still fails over at once
- rate-limit the increase of target_stream_latency_ so the batch window does not jump backward and export objects older than the tracker time
- add deterministic regression tests for the three behaviors above Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> Claude-Session: https://claude.ai/code/session_011NwvLwTeX7F3cyKJHNAMwP
- fix(multi_object_tracker): keep batch window open to the target stream during latency convergence (#13259)
* fix(multi_object_tracker): keep batch window open to the target stream during latency convergence The gradual target latency shift moves the batch window end while the window start stays at the export watermark; measurements below the window start are dropped by getObjectsOlderThan(). After a target dropout and recovery, the recovered stream's measurements fall into that gap for the whole convergence period. The window start now stays at or below the target stream's newest measurement, bounded by the 1-second interval. Also:
- push objects with the node's current_time so association processing time is not folded into the stream latency statistics
- de-vacuize SelectsLargestLatencyStreamAfterTimingOptimization by placing the high-latency channel off the default target index
- add a dropout-failover-recovery regression test
* refactor(multi_object_tracker): flatten getObjectTimeInterval bound selection The target stream's newest measurement is fetched once, and the window bounds are clamped with min/max: the window end stays at or above it, the window start at or below it, within the 1-second interval. ------------------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
docs(mkdocs_macros): render README interfaces and parameters from node design files (#13225)
- feat(autoware_multi_object_tracker): enhance node design with additional subscribers, publishers, and parameter descriptions
- feat(mkdocs_macros): enhance node design documentation with YAML interface and parameter rendering
- feat(node): update autoware_system_design_format to 0.4.0
- docs(mkdocs_macros): fix heading levels, inline ros__parameters, and typos
- render generated sections at a configurable heading level (default h3)
- document schemas that inline ros__parameters without a $ref
- fix 'fo channel' typos in interface descriptions
* feat(mkdocs_macros): enhance identifier formatting with line-break opportunities ---------
-
fix(autoware_multi_object_tracker): protect exported trackers from overlap-merge deletion (#13088)
- lazy merge for only confident tracker wins
- style(pre-commit): autofix
- replace channel dominant to sum-up score
* store channel_support to snapshot ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_launch | |
| autoware_perception_launch |
Launch files
- launch/multi_object_tracker.launch.xml
-
- input/detection01/objects [default: input/objects01]
- input/detection02/objects [default: input/objects02]
- input/detection03/objects [default: input/objects03]
- input/detection04/objects [default: input/objects04]
- input/detection05/objects [default: input/objects05]
- input/detection06/objects [default: input/objects06]
- input/detection07/objects [default: input/objects07]
- input/detection08/objects [default: input/objects08]
- input/detection09/objects [default: input/objects09]
- input/detection10/objects [default: input/objects10]
- input/detection11/objects [default: input/objects11]
- input/detection12/objects [default: input/objects12]
- input/odometry [default: /localization/kinematic_state]
- output/objects [default: objects]
- output/merged_objects [default: merged_objects]
- input/detection01/channel [default: none]
- input/detection02/channel [default: none]
- input/detection03/channel [default: none]
- input/detection04/channel [default: none]
- input/detection05/channel [default: none]
- input/detection06/channel [default: none]
- input/detection07/channel [default: none]
- input/detection08/channel [default: none]
- input/detection09/channel [default: none]
- input/detection10/channel [default: none]
- input/detection11/channel [default: none]
- input/detection12/channel [default: none]
- tracker_setting_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/multi_object_tracker_node.param.yaml]
- data_association_matrix_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/data_association_matrix.param.yaml]
- input_channels_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/input_channels.param.yaml]
- publish_merged_objects [default: false]
- ego_source [default: tf]
Messages
Services
Plugins
Recent questions tagged autoware_multi_object_tracker at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Yoshi Ri
- Taekjin Lee
- Lei Gu
Authors
multi_object_tracker
Purpose
The results of the detection are processed by a time series. The main purpose is to give ID and estimate velocity.
Inner-workings / Algorithms
This multi object tracker consists of data association and EKF.
Data association
The data association performs maximum score matching, called min cost max flow problem. In this package, mussp[1] is used as solver. In addition, when associating observations to tracers, data association have gates such as the area of the object from the BEV, Mahalanobis distance, and maximum distance, depending on the class label.
EKF Tracker
Models for pedestrians, bicycles (motorcycles), cars and unknown are available. The pedestrian or bicycle tracker is running at the same time as the respective EKF model in order to enable the transition between pedestrian and bicycle tracking. For big vehicles such as trucks and buses, we have separate models for passenger cars and large vehicles because they are difficult to distinguish from passenger cars and are not stable. Therefore, separate models are prepared for passenger cars and big vehicles, and these models are run at the same time as the respective EKF models to ensure stability.
Inputs / Outputs
The interfaces below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_interfaces_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input channel configuration
Multiple inputs are pre-defined in the input channel parameters (described below) and the inputs can be configured.
rule of the channel configuration
- ‘none’ or empty : Indicates that this detection input channel is not used/disabled
- Any other string : Specifies a custom channel name to be used for the detection input, configured in
schema/input_channels.schema.json
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Example configurations:
- Single detection input:
input/detection01/objects: /perception/object_recognition/detection/objects
input/detection01/channel: detected_objects # general input channel type
input/detection02/objects: input/objects02
input/detection02/channel: none # Disabled
- Multiple detection inputs:
# lidar centerpoint
input/detection01/objects: /perception/object_recognition/detection/lidar_centerpoint/objects
input/detection01/channel: lidar_centerpoint
# lidar short_range centerpoint
input/detection02/channel: /perception/object_recognition/detection/centerpoint_short_range/objects
input/detection02/objects: lidar_centerpoint_short_range
# camera lidar fusion
input/detection03/objects: /perception/object_recognition/detection/clustering/camera_lidar_fusion/objects
input/detection03/channel: camera_lidar_fusion
# camera lidar fusion based irregular object detection
input/detection04/objects: /perception/object_recognition/detection/irregular_object/objects
input/detection04/channel: camera_lidar_fusion_irregular
# detection by tracker
input/detection05/objects: /perception/object_recognition/detection/detection_by_tracker/objects
input/detection05/channel: detection_by_tracker
# radar
input/detection06/objects: /perception/object_recognition/detection/radar/objects
input/detection06/channel: radar
# disable
input/detection07/objects: input/objects07
input/detection07/channel: none # Disabled
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Parameters
Node parameters
The node launch parameters below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_param_values_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input Channel parameters
{{ json_to_markdown(“perception/autoware_multi_object_tracker/schema/input_channels.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_multi_object_tracker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(multi_object_tracker): tracker batch trigger on stale target stream (#13181)
- Fix tracker batch trigger on stale target stream
- style(pre-commit): autofix
- Fix channel optimizer timer behavior
- Restore input manager optimizer order
- Address review: freshness cap, target hysteresis, gradual latency shift
- cap the freshness timeout so a rate-dropped channel is not relaxed into the 'fresh' condition by its own grown interval statistics
- call optimizeChannelTimings() only from the optimizer timer, not from InputManager::getObjects()
- keep the current target stream unless another fresh stream exceeds its latency by the hysteresis, while a stale target still fails over at once
- rate-limit the increase of target_stream_latency_ so the batch window does not jump backward and export objects older than the tracker time
- add deterministic regression tests for the three behaviors above Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> Claude-Session: https://claude.ai/code/session_011NwvLwTeX7F3cyKJHNAMwP
- fix(multi_object_tracker): keep batch window open to the target stream during latency convergence (#13259)
* fix(multi_object_tracker): keep batch window open to the target stream during latency convergence The gradual target latency shift moves the batch window end while the window start stays at the export watermark; measurements below the window start are dropped by getObjectsOlderThan(). After a target dropout and recovery, the recovered stream's measurements fall into that gap for the whole convergence period. The window start now stays at or below the target stream's newest measurement, bounded by the 1-second interval. Also:
- push objects with the node's current_time so association processing time is not folded into the stream latency statistics
- de-vacuize SelectsLargestLatencyStreamAfterTimingOptimization by placing the high-latency channel off the default target index
- add a dropout-failover-recovery regression test
* refactor(multi_object_tracker): flatten getObjectTimeInterval bound selection The target stream's newest measurement is fetched once, and the window bounds are clamped with min/max: the window end stays at or above it, the window start at or below it, within the 1-second interval. ------------------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
docs(mkdocs_macros): render README interfaces and parameters from node design files (#13225)
- feat(autoware_multi_object_tracker): enhance node design with additional subscribers, publishers, and parameter descriptions
- feat(mkdocs_macros): enhance node design documentation with YAML interface and parameter rendering
- feat(node): update autoware_system_design_format to 0.4.0
- docs(mkdocs_macros): fix heading levels, inline ros__parameters, and typos
- render generated sections at a configurable heading level (default h3)
- document schemas that inline ros__parameters without a $ref
- fix 'fo channel' typos in interface descriptions
* feat(mkdocs_macros): enhance identifier formatting with line-break opportunities ---------
-
fix(autoware_multi_object_tracker): protect exported trackers from overlap-merge deletion (#13088)
- lazy merge for only confident tracker wins
- style(pre-commit): autofix
- replace channel dominant to sum-up score
* store channel_support to snapshot ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_launch | |
| autoware_perception_launch |
Launch files
- launch/multi_object_tracker.launch.xml
-
- input/detection01/objects [default: input/objects01]
- input/detection02/objects [default: input/objects02]
- input/detection03/objects [default: input/objects03]
- input/detection04/objects [default: input/objects04]
- input/detection05/objects [default: input/objects05]
- input/detection06/objects [default: input/objects06]
- input/detection07/objects [default: input/objects07]
- input/detection08/objects [default: input/objects08]
- input/detection09/objects [default: input/objects09]
- input/detection10/objects [default: input/objects10]
- input/detection11/objects [default: input/objects11]
- input/detection12/objects [default: input/objects12]
- input/odometry [default: /localization/kinematic_state]
- output/objects [default: objects]
- output/merged_objects [default: merged_objects]
- input/detection01/channel [default: none]
- input/detection02/channel [default: none]
- input/detection03/channel [default: none]
- input/detection04/channel [default: none]
- input/detection05/channel [default: none]
- input/detection06/channel [default: none]
- input/detection07/channel [default: none]
- input/detection08/channel [default: none]
- input/detection09/channel [default: none]
- input/detection10/channel [default: none]
- input/detection11/channel [default: none]
- input/detection12/channel [default: none]
- tracker_setting_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/multi_object_tracker_node.param.yaml]
- data_association_matrix_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/data_association_matrix.param.yaml]
- input_channels_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/input_channels.param.yaml]
- publish_merged_objects [default: false]
- ego_source [default: tf]
Messages
Services
Plugins
Recent questions tagged autoware_multi_object_tracker at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Yoshi Ri
- Taekjin Lee
- Lei Gu
Authors
multi_object_tracker
Purpose
The results of the detection are processed by a time series. The main purpose is to give ID and estimate velocity.
Inner-workings / Algorithms
This multi object tracker consists of data association and EKF.
Data association
The data association performs maximum score matching, called min cost max flow problem. In this package, mussp[1] is used as solver. In addition, when associating observations to tracers, data association have gates such as the area of the object from the BEV, Mahalanobis distance, and maximum distance, depending on the class label.
EKF Tracker
Models for pedestrians, bicycles (motorcycles), cars and unknown are available. The pedestrian or bicycle tracker is running at the same time as the respective EKF model in order to enable the transition between pedestrian and bicycle tracking. For big vehicles such as trucks and buses, we have separate models for passenger cars and large vehicles because they are difficult to distinguish from passenger cars and are not stable. Therefore, separate models are prepared for passenger cars and big vehicles, and these models are run at the same time as the respective EKF models to ensure stability.
Inputs / Outputs
The interfaces below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_interfaces_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input channel configuration
Multiple inputs are pre-defined in the input channel parameters (described below) and the inputs can be configured.
rule of the channel configuration
- ‘none’ or empty : Indicates that this detection input channel is not used/disabled
- Any other string : Specifies a custom channel name to be used for the detection input, configured in
schema/input_channels.schema.json
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Example configurations:
- Single detection input:
input/detection01/objects: /perception/object_recognition/detection/objects
input/detection01/channel: detected_objects # general input channel type
input/detection02/objects: input/objects02
input/detection02/channel: none # Disabled
- Multiple detection inputs:
# lidar centerpoint
input/detection01/objects: /perception/object_recognition/detection/lidar_centerpoint/objects
input/detection01/channel: lidar_centerpoint
# lidar short_range centerpoint
input/detection02/channel: /perception/object_recognition/detection/centerpoint_short_range/objects
input/detection02/objects: lidar_centerpoint_short_range
# camera lidar fusion
input/detection03/objects: /perception/object_recognition/detection/clustering/camera_lidar_fusion/objects
input/detection03/channel: camera_lidar_fusion
# camera lidar fusion based irregular object detection
input/detection04/objects: /perception/object_recognition/detection/irregular_object/objects
input/detection04/channel: camera_lidar_fusion_irregular
# detection by tracker
input/detection05/objects: /perception/object_recognition/detection/detection_by_tracker/objects
input/detection05/channel: detection_by_tracker
# radar
input/detection06/objects: /perception/object_recognition/detection/radar/objects
input/detection06/channel: radar
# disable
input/detection07/objects: input/objects07
input/detection07/channel: none # Disabled
Up to 12 detection inputs can be configured (detection01 through detection12). Each input consists of an objects topic and its corresponding channel configuration.
Parameters
Node parameters
The node launch parameters below are generated from the node design file
design/MultiObjectTracker.node.yaml.
{{ node_param_values_to_markdown(“perception/autoware_multi_object_tracker/design/MultiObjectTracker.node.yaml”) }}
Input Channel parameters
{{ json_to_markdown(“perception/autoware_multi_object_tracker/schema/input_channels.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_multi_object_tracker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(multi_object_tracker): tracker batch trigger on stale target stream (#13181)
- Fix tracker batch trigger on stale target stream
- style(pre-commit): autofix
- Fix channel optimizer timer behavior
- Restore input manager optimizer order
- Address review: freshness cap, target hysteresis, gradual latency shift
- cap the freshness timeout so a rate-dropped channel is not relaxed into the 'fresh' condition by its own grown interval statistics
- call optimizeChannelTimings() only from the optimizer timer, not from InputManager::getObjects()
- keep the current target stream unless another fresh stream exceeds its latency by the hysteresis, while a stale target still fails over at once
- rate-limit the increase of target_stream_latency_ so the batch window does not jump backward and export objects older than the tracker time
- add deterministic regression tests for the three behaviors above Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> Claude-Session: https://claude.ai/code/session_011NwvLwTeX7F3cyKJHNAMwP
- fix(multi_object_tracker): keep batch window open to the target stream during latency convergence (#13259)
* fix(multi_object_tracker): keep batch window open to the target stream during latency convergence The gradual target latency shift moves the batch window end while the window start stays at the export watermark; measurements below the window start are dropped by getObjectsOlderThan(). After a target dropout and recovery, the recovered stream's measurements fall into that gap for the whole convergence period. The window start now stays at or below the target stream's newest measurement, bounded by the 1-second interval. Also:
- push objects with the node's current_time so association processing time is not folded into the stream latency statistics
- de-vacuize SelectsLargestLatencyStreamAfterTimingOptimization by placing the high-latency channel off the default target index
- add a dropout-failover-recovery regression test
* refactor(multi_object_tracker): flatten getObjectTimeInterval bound selection The target stream's newest measurement is fetched once, and the window bounds are clamped with min/max: the window end stays at or above it, the window start at or below it, within the 1-second interval. ------------------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
docs(mkdocs_macros): render README interfaces and parameters from node design files (#13225)
- feat(autoware_multi_object_tracker): enhance node design with additional subscribers, publishers, and parameter descriptions
- feat(mkdocs_macros): enhance node design documentation with YAML interface and parameter rendering
- feat(node): update autoware_system_design_format to 0.4.0
- docs(mkdocs_macros): fix heading levels, inline ros__parameters, and typos
- render generated sections at a configurable heading level (default h3)
- document schemas that inline ros__parameters without a $ref
- fix 'fo channel' typos in interface descriptions
* feat(mkdocs_macros): enhance identifier formatting with line-break opportunities ---------
-
fix(autoware_multi_object_tracker): protect exported trackers from overlap-merge deletion (#13088)
- lazy merge for only confident tracker wins
- style(pre-commit): autofix
- replace channel dominant to sum-up score
* store channel_support to snapshot ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_launch | |
| autoware_perception_launch |
Launch files
- launch/multi_object_tracker.launch.xml
-
- input/detection01/objects [default: input/objects01]
- input/detection02/objects [default: input/objects02]
- input/detection03/objects [default: input/objects03]
- input/detection04/objects [default: input/objects04]
- input/detection05/objects [default: input/objects05]
- input/detection06/objects [default: input/objects06]
- input/detection07/objects [default: input/objects07]
- input/detection08/objects [default: input/objects08]
- input/detection09/objects [default: input/objects09]
- input/detection10/objects [default: input/objects10]
- input/detection11/objects [default: input/objects11]
- input/detection12/objects [default: input/objects12]
- input/odometry [default: /localization/kinematic_state]
- output/objects [default: objects]
- output/merged_objects [default: merged_objects]
- input/detection01/channel [default: none]
- input/detection02/channel [default: none]
- input/detection03/channel [default: none]
- input/detection04/channel [default: none]
- input/detection05/channel [default: none]
- input/detection06/channel [default: none]
- input/detection07/channel [default: none]
- input/detection08/channel [default: none]
- input/detection09/channel [default: none]
- input/detection10/channel [default: none]
- input/detection11/channel [default: none]
- input/detection12/channel [default: none]
- tracker_setting_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/multi_object_tracker_node.param.yaml]
- data_association_matrix_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/data_association_matrix.param.yaml]
- input_channels_path [default: $(find-pkg-share autoware_multi_object_tracker)/config/input_channels.param.yaml]
- publish_merged_objects [default: false]
- ego_source [default: tf]