I’m now very proud to present Balancing Phoenix!
Here are two pictures of Phoenix balancing her body while lifting one leg on top of some 5645 Hitec boxes
Another angle of view:
I’ve modified Xan’s code alot lately… Yesterday I spent 9 late hours with the code, mostly frustrating debugging and thinking. Today I finaly got it all to work! I’ve implemented a Balance Mode that take care of balancing the body in all dimensions (XZY) translate and rotate. This is similar to Matt Denton’s balance gesture.
The pictures show Phoenix RC controlled when I remotely move her leg on top of the boxes.
Now Phoenix can walk with three different gaits (tripod, quadripple and wave). I can anytime switch between normal walking and balance walking (similar to Matt Denton’s p.brain walk engine). I’ll see if I can post a demonstration video soon. This is so cool! it’s almost like she becomes alive!
I won’t post the code before I’m 100% satisfied…
I think this latest feature makes The Phoenix Hexapod a very unique product, especially combined with precalculated moves (PEP + GP player).
I think that the balance ability is a major improvement and a key feature when it comes to terrain adaption. So far I’ve been impressed of what is possible with the Basic Atom Pro, but I think terrain adaption might be too hard for it. But we have to try!
That’s totally an awesome piece of work. I believe, that’s the best presentation of hexapod gaits, I have ever seen. The single leg balancing is fantastic. It really looks as if the bot is sensing its environment.
The fluidity in the gaits is really an impressive work. It deserves appreciation. Best of luck with your future goals.
I’ve got nothing to say, this really looks so cool! I hope you are willing to share your genius founding’s again. I can’t wait to try it out!
not had time to try any of the code you guys have been creating as my Phoenix is currently sporting one of matt denton’s MMS SMB, pBrain and HexEngine boards with a Sena EDS200 bluetooth module - which is working really well. I’ll post some video of her in action at some point soon
But if i get chance (any one got ideas to add a couple of extra days to the week and hours to the day?) i’ll build up a second SSC-32/BB2 based hex and look forward to try the code out myself.
Thank you all for your kind words! It mean alot for me.
I still have some new ideas that I want to try out, but it’s hard to find enough time…
I also promised you a tutorial for how to modify a RC tx, not done that yet…
Yeah, i noticed you moved to “the other side…”
I’m looking forward to see a video of her with another brain… Always interesting to see the results of Matt Denton’s work. As for many of us his hexapods has inspired me VERY much.
For some days ago I captured a little video of Phoenix doing some ordinary walking when varying leglift heights combined with balance mode. An the goal of this video was to demonstrate the new GP ONCE command. Thanks to Mike it is now possible to run a simple sequence ONCE, starting with the first step and ending with the last step.
In this video Phoenix uses a simple sequence to shift body pose. One funny thing I discovered when shifting pose (you also need to change the XXPosX and XXPosZ for all legs when doing a pose shifting) was that Phoenix started to walk by herself in balance mode. The reason was that the spesial pose was always in unbalance (not symmetric). But that was simply solved by a little variable.
BTW, you can hear my kids in the background taking a bath…
is this some dancing gait ? …looks really smooth and realistic.
totally awesome work!
zenta, add some vision to the bot, and yes a multi-DOF arm+gripper to interact with the environment and a multi-DOF tail with a laser pointer to track down an object, thus making it the ultimate hexapod existing on the planet
Thanks!
The “dancing part” is caused by the balance mode
If you are refering to my quote about the simple sequence to shift body/leg pose, that’s when Phoenix places her legs in another position before walking again. I’m using a simple transition sequence made with PEP to do that.
LOL, if you’ve read the latest Robot Magazine you’ll see that’s almost already done. Ref the Chiara robot, this video.
But I’ve barely been thinking of vision. I’ve just read Harry Muellers article in the Robot Magazine about the SRV-1Q. I don’t know what kind of camera system I should try either, some object/face tracking ability would be cool!
Any suggestions are welcome!
I’ve been thinking for a while about a gripper… But that’s for my next ant - hexapod project… (just in the “thinking phase” yet).
Great work but you have to help me out here… You use the ONCE command to set the legs or body in a different position (using SSC/GP) and then you start to walk (using ATOM). It may be a stupid question but what is the benefit of doing that in the SSC? You could also change the init positions of the legs in the ATOM. Or use the body variables in the ATOM. They can be used all together.
A technical question. How do the positions work together? Are the positions from the ATOM send to the SSC relative to the positions of the GP-player? For example, if the GP player sets servo 0 on 1600 (+100 from the middle pos) and the ATOM sends #0P1300 (-200). Will it go to P1400?
I’m curious how it works. I really should start using the GP player but I always think that I can do it easier with the ATOM because I’m used to that
Hi Xan,
I do only use the ONCE command to run a simple sequence with the GP player once. The sequence moves (transition) each leg to a new “home” position. I do also need to change the LFPosX and LFPosZ in the atom code(and so on) to all legs after running that sequence.
snip from code:
elseif FSVR 'Toogle normal/spesial pose
if GPIsPlaying = FALSE then
if NormalPose then
NormalPose = FALSE
GPSeqToBePlayed = 3 'Normal to spesial pose
GPSpeed = 100
GPoccupied = FALSE
sound P9,[50\1000, 50\500 ]
'Cool sneak attack pose! :
RFPosX = 39 ;Start positions of the Right Front leg
RFPosZ = -138
RMPosX = 100 ;Start positions of the Right Middle leg
RMPosZ = -58
RRPosX = 58 ;Start positions of the Right Rear leg
RRPosZ = 110
LFPosX = 39 ;Start positions of the Left Front leg
LFPosZ = -138
LMPosX = 100 ;Start positions of the Left Middle leg
LMPosZ = -58
LRPosX = 58 ;Start positions of the Left Rear leg
LRPosZ = 110
BalCompZ = 29
else
NormalPose = TRUE
GPSeqToBePlayed = 4 'Normal to spesial pose
GPSpeed = 100
GPoccupied = FALSE
sound P9,[50\700, 50\1300 ]
'Normal pose :
RFPosX = 53 ;Start positions of the Right Front leg
RFPosZ = -91
RMPosX = 105 ;Start positions of the Right Middle leg
RMPosZ = 0
RRPosX = 53 ;Start positions of the Right Rear leg
RRPosZ = 91
LFPosX = 53 ;Start positions of the Left Front leg
LFPosZ = -91
LMPosX = 105 ;Start positions of the Left Middle leg
LMPosZ = 0
LRPosX = 53 ;Start positions of the Left Rear leg
LRPosZ = 91
BalCompZ = 0
endif
I didn’t find an easy solution to do it only in your atom code. There might be a way to do it, any ideas? Using sequences seemed to be the easiest way.
No, I don’t think so. Are you thinking of the offset register’s? I still do it the old way… with the accurate calibration of center, min and max in the visual sequencer SSC32 configuration. And PEP do also use the same calibrated values/calculations.
Agree, you should try the GP too! Ex. like the sequences where Phoenix is playing with the box, I don’t think that’s easy to do with only ATOM…
I think I’ve got the idea. You do use the init position to get the legs on another position but you need the GP player to get them there! That part slipped my mind
Making this possible with the code means that we have to change the gait sub. But I agree this is the easiest way.
You’ve already answered this. I didn’t know that you need to run the sequence AND change the values of the init positions as you showed in the code snippet.
Yep, the GP player is really useful for those cool movements!!
The small annotations are made in/with youtube. Go to the “my_videos” section and click the “Annotations” button under the video you want to add annotations.
For the latest video I used Pinnacle Studio for editing.
I’ve done some simple testing for using FSR (Force Sensing Resistor) mounted on the foot of one leg. I’ve not found a good way of mounting the FSR yet, I have an idea but that means I’ve to replace the tibia part with a new custom made. The problem with my setup with the FSR so far is that it has limited sensing when the leg touches an object/ground in an angle. You can see in my little test video that the sensor has problem sensing the big box .
Here is a picture of how I mounted the FSR, just using a heat shrink and a rubber knob (is that the right word? ) at the end.
Any suggestion of how to mount/integrate the FSR would be highly appreciated!
I used a CMOS 40106 HEX schmitt trigger inverter for reading the FSR value (in serial with a 10k potmeter for adjusting), the output is directly connected to one of the BB2 pins.
The leg is moving 5mm pr step at full speed. Its rather slow, so thats the reason for why we need more calculation speed. Moving just 1mm pr step would be ideal, but that’s really dead slow. Also higher comspeed to the SSC32 would help. Since we can’t read the actual RC servo angle I think this is the only way around it. We would also need forward kinematics calculation.
This little test does also demonstrate the benefits of the balance mode combined with terrain adaption.