Search
The main task is to learn the basic principles of randomized sampling-based planning. The principles are demonstrated on the multi-query planning algorithm - the Simplified Probabilistic Roadmap (sPRM).
PRMPlanner.py
make
environment/rapid
pip3 install Dijkstar # or our favorite way to install the package
In class PRMPlanner.py implement the Simplified Probabilistic Roadmap (sPRM) randomized sampling-based path planning algorithm according to the description and pseudocode presented in the Lecture 09.
The planner is invoked using the method plan and shall provide a collision free path through an environment represented by a geometrical map. The input parameters of the function plan are:
plan
environment
environment.check_robot_collision(P)
P
Pose
True
environment.limits_x
environment.limits_y
environment.limits_z
start
goal
space
number_of_samples
neighborhood_radius
collision_step
The function returns:
None
For easier implementation, several functions are already implemented in the PRMPlanner class. You may utilize them in your solution. The detailed description of the recommended approach is in the next section.
PRMPlanner
After downloading the resource pack, please build the RAPID collision checking library in the environment/rapid directory using the provided Makefile. The Environment class provides the wrapper for the RAPID library which is used for checking the sampled robot poses for collision with the obstacles in the environment.
Makefile
Environment
An example of the running sPRM can be seen in the following images. From left to right: Environment with robot and obstacles. Constructed navigation graph. Final path and its execution.
The sPRM algorithm is demonstrated in the continuous geometric space, which is a different representation of the environment in comparison to the OccupancyGrid message, i.e., the probabilistic occupancy grid map, used in the previous tasks. In the geometric space we need a way to evaluate the robot interference with the environment using collision checking. There are multiple collision checking libraries available, (e.g. , Coldet, BULLET, Nvidia PhysX, FCL, RAPID , etc. They all differ in the performance, collision checking approach and precision. ). In UIR we are using the RAPID collision checking library which is sufficiently precise, fast and easy to install. The provided Environment class within the resource pack contains the representation of the planning scenarios and wrapper for the RAPID library.
Gimbal lock
Slerp - spherical linear interpolation