Let's Make Robots!


I really do not know what it does


Your browser is not able to display this multimedia content.

Your browser is not able to display this multimedia content.

If Google video is down, the videos can be found here:

Video 1
Video 2




The I really Do Not Know What It Is Thing!

I just had to do this - One day I may show more tricks with it..



Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Lol - Yes - It could do Disco - and Yes, it could climb stairs, and yes, it is an accelerometer :)

It is just immensely funny to program, I cannot stop playing with it even though I should get moving instead of messing, it does so many different stupid things with the simplest of code. It is like all spasms and all disco ever made is put in a blender :D

It was based on my usual Picaxe 28 board on the video - but I need better servo-control (too much jigger), so now I just ported it to a nice board with a picaxe 18 and a dedicated servocontroller hooked up by i2c. I think the board is called axe21 or something, no time to check :)

It is really quick to make one; It is just 8 servos mounted in a "H", and then an accelerometer and a micro/servocontroller.

I'll teach it some tricks, and shoot some video of it as soon as I get the time! 

/ Fritsl


Hmmm.. Looks like you have the same servo control problem as my biped. I think it's unlikely that my 'bot has Parkinson's disease, so I'm looking for a more mundane cause.

I haven't decided what that cause is yet. At first I suspected that the rising edge of the output pulse was not happening at a regular interval, so I set this output on a Timer1 interrupt. It didn't fix the jitters. Then I though it mightbe the falling edge was not frequent enough, so I removed 15 of the servos (mine controls up to 16) and it still didn't fix it.

Last of all I wondered if the PIC was rebooting due to a current drain. I counted the powerups, storing the result in EEPROM. But that's not it either.

I'm due a complete rewrite of my code. More later. If you get to the bottom of it in the meantime, yell.

God created the integers; all else is the work of man - Leopold Kronecker

Mine is rock steady now.

First; The Picaxe (running at 4 Mhz) had to do 8 servos, and the code for them. That is known to give hiccups that usually does not matter in steering etc - but every jitter matters when the stunt is balancing.

I knew this, but just throw it together, knowing that board so well. The servos just clip on, and so did the accmeter, 1 minute job. I was actually surprised how well it handled it, also with crap code, see video. But.. I would need total servo control.


So I am now using another board (AXE031) with a Picaxe 18 and a dedicated servo-controller by i2c.

That is first half of the fix: Someone to just give out steady pulses.


Second half is the code. I have read what you wrote, and this is hard to write in english for me, so please read twice or something.. :)

You know how every motion gives a kick-back motion? It goes for materials that bend, it goes for motors that continues after they should stop, it goes for joints on a robot that always will be loose, and it goes for the accmeter that first thinks things are one way, then gets a correction from the mechanics, and then thinks it is opposite..

All this means that if the code - even if it is at steady intervals - should never be able to jump a servo´s position from A to C to B.


What I did was to make "a second layer of variables", I call them "pointers":

A servos position is NEVER dictated from "the code", from the sensors, or from an algorithm. These things ONLY alters "the pointers", and always only with a step of 1 (one, uno).


When ever a pointer is changed, it always happens only once in a cycle, and then the servo-controller is updated with the pointer's value.


Result is some sort of semi-average position of what the code & sensor dictates.

You could think this would slow down the response, but:

  • If code dictates A, D, B.. What you really want is A, B, B, as the servo cannot move that fast.
  • The pointer is changed every cycle, so if code dictates full throttle to one direction, the servos speed will be the bottleneck, not the pointer - it will move way faster than the servo.


Last, to really avoid "self-swing" (you know: Oh I am leaning forward, must correct, OMG, I am on my way to fall backwards, must correct even more, OOOHH I AM FALLING FORWARDS) - I "damp the code" all the time:


  • Pointers only are allowed to change if matters get "worse" in respect to "where we are". This means that if we are tipping to the X-side, correction can only take place as long as we are tipping more to the X-side than in last cycle.
  • If we are in fact tipping less, "half a bit" is even added in order to get back.
  • "Sharp tipping over- edges" (Like "on this side of 150 do this, on that side, do that") are avoided, and replaced with Like "on this side of 140 do this, on that side of 160, do that".

*) "Half a bit": I take a bit, and adds it to the vaue. Then I add one to the bit; Every second time the bit is 0/1 :)

/ Fritsl

I understood perfectly your eloquent description on the first readthrough! My software also uses "pointers". The high-level code demands a position and the low level code gets the servo there as a background task. MY "pointers" are called "demanded position" as distinct from "current position". I am working on a version which gradually ramps up the speed instead of just ramping the position. I hope this makes it more smooth.

God created the integers; all else is the work of man - Leopold Kronecker

Maybe you could get it to climb stairs or something... does it use some gyro-sensor-thingie (maybe those small accelerometers you've shown in another of your posts) for adjusting "legs" when you rotate it around?

- Jimmy

The Bee Gee's, song "Stayin Alive" was running in my head when I watched the video. I could see great potential for some bad ass disco moves !

"Stayin alive, Stayin alive .. oh oh oh ooohhhhh Stayin alive"

needs a white jump suit and and some flashy bling.

Great project Frits.

maybe you could get ydm to tap out the tune...