# Manual control

## Description

An interface to drive a vehicle manually through Autoware is necessary for a vehicle without a steering wheel or pedals, and for the development of a remote operation system.

## Requirements

- The vehicle must be able to transition to a safe state when a communication problem occurs.
- AD API must support the following commands and statuses.

  - Pedals, acceleration, or velocity as longitudinal control
  - Steering tire angle as lateral control
  - Gear
  - Turn indicators
  - Hazard lights
- The following are under consideration.

  - Headlights
  - Wipers
  - Parking brake
  - Horn

## Sequence

The diagram shows remote control. Local control uses the same sequence with the `/api/manual/local/*` APIs and [/api/operation\_mode/change\_to\_local](<../../list/api/operation_mode/change_to_local/index.md>).

Select a control mode, change to the remote mode, then send commands while the vehicle status comes back.

1. **Select the control mode.** Call [/api/manual/remote/control\_mode/select](<../../list/api/manual/remote/control_mode/select/index.md>). This request fails while the operation mode is already remote. The default implementation supports only the `PEDALS` mode.
2. **Change the operation mode.** Call [/api/operation\_mode/change\_to\_remote](<../../list/api/operation_mode/change_to_remote/index.md>).
3. **Drive.** Send [/api/manual/remote/operator/heartbeat](<../../list/api/manual/remote/operator/heartbeat/index.md>) and the commands of the selected mode periodically. Watch [/api/vehicle/status](<../../list/api/vehicle/status/index.md>) for the result.

## Related features

- [Manual control](<../../features/manual-control/index.md>)
- [Operation mode](<../../features/operation_mode/index.md>)
- [Vehicle status](<../../features/vehicle-status/index.md>)
