Rosanswers logo


I am using this package to control some servo motors for an ackermann steered vehicle.

The local path planner that i am using is the teb_local_planner

I am wondering, how do I combine the two to achieve a complete ackermann steered system?

I have already implemented teb with a differential drive robot, but I am not sure what to do to send proper steering commands to the servo motors to achieve local path planning.

Please help, Aaron

Originally posted by aarontan on ROS Answers with karma: 135 on 2018-06-22

Post score: 0

Original comments

Comment by Ricardo Angeli on 2018-06-22:
Can you describe with detail what each of your servos are doing? Before using a path planner (like teb_local_planner) you will need an ackermann steering controller. This subscribes to Geometry Twist messages and publishes Odometry messages. Will this be within ROS or will the arduino do it?

Comment by aarontan on 2018-06-23:
The servo motors are used in a rack and pinion set up to push/pull a wheel in/out for steering. From my understanding, ROS should send a steering angle command and the arduino is only responsible for realizing this command for the servos.


1 Answer 1


Rosanswers logo

You use the teb_local_planner with move_base. http://wiki.ros.org/move_base move_base will publish a twist message.

The teb_local_planner can publish a steering angle in the twist msg. https://github.com/rst-tu-dortmund/teb_local_planner/blob/kinetic-devel/cfg/TebLocalPlannerReconfigure.cfg#L115

You will need a ROS node that convert steering angle of the twist to steering angles of each of your wheels.

Some code to help you : https://github.com/ros-controls/ros_controllers/blob/melodic-devel/four_wheel_steering_controller/src/four_wheel_steering_controller.cpp#L437

Originally posted by Vincent R with karma: 365 on 2018-06-22

This answer was ACCEPTED on the original site

Post score: 3


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.