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 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

  1. How to test new (uknown) planner, which mistakes to avoid
courses/aro/tutorials/lab10.txt · Last modified: 2026/04/23 09:27 by vonasvoj