This project was completed to satisfy MIT's Thesis requirement for a Masters of Engineering degree. The goal of my thesis was to develop an algorithm that could make small adjustments to a robot's planned trajectory in real time when dealing with unstructured dynamic environments. When in a dynamic environment, such as working with humans, a robot's planned path may become invalid due to a collision. A robot may need to generate several new paths to complete one task which may be infeasible due to time constraints. The reactive trajectory adjustment algorithm solves this problem by making small adjustments to the original path (if possible), which will be much faster than always generating new paths.
The reactive trajectory algorithm uses an incremental adjustment approach that can make minor adjustments in response to collisions or goal changes.
The two biggest contributions from this algorithm are the reaction vector computation, and the pose adjustment algorithm.
The general algorithm is as follows:
To make a collision adjustment, the following algorithm is used:
The goal adjustment is very similar to the collision adjustment, but rather than adjusting multiple pose, only the goal pose is adjusted and the rest are interpolated from the new pose and previous poses. This gives a general idea of how the robot will execute a plan and make adjustments.
The reactive trajectory algorithm was developed and tested in C++ with the OpenRAVE robotic simulation environment. The videos to the right were recorded from OpenRAVE and show two of the sample scenarios. The goal of the algorithm was to not only make correct adjustments, but also be significantly faster than traditional planning. The speed of the algorithm was compared with Bidirectional RRT (BiRRT), a commonly used planning algorithm. While BiRRT usually took 1.5-3 seconds, the reactive trajectory adjustment algorithm always took about a quarter of a second. This is significant not only because it is much faster, but is also far more consistent. Most of the scenarios tested were rather simple, whereas a complex scenario may take minutes to create a plan with BiRRT, and each re-plan will take the same. Whereas with the reactive trajectory adjustment algorithm, each re-plan should still be on the order of a quarter of a second assuming the adjustments needed are relatively small.
For a more detailed explanation of the algorithm, and results, please refer to my thesis linked above through MIT.
Pole Collision Adjustment: This video shows the WAM robot simulated in OpenRAVE. The original trajectory shows the robot colliding with a pole-like object. The robot uses the reactive trajectory adjustment algorithm to avoid the collision with the new trajectory.
Goal Adjustment: This video shows the WAM robot simulated in OpenRAVE. In this scenario the robot is tracking an individual cup until it goes out of range, and then selects a new cup to track. This shows another use of the reactive trajectory adjustment algorithm rather than just collision adjustment.