# /control/command/gear\_cmd

## Specifications

| Item | Value |
| --- | --- |
| Last Updated | 2026-01-21 |
| Interface Type | topic |
| Interface Name | /control/command/gear\_cmd |
| Data Type | [autoware\_vehicle\_msgs/msg/GearCommand](<https://github.com/autowarefoundation/autoware_msgs/blob/main/autoware_vehicle_msgs/msg/GearCommand.msg>) |
| Rate \[Hz\] | 10 or N/A |
| QoS Reliability | reliable |
| QoS Durability | volatile |
| QoS Depth | 1 |

## Description

Send the gear change command to the vehicle. The commands are listed in the table below.

The [`autoware_component_interface_specs`](<https://github.com/autowarefoundation/autoware_core/blob/1.10.0/common/autoware_component_interface_specs/include/autoware/component_interface_specs/control.hpp>) package defines this topic with `volatile` durability. In the default launch of Autoware, the [`autoware_vehicle_cmd_gate`](<https://github.com/autowarefoundation/autoware_universe/blob/0.53.1/control/autoware_vehicle_cmd_gate/src/vehicle_cmd_gate.cpp>) node publishes the command periodically, at its `update_rate` of 10 Hz. This node uses `transient_local` durability, and `volatile` subscribers also receive its messages. The design intent is different: use `transient_local` durability and publish only when the command changes. Make sure that the publishers and the subscribers in your system use compatible QoS settings.

| Value | Description |
| --- | --- |
| PARK | The engine or motor is disconnected from the tires and the stopping mechanism is activated. |
| NEUTRAL | The engine or motor is disconnected from the tires. |
| DRIVE | The engine or motor is connected to the tires in the forward direction. |
| REVERSE | The engine or motor is connected to the tires in the backward direction. |

## Message

The `stamp` field is the command sent time. In the case of periodic publication, use the latest time, not the last command change.

For the `command` field, use the valid values listed above. The `NONE` value can be used internally by programs, but will never be sent as a topic. Values such as `LOW` and `DRIVE_2` can be used if the vehicle has its own special gear types, but a dedicated implementation is required to handle this.

## Errors

Safety guard: The command is ignored if the vehicle cannot change gear safely, for example, because the vehicle is not stopped.

Invalid command: If the vehicle interface receives an undefined command, it is ignored and a diagnostic error is reported.

## Support

This interface is required. If the vehicle does not have gears, simulate the gear behavior.

## Limitations

Response time: Mechanical gear shifting takes time (typically 0.5s - 2.0s). The gear\_status will not change immediately after sending gear\_cmd.

Simulated gear: For vehicles without physical gears (e.g., direct drive EVs), for example, the NEUTRAL state might be simulated logic and not a mechanical disconnection.

## Use cases

- Control the vehicle for autonomous driving.
- Relay commands from the operator.

## Requirement

- Support sending the gear command to the vehicle.
- Support vehicle-specific gear status if necessary.
- Report the error as diagnostics if an unsupported or unknown command is sent.

## Design

- Support four typical gear types: PARK, NEUTRAL, DRIVE, and REVERSE.
- Unused values can be used for special gear types.
- Simulate gear if necessary to increase reusability.
- To prevent gear shifting chattering, reject a new gear command during several seconds after the last successful gear command.

## History

| Date | Description |
| --- | --- |
| 2026-01-21 | First release in the new format. |
