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.
DART
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 Skeleton
ownership
semantic,
MetaSkeleton
concept,
ShapeNode
concept,
and CollisionGroup
implementation.
OpenRAVE Software
I have released several open source OpenRAVE plugins. Most of these plugins were developed in collaboration with my colleagues in the Personal Robotics Lab at Carnegie Mellon University:
-
prpy
- Python utilities used by the Personal Robotics LaboratoryA 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.
-
or_ompl
- OpenRAVE bindings for OMPLAn 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.
-
or_fcl
- OpenRAVE bindings for FCLAn 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.
-
or_rviz
- OpenRAVE bindings for RVizAn 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.
-
or_urdf
- OpenRAVE loader for URDF and SRDF filesAn OpenRAVE plugin for loading URDF and SRDF files into OpenRAVE. This project is a collaboration with Pras Velagapudi.
-
or_parabolicsmoother
- OpenRAVE plugin for smoothing trajectoriesAn 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.
Hardware Drivers
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:
-
stargazer
- Hagisonic Stargazer DriverA 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.
-
fieldforce_tcm
- PNI Fieldforce TCM DriverA ROS hardware driver for the PNI Fieldforce TCM digital compass. This project is a collaboration with Cody Schafer.
-
stereo_webcam
- USB Webcam Driver for Stereo VisionA 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.
-
jaguar
- Jaguar Motor Control DriverA 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.
-
hax
- Hardware Abstraction for VexHardware 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.