Motion Planning Templates (MPT)

MPT is a C++ 17 header-only library for creating fast, parallel, robot-specific motion planners. In contrast to libraries based on run-time polymorphism (e.g., objects with virtual methods), MPT uses compile-time polymorphism (i.e., templates) to generate robot-specific motion planning code and is geared towards eking out as much performance as possible. This is especially important when running motion planners to solve challenging problems or when using low-power CPUs on battery-powered small robots. (More)


Nigh is a concurrent exact nearest neighbor searching library for robotics-relevant spaces, including Euclidean, SO(3), SE(3), SO(2), SE(2), and weighted combinations thereof. As a concurrent data structure, it supports multiple threads concurrently inserting and querying the data structure with minimal wait time. It is ideal for use in parallel algorithms that require sharing a nearest neighbor data structure between multiple threads. Nigh is easy to install; it is a header-only library so thus requires only copying the header files to a known location. (More)

Steerable Needle Planner

Steerable needles can move in 3D curvilinear trajectories inside the human body, reaching clinically significant targets while safely avoiding critical anatomical structures. Automating steerable needle procedures can enable physicians maximally leverage their steerability and ability to accurately and precisely reach targets. This code efficiently computes motion plans for steerable needles that consider their kinematic constraints and enables them to automatically steer around anatomical obstacles to targets. (More)

IRIS (Incremental Random Inspection-roadmap Search)

IRIS (Incremental Random Inspection-roadmap Search) plans motions that allow a robot to inspect a set of points of interest (POIs), aiming at maximizing the number of POI inspected with the shortest length. (More)

Configuration Space Visualization of 2-D Robotic Manipulator

This educational web application enables the user to visualize the configuration space of a 2-link robotic manipulator. (More)