Path Planning on Constraint Manifolds

In this programming assignment, I implemented the Rapidly-exploring Random Trees (RRT) path planner for the Franka robot. I also implemented planning with constraints using Projection Sampling.

I coded the RRT algorithm to move the robot arm from initial position to target position with collision avoidance, the video for which is below (unconstrained planning):

It is noticeable in the video above that the end-effector of the robot undergoes significant rotations. This may not be desirable in real-world scenarios; for example, if the robot is grasping an object, we may wish the object to remain upright. Hence I improved the existing planner to include constrained planning via constraint projections to keep the end-effector in the vertical orientation. I incorporated gradient descent to project a given joint configuration towards the constraint manifold until a certain threshold was reached. There was some non-trivial effort in tuning hyperparameters such as the constraint threshold and the gradient step size in order to optimize the planning process.

A video of the Franka reaching the target position with its end-effector in the vertical configuration is below (constrained planning):