This package provides core algorithmics for planning is SE(2) space. Current implementation is based on Ompl and RRT*, however one could also add a custom planner.
Coming soon:
- more state spaces including hybrid Reeds-Shepp curves
- planning for holonomic robots such as mobile bases
- integration of more ompl planners
Rectangular collision footprint is shown in an image below. We allow for arbitrary polygons to be used as a collision footprint, as long as the vertices are ordered counter-clockwise. Rectangular fooprints can be created using conveniece functions provided. The footprint is defined by four points:
- Right Hind (RH)
- Right Front (RF)
- Left Front (LF)
- Left Hind (LH)
User can either specify those point manually, of define 4 measures shown in the image below. The points will then be
calculated automatically. All distances are marked with d
and measured from the origin of the coordinate system.
se2_planning depends on following packages:
- OMPL
- grid_map_core
- Boost
- Eigen
Eigen and Boost are shipped with the Ubuntu distribution. You can install OMPL from source if you want to use the planner without ROS integration. The easiest wayto build ompl is to build it using catkin build system:
Inside your catkin workspace source folder (src) do:
git clone [email protected]:ompl/ompl.git
git clone [email protected]:ANYbotics/grid_map.git
catkin build ompl grid_map_core
Ompl can be also build using pure CMake, plese refer to https://ompl.kavrakilab.org/.
In case this does not work for you refere to the OMPL website for installation instructions. If you're using the ROS interface, installation can also be done through PPA.
sudo apt install ros-noetic-ompl ros-noetic-grid-map-core
Build with:
catkin build se2_planning
To build in release mode:
catkin build --cmake-args -DCMAKE_BUILD_TYPE=Release
Building in release mode affects the perfromance a lot (code runs about order of magnitude faster).
To run tests, use:
catkin build se2_planning --no-deps --verbose --catkin-make-args run_tests
This is merely core algorithmics, meant to be used inside another package.
Currently only Reeds-Shepp state space is supported.
- upper bound in x dimension
- lower bound in x dimension
- upper bound in y dimension
- lower bound in y dimension (all in meters)
- turning radius of a vehicle (in meters)
- path spatial resolution - distance between points on a path (path is piecewise linear), smaller number means more points.
- planner range - maximal range used when extending the tree inside RRT* ( see ompl docs)
- max planning time - maximal time the planner will spend finding or trying to improve the path