Skip to content

Control component design#

Abstract#

This document presents the design concept of the Control Component. The content is as follows:

  • Autoware Control Design
    • Outlining the policy for Autoware's control, which deals with only general information for autonomous driving systems and provides generic control commands to the vehicle.
  • Vehicle Adaptation Design
    • Describing the policy for vehicle adaptation, which utilizes adapter mechanisms to standardize the characteristics of the vehicle's drive system and integrate it with Autoware.
  • Control Feature Design
    • Demonstrating the features provided by Autoware's control.
    • Presenting the approach towards the functions installed in the vehicle such as ABS.
  • Packages
    • Listing the packages that implement the Control Component and how to select them.

Autoware control design#

The Control Component generates the control signal to which the Vehicle Component subscribes. The generated control signals are computed based on the reference trajectories from the Planning Component.

The trajectory follower follows the trajectory from planning and sends a control command to the vehicle command gate. The shift decider, the external command selector, and the system emergency commands also go to the gate. The gate selects one source and sends the commands to the vehicle interface. The control checkers report diagnostics to the system.PlanningTrajectoryLocalizationKinematic stateVehicle interfaceSteering statusExternal operatorRemote or localSystemMinimal risk maneuverControlTurn indicators and hazard lightsTrajectory followerLateral: MPC or pure pursuitLongitudinal: PIDShift deciderOperation modetransition managerExternal cmd selectorand converterVehiclecommand gateSelects one sourceand applies limitsControl checkersControl validator, AEB, lane departure checker, collision detectorControlcommandGearOperationmodeExternalcommandsEmergency commandsDiagnosticsVehicleinterfaceControl, gear,turn indicators,hazard lights
The trajectory follower makes the control command, and the vehicle command gate selects the command that goes to the vehicle.

The Control Component has these main parts:

  • Trajectory follower

    Makes a control command that follows the reference trajectory from planning. A lateral controller (MPC or pure pursuit) computes the steering. A longitudinal controller (PID) computes the velocity and the acceleration.

  • Shift decider

    Decides the gear command (for example drive or reverse) from the control command of the trajectory follower.

  • Vehicle command gate

    Selects one command source: the trajectory follower, an external operator, or the emergency commands of the minimal risk maneuver (MRM). It limits abnormal values, for example a sudden steering change, and sends the commands to the vehicle.

  • Operation mode transition manager

    Manages the operation mode (stop, autonomous, local, or remote). It checks that a transition to autonomous mode is safe, and requests the control mode from the vehicle.

  • External command selector

    Selects the remote or the local operator command. The external command converter turns pedal inputs into a control command for the gate.

  • Control checkers

    Check the output of the control component and report diagnostics. Examples are the control validator, autonomous emergency braking (AEB), the lane departure checker, and the collision detector.

The Autoware control system is designed as a platform for automated driving systems that can be compatible with a diverse range of vehicles.

The control process in Autoware uses general information (such as target acceleration and deceleration) and no vehicle-specific information (such as brake pressure) is used. Hence it can be adjusted independently of the vehicle's drive interface enabling easy integration or performance tuning.

Furthermore, significant differences that affect vehicle motion constraints, such as two-wheel steering or four-wheel steering, are addressed by switching the control vehicle model, achieving control specialized for each characteristic.

Autoware's control module outputs the necessary information to control the vehicle as a substitute for a human driver. The control command is the autoware_control_msgs/msg/Control message on /control/command/control_cmd. It has these values:

  • Lateral: the target steering tire angle and the target steering tire rotation rate
  • Longitudinal: the target velocity, the target acceleration, and the target jerk

Note that vehicle-specific values such as pedal positions and low-level information such as individual wheel rotation speeds are excluded from the command. The control component also sends the gear, turn indicators, and hazard lights commands to the vehicle. See the vehicle interface page for the topics.

Vehicle adaptation design#

Vehicle interface adapter#

Autoware is designed to be an autonomous driving platform able to accommodate vehicles with various drivetrain types.

