====== 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 =====
* Download {{courses:aro:tutorials:lab10-planning.zip | ZIP}}, unpack to some working directory
* Since it need several Python libraties, it is good to create virtual environment for it
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 =====
* In ''planningExample.py'', set up the holonomic planner in the main block:
if __name__ == "__main__":
setup = prepareStraightLinePlanner
#or
setup = prepareStraightLinePlannerShapeRobot
* Run the script, it will plot the test scenario and results of planning
===== 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 =====
* We will create success rate graphs and discuss how different planning settings influene performance, for example:
* how size of the sampling-space (c-space) changes behavior
* the presence of 'hard' obstacles
* is planning with convex/non-cnvex obstacles same?
===== Troubleshooting =====
- How to test new (uknown) planner, which mistakes to avoid