Hi - I recently built a robot that employs 6 3-DOF legs for motion. I
designed the hardware so that two motors serve essentially as a 2DOF
ball joint at the base of the robot, while the third motor acts as a
sort of knee.
Today I got working a very simple tripod gait for forward movement. It
would be simple enough to switch this over to backward movement as
well. My question is this: are there any standard algorithms for
walking in circles? What about turning in place? Thanks!
Have you been able to ratio your stride to some unit-length?
Have you been able to rotate your steps to a vector from the center of
We've used a RF Joystick controller (PS-2) to control our walker. It
steps shorter or longer depending on the amount of deflection from the
center on the joystick. It also steps out in any X/Y direction according
to direction of the joystick
Turning in place is easier than walking in circles. For a crude turn in
place, you can just reverse the sweep direction on the other half of
your tripod gate. Half the legs go forward, half backwards.
If you can scale your stride, the turn will be improved by ratioing the
length of the stride to the distance from body center. It's easier if
the hexapod is round, since that is unity for all legs.
Walking in a circle is much more complicated. You have to do a ratioing
and rotation for each leg. Essentially the problem is much like Ackerman
steering. All the legs must inscribe an arc which goes around a central
point, so each leg will have a different radius. Stretching the gait
will give a crude approximation if the turn point is outside the body of
When refined, both turn about a point and turn around a circle become
the same problem. When the point of turn is far from the bodies, the
legs movements are just slightly different by stroke lengths. When the
point of turn comes closer and is placed under one leg, its ratio is
taken to zero, and makes no stroke at all. Once the turning point is
inside the legs, some leg's stroke will begin to extend out again in the
negative direction. When the turn point is in the center of the robot,
one set of strokes are full unity positive, and the other set full unity
I don't know about standard algorythms, I haven't ever seen any. I
worked all these above points out myself.
Well, that video shows much more than I was talking about above here,
so, credit where credit is due. The basic gait structure you see in the
video was worked out by Mike Keesling on his robot called Mamby, and
was presented in an article for N&V iirc.
The issues of turning I discussed about were the points I worked out and
added to my robot starting on the base Mike built. Credit goes to Mike
for the idea of stretching and rotating gaits for linear walking in any
direction. I've worked pretty hard trying to improve his base walking
gait, perhaps I've speeded it up a bit, I added the turns, but haven't
made much of a dent in extending the basic ideas of gait control he laid
I also have a hexapod with 3 degrees of freedom/leg. I have employed a
static tripod translation gait that can be used in any direction along
with a static tripod turning gait which works much the same way.
For an inline hexapod design, the difference between a basic
translation and turning tripod gait is the direction the 3 legs on the
ground on opposite sides travel (I guess you've probably worked this
out) which you can do crudely with a 2-DOF design as well..
If you're using linear algebra to control your robot walking you might
be able to combine a turning and translating gait so you can get your
robot to walk in an arc or do somthing fancy. Their is a neat hexapod
at this website http://hexapod.lindquists.se/ you might want to look
The robot I've built walks in an arc by using a static tripod
translation gait with a constantly changing direction vector (I haven't
actually made this a function as such because I dont see a use for it,
but it could easily be done). This might be an idea if you want to walk
in an arc without actually turning the robot. Take a look at the last
video on http://mikael.geekland.org/ where I walk the robot kind-of in
a big circle...
Yesterday I ended up implementing something alot like what you're
talking about, I believe. I set up two signed int arrays forward and
right. Thus for each leg I can set how much I want it to move
forward/back and right/left. In this way, by writing to this array, it
is quite simple to tell it to move forward, move sideways, or even turn
in place. It's working amazingly nicely.
Now on tosome more interesting programming stuffs.
Polytechforum.com is a website by engineers for engineers. It is not affiliated with any of manufacturers or vendors discussed here.
All logos and trade names are the property of their respective owners.