Today I focused on several things:

  • Converted functional code into classes
  • Extracted general purpose pieces like the driver and the module to prepare move sequence buffers into a library
  • Built the rest of the custom code on top of it
  • Made the bot go back a step
  • Made an improvement to how the step is made which increased precision
  • Updated calculations to take the base piece length into account. Next comes turning, and this will become handy.

Here’s an example of how the forward step looks like now:

void Bot::stepForward()
{
  double ss = _stepSize;
  double ds = 2 * ss;
  stepBy(LEG_FRONT_RIGHT, 0, ds);
  shiftBody(ss);
  stepBy(LEG_BACK_LEFT,   0, ds);
  stepBy(LEG_FRONT_LEFT,  0, ds);
  shiftBody(ss);
  stepBy(LEG_BACK_RIGHT,  0, ds);
}

It’s more of a logo language now where even a kid can write programs.

Spent about two hours working on turning. Tried several things and none of the worked. It’s not going to be as easy as rotate this then that. I believe this is the time when I need to take whole body into account, not just standalone legs.

Oh and I noticed that the weight balance on the the body plates mean something. In this design the back side is slightly more loaded and it clearly shows up during motion.

The most recent video: