Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

20 Commits

Folders and files

Repository files navigation

RBE 550 Motion Planning Projects

This repository is a portfolio version of my graduate-level coursework for RBE 550: Motion Planning. The projects move from introductory OMPL exercises through collision checking, sampling-based planning, optimal planning, kinodynamic planning, and planner benchmarking.

Projects

Project Short Description Main Artifacts
Project 0 Introductory OMPL and Genesis exercises covering 2D map planning, optimal planning, state sampling, and a simple Franka pick demo. C++/Python code, OMPL examples, report PDF.
Project 1 Configuration-space sampling on a disk, comparing naive polar sampling against correct area-uniform sampling. Custom OMPL sampler, GraphML/PNG visualizations, report PDF.
Project 2 Collision checking and custom planning for point and square robots in rectangular environments. RTP planner, collision-checking library, visualizer, benchmark helper, report PDF.
Project 3 Planning for a compound chain-box robot with narrow passages, custom validity checking, PRM sampler comparisons, and clearance optimization. OMPL compound state space, planner benchmarks, path visualizations, report PDF.
Project 4 Kinodynamic planning for car and pendulum systems, comparing KPIECE, SST, EST/RRT, and AO-RRT-style planning. Control planners, benchmark code, trajectory images, GIF animations.

Each project folder has its own README with build/run notes and a pointer to the most relevant files.

Installation Guide

The C++ code uses OMPL and CMake. The Python helper scripts are managed with uv from the repository root.

1. System Dependencies

On Ubuntu-like systems, install a compiler toolchain, CMake, and optional GIF support:

sudo apt update
sudo apt install build-essential cmake git pkg-config imagemagick

Install OMPL separately through your system package manager, source build, or a course-provided install. The CMake projects expect find_package(ompl REQUIRED) to work.

2. Python Environment With uv

Install uv if needed:

curl -LsSf https://astral.sh/uv/install.sh | sh

Create the Python environment for plotting and utility scripts:

uv sync

Run Python helpers through uv run, for example:

uv run python project1/code/code/visualize.py \
  project1/code/code/naive_samples.graphml \
  project1/code/code/correct_samples.graphml

The Python OMPL examples need OMPL Python bindings. If you have a matching wheel, install it into the uv environment:

uv pip install /path/to/ompl-*.whl

The Genesis simulator demo in Project 0 is optional and heavier:

uv sync --extra sim

3. C++ Project Commands Through uv

Use the repository task runner to build and run the C++ projects from the root:

uv run python tools/rbe550.py list
uv run python tools/rbe550.py build project1
uv run python tools/rbe550.py run project1

Build every CMake project:

uv run python tools/rbe550.py build all

Common targets:

  • project0 - build both Project 0 C++ demos.
  • project0-ompl - run the Project 0 image-map planner.
  • project0-spacetime - run the Project 0 space-time planner.
  • project1 - run the disk sampling demo.
  • project2 - run point/square robot RTP planning.
  • project2-benchmark - run the kinematic-chain benchmark.
  • project3 - run the chain-box planner.
  • project4 - build Project 4 car and pendulum executables.
  • project4-car - run the car planner.
  • project4-pendulum - run the pendulum planner.

uv is acting as the project/task manager here. CMake still performs the C++ configure/build step, and OMPL still needs to be available to CMake.

4. Direct CMake Build Pattern

Most project code follows this pattern:

cd project1/code/code
cmake -S . -B build
cmake --build build
./build/diskPlanning

Use the same CMake pattern inside the C++ code folders listed in each project README.

Reports

Repository Hygiene

Generated build products, virtual environments, OMPL wheels, zip submissions, LaTeX auxiliary files, benchmark databases, and cache folders are ignored by git. This keeps the public repository focused on source code, reports, and representative visual outputs.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages