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

change sbpl_lattice_planner preference to reverse motion?

asked 2014-01-21 07:07:23 -0500

bk gravatar image

Sbpl_lattice_planner's default for navigation seems to be to move forward with minimal reverse movements. It seems to choose inefficient routes in order to move forward rather than in reverse. For example, sometimes it will turn around prior to running a forward route rather than taking a simpler reverse route.
1-Is this true?
2-Is there any functionality in sbpl_lattice_planner to make the default to be to prefer moving in reverse with minimal forward motion?
The robot has Ackermann-like steering and it needs to move predominately in the reverse direction. We could switch the forward direction to reverse however there are times where forward motion is needed.

edit retag flag offensive close merge delete


Out of curiosity, which local planner are you using for your robot?

ahendrix gravatar image ahendrix  ( 2014-01-21 07:42:40 -0500 )edit

We created a custom local planner

bk gravatar image bk  ( 2014-01-21 08:11:10 -0500 )edit

Is the source available somewhere? There's a distinct lack of good local planners for ackermann-style vehicles.

ahendrix gravatar image ahendrix  ( 2014-01-21 08:15:41 -0500 )edit

I will second this. I will confirm the solution below works, as I have made primitives for ackermann for SBPL. I am working on making my own local planner, but would be up for working with some people on it. Have even been looking at converting "carlike planner" or seeing how hector is doing it.

orion gravatar image orion  ( 2014-01-21 13:11:45 -0500 )edit

The local planner is in a very preliminary stage. It does not adhere to the nav_core::BaseLocalPlanner interface, does not use cmd_vel nor the ackermann steering message types, and will unfortunately not be universally helpful in other ways. I will let you know if something changes

bk gravatar image bk  ( 2014-01-22 02:46:11 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2014-01-21 07:42:10 -0500

ahendrix gravatar image

updated 2014-01-21 09:06:22 -0500

  1. Yes. Most of the default primitives prefer forward motion.
  2. Absolutely. You'll need to write your own motion primitives that don't have a penalty on reverse motion. The stock motion primitives are generated by matlab code in the sbpl/matlab/mprim directory. The primitive generation is fairly well documented, so it shouldn't be too hard to modify.

@ben points out that there is a tutorial on editing SBPL motion primitives:

edit flag offensive delete link more


That makes sense. I will validate this tomorrow. Thanks!

bk gravatar image bk  ( 2014-01-21 08:09:51 -0500 )edit

Within the last 6 months, we posted more tutorials on the sbpl website that you might find useful. Here's a really good one written by Victor Hwang - with really good pictures. It describes how to generate motion prims:

ben gravatar image ben  ( 2014-01-21 08:35:13 -0500 )edit

Thanks for the tutorials. They have been very helpful!

bk gravatar image bk  ( 2014-01-22 02:20:59 -0500 )edit

Thanks ahendrix for the solution!

bk gravatar image bk  ( 2014-01-22 02:29:22 -0500 )edit

Question Tools



Asked: 2014-01-21 07:07:23 -0500

Seen: 577 times

Last updated: Jan 21 '14