This is an explanation of how Autoware handles the standardization of systems with different vehicle drivetrain. The interfaces for vehicle drivetrain are diverse, including steering angle, steering angular velocity, steering torque, speed, accel/brake pedals, and brake pressure. To accommodate these differences, Autoware adds an adapter module between the control component and the vehicle interface. This module performs the conversion between the proprietary message types used by the vehicle (such as brake pressure) and the generic types used by Autoware (such as desired acceleration). By providing this conversion information, the differences in vehicle drivetrain can be accommodated.

In Autoware, the autoware_raw_vehicle_cmd_converter package is this adapter. It converts the target acceleration to accel and brake pedal values with lookup tables (the accel map and the brake map). It converts the target steering to a steering command with a steering map and a feedback controller, or with a variable gear ratio.

If the information is not known in advance, an automatic calibration tool can be used. Calibration will occur within limited degrees of freedom, generating the information necessary for the drivetrain conversion automatically. For example, autoware_accel_brake_map_calibrator updates the accel and brake maps from driving data.

This configuration is summarized in the following diagram.

Vehicles have different drive-by-wire interfaces. The control component sends a generic control command to an adapter. The adapter uses the vehicle configuration, which OEMs give or calibration tools make and update, and sends an actuation command to the vehicle interface. The vehicle interface talks to the vehicle driver with the vehicle-specific protocol and sends the status back.Drive-by-wire interfaces differSteering voltageEngine torqueBrake pressureSteering angleAccel pedalBrake pedalYaw rateVelocity...Autoware abstracts themAutowareControl componentMakes generic commandsControlSteering tire angle and rate,velocity, acceleration, jerkAdapterMakes vehicle-specific commandsActuationCommandAccel, brake, andsteering commandsStatusVehicle interfaceUses the vehicle-specific protocolGiven by OEMs, or made andupdated by calibration toolsVehicle configurationAccel, brake, steer mapsCalibration toolsAccel brake map calibratorVehicleActuationStatusVehicle driver
An adapter converts the generic control command into commands for each drive-by-wire interface.

Examples of several vehicle interfaces#

These examples show two drivetrain types in the vehicle interface. Both have public interface code.

VehicleLateral interfaceLongitudinal interfaceNote
Lexus RX 450h with PACModSteering angleAccel/brake pedal positionautoware_raw_vehicle_cmd_converter converts the acceleration to pedal positions with a lookup table. Interface code: pacmod_interface
RoboRacer (F1TENTH)Steering angleMotor RPMThe VESC driver (vesc_ackermann) converts the speed to the motor electrical RPM and the steering angle to the servo position

Control feature design#

The following lists the features provided by Autoware's Control/Vehicle component, as well as the conditions and assumptions required to utilize them effectively.

The proper operation of the ODD is limited by factors such as whether the functions are enabled, delay time, calibration accuracy and degradation rate, and sensor accuracy.

FeatureDescriptionRequirements/AssumptionsNoteLimitation for now
Lateral ControlControl the drivetrain system related to lateral vehicle motionTrying to increase the number of vehicle types that can be supported in the future.Only front-steering type is supported.
Longitudinal ControlControl the drivetrain system related to longitudinal vehicle motion
Slope CompensationSupports precise vehicle motion control on slopesGradient information can be obtained from maps or sensors attached to the chassisIf gradient information is not available, the gradient is estimated from the vehicle's pitch angle.
Delay CompensationControls the drivetrain system appropriately in the presence of time delaysThe drivetrain delay information is provided in advanceIf there is no delay information, a tool can estimate the drivetrain delay from driving data. You then set the delay in the controller parameters. Autoware does not change the delay parameters while it drives. The effect of delay cannot be completely eliminated, especially in scenarios with sudden changes in speed.Only fixed delay times can be set for longitudinal and lateral drivetrain systems separately. It does not accommodate different delay times for the accelerator and brake.
Drivetrain IF Conversion (Lateral Control)Converts the drivetrain-specific information of the vehicle into the drivetrain information used by Autoware (for example target steering angular velocity → steering torque)The conversion information is provided in advanceIf there is no conversion information, the conversion map is estimated automatically (automatic calibration).The degree of freedom for conversion is limited (2D lookup table + PID FB).
Drivetrain IF Conversion (Longitudinal Control)Converts the drivetrain-specific information of the vehicle into the drivetrain information used by Autoware (for example target acceleration → accelerator/brake pedal value)The conversion information is provided in advanceIf there is no conversion information, the conversion map is estimated automatically (automatic calibration).The degree of freedom for conversion is limited (2D lookup table + PID FB).
Automatic CalibrationEstimates values such as the drivetrain IF conversion map and the delay time from driving data. You save the estimated map and set the delay before Autoware uses them.The drivetrain status can be obtained (must)
Anomaly DetectionNotifies when there is a discrepancy in the calibration or unexpected drivetrain behaviorThe drivetrain status can be obtained (must)
Steering Zero Point CorrectionCorrects the midpoint of the steering to achieve appropriate steering controlThe drivetrain status can be obtained (must)
Steering Deadzone CorrectionCorrects the deadzone of the steering to achieve appropriate steering controlThe steering deadzone parameter is provided in advanceIf the parameter is unknown, the deadzone parameter is estimated from driving informationNot available now
Steering Deadzone EstimationDynamically estimates the steering deadzone from driving dataNot available now
Weight CompensationPerforms appropriate vehicle control according to weightWeight information can be obtained from sensorsIf there is no weight sensor, estimate the weight from driving information.Currently not available
Weight EstimationDynamically estimates weight from driving dataCurrently not available

