Control#
Overview#
Control stack generates control signals to drive a vehicle following trajectories considering vehicle dynamics. This layer ensures that the vehicle follows the trajectory planned by planning. The output of Control stack includes velocity, acceleration, and steering.
Role#
There are two main roles of Control Stack:
- Generation of control command for following target trajectory
- Post-processing of vehicle control command
Use Case#
Control stack supports the following use cases.
- Driving without excessive speed
- Driving at slope
- Smooth stop by normal obstacles / Sudden stop by obstacle's running-out
- Forward/Reverse parking
Requirement#
To achieve the above use case, Control stack requires the following conditions.
- The input trajectory includes speed limit at each point (Use case 1).
- The input pose includes gradient information (=vehicle orientation) (Use case 2).
- The output vehicle command includes acceleration but also velocity (Use case 2, 3).
- The output vehicle command includes the command to shift drive/reverse gear(Use case 4.).
Input#
The input to Control stack:
Input | Topic (Data Type) | Explanation |
---|---|---|
Trajectory | /planning/scenario_planning/trajectory ( autoware_planning_msgs::Trajectory ) |
Target trajectory to follow |
Pose | /tf ( tf2_msgs::TFMessage ) |
Current pose of the vehicle |
Twist | /vehicle/status/twist ( geometry_msgs::TwistStamped ) |
Current twist of the vehicle |
Steer | /vehicle/status/steering ( autoware_vehicle_msgs::Steering ) |
Current steer of the vehicle |
Engage Command | /autoware/engage ( std_msgs::Bool ) |
Whether to send commands to the vehicle |
Remote Command | - | Control command from remote |
As the above requirements, the data type of target trajectory, autoware_planning_msgs::Trajectory
, includes the speed at each point.
Output#
The table below summarizes the output from Control stack:
Output | Topic(Data Type) | Explanation |
---|---|---|
Vehicle Command | /control/vehicle_cmd ( autoware_vehicle_msgs/VehicleCommand ) |
Table Below |
The main outputs included in Vehicle Command are as follows.
Output | Data Type |
---|---|
Velocity | std_msgs/Float64 |
Acceleration | std_msgs/Float64 |
Steering angle | std_msgs/Float64 |
Steering angle velocity | std_msgs/Float64 |
Gear shifting command | std_msgs/Int32 |
Emergency command | std_msgs/Int32 |
As above requirements, the control stack outputs gear shifting command and acceleration command as Vehicle command
Design#
Trajectory follower#
Role#
Generate control command for following given trajectory smoothly.
Input#
- Target trajectory
- Target trajectory includes target position, target twist, target acceleration
- Current pose
- Current velocity
- Current steering
Output#
- Steering angle command
- Steering angular velocity command
- Velocity command
- Acceleration command
Vehicle command gate#
Role#
Systematic post-processing of vehicle control command, independent of trajectory following process
- Reshape the vehicle control command
- Select the command values (Trajectory follow command, Remote manual command)
- Observe the maximum speed limit, maximum lateral/longitudinal jerk
- Stop urgently when an emergency command is received
Input#
- Control commands from Trajectory Follower module
- Remote Control commands
- Engage Commands
Output#
- Control signal for vehicles
References#
TBU