ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

How should I develop an Ackermann vehicle?

asked 2016-02-11 08:42:13 -0500

kylerlaird gravatar image

updated 2016-07-17 12:23:28 -0500

Last summer (2015) I used a simple ROS configuration to remotely control a small vehicle (Tractobot00) with Ackermann steering. I only used ROS for the joystick driver and message passing between nodes I wrote. I extended the control to navigating using a single RTK GPS with very limited success.

I see that there are cars with ROS interfaces now but I don't see any major development in ROS support for Ackermann vehicles. Is there a simple path to using ROS to control an Ackermann vehicle in a standard way? My initial goal is to be able to drive a large vehicle in a straight line using dual RTK GPS and an IMU. It looks like I could do this easily with APM Rover but I would much rather have the ROS infrastructure available.

[2016.05.29 update]

What did I do? Well...I got really frustrated - both with ROS and APM. Out of desperation, I decided to write my own monolithic Python script. It is amazingly dumb. It does not know about kinematics, vehicle geometry, or even correlation of steering value and steer angle. It does not even use the IMU. It just uses the GPS data for pose, and feeds a steering PID with the difference between the current and desired heading based on cross-track distance. It works surprisingly well for Tractobot01.

Tractobot01 has been in the shop with transmission problems because it sat unused for decades. I brought it home yesterday and added a solenoid valve for implement control. I hope to have that working next week so that it can drill some soybeans without my assistance.

As my needs become more complex, I often have the urge to return to a ROS-based system. I could certainly port my existing work to ROS but I'd like to start fresh when I return to ROS and do better. I contacted Earle Robotics about continuing to port APM to ROS but it's apparently a bigger undertaking than I expected.

I would gladly pay for someone to port more pieces of APM to ROS and/or help me use existing ROS code to do what I need.

[2016.07.17 update]

It seems that there is interest in this, so here are a few more details on Tractobot01. Also, I'm returning to ROS for Tractobot02 so I'm very interested in porting my work.

Tractobot01 came out of the shop with a repaired transmission, went to the field, and blew a steering cylinder seal. Although I was very late, it did eventually drill about 45 acres of soybeans.

I will describe the guidance in more detail. For reference, here are videos of Tractobot01 in various phases. resuming operation: midfield: headland:

Tractobot01 had one capability: follow a line. That meant that it tried to minimize the ... (more)

edit retag flag offensive close merge delete


please tell me what u did

VEGETA gravatar image VEGETA  ( 2016-05-29 10:34:33 -0500 )edit

I was hoping for a ROS solution. how about you use Arduino to control motors and send odometry back to ROS?

VEGETA gravatar image VEGETA  ( 2016-05-30 00:38:17 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2016-10-06 04:09:19 -0500

berno gravatar image

hi kylerlaird.

Not sure if you are still interested in ackermann system but the most promising ackermann steering development in ROS seems to be teb_local_planner. This can be used in the place of the original planner or DWA planner within move_base. Within the setting you can convert the twist messages to ackermann style messages and specify steering angles. The development of the ackermann implementation is still in development, and still very active, but I have used it without any issues.

edit flag offensive delete link more


Sorry to revive a 4 year-old thread, but have any other local planners supporting ackermann steering been developed?

David michelman gravatar image David michelman  ( 2021-01-09 21:21:10 -0500 )edit

Question Tools

1 follower


Asked: 2016-02-11 08:42:13 -0500

Seen: 1,530 times

Last updated: Jul 17 '16