# What is a good approach to a Quadruped Gait?

I have a small quadruped with three degree of freedom legs which I have been working on: 3DOF Mini Quadruped.

My original code for it was a simple servo controller on the arduino, and Scala code which would send servo commands over the wire. I did all the Inverse Kinematics and Gait logic in Scala, and got it to walk: 3dof quadruped first gait.

My Gait logic in Scala was somewhat naive; it depended on the legs being in the right position at the beginning (one side extended fore and aft, the other side in toward each other). The logic was simply translate all four feet backward by 1mm along y, and whenever a coxa angle became excessively rearward, stop and perform a little routine where that foot is lifted 10mm in z, then translated forward 60mm along y, and set back down. Naive, but effective.

Now, I have rewritten my IK code in arduino C, and I'm trying to decide how to move forward with the Gait dynamics. I've had a hard time finding good, easy to understand resources about gaits. I do have some knowledge about the difference between dynamically stable gaits (like creep gaits) where the body is a stable tripod at all times and dynamically unstable gaits (walking, trotting), where two legs are off the ground at a time and the body is essentially falling forward into the advancing leg.

I had some thoughts about state machines and trying to calculate whether the body center falls within a triangle made by the remaining feet to decide which foot was safe to lift, but I'm not sure if these are ideas worth exploring.

I know this is kind of an overly general question, but I'm interested to see how other people have attacked this problem, and about all I've been able to find are research papers.

• I'm impressed by the work you had done on the robots. I'm in dire need of your help to seek some valuable solutions. I've been seeking solutions for the last 6 months to solve the kinematics of the hexapod with no positive results.. I managed to find equations for all of the servo angles with the body parallel to the floor, but unable to do so with the body tilted to one side. Appreciate if you would be able to help :-) Regards Gary
– user2350
Dec 8, 2013 at 19:12
• Welcome to R.Se @user2350 - please don't ask supplemental questions (no matter how related) as answers
– Andrew
Dec 8, 2013 at 21:23

## 1 Answer

The gait you've got is actually not too bad, although the feet don't have enough traction, so it's hard to see how good it really is.

I'm not sure about your terminology of dynamically stable gaits. As I've always understood it, the two tripod style gait is known as a statically stable gait, while a good walking biped like Petman uses a dynamically stable gait. Never heard of a dynamically unstable gait. That sounds more like drunkenness.

Two legs on the ground is probably the lower limit for this design of robot. Generally, it's easier to make this work with tall, humanoid robots, which take a long time to fall over. Wide flat robots need to lift and place their feet pretty quickly if they aren't leaving many on the floor.

But how to develop a gair for your robot. Firstly, you should decide what you want to achieve from the gait. Are you looking for maximum speed on a flat surface, or maximum stability on uneven surfaces?

If your goal is stability, then I certainly think it's worth having the robot be aware of its centre of gravity in relation to its feet. To help it know this, it might even be worth adding some force sensors to its feet so it can calculate this easily.

If your goal is maximum speed only, then I'd simply concentrate on funding an optimum gait pattern. This is harder to do. There are two good ways to approach it:

1. Modelling. Create a comprehensive computer model of the robot, including mass, stiffness, torque, etc. Use this model to fully understand the dynamic behaviour.

2. Trial and error. You can do this the hard way, programming in random gaits, adjusting them on a hunch and measuring their performance. Try making it walk both forwards, and diagonally. Or you can use a genetic algorithm to help you automatically search for better gaits. The difficulty of using a GA is that you need to have some way to automatically measure the performance of the gait.

A third way, is to make the robot into a scientist who runs concious experiments on itself to validate hypotheses about itself, and work out how to walk, like Cornell University's starfish robot.