tud-cor / FS19_modROS

(partial) ROS1 integration for FarmSim19
Apache License 2.0
49 stars 12 forks source link

Implement Twist -> steering angle + throttle conversion #27

Open tckarenchiang opened 3 years ago

tckarenchiang commented 3 years ago

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.

tckarenchiang commented 3 years ago
  1. ackermann_steering_controller. Related issue: ros-controls/ros_controllers#412.

  2. another ros_control controller for "steer-and-turn" (which should be the same/similar): steer_drive_controller.

  3. A special ackermann_msgs package.