Open Source Contributions
I am an active open source contributor. See below for a highlight of the open source software I have developed or contributed to. Most of this software is available on my personal Github page or the Github organization for the Personal Robotics Lab at Carnegie Mellon University.
I regularly contribute to the
Dynamic Animation and Robotics Toolkit (DART),
a library that provides data structures and algorithms for kinematic and
dynamic applications in robotic and computer animation. I work closely with
Michael Grey and
Jeongseok Lee, the lead DART
developers, to improve DART for motion planning and robotic manipulation. I
am the author of DART's
URI resource support
and was involved in the design behind the
A robot-agnostic Python library developed by the Personal Robotics Laboratory at Carnegie Mellon University to simplify using OpenRAVE in Python scripts. This includes a high-level planning pipeline, helper functions, and visualization tools. This project is a collaboration with many members of the Personal Robotics Lab.
An OpenRAVE planner plugin that uses the Open Motion Planning Library (OMPL) to solve geometric motion planning queries. It includes utilities for constructing an OMPL state space from an OpenRAVE robot, checking state validity using an OpenRAVE collision detector, and converting between OpenRAVE trajectories and OMPL paths. This project is a collaboration with Chris Dellin, Matthew Klingensmith, and Jennifer King.
An OpenRAVE collision checking plugin that uses the Flexible Collision Library (FCL) to perform collision checks. Benchmarks show that this plugin is 2–7× faster at performing binary checks than the ODE collision detection plugin included with OpenRAVE. This project is a collaboration with Chris Dellin and Jennifer King.
An OpenRAVE viewer plugin that publishes the environment as interactive markers for visualization in RViz. The plugin supports both opening an RViz window in the same process as OpenRAVE and, with reduced functionality, viewing the markers in an external process. This project is a collaboration with Matthew Klingensmith.
An OpenRAVE planner plugin for smoothing robot manipulator trajectories under geometric constraints and bounded acceleration. This plugin is based on code originally distributed with the paper "Fast Smoothing of Manipulator Trajectories using Optimal Bounded-Acceleration Shortcuts" by K. Hauser and V. Ng-Thow-Hing. This project is a collaboration with Pras Velagapudi.
I have also released drivers for controlling robotics hardware. Much of this software was developed in collaboration with my colleagues in the Rutgers University IEEE Student Branch or the Personal Robotics Lab at Carnegie Mellon University:
A ROS driver for the Hagisonic Stargazer. This package provides a Python interface for communicating to the Stargazer over RS-232 and a ROS node that publishes all detected markers as ROS messages. This project is a collaboration with Michael Dawson-Haggerty and Pras Velagapudi.
A ROS hardware driver that capture images from hardware-synchronized PlayStation Eye cameras using direct Video4Linux system calls. This package is intended convert two PlayStation Eye cameras into an inexpensive stereo pair.
A ROS hardware driver for controlling the TI MDL-BDC24 "Jaguar" motor controller. This package communicates with one Jaguar over RS-232 and uses its built-in CAN bus bridge to control additional daisy-chained hardware. This project is a collaboration with Cody Schafer.
Hardware Abstraction for VEX (HAX) is a C hardware abstraction layer for the VEX Robotics PIC-18 and ARM Cortex M3 micrcontrollers. HAX provides the first open source development pipeline for VEX robotics. This project is a collaboration with Cody Schafer.