Ackermann steering bot using teb_planner, mbf and Dubins path slows down at each goal; How to avoid that?

I have an Ackermann, teb planner vehicle simulated in Gazebo and Rviz using Noetic. I know the real-world vehicle can drive at 1.8m/s (set as max velocity) and follow a turning radius of 1.5m without issue. For testing in simulation, I have it following a simple Dubins path of 5m turning radius which is well within its operating characteristics. I use move_base_flex send_goal to send a target position (line 37)

I would like to change the path following behavior to stay at, or close, to max velocity and the vehicle maintain a relatively constant turning radius. My use case is cutting hay in an open field. In real life when you get to the end of a path you make a hard turn, get lined up on the next path, and drive straight to the end of that path.

If I have to code it myself I might dig into the mbf wait_for_result and somehow trigger “success” when the speed begins to slow down (i.e. The robot is near the next goal) so the planner then focuses on the next goal and maintains speed. I would rather not do that and am hoping someone has already figured this out and willing to share.

So, anyone out there addressed this issue? How did you do it?

Link to my repo with all the files: GitHub - jones2126/ros1_lawn_tractor_ws

Screenshot from 2023-02-10 12-32-28

1 Like

This is how chat.openai.com responded to the question above:

As a ROS developer, I would recommend exploring the use of a customized path planner that is optimized for the specific task of cutting hay in an open field. While the Ackermann vehicle’s default teb planner may work well for following a Dubins path with a turning radius of 5m, it may not be the best choice for maintaining a constant speed and turning radius.

One possible approach is to use a combination of waypoint navigation and velocity control. The vehicle can be programmed to follow a series of waypoints that define the cutting path in the field. The velocity can be controlled by adjusting the throttle and steering angles to maintain a constant speed and turning radius while following the waypoints.

Another approach is to use a customized version of the teb planner that is tailored to the specific requirements of cutting hay in an open field. This could involve modifying the planner’s cost functions to prioritize maintaining a constant speed and turning radius, while still ensuring obstacle avoidance and other safety considerations.

In either case, it may be necessary to adjust the parameters of the planner and controller to achieve the desired behavior. This could involve tuning the gains of the PID controller or adjusting the weights of the cost functions in the planner.

Overall, the key is to experiment with different approaches and fine-tune the parameters to achieve the desired behavior. With the flexibility and modularity of the ROS ecosystem, there are many tools and libraries available to help developers create customized path planning and control solutions for a wide range of applications.

Hi Jones I have heard once the Kyler Podcast. It seems that he did something similar to you: ROS Agriculture with Kyler Laird - The ROS Developers Podcast | Podcast on Spotify

I hope it helps

Thanks for sharing. Updated link for Kyler’s podcast. ROS Developers Podcast #20: ROS Agriculture with Kyler Laird