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.
There are two main roles of Control Stack:
- Generation of control command for following target trajectory
- Post-processing of vehicle control command
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
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.).
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.
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
Generate control command for following given trajectory smoothly.
- Target trajectory
- Target trajectory includes target position, target twist, target acceleration
- Current pose
- Current velocity
- Current steering
- Steering angle command
- Steering angular velocity command
- Velocity command
- Acceleration command
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
- Control commands from Trajectory Follower module
- Remote Control commands
- Engage Commands
- Control signal for vehicles
TBU