At UBC, I was a member of the CanWheel team, and my master's thesis was in shared control with application to robotic wheelchairs! CanWheel was an interdisciplinary research program involving 18 principal investigators across 7 Canadian institutions. Our mission was to improve mobility of older adults by both improving the way powered wheelchairs are used, and bringing powered wheelchairs to a wider audience than ever before.
I dealt specifically with planning under uncertainty. We adapted an algorithm for non-smooth, non-convex optimization, and used it to improve the safety and smoothness of a robot's actions. This work was also published as a paper in CDC 2016.
Learning the Hyperparameters of Human Movement
This was a course project for Machine Learning with Mark Schmidt. I focused on a subproblem of the crowd navigation problem below: crowd prediction. The project addressed two shortcomings: (1) problems in training Gaussian processes to predict human movement, and (2) problems in evaluating crowd prediction algorithms (it's not at all clear how to measure the performance of a prediction). I implemented an entropy metric (from a recent paper) to fairly compare the performance of different crowd prediction models. Then I implemented various novel methods for training the Gaussian processes. By using the entropy metric in a cross-validation process, I was able to determine the best method for training the GPs, as well as gain further insights into my crowd prediction algorithm.
Robot Navigation in Dense Human Crowds
This was a project for my Industrial Robotics class with Junaed Sattar. The goal of this project was to reproduce the method presented in an IROS 2010 paper entitled "Unfreezing the Robot". This was a very unique approach to mobile robot navigation which modeled both the robot and the human pedestrians using Gaussian processes. The GPs are engineered in such a way as to resemble human (and robot) motion. By themselves, they generate plausible human-like paths. When taken together into a joint probability distribution, they generate a collision avoidance scenario which could plausibly unfold in the near future. The method was validated on an annotated video of pedestrian crowds. At the project deadline, my method had some bugs and was not very efficient, but it still worked reasonably well.
matLearn Gaussian Mixture Model
This was a coding project for Machine Learning with Mark Schmidt. The class collaboratively implemented a brand new Matlab toolkit for machine learning, called matLearn. Each student was assigned a different machine learning algorithm to implement, such as logistic regression or decision trees. I chose Gaussian Mixture Model, a fairly advanced model with wide applicability. This involved implementing the famous Expectation-Maximization algorithm with a demo and some other nice features.
Object Sensitive Grasping
This was a project for my Sensorimotor Computation class with Dinesh Pai. We used a Barrett WAM arm and hand with tactile pressure sensors to grasp a variety of objects. The objective here was to adapt the shape of a robotic grasp based on previous grasping experience. We attempted to recognize objects by their tactile features alone, so that we could remember which grasps worked well for different types of objects, and build a database of stable grasps in this way.
However, we could never get past the recognition stage. We attempted to use a simple feed-forward neural network to recognize the grasps. The network was trained on raw sensor data from the tactile sensors and force-torque sensors. Despite having good performance on the test set, it could never recognize well in practice. Having a bit more experience in machine learning now, I would attempt to engineer a feature vector from the tactile data rather than attempting to learn from raw pressure readouts. Another alternative would be to apply deep feature learning, but that would require much more training data.