How do I evolve limb motions for a physically simulated walking creature? How does the "Walker's" leg algorithm work?

There are many ways to evolve motions for a simulated robot's limbs. A realistic algorithm might take into account numerous sensor inputs, such as joint angle, limb contact and internal state to generate joint motions. These types of controllers are especially useful when an agent is expected to interact with its environment in more complex ways than simply walking.

Such advanced algorithms are typically not required for simple walking agents however. The technique used in most of the demo breve simulations is to assume that each joint has a sine wave motion as a function of time, as shown in this equation

time = ( controller get-time ).
torque = W * sin( X * ( time + Y ) - Z.

  • W controls the amplitude of the wave by scaling the sine equation
  • X controls the frequency of the wave by scaling the time value
  • Y controls the phase-shift of the wave (relative to other joints in the body) by offsetting the time value
  • Z controls the vertical shift of the wave by adding a scalar value to the output.

    The Walker demo evolves explicit values for W, X, Y and Z. In order to adapt this algorithm for a more advanced simulation, W, X, Y and Z could be computed at runtime using a rule-based system, neural network or other type of custom controller.