Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | Apache 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/ieiauto/autodrrt.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-05-30 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Takamasa Horibe
- Takayuki Murooka
Authors
- Takamasa Horibe
- Maxime CLEMENT
- Takayuki Murooka
MPC Lateral Controller
This is the design document for the lateral controller node
in the trajectory_follower_node
package.
Purpose / Use cases
This node is used to general lateral control commands (steering angle and steering rate) when following a path.
Design
The node uses an implementation of linear model predictive control (MPC) for accurate path tracking. The MPC uses a model of the vehicle to simulate the trajectory resulting from the control command. The optimization of the control command is formulated as a Quadratic Program (QP).
Different vehicle models are implemented:
- kinematics : bicycle kinematics model with steering 1st-order delay.
- kinematics_no_delay : bicycle kinematics model without steering delay.
- dynamics : bicycle dynamics model considering slip angle. The kinematics model is being used by default. Please see the reference [1] for more details.
For the optimization, a Quadratic Programming (QP) solver is used and two options are currently implemented:
- unconstraint_fast : use least square method to solve unconstraint QP with eigen.
- osqp: run the following ADMM algorithm (for more details see the related papers at the Citing OSQP section):
Filtering
Filtering is required for good noise reduction. A Butterworth filter is employed for processing the yaw and lateral errors, which are used as inputs for the MPC, as well as for refining the output steering angle. Other filtering methods can be considered as long as the noise reduction performances are good enough. The moving average filter for example is not suited and can yield worse results than without any filtering.
Assumptions / Known limits
The tracking is not accurate if the first point of the reference trajectory is at or in front of the current ego pose.
Inputs / Outputs / API
Inputs
Set the following from the controller_node
-
autoware_auto_planning_msgs/Trajectory
: reference trajectory to follow. -
nav_msgs/Odometry
: current odometry -
autoware_auto_vehicle_msgs/SteeringReport
: current steering
Outputs
Return LateralOutput which contains the following to the controller node
autoware_auto_control_msgs/AckermannLateralCommand
- LateralSyncData
- steer angle convergence
MPC class
The MPC
class (defined in mpc.hpp
) provides the interface with the MPC algorithm.
Once a vehicle model, a QP solver, and the reference trajectory to follow have been set
(using setVehicleModel()
, setQPSolver()
, setReferenceTrajectory()
), a lateral control command
can be calculated by providing the current steer, velocity, and pose to function calculateMPC()
.
Parameter description
The default parameters defined in param/lateral_controller_defaults.param.yaml
are adjusted to the
AutonomouStuff Lexus RX 450h for under 40 km/h driving.
System
Name | Type | Description | Default value |
---|---|---|---|
traj_resample_dist | double | distance of waypoints in resampling [m] | 0.1 |
use_steer_prediction | boolean | flag for using steer prediction (do not use steer measurement) | false |
admissible_position_error | double | stop vehicle when following position error is larger than this value [m] | 5.0 |
admissible_yaw_error_rad | double | stop vehicle when following yaw angle error is larger than this value [rad] | 1.57 |
Path Smoothing
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
eigen |
Dependant Packages
Name | Deps |
---|---|
trajectory_follower_node |
Launch files
Messages
Services
Plugins
Recent questions tagged mpc_lateral_controller at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | Apache 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/ieiauto/autodrrt.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-05-30 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Takamasa Horibe
- Takayuki Murooka
Authors
- Takamasa Horibe
- Maxime CLEMENT
- Takayuki Murooka
MPC Lateral Controller
This is the design document for the lateral controller node
in the trajectory_follower_node
package.
Purpose / Use cases
This node is used to general lateral control commands (steering angle and steering rate) when following a path.
Design
The node uses an implementation of linear model predictive control (MPC) for accurate path tracking. The MPC uses a model of the vehicle to simulate the trajectory resulting from the control command. The optimization of the control command is formulated as a Quadratic Program (QP).
Different vehicle models are implemented:
- kinematics : bicycle kinematics model with steering 1st-order delay.
- kinematics_no_delay : bicycle kinematics model without steering delay.
- dynamics : bicycle dynamics model considering slip angle. The kinematics model is being used by default. Please see the reference [1] for more details.
For the optimization, a Quadratic Programming (QP) solver is used and two options are currently implemented:
- unconstraint_fast : use least square method to solve unconstraint QP with eigen.
- osqp: run the following ADMM algorithm (for more details see the related papers at the Citing OSQP section):
Filtering
Filtering is required for good noise reduction. A Butterworth filter is employed for processing the yaw and lateral errors, which are used as inputs for the MPC, as well as for refining the output steering angle. Other filtering methods can be considered as long as the noise reduction performances are good enough. The moving average filter for example is not suited and can yield worse results than without any filtering.
Assumptions / Known limits
The tracking is not accurate if the first point of the reference trajectory is at or in front of the current ego pose.
Inputs / Outputs / API
Inputs
Set the following from the controller_node
-
autoware_auto_planning_msgs/Trajectory
: reference trajectory to follow. -
nav_msgs/Odometry
: current odometry -
autoware_auto_vehicle_msgs/SteeringReport
: current steering
Outputs
Return LateralOutput which contains the following to the controller node
autoware_auto_control_msgs/AckermannLateralCommand
- LateralSyncData
- steer angle convergence
MPC class
The MPC
class (defined in mpc.hpp
) provides the interface with the MPC algorithm.
Once a vehicle model, a QP solver, and the reference trajectory to follow have been set
(using setVehicleModel()
, setQPSolver()
, setReferenceTrajectory()
), a lateral control command
can be calculated by providing the current steer, velocity, and pose to function calculateMPC()
.
Parameter description
The default parameters defined in param/lateral_controller_defaults.param.yaml
are adjusted to the
AutonomouStuff Lexus RX 450h for under 40 km/h driving.
System
Name | Type | Description | Default value |
---|---|---|---|
traj_resample_dist | double | distance of waypoints in resampling [m] | 0.1 |
use_steer_prediction | boolean | flag for using steer prediction (do not use steer measurement) | false |
admissible_position_error | double | stop vehicle when following position error is larger than this value [m] | 5.0 |
admissible_yaw_error_rad | double | stop vehicle when following yaw angle error is larger than this value [rad] | 1.57 |
Path Smoothing
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
eigen |
Dependant Packages
Name | Deps |
---|---|
trajectory_follower_node |
Launch files
Messages
Services
Plugins
Recent questions tagged mpc_lateral_controller at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | Apache 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/ieiauto/autodrrt.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-05-30 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Takamasa Horibe
- Takayuki Murooka
Authors
- Takamasa Horibe
- Maxime CLEMENT
- Takayuki Murooka
MPC Lateral Controller
This is the design document for the lateral controller node
in the trajectory_follower_node
package.
Purpose / Use cases
This node is used to general lateral control commands (steering angle and steering rate) when following a path.
Design
The node uses an implementation of linear model predictive control (MPC) for accurate path tracking. The MPC uses a model of the vehicle to simulate the trajectory resulting from the control command. The optimization of the control command is formulated as a Quadratic Program (QP).
Different vehicle models are implemented:
- kinematics : bicycle kinematics model with steering 1st-order delay.
- kinematics_no_delay : bicycle kinematics model without steering delay.
- dynamics : bicycle dynamics model considering slip angle. The kinematics model is being used by default. Please see the reference [1] for more details.
For the optimization, a Quadratic Programming (QP) solver is used and two options are currently implemented:
- unconstraint_fast : use least square method to solve unconstraint QP with eigen.
- osqp: run the following ADMM algorithm (for more details see the related papers at the Citing OSQP section):
Filtering
Filtering is required for good noise reduction. A Butterworth filter is employed for processing the yaw and lateral errors, which are used as inputs for the MPC, as well as for refining the output steering angle. Other filtering methods can be considered as long as the noise reduction performances are good enough. The moving average filter for example is not suited and can yield worse results than without any filtering.
Assumptions / Known limits
The tracking is not accurate if the first point of the reference trajectory is at or in front of the current ego pose.
Inputs / Outputs / API
Inputs
Set the following from the controller_node
-
autoware_auto_planning_msgs/Trajectory
: reference trajectory to follow. -
nav_msgs/Odometry
: current odometry -
autoware_auto_vehicle_msgs/SteeringReport
: current steering
Outputs
Return LateralOutput which contains the following to the controller node
autoware_auto_control_msgs/AckermannLateralCommand
- LateralSyncData
- steer angle convergence
MPC class
The MPC
class (defined in mpc.hpp
) provides the interface with the MPC algorithm.
Once a vehicle model, a QP solver, and the reference trajectory to follow have been set
(using setVehicleModel()
, setQPSolver()
, setReferenceTrajectory()
), a lateral control command
can be calculated by providing the current steer, velocity, and pose to function calculateMPC()
.
Parameter description
The default parameters defined in param/lateral_controller_defaults.param.yaml
are adjusted to the
AutonomouStuff Lexus RX 450h for under 40 km/h driving.
System
Name | Type | Description | Default value |
---|---|---|---|
traj_resample_dist | double | distance of waypoints in resampling [m] | 0.1 |
use_steer_prediction | boolean | flag for using steer prediction (do not use steer measurement) | false |
admissible_position_error | double | stop vehicle when following position error is larger than this value [m] | 5.0 |
admissible_yaw_error_rad | double | stop vehicle when following yaw angle error is larger than this value [rad] | 1.57 |
Path Smoothing
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
eigen |
Dependant Packages
Name | Deps |
---|---|
trajectory_follower_node |
Launch files
Messages
Services
Plugins
Recent questions tagged mpc_lateral_controller at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | Apache 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/ieiauto/autodrrt.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-05-30 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Takamasa Horibe
- Takayuki Murooka
Authors
- Takamasa Horibe
- Maxime CLEMENT
- Takayuki Murooka
MPC Lateral Controller
This is the design document for the lateral controller node
in the trajectory_follower_node
package.
Purpose / Use cases
This node is used to general lateral control commands (steering angle and steering rate) when following a path.
Design
The node uses an implementation of linear model predictive control (MPC) for accurate path tracking. The MPC uses a model of the vehicle to simulate the trajectory resulting from the control command. The optimization of the control command is formulated as a Quadratic Program (QP).
Different vehicle models are implemented:
- kinematics : bicycle kinematics model with steering 1st-order delay.
- kinematics_no_delay : bicycle kinematics model without steering delay.
- dynamics : bicycle dynamics model considering slip angle. The kinematics model is being used by default. Please see the reference [1] for more details.
For the optimization, a Quadratic Programming (QP) solver is used and two options are currently implemented:
- unconstraint_fast : use least square method to solve unconstraint QP with eigen.
- osqp: run the following ADMM algorithm (for more details see the related papers at the Citing OSQP section):
Filtering
Filtering is required for good noise reduction. A Butterworth filter is employed for processing the yaw and lateral errors, which are used as inputs for the MPC, as well as for refining the output steering angle. Other filtering methods can be considered as long as the noise reduction performances are good enough. The moving average filter for example is not suited and can yield worse results than without any filtering.
Assumptions / Known limits
The tracking is not accurate if the first point of the reference trajectory is at or in front of the current ego pose.
Inputs / Outputs / API
Inputs
Set the following from the controller_node
-
autoware_auto_planning_msgs/Trajectory
: reference trajectory to follow. -
nav_msgs/Odometry
: current odometry -
autoware_auto_vehicle_msgs/SteeringReport
: current steering
Outputs
Return LateralOutput which contains the following to the controller node
autoware_auto_control_msgs/AckermannLateralCommand
- LateralSyncData
- steer angle convergence
MPC class
The MPC
class (defined in mpc.hpp
) provides the interface with the MPC algorithm.
Once a vehicle model, a QP solver, and the reference trajectory to follow have been set
(using setVehicleModel()
, setQPSolver()
, setReferenceTrajectory()
), a lateral control command
can be calculated by providing the current steer, velocity, and pose to function calculateMPC()
.
Parameter description
The default parameters defined in param/lateral_controller_defaults.param.yaml
are adjusted to the
AutonomouStuff Lexus RX 450h for under 40 km/h driving.
System
Name | Type | Description | Default value |
---|---|---|---|
traj_resample_dist | double | distance of waypoints in resampling [m] | 0.1 |
use_steer_prediction | boolean | flag for using steer prediction (do not use steer measurement) | false |
admissible_position_error | double | stop vehicle when following position error is larger than this value [m] | 5.0 |
admissible_yaw_error_rad | double | stop vehicle when following yaw angle error is larger than this value [rad] | 1.57 |
Path Smoothing
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
eigen |
Dependant Packages
Name | Deps |
---|---|
trajectory_follower_node |
Launch files
Messages
Services
Plugins
Recent questions tagged mpc_lateral_controller at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | Apache 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/ieiauto/autodrrt.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-05-30 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Takamasa Horibe
- Takayuki Murooka
Authors
- Takamasa Horibe
- Maxime CLEMENT
- Takayuki Murooka
MPC Lateral Controller
This is the design document for the lateral controller node
in the trajectory_follower_node
package.
Purpose / Use cases
This node is used to general lateral control commands (steering angle and steering rate) when following a path.
Design
The node uses an implementation of linear model predictive control (MPC) for accurate path tracking. The MPC uses a model of the vehicle to simulate the trajectory resulting from the control command. The optimization of the control command is formulated as a Quadratic Program (QP).
Different vehicle models are implemented:
- kinematics : bicycle kinematics model with steering 1st-order delay.
- kinematics_no_delay : bicycle kinematics model without steering delay.
- dynamics : bicycle dynamics model considering slip angle. The kinematics model is being used by default. Please see the reference [1] for more details.
For the optimization, a Quadratic Programming (QP) solver is used and two options are currently implemented:
- unconstraint_fast : use least square method to solve unconstraint QP with eigen.
- osqp: run the following ADMM algorithm (for more details see the related papers at the Citing OSQP section):
Filtering
Filtering is required for good noise reduction. A Butterworth filter is employed for processing the yaw and lateral errors, which are used as inputs for the MPC, as well as for refining the output steering angle. Other filtering methods can be considered as long as the noise reduction performances are good enough. The moving average filter for example is not suited and can yield worse results than without any filtering.
Assumptions / Known limits
The tracking is not accurate if the first point of the reference trajectory is at or in front of the current ego pose.
Inputs / Outputs / API
Inputs
Set the following from the controller_node
-
autoware_auto_planning_msgs/Trajectory
: reference trajectory to follow. -
nav_msgs/Odometry
: current odometry -
autoware_auto_vehicle_msgs/SteeringReport
: current steering
Outputs
Return LateralOutput which contains the following to the controller node
autoware_auto_control_msgs/AckermannLateralCommand
- LateralSyncData
- steer angle convergence
MPC class
The MPC
class (defined in mpc.hpp
) provides the interface with the MPC algorithm.
Once a vehicle model, a QP solver, and the reference trajectory to follow have been set
(using setVehicleModel()
, setQPSolver()
, setReferenceTrajectory()
), a lateral control command
can be calculated by providing the current steer, velocity, and pose to function calculateMPC()
.
Parameter description
The default parameters defined in param/lateral_controller_defaults.param.yaml
are adjusted to the
AutonomouStuff Lexus RX 450h for under 40 km/h driving.
System
Name | Type | Description | Default value |
---|---|---|---|
traj_resample_dist | double | distance of waypoints in resampling [m] | 0.1 |
use_steer_prediction | boolean | flag for using steer prediction (do not use steer measurement) | false |
admissible_position_error | double | stop vehicle when following position error is larger than this value [m] | 5.0 |
admissible_yaw_error_rad | double | stop vehicle when following yaw angle error is larger than this value [rad] | 1.57 |
Path Smoothing
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
eigen |
Dependant Packages
Name | Deps |
---|---|
trajectory_follower_node |
Launch files
Messages
Services
Plugins
Recent questions tagged mpc_lateral_controller at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | Apache 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/ieiauto/autodrrt.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-05-30 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Takamasa Horibe
- Takayuki Murooka
Authors
- Takamasa Horibe
- Maxime CLEMENT
- Takayuki Murooka
MPC Lateral Controller
This is the design document for the lateral controller node
in the trajectory_follower_node
package.
Purpose / Use cases
This node is used to general lateral control commands (steering angle and steering rate) when following a path.
Design
The node uses an implementation of linear model predictive control (MPC) for accurate path tracking. The MPC uses a model of the vehicle to simulate the trajectory resulting from the control command. The optimization of the control command is formulated as a Quadratic Program (QP).
Different vehicle models are implemented:
- kinematics : bicycle kinematics model with steering 1st-order delay.
- kinematics_no_delay : bicycle kinematics model without steering delay.
- dynamics : bicycle dynamics model considering slip angle. The kinematics model is being used by default. Please see the reference [1] for more details.
For the optimization, a Quadratic Programming (QP) solver is used and two options are currently implemented:
- unconstraint_fast : use least square method to solve unconstraint QP with eigen.
- osqp: run the following ADMM algorithm (for more details see the related papers at the Citing OSQP section):
Filtering
Filtering is required for good noise reduction. A Butterworth filter is employed for processing the yaw and lateral errors, which are used as inputs for the MPC, as well as for refining the output steering angle. Other filtering methods can be considered as long as the noise reduction performances are good enough. The moving average filter for example is not suited and can yield worse results than without any filtering.
Assumptions / Known limits
The tracking is not accurate if the first point of the reference trajectory is at or in front of the current ego pose.
Inputs / Outputs / API
Inputs
Set the following from the controller_node
-
autoware_auto_planning_msgs/Trajectory
: reference trajectory to follow. -
nav_msgs/Odometry
: current odometry -
autoware_auto_vehicle_msgs/SteeringReport
: current steering
Outputs
Return LateralOutput which contains the following to the controller node
autoware_auto_control_msgs/AckermannLateralCommand
- LateralSyncData
- steer angle convergence
MPC class
The MPC
class (defined in mpc.hpp
) provides the interface with the MPC algorithm.
Once a vehicle model, a QP solver, and the reference trajectory to follow have been set
(using setVehicleModel()
, setQPSolver()
, setReferenceTrajectory()
), a lateral control command
can be calculated by providing the current steer, velocity, and pose to function calculateMPC()
.
Parameter description
The default parameters defined in param/lateral_controller_defaults.param.yaml
are adjusted to the
AutonomouStuff Lexus RX 450h for under 40 km/h driving.
System
Name | Type | Description | Default value |
---|---|---|---|
traj_resample_dist | double | distance of waypoints in resampling [m] | 0.1 |
use_steer_prediction | boolean | flag for using steer prediction (do not use steer measurement) | false |
admissible_position_error | double | stop vehicle when following position error is larger than this value [m] | 5.0 |
admissible_yaw_error_rad | double | stop vehicle when following yaw angle error is larger than this value [rad] | 1.57 |
Path Smoothing
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
eigen |
Dependant Packages
Name | Deps |
---|---|
trajectory_follower_node |
Launch files
Messages
Services
Plugins
Recent questions tagged mpc_lateral_controller at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | Apache 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/ieiauto/autodrrt.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-05-30 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Takamasa Horibe
- Takayuki Murooka
Authors
- Takamasa Horibe
- Maxime CLEMENT
- Takayuki Murooka
MPC Lateral Controller
This is the design document for the lateral controller node
in the trajectory_follower_node
package.
Purpose / Use cases
This node is used to general lateral control commands (steering angle and steering rate) when following a path.
Design
The node uses an implementation of linear model predictive control (MPC) for accurate path tracking. The MPC uses a model of the vehicle to simulate the trajectory resulting from the control command. The optimization of the control command is formulated as a Quadratic Program (QP).
Different vehicle models are implemented:
- kinematics : bicycle kinematics model with steering 1st-order delay.
- kinematics_no_delay : bicycle kinematics model without steering delay.
- dynamics : bicycle dynamics model considering slip angle. The kinematics model is being used by default. Please see the reference [1] for more details.
For the optimization, a Quadratic Programming (QP) solver is used and two options are currently implemented:
- unconstraint_fast : use least square method to solve unconstraint QP with eigen.
- osqp: run the following ADMM algorithm (for more details see the related papers at the Citing OSQP section):
Filtering
Filtering is required for good noise reduction. A Butterworth filter is employed for processing the yaw and lateral errors, which are used as inputs for the MPC, as well as for refining the output steering angle. Other filtering methods can be considered as long as the noise reduction performances are good enough. The moving average filter for example is not suited and can yield worse results than without any filtering.
Assumptions / Known limits
The tracking is not accurate if the first point of the reference trajectory is at or in front of the current ego pose.
Inputs / Outputs / API
Inputs
Set the following from the controller_node
-
autoware_auto_planning_msgs/Trajectory
: reference trajectory to follow. -
nav_msgs/Odometry
: current odometry -
autoware_auto_vehicle_msgs/SteeringReport
: current steering
Outputs
Return LateralOutput which contains the following to the controller node
autoware_auto_control_msgs/AckermannLateralCommand
- LateralSyncData
- steer angle convergence
MPC class
The MPC
class (defined in mpc.hpp
) provides the interface with the MPC algorithm.
Once a vehicle model, a QP solver, and the reference trajectory to follow have been set
(using setVehicleModel()
, setQPSolver()
, setReferenceTrajectory()
), a lateral control command
can be calculated by providing the current steer, velocity, and pose to function calculateMPC()
.
Parameter description
The default parameters defined in param/lateral_controller_defaults.param.yaml
are adjusted to the
AutonomouStuff Lexus RX 450h for under 40 km/h driving.
System
Name | Type | Description | Default value |
---|---|---|---|
traj_resample_dist | double | distance of waypoints in resampling [m] | 0.1 |
use_steer_prediction | boolean | flag for using steer prediction (do not use steer measurement) | false |
admissible_position_error | double | stop vehicle when following position error is larger than this value [m] | 5.0 |
admissible_yaw_error_rad | double | stop vehicle when following yaw angle error is larger than this value [rad] | 1.57 |
Path Smoothing
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
eigen |
Dependant Packages
Name | Deps |
---|---|
trajectory_follower_node |
Launch files
Messages
Services
Plugins
Recent questions tagged mpc_lateral_controller at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | Apache 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/ieiauto/autodrrt.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-05-30 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Takamasa Horibe
- Takayuki Murooka
Authors
- Takamasa Horibe
- Maxime CLEMENT
- Takayuki Murooka
MPC Lateral Controller
This is the design document for the lateral controller node
in the trajectory_follower_node
package.
Purpose / Use cases
This node is used to general lateral control commands (steering angle and steering rate) when following a path.
Design
The node uses an implementation of linear model predictive control (MPC) for accurate path tracking. The MPC uses a model of the vehicle to simulate the trajectory resulting from the control command. The optimization of the control command is formulated as a Quadratic Program (QP).
Different vehicle models are implemented:
- kinematics : bicycle kinematics model with steering 1st-order delay.
- kinematics_no_delay : bicycle kinematics model without steering delay.
- dynamics : bicycle dynamics model considering slip angle. The kinematics model is being used by default. Please see the reference [1] for more details.
For the optimization, a Quadratic Programming (QP) solver is used and two options are currently implemented:
- unconstraint_fast : use least square method to solve unconstraint QP with eigen.
- osqp: run the following ADMM algorithm (for more details see the related papers at the Citing OSQP section):
Filtering
Filtering is required for good noise reduction. A Butterworth filter is employed for processing the yaw and lateral errors, which are used as inputs for the MPC, as well as for refining the output steering angle. Other filtering methods can be considered as long as the noise reduction performances are good enough. The moving average filter for example is not suited and can yield worse results than without any filtering.
Assumptions / Known limits
The tracking is not accurate if the first point of the reference trajectory is at or in front of the current ego pose.
Inputs / Outputs / API
Inputs
Set the following from the controller_node
-
autoware_auto_planning_msgs/Trajectory
: reference trajectory to follow. -
nav_msgs/Odometry
: current odometry -
autoware_auto_vehicle_msgs/SteeringReport
: current steering
Outputs
Return LateralOutput which contains the following to the controller node
autoware_auto_control_msgs/AckermannLateralCommand
- LateralSyncData
- steer angle convergence
MPC class
The MPC
class (defined in mpc.hpp
) provides the interface with the MPC algorithm.
Once a vehicle model, a QP solver, and the reference trajectory to follow have been set
(using setVehicleModel()
, setQPSolver()
, setReferenceTrajectory()
), a lateral control command
can be calculated by providing the current steer, velocity, and pose to function calculateMPC()
.
Parameter description
The default parameters defined in param/lateral_controller_defaults.param.yaml
are adjusted to the
AutonomouStuff Lexus RX 450h for under 40 km/h driving.
System
Name | Type | Description | Default value |
---|---|---|---|
traj_resample_dist | double | distance of waypoints in resampling [m] | 0.1 |
use_steer_prediction | boolean | flag for using steer prediction (do not use steer measurement) | false |
admissible_position_error | double | stop vehicle when following position error is larger than this value [m] | 5.0 |
admissible_yaw_error_rad | double | stop vehicle when following yaw angle error is larger than this value [rad] | 1.57 |
Path Smoothing
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
eigen |
Dependant Packages
Name | Deps |
---|---|
trajectory_follower_node |
Launch files
Messages
Services
Plugins
Recent questions tagged mpc_lateral_controller at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | Apache 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/ieiauto/autodrrt.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-05-30 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Takamasa Horibe
- Takayuki Murooka
Authors
- Takamasa Horibe
- Maxime CLEMENT
- Takayuki Murooka
MPC Lateral Controller
This is the design document for the lateral controller node
in the trajectory_follower_node
package.
Purpose / Use cases
This node is used to general lateral control commands (steering angle and steering rate) when following a path.
Design
The node uses an implementation of linear model predictive control (MPC) for accurate path tracking. The MPC uses a model of the vehicle to simulate the trajectory resulting from the control command. The optimization of the control command is formulated as a Quadratic Program (QP).
Different vehicle models are implemented:
- kinematics : bicycle kinematics model with steering 1st-order delay.
- kinematics_no_delay : bicycle kinematics model without steering delay.
- dynamics : bicycle dynamics model considering slip angle. The kinematics model is being used by default. Please see the reference [1] for more details.
For the optimization, a Quadratic Programming (QP) solver is used and two options are currently implemented:
- unconstraint_fast : use least square method to solve unconstraint QP with eigen.
- osqp: run the following ADMM algorithm (for more details see the related papers at the Citing OSQP section):
Filtering
Filtering is required for good noise reduction. A Butterworth filter is employed for processing the yaw and lateral errors, which are used as inputs for the MPC, as well as for refining the output steering angle. Other filtering methods can be considered as long as the noise reduction performances are good enough. The moving average filter for example is not suited and can yield worse results than without any filtering.
Assumptions / Known limits
The tracking is not accurate if the first point of the reference trajectory is at or in front of the current ego pose.
Inputs / Outputs / API
Inputs
Set the following from the controller_node
-
autoware_auto_planning_msgs/Trajectory
: reference trajectory to follow. -
nav_msgs/Odometry
: current odometry -
autoware_auto_vehicle_msgs/SteeringReport
: current steering
Outputs
Return LateralOutput which contains the following to the controller node
autoware_auto_control_msgs/AckermannLateralCommand
- LateralSyncData
- steer angle convergence
MPC class
The MPC
class (defined in mpc.hpp
) provides the interface with the MPC algorithm.
Once a vehicle model, a QP solver, and the reference trajectory to follow have been set
(using setVehicleModel()
, setQPSolver()
, setReferenceTrajectory()
), a lateral control command
can be calculated by providing the current steer, velocity, and pose to function calculateMPC()
.
Parameter description
The default parameters defined in param/lateral_controller_defaults.param.yaml
are adjusted to the
AutonomouStuff Lexus RX 450h for under 40 km/h driving.
System
Name | Type | Description | Default value |
---|---|---|---|
traj_resample_dist | double | distance of waypoints in resampling [m] | 0.1 |
use_steer_prediction | boolean | flag for using steer prediction (do not use steer measurement) | false |
admissible_position_error | double | stop vehicle when following position error is larger than this value [m] | 5.0 |
admissible_yaw_error_rad | double | stop vehicle when following yaw angle error is larger than this value [rad] | 1.57 |
Path Smoothing
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
eigen |
Dependant Packages
Name | Deps |
---|---|
trajectory_follower_node |