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?
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!
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
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).
AND
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 :)
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
That was just jitter from when i had crap code and not a dedicated servo controller. But hey - that kind of things can be inspiration.. possibly for later.. :)
Get 8 standard servos, and one of these You do not need the accele-I-cannot-spell-tat-meter to make tons of tricks with it. And the rest is just sticks, bolts and glue!
I must show some more tricks this fella can perform some day soon. Am too busy with project Wall Racers at the moment :D
I will give you my code and everyting, help etc :)
well, I think the most interesting part of the job is the accelerometer, so I won't renounce to it...
right now, I'm working on upgrading my "War Pig" but as soon as I have some free time I'll sure do something like that... I really like self-balancing robots ^^
The Bee Gee's, song
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...
Hey looks nice!
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
Lol - Yes - It could do
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
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
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).
AND
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:
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:
*) "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
Sudden start/stop
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
very nice, i loved the
How about making it walk? Or
How about you build one and
How about you build one and make it do that :D
/ Fritsl
That's awesome :) Is that a
That's awesome :) Is that a 2-axis accelerometer, or 3-axis?
Dan
2, but so far I am only
2, but so far I am only using 1 :)
Thanks,
/ Fritsl
Hehehe! What a question! Who cares??
Seriously, though. Which accelerometer did you use? Did you get
freebiesengineering samples?God created the integers; all else is the work of man - Leopold Kronecker
well that was quite a random
OMG, the second video is so
He he - it look so cool
He he - it look so cool especially in the 2nd movie. Is the jerking of the left arm as he stands op intented or just some servo jitter?
That was just jitter from
That was just jitter from when i had crap code and not a dedicated servo controller. But hey - that kind of things can be inspiration.. possibly for later.. :)
/ Fritsl
I love this robot...
I want one.
Make one, it is extremely
Make one, it is extremely easy!
Get 8 standard servos, and one of these You do not need the accele-I-cannot-spell-tat-meter to make tons of tricks with it. And the rest is just sticks, bolts and glue!
I must show some more tricks this fella can perform some day soon. Am too busy with project Wall Racers at the moment :D
I will give you my code and everyting, help etc :)
/ Fritsl
I will!
well, I think the most interesting part of the job is the accelerometer, so I won't renounce to it...
right now, I'm working on upgrading my "War Pig" but as soon as I have some free time I'll sure do something like that... I really like self-balancing robots ^^
All righty then!
Sure - just do it here
Sure - just do it here online, so more people may benefit :)
I am planing a walkthrough as well, but have much to do :)
OK!
This is totally wicked!
this is one of the coollest
this is one of the coollest and funny bots i´ve seen!!! ;]
that's pretty cool, frits.
that's pretty cool, frits.
My cat can do a trick somilar to the second video, but I do not have any idea how she does it. :)
Duane S
Wilson, North Carolina USA
Nice
Im impressed, its soooooooooo cool!
I think you should make a walkthrough, because i want to build one.
Thanks :) One day I will
Thanks :) One day I will teach it some more tricks, and do more with it. Have been thinking about entering it in the olympics challenge :)
There is almost a walkthrough if you look at the "Url for more information", very top of this page :)
That's awesome! Wow!
Reminds me of those Gymnist