This controller implements the kinematics with two axes and two wheels, where the wheel on one axis is fixed (traction/drive), and the wheel on the other axis is steerable.

The controller expects to have one commanding joint for traction, and one commanding joint for steering. If your Ackermann steering vehicle uses differentials on axes, then you should probably use this controller since you can command only one traction velocity and steering angle for virtual wheels in the middle of the axes.

For more details on controller’s execution and interfaces check the Steering Controller Library.


This controller uses the generate_parameter_library to handle its parameters.

For an exemplary parameterization see the test folder of the controller’s package.

Additionally to the parameters of the Steering Controller Library, this controller adds the following parameters:

wheelbase (double)

Distance between front and rear wheel. For details see:

Default: 0.0

front_wheel_radius (double)

Front wheel radius.

Default: 0.0

rear_wheel_radius (double)

Rear wheel radius.

Default: 0.0