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
- Takagi, Isamu
- Taiki Yamada
Authors
- Takamasa Horibe
autoware_operation_mode_transition_manager
Note
The state management functionality of this package is currently being moved to the command_mode_decider package.
When used with the command_mode_decider package, this package is only responsible for determining transition conditions.
Also, the data status, in_autoware_control, and in_transition contained in the debug topic is not available, so use the /system/command_mode_decider/debug topic instead.
- in_autoware_control: True when the current command mode is manual mode (default value 1000).
- in_transition: See the is_in_transition function in the command_mode_decider package.
- status:
- If in_autoware_control,
DISENGAGE (autoware mode = curr_mode) - Else if in_transition,
curr_mode (in transition from prev_mode) - Else
curr_mode - Note:
curr_mode = current operation modeandprev_mode = last operation mode
- If in_autoware_control,
Purpose / Use cases
This module is responsible for managing the different modes of operation for the Autoware system. The possible modes are:
-
Autonomous: the vehicle is fully controlled by the autonomous driving system -
Local: the vehicle is controlled by a physically connected control system such as a joy stick -
Remote: the vehicle is controlled by a remote controller -
Stop: the vehicle is stopped and there is no active control system.
There is also an In Transition state that occurs during each mode transitions. During this state, the transition to the new operator is not yet complete, and the previous operator is still responsible for controlling the system until the transition is complete. Some actions may be restricted during the In Transition state, such as sudden braking or steering. (This is restricted by the vehicle_cmd_gate).
Features
- Transit mode between
Autonomous,Local,RemoteandStopbased on the indication command. - Check whether the each transition is available (safe or not).
- Limit some sudden motion control in
In Transitionmode (this is done withvehicle_cmd_gatefeature). -
Check whether the transition is completed.
- Transition between the
Autonomous,Local,Remote, andStopmodes based on the indicated command. - Determine whether each transition is safe to execute.
- Restrict certain sudden motion controls during the
In Transitionmode (using thevehicle_cmd_gatefeature). - Verify that the transition is complete.
Design
A rough design of the relationship between autoware_operation_mode_transition_manager` and the other nodes is shown below.
A more detailed structure is below.
Here we see that autoware_operation_mode_transition_manager has multiple state transitions as follows
-
AUTOWARE ENABLED <—> DISABLED
- ENABLED: the vehicle is controlled by Autoware.
- DISABLED: the vehicle is out of Autoware control, expecting the e.g. manual driving.
-
AUTOWARE ENABLED <—> AUTO/LOCAL/REMOTE/NONE
- AUTO: the vehicle is controlled by Autoware, with the autonomous control command calculated by the planning/control component.
- LOCAL: the vehicle is controlled by Autoware, with the locally connected operator, e.g. joystick controller.
- REMOTE: the vehicle is controlled by Autoware, with the remotely connected operator.
- NONE: the vehicle is not controlled by any operator.
-
IN TRANSITION <—> COMPLETED
- IN TRANSITION: the mode listed above is in the transition process, expecting the former operator to have a responsibility to confirm the transition is completed.
- COMPLETED: the mode transition is completed.
Inputs / Outputs / API
Inputs
For the mode transition:
- /system/operation_mode/change_autoware_control [
autoware_system_msgs/srv/ChangeAutowareControl]: change operation mode to Autonomous - /system/operation_mode/change_operation_mode [
autoware_system_msgs/srv/ChangeOperationMode]: change operation mode
For the transition availability/completion check:
- /control/command/control_cmd [
autoware_control_msgs/msg/Control]: vehicle control signal - /localization/kinematic_state [
nav_msgs/msg/Odometry]: ego vehicle state - /planning/trajectory [
autoware_planning_msgs/msg/Trajectory]: planning trajectory - /vehicle/status/control_mode [
autoware_vehicle_msgs/msg/ControlModeReport]: vehicle control mode (autonomous/manual) - /control/vehicle_cmd_gate/operation_mode [
autoware_adapi_v1_msgs/msg/OperationModeState]: the operation mode in thevehicle_cmd_gate. (To be removed)
For the backward compatibility (to be removed):
- /api/autoware/get/engage [
autoware_vehicle_msgs/msg/Engage] - /control/current_gate_mode [
tier4_control_msgs/msg/GateMode] - /control/external_cmd_selector/current_selector_mode [
tier4_control_msgs/msg/ExternalCommandSelectorMode]
Outputs
- /system/operation_mode/state [
autoware_adapi_v1_msgs/msg/OperationModeState]: to inform the current operation mode -
/control/autoware_operation_mode_transition_manager/debug_info [
autoware_operation_mode_transition_manager/msg/OperationModeTransitionManagerDebug]: detailed information about the operation mode transition - /control/gate_mode_cmd [
tier4_control_msgs/msg/GateMode]: to change thevehicle_cmd_gatestate to use its features (to be removed) -
/autoware/engage [
autoware_vehicle_msgs/msg/Engage]: - /control/control_mode_request [
autoware_vehicle_msgs/srv/ControlModeCommand]: to change the vehicle control mode (autonomous/manual) - /control/external_cmd_selector/select_external_command [
tier4_control_msgs/srv/ExternalCommandSelect]:
Parameters
{{ json_to_markdown(“control/autoware_operation_mode_transition_manager/schema/operation_mode_transition_manager.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_operation_mode_transition_manager
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the control node designs with the packages they describe (#13340)
* fix(design): align the control node designs with the packages they describe ControlCommandGate and the operation mode transition manager name a plugin class and pin publishers that do not match the built package: the registered component is ControlCmdGate, and the transition flags belong on the design graph rather than on global: pins that link_manager skips. TrajectoryFollower declares three debug publishers with message types the node never publishes and a stop_reason publisher it does not create at all. VehicleCmdGate keeps gate_mode and engage on their official topic names through remap_target: alone, so the two inputs are connected through the design.
* fix(autoware_operation_mode_transition_manager): declare the system and legacy interfaces as remap targets The operation mode state publisher, the two operation mode change services and the legacy engage and gate mode publishers are node-side fixed names. Declaring them as remap targets puts them on the design graph; a port pinned with global: is skipped by link_manager and the exporter emits no remap for it. ---------
-
feat(operation_mode_transition_manager): add driving mode interface (#13251)
-
fix(control): declare the fixed-name compatibility interfaces in the control node designs (#13281)
* fix(control): declare the fixed-name compatibility interfaces in the control node designs operation_mode_transition_manager subscribes /control/current_gate_mode and /control/external_cmd_selector/current_selector_mode and calls /control/external_cmd_selector/select_external_command by fixed name; the gate serves the ADAPI pause/stop interfaces under /control/vehicle_cmd_gate. Declaring these ports with their remap_target lets a system design connect them and keep the fixed names when the module hierarchy nests the nodes.
* fix(control): declare the multi-publisher gate_mode_cmd and engage topics as global ---------
-
refactor(control): move node design files into each package (#13100) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
fix(operation_mode_transition_manager): fix missing dependncy (#13066)
-
Contributors: Ryohsuke Mitsudome, Taekjin LEE, Takagi, Isamu
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: organize maintainer (#12150)
- Contributors: Satoshi OTA, github-actions
0.50.0 (2026-02-14)
0.49.0 (2025-12-30)
-
Merge remote-tracking branch 'origin/main' into prepare-0.49.0-changelog
-
fix(operation_mode_transition_manager): fix debug value update (#11664)
- fix debug value update
- fix format
* cppcheck ---------
-
Contributors: Ryohsuke Mitsudome, Takagi, Isamu
0.48.0 (2025-11-18)
- Merge remote-tracking branch 'origin/main' into humble
- fix(operation_mode_transition_manager): modify the autonomous mode
condition
(#11603)
- fix(operation_mode_transition_manager): modify the autonomous mode condition
- fix: passing clang-format
- fix: passing clang-format 2
- fix: add getcurrentmode function
- docs: add document of mode transition debug topic
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/autonomous_mode_transition_flag_node.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
- launch/operation_mode_transition_manager.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_operation_mode_transition_manager 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
- Takagi, Isamu
- Taiki Yamada
Authors
- Takamasa Horibe
autoware_operation_mode_transition_manager
Note
The state management functionality of this package is currently being moved to the command_mode_decider package.
When used with the command_mode_decider package, this package is only responsible for determining transition conditions.
Also, the data status, in_autoware_control, and in_transition contained in the debug topic is not available, so use the /system/command_mode_decider/debug topic instead.
- in_autoware_control: True when the current command mode is manual mode (default value 1000).
- in_transition: See the is_in_transition function in the command_mode_decider package.
- status:
- If in_autoware_control,
DISENGAGE (autoware mode = curr_mode) - Else if in_transition,
curr_mode (in transition from prev_mode) - Else
curr_mode - Note:
curr_mode = current operation modeandprev_mode = last operation mode
- If in_autoware_control,
Purpose / Use cases
This module is responsible for managing the different modes of operation for the Autoware system. The possible modes are:
-
Autonomous: the vehicle is fully controlled by the autonomous driving system -
Local: the vehicle is controlled by a physically connected control system such as a joy stick -
Remote: the vehicle is controlled by a remote controller -
Stop: the vehicle is stopped and there is no active control system.
There is also an In Transition state that occurs during each mode transitions. During this state, the transition to the new operator is not yet complete, and the previous operator is still responsible for controlling the system until the transition is complete. Some actions may be restricted during the In Transition state, such as sudden braking or steering. (This is restricted by the vehicle_cmd_gate).
Features
- Transit mode between
Autonomous,Local,RemoteandStopbased on the indication command. - Check whether the each transition is available (safe or not).
- Limit some sudden motion control in
In Transitionmode (this is done withvehicle_cmd_gatefeature). -
Check whether the transition is completed.
- Transition between the
Autonomous,Local,Remote, andStopmodes based on the indicated command. - Determine whether each transition is safe to execute.
- Restrict certain sudden motion controls during the
In Transitionmode (using thevehicle_cmd_gatefeature). - Verify that the transition is complete.
Design
A rough design of the relationship between autoware_operation_mode_transition_manager` and the other nodes is shown below.
A more detailed structure is below.
Here we see that autoware_operation_mode_transition_manager has multiple state transitions as follows
-
AUTOWARE ENABLED <—> DISABLED
- ENABLED: the vehicle is controlled by Autoware.
- DISABLED: the vehicle is out of Autoware control, expecting the e.g. manual driving.
-
AUTOWARE ENABLED <—> AUTO/LOCAL/REMOTE/NONE
- AUTO: the vehicle is controlled by Autoware, with the autonomous control command calculated by the planning/control component.
- LOCAL: the vehicle is controlled by Autoware, with the locally connected operator, e.g. joystick controller.
- REMOTE: the vehicle is controlled by Autoware, with the remotely connected operator.
- NONE: the vehicle is not controlled by any operator.
-
IN TRANSITION <—> COMPLETED
- IN TRANSITION: the mode listed above is in the transition process, expecting the former operator to have a responsibility to confirm the transition is completed.
- COMPLETED: the mode transition is completed.
Inputs / Outputs / API
Inputs
For the mode transition:
- /system/operation_mode/change_autoware_control [
autoware_system_msgs/srv/ChangeAutowareControl]: change operation mode to Autonomous - /system/operation_mode/change_operation_mode [
autoware_system_msgs/srv/ChangeOperationMode]: change operation mode
For the transition availability/completion check:
- /control/command/control_cmd [
autoware_control_msgs/msg/Control]: vehicle control signal - /localization/kinematic_state [
nav_msgs/msg/Odometry]: ego vehicle state - /planning/trajectory [
autoware_planning_msgs/msg/Trajectory]: planning trajectory - /vehicle/status/control_mode [
autoware_vehicle_msgs/msg/ControlModeReport]: vehicle control mode (autonomous/manual) - /control/vehicle_cmd_gate/operation_mode [
autoware_adapi_v1_msgs/msg/OperationModeState]: the operation mode in thevehicle_cmd_gate. (To be removed)
For the backward compatibility (to be removed):
- /api/autoware/get/engage [
autoware_vehicle_msgs/msg/Engage] - /control/current_gate_mode [
tier4_control_msgs/msg/GateMode] - /control/external_cmd_selector/current_selector_mode [
tier4_control_msgs/msg/ExternalCommandSelectorMode]
Outputs
- /system/operation_mode/state [
autoware_adapi_v1_msgs/msg/OperationModeState]: to inform the current operation mode -
/control/autoware_operation_mode_transition_manager/debug_info [
autoware_operation_mode_transition_manager/msg/OperationModeTransitionManagerDebug]: detailed information about the operation mode transition - /control/gate_mode_cmd [
tier4_control_msgs/msg/GateMode]: to change thevehicle_cmd_gatestate to use its features (to be removed) -
/autoware/engage [
autoware_vehicle_msgs/msg/Engage]: - /control/control_mode_request [
autoware_vehicle_msgs/srv/ControlModeCommand]: to change the vehicle control mode (autonomous/manual) - /control/external_cmd_selector/select_external_command [
tier4_control_msgs/srv/ExternalCommandSelect]:
Parameters
{{ json_to_markdown(“control/autoware_operation_mode_transition_manager/schema/operation_mode_transition_manager.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_operation_mode_transition_manager
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the control node designs with the packages they describe (#13340)
* fix(design): align the control node designs with the packages they describe ControlCommandGate and the operation mode transition manager name a plugin class and pin publishers that do not match the built package: the registered component is ControlCmdGate, and the transition flags belong on the design graph rather than on global: pins that link_manager skips. TrajectoryFollower declares three debug publishers with message types the node never publishes and a stop_reason publisher it does not create at all. VehicleCmdGate keeps gate_mode and engage on their official topic names through remap_target: alone, so the two inputs are connected through the design.
* fix(autoware_operation_mode_transition_manager): declare the system and legacy interfaces as remap targets The operation mode state publisher, the two operation mode change services and the legacy engage and gate mode publishers are node-side fixed names. Declaring them as remap targets puts them on the design graph; a port pinned with global: is skipped by link_manager and the exporter emits no remap for it. ---------
-
feat(operation_mode_transition_manager): add driving mode interface (#13251)
-
fix(control): declare the fixed-name compatibility interfaces in the control node designs (#13281)
* fix(control): declare the fixed-name compatibility interfaces in the control node designs operation_mode_transition_manager subscribes /control/current_gate_mode and /control/external_cmd_selector/current_selector_mode and calls /control/external_cmd_selector/select_external_command by fixed name; the gate serves the ADAPI pause/stop interfaces under /control/vehicle_cmd_gate. Declaring these ports with their remap_target lets a system design connect them and keep the fixed names when the module hierarchy nests the nodes.
* fix(control): declare the multi-publisher gate_mode_cmd and engage topics as global ---------
-
refactor(control): move node design files into each package (#13100) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
fix(operation_mode_transition_manager): fix missing dependncy (#13066)
-
Contributors: Ryohsuke Mitsudome, Taekjin LEE, Takagi, Isamu
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: organize maintainer (#12150)
- Contributors: Satoshi OTA, github-actions
0.50.0 (2026-02-14)
0.49.0 (2025-12-30)
-
Merge remote-tracking branch 'origin/main' into prepare-0.49.0-changelog
-
fix(operation_mode_transition_manager): fix debug value update (#11664)
- fix debug value update
- fix format
* cppcheck ---------
-
Contributors: Ryohsuke Mitsudome, Takagi, Isamu
0.48.0 (2025-11-18)
- Merge remote-tracking branch 'origin/main' into humble
- fix(operation_mode_transition_manager): modify the autonomous mode
condition
(#11603)
- fix(operation_mode_transition_manager): modify the autonomous mode condition
- fix: passing clang-format
- fix: passing clang-format 2
- fix: add getcurrentmode function
- docs: add document of mode transition debug topic
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/autonomous_mode_transition_flag_node.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
- launch/operation_mode_transition_manager.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_operation_mode_transition_manager 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
- Takagi, Isamu
- Taiki Yamada
Authors
- Takamasa Horibe
autoware_operation_mode_transition_manager
Note
The state management functionality of this package is currently being moved to the command_mode_decider package.
When used with the command_mode_decider package, this package is only responsible for determining transition conditions.
Also, the data status, in_autoware_control, and in_transition contained in the debug topic is not available, so use the /system/command_mode_decider/debug topic instead.
- in_autoware_control: True when the current command mode is manual mode (default value 1000).
- in_transition: See the is_in_transition function in the command_mode_decider package.
- status:
- If in_autoware_control,
DISENGAGE (autoware mode = curr_mode) - Else if in_transition,
curr_mode (in transition from prev_mode) - Else
curr_mode - Note:
curr_mode = current operation modeandprev_mode = last operation mode
- If in_autoware_control,
Purpose / Use cases
This module is responsible for managing the different modes of operation for the Autoware system. The possible modes are:
-
Autonomous: the vehicle is fully controlled by the autonomous driving system -
Local: the vehicle is controlled by a physically connected control system such as a joy stick -
Remote: the vehicle is controlled by a remote controller -
Stop: the vehicle is stopped and there is no active control system.
There is also an In Transition state that occurs during each mode transitions. During this state, the transition to the new operator is not yet complete, and the previous operator is still responsible for controlling the system until the transition is complete. Some actions may be restricted during the In Transition state, such as sudden braking or steering. (This is restricted by the vehicle_cmd_gate).
Features
- Transit mode between
Autonomous,Local,RemoteandStopbased on the indication command. - Check whether the each transition is available (safe or not).
- Limit some sudden motion control in
In Transitionmode (this is done withvehicle_cmd_gatefeature). -
Check whether the transition is completed.
- Transition between the
Autonomous,Local,Remote, andStopmodes based on the indicated command. - Determine whether each transition is safe to execute.
- Restrict certain sudden motion controls during the
In Transitionmode (using thevehicle_cmd_gatefeature). - Verify that the transition is complete.
Design
A rough design of the relationship between autoware_operation_mode_transition_manager` and the other nodes is shown below.
A more detailed structure is below.
Here we see that autoware_operation_mode_transition_manager has multiple state transitions as follows
-
AUTOWARE ENABLED <—> DISABLED
- ENABLED: the vehicle is controlled by Autoware.
- DISABLED: the vehicle is out of Autoware control, expecting the e.g. manual driving.
-
AUTOWARE ENABLED <—> AUTO/LOCAL/REMOTE/NONE
- AUTO: the vehicle is controlled by Autoware, with the autonomous control command calculated by the planning/control component.
- LOCAL: the vehicle is controlled by Autoware, with the locally connected operator, e.g. joystick controller.
- REMOTE: the vehicle is controlled by Autoware, with the remotely connected operator.
- NONE: the vehicle is not controlled by any operator.
-
IN TRANSITION <—> COMPLETED
- IN TRANSITION: the mode listed above is in the transition process, expecting the former operator to have a responsibility to confirm the transition is completed.
- COMPLETED: the mode transition is completed.
Inputs / Outputs / API
Inputs
For the mode transition:
- /system/operation_mode/change_autoware_control [
autoware_system_msgs/srv/ChangeAutowareControl]: change operation mode to Autonomous - /system/operation_mode/change_operation_mode [
autoware_system_msgs/srv/ChangeOperationMode]: change operation mode
For the transition availability/completion check:
- /control/command/control_cmd [
autoware_control_msgs/msg/Control]: vehicle control signal - /localization/kinematic_state [
nav_msgs/msg/Odometry]: ego vehicle state - /planning/trajectory [
autoware_planning_msgs/msg/Trajectory]: planning trajectory - /vehicle/status/control_mode [
autoware_vehicle_msgs/msg/ControlModeReport]: vehicle control mode (autonomous/manual) - /control/vehicle_cmd_gate/operation_mode [
autoware_adapi_v1_msgs/msg/OperationModeState]: the operation mode in thevehicle_cmd_gate. (To be removed)
For the backward compatibility (to be removed):
- /api/autoware/get/engage [
autoware_vehicle_msgs/msg/Engage] - /control/current_gate_mode [
tier4_control_msgs/msg/GateMode] - /control/external_cmd_selector/current_selector_mode [
tier4_control_msgs/msg/ExternalCommandSelectorMode]
Outputs
- /system/operation_mode/state [
autoware_adapi_v1_msgs/msg/OperationModeState]: to inform the current operation mode -
/control/autoware_operation_mode_transition_manager/debug_info [
autoware_operation_mode_transition_manager/msg/OperationModeTransitionManagerDebug]: detailed information about the operation mode transition - /control/gate_mode_cmd [
tier4_control_msgs/msg/GateMode]: to change thevehicle_cmd_gatestate to use its features (to be removed) -
/autoware/engage [
autoware_vehicle_msgs/msg/Engage]: - /control/control_mode_request [
autoware_vehicle_msgs/srv/ControlModeCommand]: to change the vehicle control mode (autonomous/manual) - /control/external_cmd_selector/select_external_command [
tier4_control_msgs/srv/ExternalCommandSelect]:
Parameters
{{ json_to_markdown(“control/autoware_operation_mode_transition_manager/schema/operation_mode_transition_manager.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_operation_mode_transition_manager
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the control node designs with the packages they describe (#13340)
* fix(design): align the control node designs with the packages they describe ControlCommandGate and the operation mode transition manager name a plugin class and pin publishers that do not match the built package: the registered component is ControlCmdGate, and the transition flags belong on the design graph rather than on global: pins that link_manager skips. TrajectoryFollower declares three debug publishers with message types the node never publishes and a stop_reason publisher it does not create at all. VehicleCmdGate keeps gate_mode and engage on their official topic names through remap_target: alone, so the two inputs are connected through the design.
* fix(autoware_operation_mode_transition_manager): declare the system and legacy interfaces as remap targets The operation mode state publisher, the two operation mode change services and the legacy engage and gate mode publishers are node-side fixed names. Declaring them as remap targets puts them on the design graph; a port pinned with global: is skipped by link_manager and the exporter emits no remap for it. ---------
-
feat(operation_mode_transition_manager): add driving mode interface (#13251)
-
fix(control): declare the fixed-name compatibility interfaces in the control node designs (#13281)
* fix(control): declare the fixed-name compatibility interfaces in the control node designs operation_mode_transition_manager subscribes /control/current_gate_mode and /control/external_cmd_selector/current_selector_mode and calls /control/external_cmd_selector/select_external_command by fixed name; the gate serves the ADAPI pause/stop interfaces under /control/vehicle_cmd_gate. Declaring these ports with their remap_target lets a system design connect them and keep the fixed names when the module hierarchy nests the nodes.
* fix(control): declare the multi-publisher gate_mode_cmd and engage topics as global ---------
-
refactor(control): move node design files into each package (#13100) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
fix(operation_mode_transition_manager): fix missing dependncy (#13066)
-
Contributors: Ryohsuke Mitsudome, Taekjin LEE, Takagi, Isamu
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: organize maintainer (#12150)
- Contributors: Satoshi OTA, github-actions
0.50.0 (2026-02-14)
0.49.0 (2025-12-30)
-
Merge remote-tracking branch 'origin/main' into prepare-0.49.0-changelog
-
fix(operation_mode_transition_manager): fix debug value update (#11664)
- fix debug value update
- fix format
* cppcheck ---------
-
Contributors: Ryohsuke Mitsudome, Takagi, Isamu
0.48.0 (2025-11-18)
- Merge remote-tracking branch 'origin/main' into humble
- fix(operation_mode_transition_manager): modify the autonomous mode
condition
(#11603)
- fix(operation_mode_transition_manager): modify the autonomous mode condition
- fix: passing clang-format
- fix: passing clang-format 2
- fix: add getcurrentmode function
- docs: add document of mode transition debug topic
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/autonomous_mode_transition_flag_node.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
- launch/operation_mode_transition_manager.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_operation_mode_transition_manager 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
- Takagi, Isamu
- Taiki Yamada
Authors
- Takamasa Horibe
autoware_operation_mode_transition_manager
Note
The state management functionality of this package is currently being moved to the command_mode_decider package.
When used with the command_mode_decider package, this package is only responsible for determining transition conditions.
Also, the data status, in_autoware_control, and in_transition contained in the debug topic is not available, so use the /system/command_mode_decider/debug topic instead.
- in_autoware_control: True when the current command mode is manual mode (default value 1000).
- in_transition: See the is_in_transition function in the command_mode_decider package.
- status:
- If in_autoware_control,
DISENGAGE (autoware mode = curr_mode) - Else if in_transition,
curr_mode (in transition from prev_mode) - Else
curr_mode - Note:
curr_mode = current operation modeandprev_mode = last operation mode
- If in_autoware_control,
Purpose / Use cases
This module is responsible for managing the different modes of operation for the Autoware system. The possible modes are:
-
Autonomous: the vehicle is fully controlled by the autonomous driving system -
Local: the vehicle is controlled by a physically connected control system such as a joy stick -
Remote: the vehicle is controlled by a remote controller -
Stop: the vehicle is stopped and there is no active control system.
There is also an In Transition state that occurs during each mode transitions. During this state, the transition to the new operator is not yet complete, and the previous operator is still responsible for controlling the system until the transition is complete. Some actions may be restricted during the In Transition state, such as sudden braking or steering. (This is restricted by the vehicle_cmd_gate).
Features
- Transit mode between
Autonomous,Local,RemoteandStopbased on the indication command. - Check whether the each transition is available (safe or not).
- Limit some sudden motion control in
In Transitionmode (this is done withvehicle_cmd_gatefeature). -
Check whether the transition is completed.
- Transition between the
Autonomous,Local,Remote, andStopmodes based on the indicated command. - Determine whether each transition is safe to execute.
- Restrict certain sudden motion controls during the
In Transitionmode (using thevehicle_cmd_gatefeature). - Verify that the transition is complete.
Design
A rough design of the relationship between autoware_operation_mode_transition_manager` and the other nodes is shown below.
A more detailed structure is below.
Here we see that autoware_operation_mode_transition_manager has multiple state transitions as follows
-
AUTOWARE ENABLED <—> DISABLED
- ENABLED: the vehicle is controlled by Autoware.
- DISABLED: the vehicle is out of Autoware control, expecting the e.g. manual driving.
-
AUTOWARE ENABLED <—> AUTO/LOCAL/REMOTE/NONE
- AUTO: the vehicle is controlled by Autoware, with the autonomous control command calculated by the planning/control component.
- LOCAL: the vehicle is controlled by Autoware, with the locally connected operator, e.g. joystick controller.
- REMOTE: the vehicle is controlled by Autoware, with the remotely connected operator.
- NONE: the vehicle is not controlled by any operator.
-
IN TRANSITION <—> COMPLETED
- IN TRANSITION: the mode listed above is in the transition process, expecting the former operator to have a responsibility to confirm the transition is completed.
- COMPLETED: the mode transition is completed.
Inputs / Outputs / API
Inputs
For the mode transition:
- /system/operation_mode/change_autoware_control [
autoware_system_msgs/srv/ChangeAutowareControl]: change operation mode to Autonomous - /system/operation_mode/change_operation_mode [
autoware_system_msgs/srv/ChangeOperationMode]: change operation mode
For the transition availability/completion check:
- /control/command/control_cmd [
autoware_control_msgs/msg/Control]: vehicle control signal - /localization/kinematic_state [
nav_msgs/msg/Odometry]: ego vehicle state - /planning/trajectory [
autoware_planning_msgs/msg/Trajectory]: planning trajectory - /vehicle/status/control_mode [
autoware_vehicle_msgs/msg/ControlModeReport]: vehicle control mode (autonomous/manual) - /control/vehicle_cmd_gate/operation_mode [
autoware_adapi_v1_msgs/msg/OperationModeState]: the operation mode in thevehicle_cmd_gate. (To be removed)
For the backward compatibility (to be removed):
- /api/autoware/get/engage [
autoware_vehicle_msgs/msg/Engage] - /control/current_gate_mode [
tier4_control_msgs/msg/GateMode] - /control/external_cmd_selector/current_selector_mode [
tier4_control_msgs/msg/ExternalCommandSelectorMode]
Outputs
- /system/operation_mode/state [
autoware_adapi_v1_msgs/msg/OperationModeState]: to inform the current operation mode -
/control/autoware_operation_mode_transition_manager/debug_info [
autoware_operation_mode_transition_manager/msg/OperationModeTransitionManagerDebug]: detailed information about the operation mode transition - /control/gate_mode_cmd [
tier4_control_msgs/msg/GateMode]: to change thevehicle_cmd_gatestate to use its features (to be removed) -
/autoware/engage [
autoware_vehicle_msgs/msg/Engage]: - /control/control_mode_request [
autoware_vehicle_msgs/srv/ControlModeCommand]: to change the vehicle control mode (autonomous/manual) - /control/external_cmd_selector/select_external_command [
tier4_control_msgs/srv/ExternalCommandSelect]:
Parameters
{{ json_to_markdown(“control/autoware_operation_mode_transition_manager/schema/operation_mode_transition_manager.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_operation_mode_transition_manager
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the control node designs with the packages they describe (#13340)
* fix(design): align the control node designs with the packages they describe ControlCommandGate and the operation mode transition manager name a plugin class and pin publishers that do not match the built package: the registered component is ControlCmdGate, and the transition flags belong on the design graph rather than on global: pins that link_manager skips. TrajectoryFollower declares three debug publishers with message types the node never publishes and a stop_reason publisher it does not create at all. VehicleCmdGate keeps gate_mode and engage on their official topic names through remap_target: alone, so the two inputs are connected through the design.
* fix(autoware_operation_mode_transition_manager): declare the system and legacy interfaces as remap targets The operation mode state publisher, the two operation mode change services and the legacy engage and gate mode publishers are node-side fixed names. Declaring them as remap targets puts them on the design graph; a port pinned with global: is skipped by link_manager and the exporter emits no remap for it. ---------
-
feat(operation_mode_transition_manager): add driving mode interface (#13251)
-
fix(control): declare the fixed-name compatibility interfaces in the control node designs (#13281)
* fix(control): declare the fixed-name compatibility interfaces in the control node designs operation_mode_transition_manager subscribes /control/current_gate_mode and /control/external_cmd_selector/current_selector_mode and calls /control/external_cmd_selector/select_external_command by fixed name; the gate serves the ADAPI pause/stop interfaces under /control/vehicle_cmd_gate. Declaring these ports with their remap_target lets a system design connect them and keep the fixed names when the module hierarchy nests the nodes.
* fix(control): declare the multi-publisher gate_mode_cmd and engage topics as global ---------
-
refactor(control): move node design files into each package (#13100) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
fix(operation_mode_transition_manager): fix missing dependncy (#13066)
-
Contributors: Ryohsuke Mitsudome, Taekjin LEE, Takagi, Isamu
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: organize maintainer (#12150)
- Contributors: Satoshi OTA, github-actions
0.50.0 (2026-02-14)
0.49.0 (2025-12-30)
-
Merge remote-tracking branch 'origin/main' into prepare-0.49.0-changelog
-
fix(operation_mode_transition_manager): fix debug value update (#11664)
- fix debug value update
- fix format
* cppcheck ---------
-
Contributors: Ryohsuke Mitsudome, Takagi, Isamu
0.48.0 (2025-11-18)
- Merge remote-tracking branch 'origin/main' into humble
- fix(operation_mode_transition_manager): modify the autonomous mode
condition
(#11603)
- fix(operation_mode_transition_manager): modify the autonomous mode condition
- fix: passing clang-format
- fix: passing clang-format 2
- fix: add getcurrentmode function
- docs: add document of mode transition debug topic
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/autonomous_mode_transition_flag_node.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
- launch/operation_mode_transition_manager.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_operation_mode_transition_manager 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
- Takagi, Isamu
- Taiki Yamada
Authors
- Takamasa Horibe
autoware_operation_mode_transition_manager
Note
The state management functionality of this package is currently being moved to the command_mode_decider package.
When used with the command_mode_decider package, this package is only responsible for determining transition conditions.
Also, the data status, in_autoware_control, and in_transition contained in the debug topic is not available, so use the /system/command_mode_decider/debug topic instead.
- in_autoware_control: True when the current command mode is manual mode (default value 1000).
- in_transition: See the is_in_transition function in the command_mode_decider package.
- status:
- If in_autoware_control,
DISENGAGE (autoware mode = curr_mode) - Else if in_transition,
curr_mode (in transition from prev_mode) - Else
curr_mode - Note:
curr_mode = current operation modeandprev_mode = last operation mode
- If in_autoware_control,
Purpose / Use cases
This module is responsible for managing the different modes of operation for the Autoware system. The possible modes are:
-
Autonomous: the vehicle is fully controlled by the autonomous driving system -
Local: the vehicle is controlled by a physically connected control system such as a joy stick -
Remote: the vehicle is controlled by a remote controller -
Stop: the vehicle is stopped and there is no active control system.
There is also an In Transition state that occurs during each mode transitions. During this state, the transition to the new operator is not yet complete, and the previous operator is still responsible for controlling the system until the transition is complete. Some actions may be restricted during the In Transition state, such as sudden braking or steering. (This is restricted by the vehicle_cmd_gate).
Features
- Transit mode between
Autonomous,Local,RemoteandStopbased on the indication command. - Check whether the each transition is available (safe or not).
- Limit some sudden motion control in
In Transitionmode (this is done withvehicle_cmd_gatefeature). -
Check whether the transition is completed.
- Transition between the
Autonomous,Local,Remote, andStopmodes based on the indicated command. - Determine whether each transition is safe to execute.
- Restrict certain sudden motion controls during the
In Transitionmode (using thevehicle_cmd_gatefeature). - Verify that the transition is complete.
Design
A rough design of the relationship between autoware_operation_mode_transition_manager` and the other nodes is shown below.
A more detailed structure is below.
Here we see that autoware_operation_mode_transition_manager has multiple state transitions as follows
-
AUTOWARE ENABLED <—> DISABLED
- ENABLED: the vehicle is controlled by Autoware.
- DISABLED: the vehicle is out of Autoware control, expecting the e.g. manual driving.
-
AUTOWARE ENABLED <—> AUTO/LOCAL/REMOTE/NONE
- AUTO: the vehicle is controlled by Autoware, with the autonomous control command calculated by the planning/control component.
- LOCAL: the vehicle is controlled by Autoware, with the locally connected operator, e.g. joystick controller.
- REMOTE: the vehicle is controlled by Autoware, with the remotely connected operator.
- NONE: the vehicle is not controlled by any operator.
-
IN TRANSITION <—> COMPLETED
- IN TRANSITION: the mode listed above is in the transition process, expecting the former operator to have a responsibility to confirm the transition is completed.
- COMPLETED: the mode transition is completed.
Inputs / Outputs / API
Inputs
For the mode transition:
- /system/operation_mode/change_autoware_control [
autoware_system_msgs/srv/ChangeAutowareControl]: change operation mode to Autonomous - /system/operation_mode/change_operation_mode [
autoware_system_msgs/srv/ChangeOperationMode]: change operation mode
For the transition availability/completion check:
- /control/command/control_cmd [
autoware_control_msgs/msg/Control]: vehicle control signal - /localization/kinematic_state [
nav_msgs/msg/Odometry]: ego vehicle state - /planning/trajectory [
autoware_planning_msgs/msg/Trajectory]: planning trajectory - /vehicle/status/control_mode [
autoware_vehicle_msgs/msg/ControlModeReport]: vehicle control mode (autonomous/manual) - /control/vehicle_cmd_gate/operation_mode [
autoware_adapi_v1_msgs/msg/OperationModeState]: the operation mode in thevehicle_cmd_gate. (To be removed)
For the backward compatibility (to be removed):
- /api/autoware/get/engage [
autoware_vehicle_msgs/msg/Engage] - /control/current_gate_mode [
tier4_control_msgs/msg/GateMode] - /control/external_cmd_selector/current_selector_mode [
tier4_control_msgs/msg/ExternalCommandSelectorMode]
Outputs
- /system/operation_mode/state [
autoware_adapi_v1_msgs/msg/OperationModeState]: to inform the current operation mode -
/control/autoware_operation_mode_transition_manager/debug_info [
autoware_operation_mode_transition_manager/msg/OperationModeTransitionManagerDebug]: detailed information about the operation mode transition - /control/gate_mode_cmd [
tier4_control_msgs/msg/GateMode]: to change thevehicle_cmd_gatestate to use its features (to be removed) -
/autoware/engage [
autoware_vehicle_msgs/msg/Engage]: - /control/control_mode_request [
autoware_vehicle_msgs/srv/ControlModeCommand]: to change the vehicle control mode (autonomous/manual) - /control/external_cmd_selector/select_external_command [
tier4_control_msgs/srv/ExternalCommandSelect]:
Parameters
{{ json_to_markdown(“control/autoware_operation_mode_transition_manager/schema/operation_mode_transition_manager.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_operation_mode_transition_manager
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the control node designs with the packages they describe (#13340)
* fix(design): align the control node designs with the packages they describe ControlCommandGate and the operation mode transition manager name a plugin class and pin publishers that do not match the built package: the registered component is ControlCmdGate, and the transition flags belong on the design graph rather than on global: pins that link_manager skips. TrajectoryFollower declares three debug publishers with message types the node never publishes and a stop_reason publisher it does not create at all. VehicleCmdGate keeps gate_mode and engage on their official topic names through remap_target: alone, so the two inputs are connected through the design.
* fix(autoware_operation_mode_transition_manager): declare the system and legacy interfaces as remap targets The operation mode state publisher, the two operation mode change services and the legacy engage and gate mode publishers are node-side fixed names. Declaring them as remap targets puts them on the design graph; a port pinned with global: is skipped by link_manager and the exporter emits no remap for it. ---------
-
feat(operation_mode_transition_manager): add driving mode interface (#13251)
-
fix(control): declare the fixed-name compatibility interfaces in the control node designs (#13281)
* fix(control): declare the fixed-name compatibility interfaces in the control node designs operation_mode_transition_manager subscribes /control/current_gate_mode and /control/external_cmd_selector/current_selector_mode and calls /control/external_cmd_selector/select_external_command by fixed name; the gate serves the ADAPI pause/stop interfaces under /control/vehicle_cmd_gate. Declaring these ports with their remap_target lets a system design connect them and keep the fixed names when the module hierarchy nests the nodes.
* fix(control): declare the multi-publisher gate_mode_cmd and engage topics as global ---------
-
refactor(control): move node design files into each package (#13100) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
fix(operation_mode_transition_manager): fix missing dependncy (#13066)
-
Contributors: Ryohsuke Mitsudome, Taekjin LEE, Takagi, Isamu
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: organize maintainer (#12150)
- Contributors: Satoshi OTA, github-actions
0.50.0 (2026-02-14)
0.49.0 (2025-12-30)
-
Merge remote-tracking branch 'origin/main' into prepare-0.49.0-changelog
-
fix(operation_mode_transition_manager): fix debug value update (#11664)
- fix debug value update
- fix format
* cppcheck ---------
-
Contributors: Ryohsuke Mitsudome, Takagi, Isamu
0.48.0 (2025-11-18)
- Merge remote-tracking branch 'origin/main' into humble
- fix(operation_mode_transition_manager): modify the autonomous mode
condition
(#11603)
- fix(operation_mode_transition_manager): modify the autonomous mode condition
- fix: passing clang-format
- fix: passing clang-format 2
- fix: add getcurrentmode function
- docs: add document of mode transition debug topic
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/autonomous_mode_transition_flag_node.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
- launch/operation_mode_transition_manager.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_operation_mode_transition_manager 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
- Takagi, Isamu
- Taiki Yamada
Authors
- Takamasa Horibe
autoware_operation_mode_transition_manager
Note
The state management functionality of this package is currently being moved to the command_mode_decider package.
When used with the command_mode_decider package, this package is only responsible for determining transition conditions.
Also, the data status, in_autoware_control, and in_transition contained in the debug topic is not available, so use the /system/command_mode_decider/debug topic instead.
- in_autoware_control: True when the current command mode is manual mode (default value 1000).
- in_transition: See the is_in_transition function in the command_mode_decider package.
- status:
- If in_autoware_control,
DISENGAGE (autoware mode = curr_mode) - Else if in_transition,
curr_mode (in transition from prev_mode) - Else
curr_mode - Note:
curr_mode = current operation modeandprev_mode = last operation mode
- If in_autoware_control,
Purpose / Use cases
This module is responsible for managing the different modes of operation for the Autoware system. The possible modes are:
-
Autonomous: the vehicle is fully controlled by the autonomous driving system -
Local: the vehicle is controlled by a physically connected control system such as a joy stick -
Remote: the vehicle is controlled by a remote controller -
Stop: the vehicle is stopped and there is no active control system.
There is also an In Transition state that occurs during each mode transitions. During this state, the transition to the new operator is not yet complete, and the previous operator is still responsible for controlling the system until the transition is complete. Some actions may be restricted during the In Transition state, such as sudden braking or steering. (This is restricted by the vehicle_cmd_gate).
Features
- Transit mode between
Autonomous,Local,RemoteandStopbased on the indication command. - Check whether the each transition is available (safe or not).
- Limit some sudden motion control in
In Transitionmode (this is done withvehicle_cmd_gatefeature). -
Check whether the transition is completed.
- Transition between the
Autonomous,Local,Remote, andStopmodes based on the indicated command. - Determine whether each transition is safe to execute.
- Restrict certain sudden motion controls during the
In Transitionmode (using thevehicle_cmd_gatefeature). - Verify that the transition is complete.
Design
A rough design of the relationship between autoware_operation_mode_transition_manager` and the other nodes is shown below.
A more detailed structure is below.
Here we see that autoware_operation_mode_transition_manager has multiple state transitions as follows
-
AUTOWARE ENABLED <—> DISABLED
- ENABLED: the vehicle is controlled by Autoware.
- DISABLED: the vehicle is out of Autoware control, expecting the e.g. manual driving.
-
AUTOWARE ENABLED <—> AUTO/LOCAL/REMOTE/NONE
- AUTO: the vehicle is controlled by Autoware, with the autonomous control command calculated by the planning/control component.
- LOCAL: the vehicle is controlled by Autoware, with the locally connected operator, e.g. joystick controller.
- REMOTE: the vehicle is controlled by Autoware, with the remotely connected operator.
- NONE: the vehicle is not controlled by any operator.
-
IN TRANSITION <—> COMPLETED
- IN TRANSITION: the mode listed above is in the transition process, expecting the former operator to have a responsibility to confirm the transition is completed.
- COMPLETED: the mode transition is completed.
Inputs / Outputs / API
Inputs
For the mode transition:
- /system/operation_mode/change_autoware_control [
autoware_system_msgs/srv/ChangeAutowareControl]: change operation mode to Autonomous - /system/operation_mode/change_operation_mode [
autoware_system_msgs/srv/ChangeOperationMode]: change operation mode
For the transition availability/completion check:
- /control/command/control_cmd [
autoware_control_msgs/msg/Control]: vehicle control signal - /localization/kinematic_state [
nav_msgs/msg/Odometry]: ego vehicle state - /planning/trajectory [
autoware_planning_msgs/msg/Trajectory]: planning trajectory - /vehicle/status/control_mode [
autoware_vehicle_msgs/msg/ControlModeReport]: vehicle control mode (autonomous/manual) - /control/vehicle_cmd_gate/operation_mode [
autoware_adapi_v1_msgs/msg/OperationModeState]: the operation mode in thevehicle_cmd_gate. (To be removed)
For the backward compatibility (to be removed):
- /api/autoware/get/engage [
autoware_vehicle_msgs/msg/Engage] - /control/current_gate_mode [
tier4_control_msgs/msg/GateMode] - /control/external_cmd_selector/current_selector_mode [
tier4_control_msgs/msg/ExternalCommandSelectorMode]
Outputs
- /system/operation_mode/state [
autoware_adapi_v1_msgs/msg/OperationModeState]: to inform the current operation mode -
/control/autoware_operation_mode_transition_manager/debug_info [
autoware_operation_mode_transition_manager/msg/OperationModeTransitionManagerDebug]: detailed information about the operation mode transition - /control/gate_mode_cmd [
tier4_control_msgs/msg/GateMode]: to change thevehicle_cmd_gatestate to use its features (to be removed) -
/autoware/engage [
autoware_vehicle_msgs/msg/Engage]: - /control/control_mode_request [
autoware_vehicle_msgs/srv/ControlModeCommand]: to change the vehicle control mode (autonomous/manual) - /control/external_cmd_selector/select_external_command [
tier4_control_msgs/srv/ExternalCommandSelect]:
Parameters
{{ json_to_markdown(“control/autoware_operation_mode_transition_manager/schema/operation_mode_transition_manager.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_operation_mode_transition_manager
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the control node designs with the packages they describe (#13340)
* fix(design): align the control node designs with the packages they describe ControlCommandGate and the operation mode transition manager name a plugin class and pin publishers that do not match the built package: the registered component is ControlCmdGate, and the transition flags belong on the design graph rather than on global: pins that link_manager skips. TrajectoryFollower declares three debug publishers with message types the node never publishes and a stop_reason publisher it does not create at all. VehicleCmdGate keeps gate_mode and engage on their official topic names through remap_target: alone, so the two inputs are connected through the design.
* fix(autoware_operation_mode_transition_manager): declare the system and legacy interfaces as remap targets The operation mode state publisher, the two operation mode change services and the legacy engage and gate mode publishers are node-side fixed names. Declaring them as remap targets puts them on the design graph; a port pinned with global: is skipped by link_manager and the exporter emits no remap for it. ---------
-
feat(operation_mode_transition_manager): add driving mode interface (#13251)
-
fix(control): declare the fixed-name compatibility interfaces in the control node designs (#13281)
* fix(control): declare the fixed-name compatibility interfaces in the control node designs operation_mode_transition_manager subscribes /control/current_gate_mode and /control/external_cmd_selector/current_selector_mode and calls /control/external_cmd_selector/select_external_command by fixed name; the gate serves the ADAPI pause/stop interfaces under /control/vehicle_cmd_gate. Declaring these ports with their remap_target lets a system design connect them and keep the fixed names when the module hierarchy nests the nodes.
* fix(control): declare the multi-publisher gate_mode_cmd and engage topics as global ---------
-
refactor(control): move node design files into each package (#13100) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
fix(operation_mode_transition_manager): fix missing dependncy (#13066)
-
Contributors: Ryohsuke Mitsudome, Taekjin LEE, Takagi, Isamu
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: organize maintainer (#12150)
- Contributors: Satoshi OTA, github-actions
0.50.0 (2026-02-14)
0.49.0 (2025-12-30)
-
Merge remote-tracking branch 'origin/main' into prepare-0.49.0-changelog
-
fix(operation_mode_transition_manager): fix debug value update (#11664)
- fix debug value update
- fix format
* cppcheck ---------
-
Contributors: Ryohsuke Mitsudome, Takagi, Isamu
0.48.0 (2025-11-18)
- Merge remote-tracking branch 'origin/main' into humble
- fix(operation_mode_transition_manager): modify the autonomous mode
condition
(#11603)
- fix(operation_mode_transition_manager): modify the autonomous mode condition
- fix: passing clang-format
- fix: passing clang-format 2
- fix: add getcurrentmode function
- docs: add document of mode transition debug topic
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/autonomous_mode_transition_flag_node.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
- launch/operation_mode_transition_manager.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_operation_mode_transition_manager 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
- Takagi, Isamu
- Taiki Yamada
Authors
- Takamasa Horibe
autoware_operation_mode_transition_manager
Note
The state management functionality of this package is currently being moved to the command_mode_decider package.
When used with the command_mode_decider package, this package is only responsible for determining transition conditions.
Also, the data status, in_autoware_control, and in_transition contained in the debug topic is not available, so use the /system/command_mode_decider/debug topic instead.
- in_autoware_control: True when the current command mode is manual mode (default value 1000).
- in_transition: See the is_in_transition function in the command_mode_decider package.
- status:
- If in_autoware_control,
DISENGAGE (autoware mode = curr_mode) - Else if in_transition,
curr_mode (in transition from prev_mode) - Else
curr_mode - Note:
curr_mode = current operation modeandprev_mode = last operation mode
- If in_autoware_control,
Purpose / Use cases
This module is responsible for managing the different modes of operation for the Autoware system. The possible modes are:
-
Autonomous: the vehicle is fully controlled by the autonomous driving system -
Local: the vehicle is controlled by a physically connected control system such as a joy stick -
Remote: the vehicle is controlled by a remote controller -
Stop: the vehicle is stopped and there is no active control system.
There is also an In Transition state that occurs during each mode transitions. During this state, the transition to the new operator is not yet complete, and the previous operator is still responsible for controlling the system until the transition is complete. Some actions may be restricted during the In Transition state, such as sudden braking or steering. (This is restricted by the vehicle_cmd_gate).
Features
- Transit mode between
Autonomous,Local,RemoteandStopbased on the indication command. - Check whether the each transition is available (safe or not).
- Limit some sudden motion control in
In Transitionmode (this is done withvehicle_cmd_gatefeature). -
Check whether the transition is completed.
- Transition between the
Autonomous,Local,Remote, andStopmodes based on the indicated command. - Determine whether each transition is safe to execute.
- Restrict certain sudden motion controls during the
In Transitionmode (using thevehicle_cmd_gatefeature). - Verify that the transition is complete.
Design
A rough design of the relationship between autoware_operation_mode_transition_manager` and the other nodes is shown below.
A more detailed structure is below.
Here we see that autoware_operation_mode_transition_manager has multiple state transitions as follows
-
AUTOWARE ENABLED <—> DISABLED
- ENABLED: the vehicle is controlled by Autoware.
- DISABLED: the vehicle is out of Autoware control, expecting the e.g. manual driving.
-
AUTOWARE ENABLED <—> AUTO/LOCAL/REMOTE/NONE
- AUTO: the vehicle is controlled by Autoware, with the autonomous control command calculated by the planning/control component.
- LOCAL: the vehicle is controlled by Autoware, with the locally connected operator, e.g. joystick controller.
- REMOTE: the vehicle is controlled by Autoware, with the remotely connected operator.
- NONE: the vehicle is not controlled by any operator.
-
IN TRANSITION <—> COMPLETED
- IN TRANSITION: the mode listed above is in the transition process, expecting the former operator to have a responsibility to confirm the transition is completed.
- COMPLETED: the mode transition is completed.
Inputs / Outputs / API
Inputs
For the mode transition:
- /system/operation_mode/change_autoware_control [
autoware_system_msgs/srv/ChangeAutowareControl]: change operation mode to Autonomous - /system/operation_mode/change_operation_mode [
autoware_system_msgs/srv/ChangeOperationMode]: change operation mode
For the transition availability/completion check:
- /control/command/control_cmd [
autoware_control_msgs/msg/Control]: vehicle control signal - /localization/kinematic_state [
nav_msgs/msg/Odometry]: ego vehicle state - /planning/trajectory [
autoware_planning_msgs/msg/Trajectory]: planning trajectory - /vehicle/status/control_mode [
autoware_vehicle_msgs/msg/ControlModeReport]: vehicle control mode (autonomous/manual) - /control/vehicle_cmd_gate/operation_mode [
autoware_adapi_v1_msgs/msg/OperationModeState]: the operation mode in thevehicle_cmd_gate. (To be removed)
For the backward compatibility (to be removed):
- /api/autoware/get/engage [
autoware_vehicle_msgs/msg/Engage] - /control/current_gate_mode [
tier4_control_msgs/msg/GateMode] - /control/external_cmd_selector/current_selector_mode [
tier4_control_msgs/msg/ExternalCommandSelectorMode]
Outputs
- /system/operation_mode/state [
autoware_adapi_v1_msgs/msg/OperationModeState]: to inform the current operation mode -
/control/autoware_operation_mode_transition_manager/debug_info [
autoware_operation_mode_transition_manager/msg/OperationModeTransitionManagerDebug]: detailed information about the operation mode transition - /control/gate_mode_cmd [
tier4_control_msgs/msg/GateMode]: to change thevehicle_cmd_gatestate to use its features (to be removed) -
/autoware/engage [
autoware_vehicle_msgs/msg/Engage]: - /control/control_mode_request [
autoware_vehicle_msgs/srv/ControlModeCommand]: to change the vehicle control mode (autonomous/manual) - /control/external_cmd_selector/select_external_command [
tier4_control_msgs/srv/ExternalCommandSelect]:
Parameters
{{ json_to_markdown(“control/autoware_operation_mode_transition_manager/schema/operation_mode_transition_manager.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_operation_mode_transition_manager
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the control node designs with the packages they describe (#13340)
* fix(design): align the control node designs with the packages they describe ControlCommandGate and the operation mode transition manager name a plugin class and pin publishers that do not match the built package: the registered component is ControlCmdGate, and the transition flags belong on the design graph rather than on global: pins that link_manager skips. TrajectoryFollower declares three debug publishers with message types the node never publishes and a stop_reason publisher it does not create at all. VehicleCmdGate keeps gate_mode and engage on their official topic names through remap_target: alone, so the two inputs are connected through the design.
* fix(autoware_operation_mode_transition_manager): declare the system and legacy interfaces as remap targets The operation mode state publisher, the two operation mode change services and the legacy engage and gate mode publishers are node-side fixed names. Declaring them as remap targets puts them on the design graph; a port pinned with global: is skipped by link_manager and the exporter emits no remap for it. ---------
-
feat(operation_mode_transition_manager): add driving mode interface (#13251)
-
fix(control): declare the fixed-name compatibility interfaces in the control node designs (#13281)
* fix(control): declare the fixed-name compatibility interfaces in the control node designs operation_mode_transition_manager subscribes /control/current_gate_mode and /control/external_cmd_selector/current_selector_mode and calls /control/external_cmd_selector/select_external_command by fixed name; the gate serves the ADAPI pause/stop interfaces under /control/vehicle_cmd_gate. Declaring these ports with their remap_target lets a system design connect them and keep the fixed names when the module hierarchy nests the nodes.
* fix(control): declare the multi-publisher gate_mode_cmd and engage topics as global ---------
-
refactor(control): move node design files into each package (#13100) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
fix(operation_mode_transition_manager): fix missing dependncy (#13066)
-
Contributors: Ryohsuke Mitsudome, Taekjin LEE, Takagi, Isamu
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: organize maintainer (#12150)
- Contributors: Satoshi OTA, github-actions
0.50.0 (2026-02-14)
0.49.0 (2025-12-30)
-
Merge remote-tracking branch 'origin/main' into prepare-0.49.0-changelog
-
fix(operation_mode_transition_manager): fix debug value update (#11664)
- fix debug value update
- fix format
* cppcheck ---------
-
Contributors: Ryohsuke Mitsudome, Takagi, Isamu
0.48.0 (2025-11-18)
- Merge remote-tracking branch 'origin/main' into humble
- fix(operation_mode_transition_manager): modify the autonomous mode
condition
(#11603)
- fix(operation_mode_transition_manager): modify the autonomous mode condition
- fix: passing clang-format
- fix: passing clang-format 2
- fix: add getcurrentmode function
- docs: add document of mode transition debug topic
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/autonomous_mode_transition_flag_node.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
- launch/operation_mode_transition_manager.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_operation_mode_transition_manager 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
- Takagi, Isamu
- Taiki Yamada
Authors
- Takamasa Horibe
autoware_operation_mode_transition_manager
Note
The state management functionality of this package is currently being moved to the command_mode_decider package.
When used with the command_mode_decider package, this package is only responsible for determining transition conditions.
Also, the data status, in_autoware_control, and in_transition contained in the debug topic is not available, so use the /system/command_mode_decider/debug topic instead.
- in_autoware_control: True when the current command mode is manual mode (default value 1000).
- in_transition: See the is_in_transition function in the command_mode_decider package.
- status:
- If in_autoware_control,
DISENGAGE (autoware mode = curr_mode) - Else if in_transition,
curr_mode (in transition from prev_mode) - Else
curr_mode - Note:
curr_mode = current operation modeandprev_mode = last operation mode
- If in_autoware_control,
Purpose / Use cases
This module is responsible for managing the different modes of operation for the Autoware system. The possible modes are:
-
Autonomous: the vehicle is fully controlled by the autonomous driving system -
Local: the vehicle is controlled by a physically connected control system such as a joy stick -
Remote: the vehicle is controlled by a remote controller -
Stop: the vehicle is stopped and there is no active control system.
There is also an In Transition state that occurs during each mode transitions. During this state, the transition to the new operator is not yet complete, and the previous operator is still responsible for controlling the system until the transition is complete. Some actions may be restricted during the In Transition state, such as sudden braking or steering. (This is restricted by the vehicle_cmd_gate).
Features
- Transit mode between
Autonomous,Local,RemoteandStopbased on the indication command. - Check whether the each transition is available (safe or not).
- Limit some sudden motion control in
In Transitionmode (this is done withvehicle_cmd_gatefeature). -
Check whether the transition is completed.
- Transition between the
Autonomous,Local,Remote, andStopmodes based on the indicated command. - Determine whether each transition is safe to execute.
- Restrict certain sudden motion controls during the
In Transitionmode (using thevehicle_cmd_gatefeature). - Verify that the transition is complete.
Design
A rough design of the relationship between autoware_operation_mode_transition_manager` and the other nodes is shown below.
A more detailed structure is below.
Here we see that autoware_operation_mode_transition_manager has multiple state transitions as follows
-
AUTOWARE ENABLED <—> DISABLED
- ENABLED: the vehicle is controlled by Autoware.
- DISABLED: the vehicle is out of Autoware control, expecting the e.g. manual driving.
-
AUTOWARE ENABLED <—> AUTO/LOCAL/REMOTE/NONE
- AUTO: the vehicle is controlled by Autoware, with the autonomous control command calculated by the planning/control component.
- LOCAL: the vehicle is controlled by Autoware, with the locally connected operator, e.g. joystick controller.
- REMOTE: the vehicle is controlled by Autoware, with the remotely connected operator.
- NONE: the vehicle is not controlled by any operator.
-
IN TRANSITION <—> COMPLETED
- IN TRANSITION: the mode listed above is in the transition process, expecting the former operator to have a responsibility to confirm the transition is completed.
- COMPLETED: the mode transition is completed.
Inputs / Outputs / API
Inputs
For the mode transition:
- /system/operation_mode/change_autoware_control [
autoware_system_msgs/srv/ChangeAutowareControl]: change operation mode to Autonomous - /system/operation_mode/change_operation_mode [
autoware_system_msgs/srv/ChangeOperationMode]: change operation mode
For the transition availability/completion check:
- /control/command/control_cmd [
autoware_control_msgs/msg/Control]: vehicle control signal - /localization/kinematic_state [
nav_msgs/msg/Odometry]: ego vehicle state - /planning/trajectory [
autoware_planning_msgs/msg/Trajectory]: planning trajectory - /vehicle/status/control_mode [
autoware_vehicle_msgs/msg/ControlModeReport]: vehicle control mode (autonomous/manual) - /control/vehicle_cmd_gate/operation_mode [
autoware_adapi_v1_msgs/msg/OperationModeState]: the operation mode in thevehicle_cmd_gate. (To be removed)
For the backward compatibility (to be removed):
- /api/autoware/get/engage [
autoware_vehicle_msgs/msg/Engage] - /control/current_gate_mode [
tier4_control_msgs/msg/GateMode] - /control/external_cmd_selector/current_selector_mode [
tier4_control_msgs/msg/ExternalCommandSelectorMode]
Outputs
- /system/operation_mode/state [
autoware_adapi_v1_msgs/msg/OperationModeState]: to inform the current operation mode -
/control/autoware_operation_mode_transition_manager/debug_info [
autoware_operation_mode_transition_manager/msg/OperationModeTransitionManagerDebug]: detailed information about the operation mode transition - /control/gate_mode_cmd [
tier4_control_msgs/msg/GateMode]: to change thevehicle_cmd_gatestate to use its features (to be removed) -
/autoware/engage [
autoware_vehicle_msgs/msg/Engage]: - /control/control_mode_request [
autoware_vehicle_msgs/srv/ControlModeCommand]: to change the vehicle control mode (autonomous/manual) - /control/external_cmd_selector/select_external_command [
tier4_control_msgs/srv/ExternalCommandSelect]:
Parameters
{{ json_to_markdown(“control/autoware_operation_mode_transition_manager/schema/operation_mode_transition_manager.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_operation_mode_transition_manager
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the control node designs with the packages they describe (#13340)
* fix(design): align the control node designs with the packages they describe ControlCommandGate and the operation mode transition manager name a plugin class and pin publishers that do not match the built package: the registered component is ControlCmdGate, and the transition flags belong on the design graph rather than on global: pins that link_manager skips. TrajectoryFollower declares three debug publishers with message types the node never publishes and a stop_reason publisher it does not create at all. VehicleCmdGate keeps gate_mode and engage on their official topic names through remap_target: alone, so the two inputs are connected through the design.
* fix(autoware_operation_mode_transition_manager): declare the system and legacy interfaces as remap targets The operation mode state publisher, the two operation mode change services and the legacy engage and gate mode publishers are node-side fixed names. Declaring them as remap targets puts them on the design graph; a port pinned with global: is skipped by link_manager and the exporter emits no remap for it. ---------
-
feat(operation_mode_transition_manager): add driving mode interface (#13251)
-
fix(control): declare the fixed-name compatibility interfaces in the control node designs (#13281)
* fix(control): declare the fixed-name compatibility interfaces in the control node designs operation_mode_transition_manager subscribes /control/current_gate_mode and /control/external_cmd_selector/current_selector_mode and calls /control/external_cmd_selector/select_external_command by fixed name; the gate serves the ADAPI pause/stop interfaces under /control/vehicle_cmd_gate. Declaring these ports with their remap_target lets a system design connect them and keep the fixed names when the module hierarchy nests the nodes.
* fix(control): declare the multi-publisher gate_mode_cmd and engage topics as global ---------
-
refactor(control): move node design files into each package (#13100) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
fix(operation_mode_transition_manager): fix missing dependncy (#13066)
-
Contributors: Ryohsuke Mitsudome, Taekjin LEE, Takagi, Isamu
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: organize maintainer (#12150)
- Contributors: Satoshi OTA, github-actions
0.50.0 (2026-02-14)
0.49.0 (2025-12-30)
-
Merge remote-tracking branch 'origin/main' into prepare-0.49.0-changelog
-
fix(operation_mode_transition_manager): fix debug value update (#11664)
- fix debug value update
- fix format
* cppcheck ---------
-
Contributors: Ryohsuke Mitsudome, Takagi, Isamu
0.48.0 (2025-11-18)
- Merge remote-tracking branch 'origin/main' into humble
- fix(operation_mode_transition_manager): modify the autonomous mode
condition
(#11603)
- fix(operation_mode_transition_manager): modify the autonomous mode condition
- fix: passing clang-format
- fix: passing clang-format 2
- fix: add getcurrentmode function
- docs: add document of mode transition debug topic
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/autonomous_mode_transition_flag_node.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
- launch/operation_mode_transition_manager.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_operation_mode_transition_manager 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
- Takagi, Isamu
- Taiki Yamada
Authors
- Takamasa Horibe
autoware_operation_mode_transition_manager
Note
The state management functionality of this package is currently being moved to the command_mode_decider package.
When used with the command_mode_decider package, this package is only responsible for determining transition conditions.
Also, the data status, in_autoware_control, and in_transition contained in the debug topic is not available, so use the /system/command_mode_decider/debug topic instead.
- in_autoware_control: True when the current command mode is manual mode (default value 1000).
- in_transition: See the is_in_transition function in the command_mode_decider package.
- status:
- If in_autoware_control,
DISENGAGE (autoware mode = curr_mode) - Else if in_transition,
curr_mode (in transition from prev_mode) - Else
curr_mode - Note:
curr_mode = current operation modeandprev_mode = last operation mode
- If in_autoware_control,
Purpose / Use cases
This module is responsible for managing the different modes of operation for the Autoware system. The possible modes are:
-
Autonomous: the vehicle is fully controlled by the autonomous driving system -
Local: the vehicle is controlled by a physically connected control system such as a joy stick -
Remote: the vehicle is controlled by a remote controller -
Stop: the vehicle is stopped and there is no active control system.
There is also an In Transition state that occurs during each mode transitions. During this state, the transition to the new operator is not yet complete, and the previous operator is still responsible for controlling the system until the transition is complete. Some actions may be restricted during the In Transition state, such as sudden braking or steering. (This is restricted by the vehicle_cmd_gate).
Features
- Transit mode between
Autonomous,Local,RemoteandStopbased on the indication command. - Check whether the each transition is available (safe or not).
- Limit some sudden motion control in
In Transitionmode (this is done withvehicle_cmd_gatefeature). -
Check whether the transition is completed.
- Transition between the
Autonomous,Local,Remote, andStopmodes based on the indicated command. - Determine whether each transition is safe to execute.
- Restrict certain sudden motion controls during the
In Transitionmode (using thevehicle_cmd_gatefeature). - Verify that the transition is complete.
Design
A rough design of the relationship between autoware_operation_mode_transition_manager` and the other nodes is shown below.
A more detailed structure is below.
Here we see that autoware_operation_mode_transition_manager has multiple state transitions as follows
-
AUTOWARE ENABLED <—> DISABLED
- ENABLED: the vehicle is controlled by Autoware.
- DISABLED: the vehicle is out of Autoware control, expecting the e.g. manual driving.
-
AUTOWARE ENABLED <—> AUTO/LOCAL/REMOTE/NONE
- AUTO: the vehicle is controlled by Autoware, with the autonomous control command calculated by the planning/control component.
- LOCAL: the vehicle is controlled by Autoware, with the locally connected operator, e.g. joystick controller.
- REMOTE: the vehicle is controlled by Autoware, with the remotely connected operator.
- NONE: the vehicle is not controlled by any operator.
-
IN TRANSITION <—> COMPLETED
- IN TRANSITION: the mode listed above is in the transition process, expecting the former operator to have a responsibility to confirm the transition is completed.
- COMPLETED: the mode transition is completed.
Inputs / Outputs / API
Inputs
For the mode transition:
- /system/operation_mode/change_autoware_control [
autoware_system_msgs/srv/ChangeAutowareControl]: change operation mode to Autonomous - /system/operation_mode/change_operation_mode [
autoware_system_msgs/srv/ChangeOperationMode]: change operation mode
For the transition availability/completion check:
- /control/command/control_cmd [
autoware_control_msgs/msg/Control]: vehicle control signal - /localization/kinematic_state [
nav_msgs/msg/Odometry]: ego vehicle state - /planning/trajectory [
autoware_planning_msgs/msg/Trajectory]: planning trajectory - /vehicle/status/control_mode [
autoware_vehicle_msgs/msg/ControlModeReport]: vehicle control mode (autonomous/manual) - /control/vehicle_cmd_gate/operation_mode [
autoware_adapi_v1_msgs/msg/OperationModeState]: the operation mode in thevehicle_cmd_gate. (To be removed)
For the backward compatibility (to be removed):
- /api/autoware/get/engage [
autoware_vehicle_msgs/msg/Engage] - /control/current_gate_mode [
tier4_control_msgs/msg/GateMode] - /control/external_cmd_selector/current_selector_mode [
tier4_control_msgs/msg/ExternalCommandSelectorMode]
Outputs
- /system/operation_mode/state [
autoware_adapi_v1_msgs/msg/OperationModeState]: to inform the current operation mode -
/control/autoware_operation_mode_transition_manager/debug_info [
autoware_operation_mode_transition_manager/msg/OperationModeTransitionManagerDebug]: detailed information about the operation mode transition - /control/gate_mode_cmd [
tier4_control_msgs/msg/GateMode]: to change thevehicle_cmd_gatestate to use its features (to be removed) -
/autoware/engage [
autoware_vehicle_msgs/msg/Engage]: - /control/control_mode_request [
autoware_vehicle_msgs/srv/ControlModeCommand]: to change the vehicle control mode (autonomous/manual) - /control/external_cmd_selector/select_external_command [
tier4_control_msgs/srv/ExternalCommandSelect]:
Parameters
{{ json_to_markdown(“control/autoware_operation_mode_transition_manager/schema/operation_mode_transition_manager.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_operation_mode_transition_manager
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the control node designs with the packages they describe (#13340)
* fix(design): align the control node designs with the packages they describe ControlCommandGate and the operation mode transition manager name a plugin class and pin publishers that do not match the built package: the registered component is ControlCmdGate, and the transition flags belong on the design graph rather than on global: pins that link_manager skips. TrajectoryFollower declares three debug publishers with message types the node never publishes and a stop_reason publisher it does not create at all. VehicleCmdGate keeps gate_mode and engage on their official topic names through remap_target: alone, so the two inputs are connected through the design.
* fix(autoware_operation_mode_transition_manager): declare the system and legacy interfaces as remap targets The operation mode state publisher, the two operation mode change services and the legacy engage and gate mode publishers are node-side fixed names. Declaring them as remap targets puts them on the design graph; a port pinned with global: is skipped by link_manager and the exporter emits no remap for it. ---------
-
feat(operation_mode_transition_manager): add driving mode interface (#13251)
-
fix(control): declare the fixed-name compatibility interfaces in the control node designs (#13281)
* fix(control): declare the fixed-name compatibility interfaces in the control node designs operation_mode_transition_manager subscribes /control/current_gate_mode and /control/external_cmd_selector/current_selector_mode and calls /control/external_cmd_selector/select_external_command by fixed name; the gate serves the ADAPI pause/stop interfaces under /control/vehicle_cmd_gate. Declaring these ports with their remap_target lets a system design connect them and keep the fixed names when the module hierarchy nests the nodes.
* fix(control): declare the multi-publisher gate_mode_cmd and engage topics as global ---------
-
refactor(control): move node design files into each package (#13100) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
fix(operation_mode_transition_manager): fix missing dependncy (#13066)
-
Contributors: Ryohsuke Mitsudome, Taekjin LEE, Takagi, Isamu
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: organize maintainer (#12150)
- Contributors: Satoshi OTA, github-actions
0.50.0 (2026-02-14)
0.49.0 (2025-12-30)
-
Merge remote-tracking branch 'origin/main' into prepare-0.49.0-changelog
-
fix(operation_mode_transition_manager): fix debug value update (#11664)
- fix debug value update
- fix format
* cppcheck ---------
-
Contributors: Ryohsuke Mitsudome, Takagi, Isamu
0.48.0 (2025-11-18)
- Merge remote-tracking branch 'origin/main' into humble
- fix(operation_mode_transition_manager): modify the autonomous mode
condition
(#11603)
- fix(operation_mode_transition_manager): modify the autonomous mode condition
- fix: passing clang-format
- fix: passing clang-format 2
- fix: add getcurrentmode function
- docs: add document of mode transition debug topic
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/autonomous_mode_transition_flag_node.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
- launch/operation_mode_transition_manager.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_operation_mode_transition_manager 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
- Takagi, Isamu
- Taiki Yamada
Authors
- Takamasa Horibe
autoware_operation_mode_transition_manager
Note
The state management functionality of this package is currently being moved to the command_mode_decider package.
When used with the command_mode_decider package, this package is only responsible for determining transition conditions.
Also, the data status, in_autoware_control, and in_transition contained in the debug topic is not available, so use the /system/command_mode_decider/debug topic instead.
- in_autoware_control: True when the current command mode is manual mode (default value 1000).
- in_transition: See the is_in_transition function in the command_mode_decider package.
- status:
- If in_autoware_control,
DISENGAGE (autoware mode = curr_mode) - Else if in_transition,
curr_mode (in transition from prev_mode) - Else
curr_mode - Note:
curr_mode = current operation modeandprev_mode = last operation mode
- If in_autoware_control,
Purpose / Use cases
This module is responsible for managing the different modes of operation for the Autoware system. The possible modes are:
-
Autonomous: the vehicle is fully controlled by the autonomous driving system -
Local: the vehicle is controlled by a physically connected control system such as a joy stick -
Remote: the vehicle is controlled by a remote controller -
Stop: the vehicle is stopped and there is no active control system.
There is also an In Transition state that occurs during each mode transitions. During this state, the transition to the new operator is not yet complete, and the previous operator is still responsible for controlling the system until the transition is complete. Some actions may be restricted during the In Transition state, such as sudden braking or steering. (This is restricted by the vehicle_cmd_gate).
Features
- Transit mode between
Autonomous,Local,RemoteandStopbased on the indication command. - Check whether the each transition is available (safe or not).
- Limit some sudden motion control in
In Transitionmode (this is done withvehicle_cmd_gatefeature). -
Check whether the transition is completed.
- Transition between the
Autonomous,Local,Remote, andStopmodes based on the indicated command. - Determine whether each transition is safe to execute.
- Restrict certain sudden motion controls during the
In Transitionmode (using thevehicle_cmd_gatefeature). - Verify that the transition is complete.
Design
A rough design of the relationship between autoware_operation_mode_transition_manager` and the other nodes is shown below.
A more detailed structure is below.
Here we see that autoware_operation_mode_transition_manager has multiple state transitions as follows
-
AUTOWARE ENABLED <—> DISABLED
- ENABLED: the vehicle is controlled by Autoware.
- DISABLED: the vehicle is out of Autoware control, expecting the e.g. manual driving.
-
AUTOWARE ENABLED <—> AUTO/LOCAL/REMOTE/NONE
- AUTO: the vehicle is controlled by Autoware, with the autonomous control command calculated by the planning/control component.
- LOCAL: the vehicle is controlled by Autoware, with the locally connected operator, e.g. joystick controller.
- REMOTE: the vehicle is controlled by Autoware, with the remotely connected operator.
- NONE: the vehicle is not controlled by any operator.
-
IN TRANSITION <—> COMPLETED
- IN TRANSITION: the mode listed above is in the transition process, expecting the former operator to have a responsibility to confirm the transition is completed.
- COMPLETED: the mode transition is completed.
Inputs / Outputs / API
Inputs
For the mode transition:
- /system/operation_mode/change_autoware_control [
autoware_system_msgs/srv/ChangeAutowareControl]: change operation mode to Autonomous - /system/operation_mode/change_operation_mode [
autoware_system_msgs/srv/ChangeOperationMode]: change operation mode
For the transition availability/completion check:
- /control/command/control_cmd [
autoware_control_msgs/msg/Control]: vehicle control signal - /localization/kinematic_state [
nav_msgs/msg/Odometry]: ego vehicle state - /planning/trajectory [
autoware_planning_msgs/msg/Trajectory]: planning trajectory - /vehicle/status/control_mode [
autoware_vehicle_msgs/msg/ControlModeReport]: vehicle control mode (autonomous/manual) - /control/vehicle_cmd_gate/operation_mode [
autoware_adapi_v1_msgs/msg/OperationModeState]: the operation mode in thevehicle_cmd_gate. (To be removed)
For the backward compatibility (to be removed):
- /api/autoware/get/engage [
autoware_vehicle_msgs/msg/Engage] - /control/current_gate_mode [
tier4_control_msgs/msg/GateMode] - /control/external_cmd_selector/current_selector_mode [
tier4_control_msgs/msg/ExternalCommandSelectorMode]
Outputs
- /system/operation_mode/state [
autoware_adapi_v1_msgs/msg/OperationModeState]: to inform the current operation mode -
/control/autoware_operation_mode_transition_manager/debug_info [
autoware_operation_mode_transition_manager/msg/OperationModeTransitionManagerDebug]: detailed information about the operation mode transition - /control/gate_mode_cmd [
tier4_control_msgs/msg/GateMode]: to change thevehicle_cmd_gatestate to use its features (to be removed) -
/autoware/engage [
autoware_vehicle_msgs/msg/Engage]: - /control/control_mode_request [
autoware_vehicle_msgs/srv/ControlModeCommand]: to change the vehicle control mode (autonomous/manual) - /control/external_cmd_selector/select_external_command [
tier4_control_msgs/srv/ExternalCommandSelect]:
Parameters
{{ json_to_markdown(“control/autoware_operation_mode_transition_manager/schema/operation_mode_transition_manager.schema.json”) }}
File truncated at 100 lines see the full file
Changelog for package autoware_operation_mode_transition_manager
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the control node designs with the packages they describe (#13340)
* fix(design): align the control node designs with the packages they describe ControlCommandGate and the operation mode transition manager name a plugin class and pin publishers that do not match the built package: the registered component is ControlCmdGate, and the transition flags belong on the design graph rather than on global: pins that link_manager skips. TrajectoryFollower declares three debug publishers with message types the node never publishes and a stop_reason publisher it does not create at all. VehicleCmdGate keeps gate_mode and engage on their official topic names through remap_target: alone, so the two inputs are connected through the design.
* fix(autoware_operation_mode_transition_manager): declare the system and legacy interfaces as remap targets The operation mode state publisher, the two operation mode change services and the legacy engage and gate mode publishers are node-side fixed names. Declaring them as remap targets puts them on the design graph; a port pinned with global: is skipped by link_manager and the exporter emits no remap for it. ---------
-
feat(operation_mode_transition_manager): add driving mode interface (#13251)
-
fix(control): declare the fixed-name compatibility interfaces in the control node designs (#13281)
* fix(control): declare the fixed-name compatibility interfaces in the control node designs operation_mode_transition_manager subscribes /control/current_gate_mode and /control/external_cmd_selector/current_selector_mode and calls /control/external_cmd_selector/select_external_command by fixed name; the gate serves the ADAPI pause/stop interfaces under /control/vehicle_cmd_gate. Declaring these ports with their remap_target lets a system design connect them and keep the fixed names when the module hierarchy nests the nodes.
* fix(control): declare the multi-publisher gate_mode_cmd and engage topics as global ---------
-
refactor(control): move node design files into each package (#13100) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
fix(operation_mode_transition_manager): fix missing dependncy (#13066)
-
Contributors: Ryohsuke Mitsudome, Taekjin LEE, Takagi, Isamu
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: organize maintainer (#12150)
- Contributors: Satoshi OTA, github-actions
0.50.0 (2026-02-14)
0.49.0 (2025-12-30)
-
Merge remote-tracking branch 'origin/main' into prepare-0.49.0-changelog
-
fix(operation_mode_transition_manager): fix debug value update (#11664)
- fix debug value update
- fix format
* cppcheck ---------
-
Contributors: Ryohsuke Mitsudome, Takagi, Isamu
0.48.0 (2025-11-18)
- Merge remote-tracking branch 'origin/main' into humble
- fix(operation_mode_transition_manager): modify the autonomous mode
condition
(#11603)
- fix(operation_mode_transition_manager): modify the autonomous mode condition
- fix: passing clang-format
- fix: passing clang-format 2
- fix: add getcurrentmode function
- docs: add document of mode transition debug topic
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/autonomous_mode_transition_flag_node.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
- launch/operation_mode_transition_manager.launch.xml
-
- operation_mode_transition_manager_param [default: $(find-pkg-share autoware_operation_mode_transition_manager)/config/operation_mode_transition_manager.param.yaml]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]