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