Lab 10
Planning
During this lab, you should get a bit deeper understanding of the planning concepts presented during the lectures.
We will work with simple sampling-based planner, the code is not connected to ROS, as our main goal is to play with the planner itself, not with all the robotic infrastructure
Students do not necessarily need to code in this lab, but it's welcome to look at provided source codes to see connection between theory and (programming) reality
Prepare your computer
cd go_to_your_folder_with_unzipped_file
python3 -m venv venv
. venv/bin/activate && pip install -r requirements.txt
requirements.txt
contourpy
cycler
fonttools
importlib-resources
kiwisolver
matplotlib
numpy
packaging
pillow
pyparsing
python-dateutil
scipy
shapely
six
zipp
Planner structure
rrtPlanner.py contains basic implementation of RRT planner
polygonalMap.py environment (map) where obstacles are represented as polygons (using Shapely library)
pointRobot.py basic holonomic robot without shape
shapeRobot.py basic holonomic robot with a polygonal (arbirtary) shape
carLikeRobot.py implementation of CarLike robot of rectangular shape
planningExample.py our main working file which creates planning instances, you can run it within venv:
(venv) > python3 planningExample.py
Holonomic planning
if __name__ == "__main__":
setup = prepareStraightLinePlanner
#or
setup = prepareStraightLinePlannerShapeRobot
Non-holonomic planning
In non-holonomic planning, robot cannot move arbitrarily in the space, but its motion is limited by internal 'kinematics'
In planningExample.py, set up the holonomic planner in the main block:
setup = prepareCarLikePlanner
Run the script, it will plot scneario and result of planning
Investigate how the kinematic expansion is planner, look at robot's method 'expand'
Path optimization
You are provided with a non-optimal planner.
Discuss how to get 'better' plans even with non-optimal planners.
How are your suggestions compatible with holonomic or non-holonomic movements?
Discuss pros/cons of using optimal vs. non-optimal planners for certain tasks
Planner testing
Troubleshooting
How to test new (uknown) planner, which mistakes to avoid