In my research position with Gill Pratt, I learned about Virtual Model Control. It is a method of control that allows the user to abstract away the complexities of a multi-joint robot. Instead of writing algorithms to control the robot at the joint level, the user can create a control system which acts upon a set of 'virtual' parts. This can make control more intuitive, and it makes it very easy to try different ideas without having to re-adjust everything at the joint level, since that is done automatically.
What isn't done automatically is the initial math needed to transform the virtual part forces into joint level torques. I wrote a script which takes a description of a robot, computes the kinematics, and does the math necessary to make virtual model control possible. This script was written in Python and relied heavily on symbolic math manipulation. I found a script that did basic symbolic operations, but I modified it to include basic factoring, trigonometric operations, matrices and jacobians.
This video was created by my project partner Jeff DeCew as a demonstration of our work. The 'Yobot' acts as if there are springs attached to it. There are virtual springs between it and the ground as well to keep it upright. The spring lengths are dynamically changed during the video to make the robot move. At one point they are turned off and then back on again.