The freespace planning algorithms package#
Role#
This package is for development of path planning algorithms in free space.
Implemented algorithms#
- Hybrid A*
Guide to implement a new algorithm#
- All planning algorithm class in this package must inherit
AbstractPlanningAlgorithmclass. If necessary, please overwrite the virtual functions. - All algorithms must use
nav_msgs::OccupancyGrid-typed costmap. Thus,AbstractPlanningAlgorithmclass mainly implements the collision checking using the costmap, grid-based indexing, and coordinate transformation related to costmap. - All algorithms must take both
PlannerCommonParam-typed and algorithm-specific- type structs as inputs of the constructor. For example,AstarSearchclass's constructor takes bothPlannerCommonParamandAstarParam.
Running the standalone tests and visualization#
Building the package with ros-test and run tests:
colcon build --packages-select freespace_planning_algorithms
colcon test --packages-select freespace_planning_algorithms
Inside the test, simulation results are stored in /tmp/result_*.txt.
Note that the postfix corresponds to the testing scenario (multiple curvatures and single curvature cases). Loading these resulting files, by using test/debug_plot.py, one can create plots visualizing the path and obstacles as shown in the figures below.
The created figures are then again saved in /tmp with the name like /tmp/result_multi0.png.

The black cells, green box, and red box, respectively, indicate obstacles, start configuration, and goal configuration. The sequence of the blue boxes indicate the solution path.
License notice#
Files src/reeds_shepp.cpp and include/astar_search/reeds_shepp.h
are fetched from pyReedsShepp.
Note that the implementation in pyReedsShepp is also heavily based on
the code in ompl.
Both pyReedsShepp and ompl are distributed under 3-clause BSD license.