This is a collection of screen-captured videos of some simulations I have made of various mechanical systems, using the Vortex dynamical systems simulator. The movies are provided in various sizes and resolutions, to support high or low bandwidth connections.
A typical backhoe digger has three joints, a hydraulic actuator for each joint, and an operator control for each actuator. It takes a significant amount of practice to be able to use these controls to drive the shovel along a desired path. Higher end models have a more complex set of controls, whereby the operator has a joystick in each hand, each joystick operating two degrees of freedom of the mechanism. However, the operator is still commanding the actuators of the system directly. (The fourth degree of freedom in this case is the rotation of the whole machine on a vertical axis, not implemented here.)
The simulation models an alternative way of controlling such a machine: the operator specifies the horizontal and vertical velocity of the shovel, and its slope, and a control system translates this into the necessary operations of the actuators.
There are two versions of the movie, suitable for different connection speeds:
To explain what is going on, there is also a commentary on the movie.
The architecture of the control system is the subject of my current research, which I have not yet had the time to write up. It is chiefly remarkable for what is not present: there is no inverse kinematics, no motion planning, no prediction, no learning, and no complex calculations. There is nothing but a set of proportional controllers arranged in a hierarchical fashion. The architecture is robust to changes in all of the parameters defining the responses of the controllers, and the dimensions of the components.
An earlier simulation of a six-legged robot, using a much simpler physics engine, may be found here. It is a Java applet, so anyone can run it; the licensing restrictions of Vortex mean that I cannot distribute the Vortex-based simulations, only movies of them.
Because the basic 3-actuator model works so well, I made a more complicated version with three arm segments and four actuators. Since the operator is still only controlling three degrees of freedom of the shovel, a fourth degree of freedom in the linkage must be controlled in some other way, and I added a controller which tries to keep the angles of the second and third joints equal.
There followed versions with a five-segment or six-segment arm. The increased number of joints results in significantly more elasticity overall, but other than that, they work as well as the three-joint version. The extra degrees of freedom are taken up by controlling the difference between successive angles of the joints to be zero, excluding the first and last joint.
Here are some movies of machines with larger numbers of joints.
This is a simulation of a two-dimensional two-legged robot, with two segments in each leg. (The model is three-dimensional, but its operation is constrained to a vertical plane.) The operator controls the height, sway (left-to-right movement), and slope of the central body section, and the leg joints do what is necessary to achieve the set values.
There are four actuators, but only three degrees of freedom controlled by the operator. The extra degree of freedom is the tangential force between the feet and the ground tending to spread the legs or draw them together. This degree of freedom is controlled by a fourth controller which adds an additional torque to the leg joints in order to maintain the splay force between the feet at zero.
The robot does not yet deal with either of its feet being off the ground.
Another version (not yet pictured here) has three joints in each leg, and controls the two extra degrees of freedom by maintaining the angles of the bottom two joints of each leg equal.