# Tutorials {#tutorials} Below we include a number of tutorials we believe are useful for understanding how OMPL works, grouped by level of difficulty. Users are encouraged to look at the [demos](group__demos.html) as well. ## Beginner - [Geometric planning for a rigid body in 3D](geometricPlanningSE3.html) - [Setting up state validity checking](stateValidation.html) - [Working with states and state spaces](workingWithStates.html) - [Using existing samplers and creating new ones](samplers.html) - [Visualizing solution paths](pathVisualization.html) - [Benchmarking planners](benchmark.html) - [Optimal planning](optimalPlanningTutorial.html) (see also the [high-level introduction](optimalPlanning.html)) - [Constrained planning](constrainedPlanningTutorial.html) (see also the [high-level introduction](constrainedPlanning.html)) - [Multilevel planning](multiLevelPlanningTutorial.html) (see also the [high-level introduction](multiLevelPlanning.html)) ## Intermediate - [Generic instructions for setting up a planning context](genericPlanning.html) - [Implementing new state spaces](implementingStateSpaces.html) - [Representing goals](goalRepresentation.html) - [Using ODESolver for Planning with Controls](odeint.html) - [Defining optimization objectives for optimal planning](optimizationObjectivesTutorial.html) - [Parallel optimal planning using CForest](CForest.html) ## Advanced - [Adding a new planner](newPlanner.html) - [Creating Python bindings for a new planner](pybindingsPlanner.html) - [Setting up a projection](projections.html)