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

Usage of sbpl_lattice_planner

asked 2011-11-30 07:05:28 -0600

Sagnik gravatar image


I was trying to use sbpl_lattice_planner path planning on a 4-wheeled car-like robot. I was testing it using the example simulation given in Sec 2.2.1 at this URL. I have a few questions regarding that.

  • It seems to me that the planner re-plans during the actual execution of motion from start to goal. Is that correct ? If it is, is there a way to switch off that feature and have it generate only one plan in the beginning ?
  • Is there a way to get the plan (in terms of (x,y,theta)) without actually having the robot move from start position to goal ?
  • Finally, I did not find a .mprim file (or a .m mprim generation file) for a 4 wheeled robot (Ackerman Steering/Bicycle model). Could someone point me to one that exists ?

Thanks, Sagnik

edit retag flag offensive close merge delete


Hi bro,I am working on a similar project. Where you successful in implementing the navigation stack?.

metal gravatar image metal  ( 2012-08-13 18:05:34 -0600 )edit

2 Answers

Sort by ยป oldest newest most voted

answered 2011-11-30 07:49:29 -0600

ben gravatar image

Alternate answer to your second question:

Mike's method of retrieving the path is the way to go if you want to call the planner directly, but if you want to interact with any planner through move_base and still want to retrieve the path, then you can subscribe to the /path topic that gets published for the sake of visualizing it. I might be wrong about the name of the topic - it might be /display_path or /path...I don't remember. However - I believe that it only publishes the {x, y} coordinates without theta.

Long story short - look at the documentation for move_base to see how to retrieve the path, it's a move_base thing not a planner thing.

edit flag offensive delete link more

answered 2011-11-30 07:24:59 -0600

mlphilli gravatar image

Hi Sagnik, Your first two questions are getting at how move_base and sbpl_lattice_planner interact. The sbpl_lattice_planner is just class that adheres to the global planner API so that move_base can use it. You can use the sbpl_lattice_planner by itself (without move_base) by calling the initialize and makePlan functions in order to just get back the (x,y,theta) path.

The move_base package does exactly this to get a path, and then follows the path (moving the robot) using some local planner. So if you don't want the robot to move, just don't use move_base, just use sbpl_lattice_planner by itself.

When you observe the planner re-plan during execution it is actually move_base calling the planner again for a new path. This can happen for a few reasons such as the robot getting too far off the path, or an obstacle being detected on the path currently being followed (so the path is invalid).

In terms of motion primitives for an Ackerman steering robot, you should be able to use one of the unicycle files. These motions can be used to create smooth arcs that a steering type robot would follow. This may not be good enough though if you need to model that in a car like robot you can't change the steering angle instantaneosly. If this is important, you need to plan in an (x,y,theta,phi) state space. In this case you may be able to modify the sbpl_cart_planner for your purposes.

edit flag offensive delete link more

Question Tools


Asked: 2011-11-30 07:05:28 -0600

Seen: 1,236 times

Last updated: Nov 30 '11