Ph.D. Computer Science
Computational Robotics Research Group
My research focus is on applying cloud-computing and its readily available massive computing power to accelerating complex motion planning problems. This is particularly valuable in extending the lifespan and capabilities of power-constrained and mobile robots. I make use of high-performance computing techniques to accelerate motion planning on the cloud and in multicore CPUs onboard robots.
"Nigh" is a nearest neighbor searching data structure that supports highly concurrent inserts and queries. It supports Euclidean, SO(3), SO(3) and weighted combinations thereof.
MPT is a C++ 17 header-only library for creating fast, parallel, robot-specific motion planners.
This is a collection of math routines that are useful in the context of robotics in Java. They are highly performant, in many cases once the code is JIT compiled, it is able to match C++ performance. This library utilizes a reuse pattern that also helps minimize the impact of garbage collection.
This Java-based implementation of the networking protocol in ROS allows Java programs to interact with robots using only software pulled from Maven repositories--setup is thus minimal, and it is thus quick to get started interfacing with robots.
An implementation of Parallel RRT* (PRRT*) in C. It demonstrates how to concurrently update an RRT* graph from multiple threads running concurrently using lock-free atomic operations. Because of the low overhead of mutating shared memory structures, it typically demonstrate linear speedup with additional cores. In some cases, partitioning the sampling can lead to super-linear speedup. (See “Scalable Multicore Motion Planning Using Lock-Free Concurrency” in publications)
A Java implementation of PRRT*. See description on C version.