# Gait Generation for Underactuated Hybrid Systems

Robots that move often follow a prescribed periodic trajectory for each of its joints, which defines a gait for the robot. A major challenge in automating the process of generating gaits for underactuated systems is finding the right combination of state variables and control/design parameters that will yield a periodic gait (as depicted as points in a state-time-control space in the image to the right). For many gait generation algorithms, the user has to input a guess for these values. In our work, we eliminate this guesswork by using continuation methods. Continuation methods are useful algorithms for exploring the behavior of the system as its parameters are varied.

By itself, a continuation method suffers from an even worse version of the guessing problem as it needs an actual gait before it can find more. We get around this restriction by using "trivial" gaits, like equilibria, as templates (red dots) and use continuation methods to “trace” their connected component until we find a branch of nontrivial gaits (green and blue dots).

Below, you will find example systems where we have used equilibria to generate nontrivial gaits using continuation methods. We also have a freely available library (for non-commercial purposes) that will allow you to replicate our results and apply our framework to your robot.

## Generating Gaits for Multi-degree-of-freedom Bipeds

We present an automated method for generating gaits for multi-degree-of-freedom bipeds that takes advantage of the walker’s "natural" dynamics, namely the use of gravitational forces to help propel the swing leg during a step. In this paper, we take a step toward solving this problem for physically-symmetric, planar bipeds. The following video summarizes the main results of the paper.

Many of the biped models described in the paper can be found in the walkers folder of our code described below.

## About the Library

The library is written in Mathematica 10. It is capable of simulating constrained mechanical systems using spatial vectors to compute the forward dynamics, impacts, and their derivative with respect to the initial conditions and a finite vector of user-defined parameters. The code can be significantly sped up if an external C compiler is present on your system. Because C compilers are free and Mathematica provides good built-in support for many C compilers, our library assumes that a compiler is available and has been properly setup in your version of Mathematica.

Our library can be found at this link: https://github.com/nxrlab/continuation.