# Ignition Gazebo

## API Reference

6.1.0
AckermannSteering Class Reference

Ackermann steering controller which can be attached to a model with any number of left and right wheels. More...

#include <AckermannSteering.hh>

## Public Member Functions

AckermannSteering ()
Constructor. More...

~AckermannSteering () override=default
Destructor. More...

void Configure (const Entity &_entity, const std::shared_ptr< const sdf::Element > &_sdf, EntityComponentManager &_ecm, EventManager &_eventMgr) override
Configure the system. More...

void PostUpdate (const UpdateInfo &_info, const EntityComponentManager &_ecm) override

void PreUpdate (const UpdateInfo &_info, EntityComponentManager &_ecm) override

Public Member Functions inherited from System
System ()=default
Constructor. More...

virtual ~System ()=default
Destructor. More...

## Detailed Description

Ackermann steering controller which can be attached to a model with any number of left and right wheels.

# System Parameters

<left_joint>: Name of a joint that controls a left wheel. This element can appear multiple times, and must appear at least once.

<right_joint>: Name of a joint that controls a right wheel. This element can appear multiple times, and must appear at least once.

<left_steering_joint>: Name of a joint that controls steering for left wheel. This element must appear once. Vehicles that steer rear wheels are not currently correctly supported.

<right_steering_joint>: Name of a joint that controls steering for right wheel. This element must appear once.

<wheel_separation>: Distance between wheels, in meters. This element is optional, although it is recommended to be included with an appropriate value. The default value is 1.0m.

<kingpin_width>: Distance between wheel kingpins, in meters. This element is optional, although it is recommended to be included with an appropriate value. The default value is 0.8m. Generally a bit smaller than the wheel_separation.

<wheel_base>: Distance between front and rear wheels, in meters. This element is optional, although it is recommended to be included with an appropriate value. The default value is 1.0m.

<steering_limit>: Value to limit steering to. Can be calculated by measuring the turning radius and wheel_base of the real vehicle. steering_limit = asin(wheel_base / turning_radius) The default value is 0.5 radians.

<wheel_radius>: Wheel radius in meters. This element is optional, although it is recommended to be included with an appropriate value. The default value is 0.2m.

<odom_publish_frequency>: Odometry publication frequency. This element is optional, and the default value is 50Hz.

'<min_velocity>': Minimum velocity [m/s], usually <= 0. '<max_velocity>': Maximum velocity [m/s], usually >= 0. '<min_acceleration>': Minimum acceleration [m/s^2], usually <= 0. '<max_acceleration>': Maximum acceleration [m/s^2], usually >= 0. '<min_jerk minimum>="">': jerk [m/s^3], usually <= 0. '<max_jerk maximum>="">': jerk [m/s^3], usually >= 0.

<topic>: Custom topic that this system will subscribe to in order to receive command velocity messages. This element if optional, and the default value is /model/{name_of_model}/cmd_vel.

<odom_topic>: Custom topic on which this system will publish odometry messages. This element if optional, and the default value is /model/{name_of_model}/odometry.

A robot with rear drive and front steering would have one each of left_joint, right_joint, left_steering_joint and right_steering_joint

## ◆ AckermannSteering()

 AckermannSteering ( )

Constructor.

## ◆ ~AckermannSteering()

 ~AckermannSteering ( )
overridedefault

Destructor.

## ◆ Configure()

 void Configure ( const Entity & _entity, const std::shared_ptr< const sdf::Element > & _sdf, EntityComponentManager & _ecm, EventManager & _eventMgr )
overridevirtual

Configure the system.

Parameters
 [in] _entity The entity this plugin is attached to. [in] _sdf The SDF Element associated with this system plugin. [in] _ecm The EntityComponentManager of the given simulation instance. [in] _eventMgr The EventManager of the given simulation instance.

Implements ISystemConfigure.

## ◆ PostUpdate()

 void PostUpdate ( const UpdateInfo & _info, const EntityComponentManager & _ecm )
overridevirtual

Implements ISystemPostUpdate.

## ◆ PreUpdate()

 void PreUpdate ( const UpdateInfo & _info, EntityComponentManager & _ecm )
overridevirtual

Implements ISystemPreUpdate.

The documentation for this class was generated from the following file: