Kubo: Ackermann Steering - olinrobotics/gravl GitHub Wiki
Overview
Kubo drives via Ackermann Steering, controlled via a linear actuator on the velocity pedal and a rotational actuator on the steering wheel. The basic concept behind Ackermann steering is that the inner wheel in a turn turns a greater angle than the outer wheel to prevent excess wear and increase steering effectiveness. For more on Ackermann steering, read the following RcTek article (link).
Ackermann steered vehicles function differently from differential-driver vehicles in that they cannot instantly reach a given heading, and must instead approach a heading by turning the wheels, driving forward for a certain period of time, then straightening the wheels. The hind-brain deals with Ackermann steering by taking in a ROS Ackermann steering message (reference)
Setup for Ackermann Steering Class
Setup Ackermann Steering Messages - Arduino
- Installed ROS ackermann steering messages via
sudo apt-get install ros-indigo-ackermann-msgs
- Re-setup rosserial on arduino IDE (tutorial)
- Go into /opt/"your arduino ide"/libraries/ros_lib/ArduinoHardware.h and find the following line of code:
- Update the line to look like this:
Setup Ackermann Steering Messages - Python
- Install ROS ackermann steering messages via
sudo apt-get install ros-kinetic-ackermann-msgs
- Use
catkin_make -DCATKIN_WHITELIST_PACKAGES="ackermann_msgs"
(after doing this, you may want to usecatkin_make -DCATKIN_WHITELIST_PACKAGES=""
) - At the top of your python file include the line
from ackermann_msgs.msg import AckermannDrive
- Documentation for ackermann_msgs (Documentation)
- To use in code: