I am a post-doctoral researcher in the RISE lab and Prof. Ken Goldberg’s AUTOLAB at the University of California at Berkeley. I hold a Ph.D. in Computer Science from the University of North Carolina at Chapel Hill, where I was advised by Prof. Ron Alterovitz and Prof. Jan Prins; and I hold a B.A. in Computer Science and Asian Studies with Honors from University of California at Berkeley. Between my B.A. and Ph.D., I founded numerous startups and was the principal architect at SuccessFactors, Inc., one of the world's leading cloud-based software-as-a-service companies. My research interests are in robot grasp and motion planning in dynamic environments using cloud-based high-performance computing, optimization, and deep learning.
- “Orienting Novel 3D Objects Using Self-Supervised Learning of Rotation Transforms,” IEEE International Conference on Automation Science and Engineering (CASE) 2020
- “Robust Task-Based Grasping as a Service,” IEEE International Conference on Automation Science and Engineering (CASE) 2020
- “Deep Imitation Learning of Sequential Fabric Smoothing From an Algorithmic Supervisor.” IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS) October 2020
- “GOMP: Grasp-Optimized Motion Planning for Bin Picking” IEEE International Conference on Robotics and Automation (ICRA) June 2020
- “Fog Robotics Algorithms for Distributed Motion Planning Using Lambda Serverless Computing” Proc. IEEE International Conference on Robotics and Automation (ICRA) June 2020
- “Minimal Work: A Grasp Quality Metric for Deformable Hollow Objects,” IEEE International Conference on Robotics and Automation (ICRA) June 2020
- “Dex-Net AR: Distributed Deep Grasp Planning Using an Augmented Reality Application and a Smartphone Camera,” IEEE International Conference on Robotics and Automation (ICRA) June 2020
- “Multilevel Incremental Roadmap Spanners for Reactive Motion Planning,” Proc. IEEE International Conference on Robotics and Automation (ICRA) 2019
- “Motion Planning Templates: A Motion Planning Framework for Robots with Low-power CPUs,” Proc. IEEE International Conference on Robotics and Automation (ICRA) 2019
- “Adversarial Grasp Objects,” IEEE International Conference on Automation Science and Engineering (CASE) August 2019
- “Scaling Robot Motion Planning to Multi-Core Processors and the Cloud,” Ph.D. Dissertation, Department of Computer Science, University of North Carolina, Chapel Hill 2019
- “Concurrent Nearest-Neighbor Searching for Parallel Sampling-based Motion Planning in SO(3), SE(3), and Euclidean Topologies,” Proc. Algorithmic Foundations of Robotics (WAFR) December 2018
- “The Economic Case for Cloud-based Computation for Robot Motion Planning,” Proc. International Symposium on Robotics Research (ISRR), December 2017
- “Cloud-based Motion Plan Computation for Power-Constrained Robots,” Proc. Algorithmic Foundations of Robotics (WAFR), December 2016
- ”Fast Nearest Neighbor Search in SE(3) for Sampling-Based Motion Planning,“ Proc. Algorithmic Foundations of Robotics (WAFR), August 2014
- “Scalable Multicore Motion Planning Using Lock-Free Concurrency,” IEEE Transactions on Robotics, 2014
- “Cache-Aware Asymptotically-Optimal Sampling-Based Motion Planning,” Proc. IEEE International Conference on Robotics and Automation (ICRA), Jun. 2014, pp. 5804–5810
- “Parallel Sampling-Based Motion Planning with Superlinear Speedup,” in Proc. IEEE/RSJ International Conference on Intelligent Robotics and Systems (IROS), Oct. 2012, pp. 1206–1212.
- “Dynamics Modeling and Culling,” IEEE Computer Graphics and Applications, March/April 1999, pp. 79–87.
- “Efficient Dynamics Modeling for VRML and Java,” in Proc. 1998 Symposium on the Virtual Reality Modeling Language (VRML98), 1998, pp. 15–24
“Nigh”—concurrent exact nearest neighbor searching in C++17 (github)
“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.
Motion Planning Templates (MPT) (github)
MPT is a C++ 17 header-only library for creating fast, parallel, robot-specific motion planners.
Math routines for Robotics in Java (github)
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.
ROS interface in Java (github)
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.
Parallel RRT* in C (github)
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)
Parallel RRT* in Java (github)
A Java implementation of PRRT*. See description on C version.
A Clojure library designed to provide GraphQL implementation.
OWASP Java Encoders
The Open Web Application Security Project (OWASP) Java Encoders are a set of high-performance encoders for contextual encoding to avoid cross-site scripting (XSS) vulnerabilities in web applications.
- “Streaming insertion of tokens into content to protect against CSRF”, US Patent 8,438,649, filed Apr 16, 2010, and issued May 7, 2013 ,
- “Database forms with attached audit history”, US Patent 6,070,177, filed Mar 6, 1998, and issued May 30, 2000 ,
- “Scripting language for distributed database programming”, US Patent 6,243,711, filed Mar 6, 1998, and issued Jun 5, 2001 ,
COMP 781, Guest Lecture, Mar 5, 2019: This is a graduate level robotics course lecture on scaling motion planning computation to multi-core processors and the cloud. It presents the computational potential of multi-core processors and parallel algorithms that can scale to use that potential.
COMP 581, Guest Lecture, Oct 2, 2018: This is an advanced-undergraduate/graduate-student robotics course lecture on highly parallelised motion planning and the data structures that enable them.
COMP 110, Summer Session I, 2016: COMP 110 begins with the fundamentals of programming a modern computer. This runs the gamut from small embedded devices, to smart phones, robots, web servers, and super computers. Students get the tools needed for programming installed and running on their computers. The course covers programming basics, such as expression, input/output, and flow control. It introduces program design, structuring, and reuse concepts, including object oriented programming. The course also covers introductory data-structures and algorithms, along with their design and implementation.