Package Summary
Tags | No category tags. |
Version | 0.46.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 | 2025-07-30 |
Dev Status | UNKNOWN |
CI status | No Continuous Integration |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Yukinari Hisaki
- Arjun Ram
- Takayuki Murooka
Authors
- Hiroki OTA
vehicle_cmd_gate
Purpose
vehicle_cmd_gate
is the package to get information from emergency handler, planning module, and external controller, and send a message to the vehicle.
Role
Receive multiple control commands and select one to forward to the vehicle.
Inputs / Outputs
Input
Name | Type | Description |
---|---|---|
~/input/steering |
autoware_vehicle_msgs::msg::SteeringReport |
steering status |
~/input/auto/control_cmd |
autoware_control_msgs::msg::Control |
command for lateral and longitudinal velocity from planning module |
~/input/auto/turn_indicators_cmd |
autoware_vehicle_msgs::msg::TurnIndicatorsCommand |
turn indicators command from planning module |
~/input/auto/hazard_lights_cmd |
autoware_vehicle_msgs::msg::HazardLightsCommand |
hazard lights command from planning module |
~/input/auto/gear_cmd |
autoware_vehicle_msgs::msg::GearCommand |
gear command from planning module |
~/input/external/control_cmd |
autoware_control_msgs::msg::Control |
command for lateral and longitudinal velocity from external |
~/input/external/turn_indicators_cmd |
autoware_vehicle_msgs::msg::TurnIndicatorsCommand |
turn indicators command from external |
~/input/external/hazard_lights_cmd |
autoware_vehicle_msgs::msg::HazardLightsCommand |
hazard lights command from external |
~/input/external/gear_cmd |
autoware_vehicle_msgs::msg::GearCommand |
gear command from external |
~/input/external_emergency_stop_heartbeat |
tier4_external_api_msgs::msg::Heartbeat |
heartbeat |
~/input/gate_mode |
tier4_control_msgs::msg::GateMode |
gate mode (AUTO or EXTERNAL) |
~/input/emergency/control_cmd |
autoware_control_msgs::msg::Control |
command for lateral and longitudinal velocity from emergency handler |
~/input/emergency/turn_indicators_cmd |
autoware_vehicle_msgs::msg::TurnIndicatorsCommand |
turn indicators command from emergency handler |
~/input/emergency/hazard_lights_cmd |
autoware_vehicle_msgs::msg::HazardLightsCommand |
hazard lights command from emergency handler |
~/input/emergency/gear_cmd |
autoware_vehicle_msgs::msg::GearCommand |
gear command from emergency handler |
~/input/engage |
autoware_vehicle_msgs::msg::Engage |
engage signal |
~/input/operation_mode |
autoware_adapi_v1_msgs::msg::OperationModeState |
operation mode of Autoware |
Output
Name | Type | Description |
---|---|---|
~/output/vehicle_cmd_emergency |
tier4_vehicle_msgs::msg::VehicleEmergencyStamped |
emergency state which was originally in vehicle command |
~/output/command/control_cmd |
autoware_control_msgs::msg::Control |
command for lateral and longitudinal velocity to vehicle |
~/output/command/turn_indicators_cmd |
autoware_vehicle_msgs::msg::TurnIndicatorsCommand |
turn indicators command to vehicle |
~/output/command/hazard_lights_cmd |
autoware_vehicle_msgs::msg::HazardLightsCommand |
hazard lights command to vehicle |
~/output/command/gear_cmd |
autoware_vehicle_msgs::msg::GearCommand |
gear command to vehicle |
~/output/gate_mode |
tier4_control_msgs::msg::GateMode |
gate mode (AUTO or EXTERNAL) |
~/output/engage |
autoware_vehicle_msgs::msg::Engage |
engage signal |
~/output/external_emergency |
tier4_external_api_msgs::msg::Emergency |
external emergency signal |
~/output/operation_mode |
tier4_system_msgs::msg::OperationMode |
current operation mode of the vehicle_cmd_gate |
Parameters
Parameter | Type | Description |
---|---|---|
update_period |
double | update period |
use_emergency_handling |
bool | true when emergency handler is used |
check_external_emergency_heartbeat |
bool | true when checking heartbeat for emergency stop |
system_emergency_heartbeat_timeout |
double | timeout for system emergency |
external_emergency_stop_heartbeat_timeout |
double | timeout for external emergency |
filter_activated_count_threshold |
int | threshold for filter activation |
filter_activated_velocity_threshold |
double | velocity threshold for filter activation |
stop_hold_acceleration |
double | longitudinal acceleration cmd when vehicle should stop |
emergency_acceleration |
double | longitudinal acceleration cmd when vehicle stop with emergency |
moderate_stop_service_acceleration |
double | longitudinal acceleration cmd when vehicle stop with moderate stop service |
nominal.vel_lim |
double | limit of longitudinal velocity (activated in AUTONOMOUS operation mode) |
nominal.reference_speed_points |
velocity point used as a reference when calculate control command limit (activated in AUTONOMOUS operation mode). The size of this array must be equivalent to the size of the limit array. | |
nominal.lon_acc_lim_for_lon_vel |
array of limits for longitudinal acceleration (activated in AUTONOMOUS operation mode) | |
nominal.lon_jerk_lim_for_lon_acc |
array of limits for longitudinal jerk (activated in AUTONOMOUS operation mode) | |
nominal.lat_acc_lim_for_steer_cmd |
array of limits for lateral acceleration (activated in AUTONOMOUS operation mode) | |
nominal.lat_jerk_lim_for_steer_cmd |
array of limits for lateral jerk (activated in AUTONOMOUS operation mode) | |
nominal.steer_cmd_lim |
array of limits for steering angle (activated in AUTONOMOUS operation mode) | |
nominal.steer_rate_lim_for_steer_cmd |
array of limits for command steering rate (activated in AUTONOMOUS operation mode) | |
nominal.lat_jerk_lim_for_steer_rate |
double | limit for lateral jerk constraint on steering rate (activated in AUTONOMOUS operation mode) |
nominal.steer_cmd_diff_lim_from_current_steer |
array of limits for difference between current and command steering angle (activated in AUTONOMOUS operation mode) | |
on_transition.vel_lim |
double | limit of longitudinal velocity (activated in TRANSITION operation mode) |
on_transition.reference_speed_points |
velocity point used as a reference when calculate control command limit (activated in TRANSITION operation mode). The size of this array must be equivalent to the size of the limit array. | |
on_transition.lon_acc_lim_for_lon_vel |
array of limits for longitudinal acceleration (activated in TRANSITION operation mode) | |
on_transition.lon_jerk_lim_for_lon_acc |
array of limits for longitudinal jerk (activated in TRANSITION operation mode) | |
on_transition.lat_acc_lim_for_steer_cmd |
array of limits for lateral acceleration (activated in TRANSITION operation mode) | |
on_transition.lat_jerk_lim_for_steer_cmd |
array of limits for lateral jerk (activated in TRANSITION operation mode) | |
on_transition.steer_cmd_lim |
array of limits for steering angle (activated in TRANSITION operation mode) | |
on_transition.steer_rate_lim_for_steer_cmd |
array of limits for command steering rate (activated in TRANSITION operation mode) | |
on_transition.lat_jerk_lim_for_steer_rate |
double | limit for lateral jerk constraint on steering rate (activated in TRANSITION operation mode) |
on_transition.steer_cmd_diff_lim_from_current_steer |
array of limits for difference between current and command steering angle (activated in TRANSITION operation mode) |
Parameter Naming Convention
The parameters follow specific naming patterns to clearly distinguish between different types of constraints and their relationships:
Pattern 1: [constraint]_lim_for_[target]
-
Format:
[physical_constraint]_lim_for_[controlled_variable]
- Description: Defines limits based on physical constraints (acceleration, jerk, etc.) applied to control variables
Pattern 2: [target]_[constraint]_lim_from_[reference]
-
Format:
[controlled_variable]_[constraint_type]_lim_from_[reference_variable]
- Description: Defines limits on the difference or deviation of a control variable from a reference value
Pattern 3: [target]_lim
-
Format:
[controlled_variable]_lim
- Description: Defines absolute limits for control variables
Functionality
Main Functionality
- Receive multiple control commands (from Autoware planning, emergency handler, remote control, etc.) and select one to forward to the vehicle.
- Apply a final guard on the selected command to enforce absolute safety limits (e.g., maximum steering rate). This is not a comfort filter.
- Enforce transition guards during mode changes into autonomous driving (e.g., remote→autonomous, manual→autonomous) to limit sudden changes. Integration with the Operation Transition Manager is recommended, though code boundaries should be maintained due to its complexity.
Sub-Functionality
- Check heartbeat signals to verify connectivity for each input (e.g., emergency external heartbeat).
- Publish status indicating whether the final guard is active. Active guard in autonomous mode implies an unexpected constraint in command generation and requires attention.
- Leverage guard status during mode transitions to notify operators/drivers that a strong constraint is active (focus on “transition in progress” rather than simple filter activation).
Filter function
This module incorporates a limitation filter to the control command right before its published. Primarily for safety, this filter restricts the output range of all control commands published through Autoware.
The limitation values are calculated based on the 1D interpolation of the limitation array parameters. Here is an example for the longitudinal jerk limit.
Notation: this filter is not designed to enhance ride comfort. Its main purpose is to detect and remove abnormal values in the control outputs during the final stages of Autoware. If this filter is frequently active, it implies the control module may need tuning. If you’re aiming to smoothen the signal via a low-pass filter or similar techniques, that should be handled in the control module. When the filter is activated, the topic ~/is_filter_activated
is published.
Notation 2: If you use vehicles in which the driving force is controlled by the accelerator/brake pedal, the jerk limit, denoting the pedal rate limit, must be sufficiently relaxed at low speeds. Otherwise, quick pedal changes at start/stop will not be possible, resulting in slow starts and creep down on hills. This functionality for starting/stopping was embedded in the source code but was removed because it was complex and could be achieved by parameters.
Assumptions / Known limits
External Emergency Heartbeat
The parameter check_external_emergency_heartbeat
(true by default) enables an emergency stop request from external modules.
This feature requires a ~/input/external_emergency_stop_heartbeat
topic for health monitoring of the external module, and the vehicle_cmd_gate module will not start without the topic.
The check_external_emergency_heartbeat
parameter must be false when the “external emergency stop” function is not used.
Commands on Mode changes
Output commands’ topics: turn_indicators_cmd
, hazard_light
and gear_cmd
are selected based on gate_mode
.
However, to ensure the continuity of commands, these commands will not change until the topics of new input commands arrive, even if a mode change occurs.
Caution
- This node depends on the Operation Mode Transition Manager for Engage state transitions at the design level.
- Tests are essential and must be retained.
Changelog for package autoware_vehicle_cmd_gate
0.46.0 (2025-06-20)
0.45.0 (2025-05-22)
- Merge remote-tracking branch 'origin/main' into tmp/notbot/bump_version_base
- chore(vehicle_cmd_gate): suppress frequent log (#10630)
- fix(vehicle_cmd_gate): fix bug in limitLateralSteer (#10532)
- Contributors: Ryuta Kambe, TaikiYamada4, Takayuki Murooka
0.44.2 (2025-06-10)
0.44.1 (2025-05-01)
0.44.0 (2025-04-18)
- Merge remote-tracking branch 'origin/main' into humble
- feat: manual control
(#10354)
- feat(default_adapi): add manual control
- add conversion
- update selector
- update selector depends
- update converter
- modify heartbeat name
- update launch
- update api
- fix pedal callback
- done todo
- apply message rename
- fix test
- fix message type and qos
- fix steering_tire_velocity
* fix for clang-tidy ---------
- Contributors: Ryohsuke Mitsudome, Takagi, Isamu
0.43.0 (2025-03-21)
- Merge remote-tracking branch 'origin/main' into chore/bump-version-0.43
- chore: rename from [autoware.universe]{.title-ref} to [autoware_universe]{.title-ref} (#10306)
- fix(planning, control): reuse stamp of subscribed topic to measure
component latency
(#10201)
- fix(behavior_velocity_planner): reuse timestamp of recieved path
- fix(behavior_path_planner): check timestamp first in timer driven callback
- fix(trajectory_follower_node): check timestamp first in timer driven callback
* fix(vehicle_cmd_gate): reuse timestamp of recieved path ---------
- Contributors: Hayato Mizushima, Satoshi OTA, Yutaka Kondo
0.42.0 (2025-03-03)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- feat(autoware_utils): replace autoware_universe_utils with autoware_utils (#10191)
- Contributors: Fumiya Watanabe, 心刚
0.41.2 (2025-02-19)
- chore: bump version to 0.41.1 (#10088)
- Contributors: Ryohsuke Mitsudome
0.41.1 (2025-02-10)
0.41.0 (2025-01-29)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- feat(autoware_vehicle_cmd_gate)!: tier4-debug_msgs changed to autoware_internal_debug_msgs in autoware_vehicle_cmd_gate (#9856)
- feat(autoware_component_interface_specs_universe!): rename package (#9753)
- Contributors: Fumiya Watanabe, Ryohsuke Mitsudome, Vishal Chauhan
0.40.0 (2024-12-12)
- Merge branch 'main' into release-0.40.0
- Revert "chore(package.xml): bump version to 0.39.0 (#9587)" This reverts commit c9f0f2688c57b0f657f5c1f28f036a970682e7f5.
- fix: fix ticket links in CHANGELOG.rst (#9588)
- chore(package.xml): bump version to 0.39.0
(#9587)
- chore(package.xml): bump version to 0.39.0
- fix: fix ticket links in CHANGELOG.rst
* fix: remove unnecessary diff ---------Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- fix: fix ticket links in CHANGELOG.rst (#9588)
- fix(cpplint): include what you use - control (#9565)
- fix(autoware_vehicle_cmd_gate): remove unused variable (#9377)
- 0.39.0
- update changelog
- Merge commit '6a1ddbd08bd' into release-0.39.0
- fix: fix ticket links to point to https://github.com/autowarefoundation/autoware_universe (#9304)
- fix(control): missing dependency in control components (#9073)
- fix: fix ticket links to point to https://github.com/autowarefoundation/autoware_universe (#9304)
- chore(package.xml): bump version to 0.38.0
(#9266)
(#9284)
- unify package.xml version to 0.37.0
- remove system_monitor/CHANGELOG.rst
- add changelog
* 0.38.0
- fix(vehicle_cmd_gate): fix processing time measurement (#9260)
- refactor(component_interface_utils): prefix package and namespace with autoware (#9092)
- Contributors: Esteve Fernandez, Fumiya Watanabe, M. Fatih Cırıt, Maxime CLEMENT, Ryohsuke Mitsudome, Ryuta Kambe, Yutaka Kondo, ぐるぐる
0.39.0 (2024-11-25)
- Merge commit '6a1ddbd08bd' into release-0.39.0
- fix: fix ticket links to point to https://github.com/autowarefoundation/autoware_universe (#9304)
- fix(control): missing dependency in control components (#9073)
- fix: fix ticket links to point to https://github.com/autowarefoundation/autoware_universe (#9304)
- chore(package.xml): bump version to 0.38.0
(#9266)
(#9284)
- unify package.xml version to 0.37.0
- remove system_monitor/CHANGELOG.rst
- add changelog
* 0.38.0
- fix(vehicle_cmd_gate): fix processing time measurement (#9260)
- refactor(component_interface_utils): prefix package and namespace with autoware (#9092)
- Contributors: Esteve Fernandez, Maxime CLEMENT, Yutaka Kondo, ぐるぐる
0.38.0 (2024-11-08)
- unify package.xml version to 0.37.0
- refactor(component_interface_specs): prefix package and namespace with autoware (#9094)
- feat(costmap_generator, control_validator, scenario_selector,
surround_obstacle_checker, vehicle_cmd_gate): add processing
time pub.
(#9065)
- feat(costmap_generator, control_validator, scenario_selector, surround_obstacle_checker, vehicle_cmd_gate): Add: processing_time_pub
- fix: pre-commit
- feat(costmap_generator): fix: No output when not Active.
- fix: clang-format
* Re: fix: clang-format ---------
- fix(control): align the parameters with launcher (#8789) align the control parameters
- chore(vehicle_cmd_gate): delete deprecated parameters (#8537) delete deprecated params in vehicle_cmd_gate.param.yaml
- fix(autoware_vehicle_cmd_gate): fix unusedFunction (#8556) fix:unusedFunction
- refactor(vehicle_cmd_gate): use smaller class for filter command (#8518)
- fix(autoware_vehicle_cmd_gate): fix unreadVariable (#8351)
- feat(autoware_vehicle_cmd_gate): accept same topic unless mode
change occurs
(#8479)
- add prev_commands_ and check cmd's time stamp
- add timestamp when is_engaged is false
- style(pre-commit): autofix
- add initialization for hazard_light timestamp in Commands
- style(pre-commit): autofix
- update README.md
- style(pre-commit): autofix
- fix typo
* fix(autoware_vehicle_cmd_gate): rename the function that checks the continuity of topics Co-authored-by: Takamasa Horibe <<horibe.takamasa@gmail.com>>
- style(pre-commit): autofix
- feat(autoware_vehicle_cmd_gate): check continuity using shared_ptr
- feat(autoware_vehicle_cmd_gate): add INFO message for topics that are not receiving
- fix template function to pass build-and-test-differential
- fix(autoware_vehicle_cmd_gate): add #include <string> according to pre-commit.ci
- fix(vehicle_cmd_gate) add underscores to member variable names for consistency
- style(pre-commit): autofix
- feat(vehicle_cmd_gate): accept same topic unless mode change occurs
* feat(vehicle_cmd_gate): add default topic_name to getContinuousTopic function ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]\@users.noreply.github.com> Co-authored-by: Takamasa Horibe <<horibe.takamasa@gmail.com>> Co-authored-by: Shumpei Wakabayashi <<42209144+shmpwk@users.noreply.github.com>>
- feat(autoware_vehicle_cmd_gate): check the timestamp of input
topics to avoid using old topics
(#8084)
- add prev_commands_ and check cmd's time stamp
- add timestamp when is_engaged is false
- style(pre-commit): autofix
- add initialization for hazard_light timestamp in Commands
- style(pre-commit): autofix
- update README.md
- style(pre-commit): autofix
- fix typo
* fix(autoware_vehicle_cmd_gate): rename the function that checks the continuity of topics Co-authored-by: Takamasa Horibe <<horibe.takamasa@gmail.com>>
- style(pre-commit): autofix
- feat(autoware_vehicle_cmd_gate): check continuity using shared_ptr
- feat(autoware_vehicle_cmd_gate): add INFO message for topics that are not receiving
- fix template function to pass build-and-test-differential
- fix(autoware_vehicle_cmd_gate): add #include <string> according to pre-commit.ci
- fix(vehicle_cmd_gate) add underscores to member variable names for consistency
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]\@users.noreply.github.com> Co-authored-by: Takamasa Horibe <<horibe.takamasa@gmail.com>> Co-authored-by: Shumpei Wakabayashi <<42209144+shmpwk@users.noreply.github.com>>
- fix(autoware_vehicle_cmd_gate): fix functionConst (#8253) fix: functionConst
- fix(autoware_vehicle_cmd_gate): fix cppcheck warning of
functionStatic
(#8260)
- fix: deal with functionStatic warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]\@users.noreply.github.com>
- fix(autoware_vehicle_cmd_gate): fix uninitMemberVar (#8339) fix:uninitMemberVar
- fix(autoware_vehicle_cmd_gate): fix passedByValue (#8243) fix: passedByValue
- fix(autoware_vehicle_cmd_gate): fix funcArgNamesDifferent (#8006) fix:funcArgNamesDifferent
- refactor(vehicle_cmd_gate)!: delete rate limit skipping function
for vehicle departure
(#7720)
- delete a fucntion block. More appropriate function can be achieved by the parameter settings.
* add notation to readme ---------
- fix(vehicle_cmd_gate): colcon test failure due to heavy process (#7678)
- refactor(universe_utils/motion_utils)!: add autoware namespace (#7594)
- refactor(motion_utils)!: add autoware prefix and include dir (#7539) refactor(motion_utils): add autoware prefix and include dir
- feat(autoware_universe_utils)!: rename from tier4_autoware_utils (#7538) Co-authored-by: kosuke55 <<kosuke.tnp@gmail.com>>
- fix(vehicle_cmd_gate): put back subscriber rather than using polling subsriber (#7500) put back polling subscribers to subscribers in neccesary cases
- fix(vehicle_cmd_gate): fix unnecessary modification (#7488) fix onGateMode function
- feat(vehicle_cmd_gate): use polling subscriber
(#7418)
- change to polling subscriber
* fix
- refactor(vehicle_info_utils)!: prefix package and namespace with
autoware
(#7353)
- chore(autoware_vehicle_info_utils): rename header
- chore(bpp-common): vehicle info
- chore(path_optimizer): vehicle info
- chore(velocity_smoother): vehicle info
- chore(bvp-common): vehicle info
- chore(static_centerline_generator): vehicle info
- chore(obstacle_cruise_planner): vehicle info
- chore(obstacle_velocity_limiter): vehicle info
- chore(mission_planner): vehicle info
- chore(obstacle_stop_planner): vehicle info
- chore(planning_validator): vehicle info
- chore(surround_obstacle_checker): vehicle info
- chore(goal_planner): vehicle info
- chore(start_planner): vehicle info
- chore(control_performance_analysis): vehicle info
- chore(lane_departure_checker): vehicle info
- chore(predicted_path_checker): vehicle info
- chore(vehicle_cmd_gate): vehicle info
- chore(obstacle_collision_checker): vehicle info
- chore(operation_mode_transition_manager): vehicle info
- chore(mpc): vehicle info
- chore(control): vehicle info
- chore(common): vehicle info
- chore(perception): vehicle info
- chore(evaluator): vehicle info
- chore(freespace): vehicle info
- chore(planning): vehicle info
- chore(vehicle): vehicle info
- chore(simulator): vehicle info
- chore(launch): vehicle info
- chore(system): vehicle info
- chore(sensing): vehicle info
* fix(autoware_joy_controller): remove unused deps ---------
- chore(vehicle_cmd_gate): add prefix autoware_ to
vehicle_cmd_gate
(#7327)
- add prefix autoware_ to vehicle_cmd_gate package
- fix
- fix include guard
* fix pre-commit ---------
- Contributors: Autumn60, Esteve Fernandez, Go Sakayori, Hayate TOBA, Kazunori-Nakajima, Kosuke Takeuchi, SHtokuda, Satoshi OTA, Takamasa Horibe, Takayuki Murooka, Yuki TAKAGI, Yutaka Kondo, Zhe Shen, kobayu858, taisa1
0.26.0 (2024-04-03)
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/vehicle_cmd_gate.launch.xml
-
- config_file [default: $(find-pkg-share autoware_vehicle_cmd_gate)/config/vehicle_cmd_gate.param.yaml]
- check_external_emergency_heartbeat [default: true]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]