Open tckarenchiang opened 3 years ago
ros_control
based implementation for "twist to Ackermann steering"ackermann_steering_controller. Related issue: ros-controls/ros_controllers#412.
another ros_control
controller for "steer-and-turn" (which should be the same/similar): steer_drive_controller.
A special ackermann_msgs package.
ros_control
based implementation of the conversion: carbot_control/scripts/cmd_vel_to_joint.py. This may not be immediately reusable, but does show the math.
The steering of a vehicle is not that smooth. Now it's through setting a variable called
self.rotatedTime
which is the only way we know (so far) how farmsim maps the steering input to the rotation of the wheels.This seems like a classical "intelligent vehicles" or "autonomous vehicles" situation, where the
geometry_msgs/Twist
output of a local planner (or controller) needs to be converted to a(steering_angle, throttle)
tuple. Many Intelligent Vehicles labs have had the same problem, and they've implemented ROS nodes which perform the conversion.The Autoware.Auto and Autoware.AI projects also have done this, as part of their vehicle interface .
As this seems like a generic problem with converting linear + angular velocity to throttle+steering_angle, it might be worthwhile to take a look at the mentioned projects and see how they've done this.