Transitioning Sequencer
Using Static Frames for
Biped Control
by Daniel Albert
My first impression of a Robo-1 style biped was one of
amazement. It walked, performed tricks, and could
battle in competition.
WOW! So, I bought a Kondo KHR-1, spent many hours
building it. And there it was. Now what to do with it!?
I programmed in moves I downloaded from the Internet
and impressed my friends. I created new moves and
sequences and taught it to climb a small staircase. (Not very
easy for movements based on static positions!) Out of the
box, the robot needed to be tethered. There was a kludgy
remote available from Kondo, but I opted not to buy that.
I’ve been a programmer since the late ‘70s, so, of
course, I had to try to improve the interface. I spent the next
few months hacking the communications protocol and wrote
a PDA remote controlled WiFi interface. That’s when
the disappointment hit. The robot could only run
pre-programmed sequences of static frames. If the surface
was tilted, the robot fell over. If the surface was rough, the
robot fell over. Drat!
As with most technical things, there are always
innovations. The Hitec RoboNova soon came along. It was
programmable via an onboard RoboBasic interpreter.
Optional gyros even helped stabilize its movements.
COOL! So I bought a RoboNova, spent many hours
building it. And there it was. Now what to do with it!?
I programmed in moves I downloaded from the Internet
and impressed my friends. There was also a decent PC
program for creating new static positions. So, like most
other RoboNova hobbyists, I built RoboBasic programs. It
even had an “out of the box” I/R TV style remote. But the
general limiting algorithm was the same:
• Receive a command from the remote control.
• Run a sequence.
• Loop.
I wanted to make the robot walk more like a human.
Rather than just run one sequence after another, what I
really needed were dynamic movements. However, most of
76 SERVO 12.2007
the math involved is beyond the people reading this article,
including myself. Not to mention that the RoboNova only has
an Atmel ATmega128 MCU running at 7 MHz.
I decided to develop a better static model frame
sequencer. One that can transition sequences when common
frames exist in both. First, I tried to do this in RoboBasic. I hit
so many limitations with the compiler that I gave up and
wrote MOOSE (My Own Operating System Executive) to
replace the RoboBasic operating system (kids, don’t try this
at home). Yet, I want to point out that a clever Basic
programmer can still make this design work.
And now a pearl of wisdom:
“Define your task and build the database prior to writing
any code.”
A wisely designed database set ultimately reduces the
amount of code needed to perform a given task. Below is a
list of the features and record type definitions included in the
MOOSE sequencer database.
1) Use the vendor’s existing static position builder program.
2) Communicate with existing programs.
3) Have variable length sequences.
4) Allow adjustable velocity between frames.
5) Point-to-point servo movement between frames
6) Independence of footedness, play left footed or right
footed.
7) Symmetry flag, indicating a frame is identical left footed
or right.
8) Play a sequence forwards or backwards.
9) Hold at critical places in the sequence momentarily (for
stability).
10) Transition sequences at closest similar frame.
11) Auto-repeat sequences, if desired.
12) Change footedness of sequence on auto-repeat, if
desired.
13) Change direction of sequence on repeat, if desired.
14) Work with my wireless serial based PS2 style controller.