Did some experimenting with bluetooth and bandwidth, by
creating a BT server that receives 40-byte packets and
replies with 40-byte packets, similar to what the Gumstix is
doing on my biped, but without any actual processing. My
hope was to get more bandwidth by using a raw bluetooth
socket instead of building on top of the bluetooth serial
port profile, but alas, the SPP overhead is apparently
negligible.

I can up the packets to 80 bytes and still get 60 frames
per second between my desktop and my laptop, but on the
gumstix I am stuck at about 15 fps even with the raw socket
approach.

On a related note, one of my Gumstix is booting Windows
CE now, so the above testing was all done with C#.
Unfortunately, debugging requires either USB or ethernet and
my biped has room for neither, so I need to figure out a way
around that (ActiveSync over bluetooth?) before I reflash
the Gumstix in the biped to boot CE as well.

Currently the CE-on-Gumstix stuff is only usable by
people with Platform Builder (Microsoft's CE development
suite), which is pretty expensive. But with any luck, that
will change in the not-too-distant future.

Turns out I didn't kill the servo controller after all. Far
as I can tell, it
was just getting confused by the ~3 volts leaking through the
voltage regulator while the Gumstix/Robostix combo booted.
I guess by the time the Gumstix turned on the Robostix
voltage
regulator, the servo controller had given up due to the
brown-out. The more
recent Gumstix boot loader turns on the voltage regular
almost immediately, and the servo controller is happy.

The gyro/accelerometer board isn't mounted
yet (hence the open space above the battery pack), and I
want to move the battery cells out to the
arms, and there's a big mess of wires hanging out the back,
but the pile of parts looks
like a robot again. It's just hanging from the test
stand in those pictures, but
hopefully it will stand on its own before too long.

I put my biped back together, and got all of the servos
moving (just one at at time) via bluetooth, and they I
killed the servo controller right before Robothon. The new
servo controller got here last week, but I want to re-do the
power distribution before I install it. It would be nice to
be able to turn the servo controller on and off from the
Gumstix (and maybe the servos themselves too). I'm still
thinking that over...

Question for Bram V:

How does Lucy balance laterally? I can't see any
side-to-side weight shift - is the lateraly movement very
small, or is Lucy's top end attached to something? Great
video by the way, the leg movements are very smooth.

It was a bit of a struggle to get bluetooth working right on
the Gumstix, and it paid off. The Gumstix forms a bluetooth
personal area network with my laptop when the Gumstix boots,
so I can SSH into it for administration and monitoring. The
laptop can also open a serial connection via bluetooth to
send commands to the Gumstix, which forwards them to the
servo controller. I don't even have to be in the same room. :-)

The robot is spread out all over my workbench as I write
this, but it's almost time to put it back together again.

I've finally started construction on a biped - something
I've been wanting to do for years but never quite got around
to doing. It's a made of Lynxmotion servo brackets and
laser-cut polycarbonate, and the overall shape was
inspired by ED-209.
However my "ED-1" uses no linear actuators in the legs, and
will probably have longer arms, though I haven't yet made up
my mind about that. I think I'll be departing from the
ED-209 form factor in order to add an extra degree of
freedom to the arms.

The legs, hips, and torso are built; the arms should be
done by the end of this week, the feet will follow in
another week. I have no pictures (as usual) but a couple
people took photos at the Seattle Robotics
Society meeting yesterday and if those images find
their way onto the web I'll link to them from here.

The dead hard drive I mentioned in my last entry turned
out to be not much of a tragedy. I booted to Linux, mounted
the drive as a file, then copied the raw data to a good
drive. Then
Googled for "GPL" and "FAT32" and found some tools... After
fixing some corrupt data on the boot sector, I was able to
recover about 90% of the data from the dead drive - and as
far as I can tell, the other 10% was completely unimportant.

I have backups for the really important stuff, but I have a
sinking feeling that there's a "long tail" of stuff that
wasn't quite important enough to back up religiously... but
which, in aggregate, adds up to a lot of lost work. Only
time will tell.

Have been learning about Kalman filtering in hopes of
providing my robot with a good sense of balance... In case
anyone else is interested in learning about Kalman
filtering, here are
the best links I've found so far. These are not the most
in-depth, but they are (far as I can tell) the ones with the
best "plain english" description of what all the formulas mean.

This one presents Kalman filtering of scalar values, rather
than vectors, which cuts down on the greek notation but
preserves the key concepts. The second link explains how
the scalar version is extended to work with vectors:

After a couple nights of reading these papers, the light
bulb suddenly went on... I get it! At least, I think I do.
I'll find out soon, as I just ordered a SparkFun 6DOF IMU, so I
should soon have some signals to filter.

I have to plug
Sparkfun here because this product appeared on their web
site just a couple months after I proposed the idea in their
online forum. I beg, they build, I buy. I wish more
companies worked that way. :-)

The software is coming along nicely, but defining a
single sequence of operations (for example, the stand-up
routeine at the start of each video) is more trouble than it
should be. It might be nice to have the state machine system
interpolate from one pose to another when transitioning from
state to state... I still need to think on that for a while,
but it seems promising.