These packages implement the available features:

The list above does not cover wheel control systems such as ABS commonly used in vehicles. Regarding these features, the following considerations are taken into account.

Integration with vehicle-side functions#

ABS (Anti-lock Brake System) and ESC (Electric Stability Control) are two functions that may be pre-installed on a vehicle, directly impacting its controllability. The control modules of Autoware assume that both ABS and ESC are installed on the vehicle and their absence may cause unreliable controls depending on the target ODD. For example, with low-velocity driving in a controlled environment, these functions are not necessary.

Also, note that this statement does not negate the development of ABS functionality in autonomous driving systems.

Autoware capabilities and vehicle requirements#

As an alternative to human driving, autonomous driving systems essentially aim to handle tasks that humans can perform. This includes not only controlling the steering wheel, accel, and brake, but also automatically detecting issues such as poor brake response or a misaligned steering angle. However, this is a trade-off, as better vehicle performance will lead to superior system behavior, ultimately affecting the design of ODD.

On the other hand, for tasks that are not typically anticipated or cannot be handled by a human driver, processing in the vehicle ECU is expected. Examples of such scenarios include cases where the brake response is clearly delayed or when the vehicle rotates due to a single-side tire slipping. These tasks are typically handled by ABS or ESC.

Packages#

The control packages are in Autoware Universe and Autoware Core. The autoware_control_launch package of autoware_launch launches them in the /control namespace. These launch arguments select the controllers:

  • lateral_controller_mode: mpc (default) or pure_pursuit
  • longitudinal_controller_mode: pid (default)
  • module_preset: the preset file that turns the optional modules on or off. The default preset launches the external command selector and converter, the lane departure checker, the control validator, AEB, the collision detector, and the control evaluator.
PartPackageRepository
Trajectory followerautoware_trajectory_follower_nodeUniverse
Lateral controllersautoware_mpc_lateral_controller, autoware_pure_pursuitUniverse
Longitudinal controllerautoware_pid_longitudinal_controllerUniverse
Experimental controllerautoware_smart_mpc_trajectory_follower (launch argument trajectory_follower_mode, under development)Universe
Shift deciderautoware_shift_deciderUniverse
Vehicle command gateautoware_vehicle_cmd_gate (default), or autoware_control_command_gate with autoware_stop_mode_operator when use_control_command_gate is trueUniverse
Operation mode transition managerautoware_operation_mode_transition_managerUniverse
External commandsautoware_external_cmd_selector, autoware_external_cmd_converterUniverse
Control checkersautoware_control_validator, autoware_autonomous_emergency_braking, autoware_lane_departure_checker, autoware_collision_detectorUniverse
Optional checkers (off by default)autoware_obstacle_collision_checker, autoware_predicted_path_checkerUniverse
Evaluationautoware_control_evaluatorUniverse
Minimal controllerautoware_simple_pure_pursuitCore
Minimal command gateautoware_command_gateCore

The Core packages give a minimal control stack. The autoware_core_control launch file runs autoware_simple_pure_pursuit, and it runs autoware_command_gate only when launch_command_gate is true (for a Core-only system).