View Full Version : (long term project) Deimos

06-16-2009, 05:03 PM
Well, with all the raw footage that's been trickling through and all these awesome quads running havoc in the stands, you guys got my bugs going again.

I rearranged the bioloid kit into what I call Deimos:


First things first, all credit for the squash ball feet go out to the forum members who came up with the idea (I don't remember the name though, fill me in and i'll edit this post// EDIT: This was Obscene, thanks for that!)

I took a little different approach though, I sliced a piece off of the balls and semi-glued them to some brackets. I say semi-glued, because they seem to stay put just fine without glue - it's also hell to get them on there..


I've got some basic walking going with the terminal pose method, but I don't like it..
I'm going to whip up a simple board with a PIC (yes, I know... I'm just so used to these things) to test a few ways of getting it to walk. Something to do with central pattern generators and token passing, but I'm still reading up and experimenting with it.

That's why I'm calling it a long term project. As most of you here know I start a lot of things but never seem to finish them, and I've got loads of projects in the works as we speak (Phobos is another one of those, incidentally)

Point is, realistically the chances of me getting to the robogames are slim to none in the next few years, but hey, I can have fun on my own, right? :o

I'll keep this post updated as progress is made, just don't expect any too soon...

06-16-2009, 05:16 PM
Looks really awesome.

A few points I've picked up from working with Issy (in case you ever do get to cross the pond and do mech warfare with us). The payload for mechwars is pretty high. I stripped issy down to 2DOF to reduce the load on his legs... this configuration might work, but you want to try and make him easily stand even when off... Body size, Issy is a little too small to get those dang scoring plates on him, they actually collide with the legs if I move the legs too far.

All of issy's code is posted in my SVN server... It's all in C for the AVR architecture, but really, most of my Bioloid software is pretty far up there in levels of abstraction. Porting stuff to the PIC wouldn't require much more than rewriting the serial driver (and probably changing the pose structure, not sure how the PIC works as far as storing data in FLASH).


06-16-2009, 06:08 PM
That thing looks wicked. As far as DOF is concerned, I'd say design the legs according to what you want out of the bot. Issy basically only needs to be able to walk while supporting the weight of the devices needed for mech warfare, but if you want a bot that is capable of climbing steps, etc., I believe a higher DOF will be needed.

Plus, if aesthetics is a must, this thing really looks amazing and would probably be capable of performing some pretty sweet walking gaits.

The only problem I have with the AX-12+'s is that their moving torque is somewhat limited compared to the size and weight of the servo's and brackets themselves.

The squash ball idea is something that I got from Cosa on the Robosavvy forums.

06-16-2009, 06:58 PM
Yes, it appears they were first called by name on this forum here: http://forums.trossenrobotics.com/showpost.php?p=24490&postcount=22 by Obscene. A few posts earlier in the thread he was trying to figure out what they were.

06-17-2009, 02:22 AM
Thanks Lynn, I put the credits in the startpost.

As for the DOF, I read in your robogames recap that you indeed had problems with payload Fergs. I've been thinking of rebuilding a simple 2DOF design to try out the control routines I've been playing through in my head to start more simple, so that just might happen.

I'll be taking some more pictures though so I remember how to put him back together ;-)

As it is now, it's 'self-supporting' as in, it can stand both down low and legs stretched with zero power, but legs stretched makes it look a little awkward, and down low it can't move it's legs up without scraping the floor..

Thanks for the tip on your code, I'll install an SVN client tonight and check it out, though I fear I'm too much of a novice to understand C-level code optimization by a veteran like you :D

07-03-2009, 06:47 PM
Ok, time for an update.

I've spent a little time working out the code to communicate with the AX-12's with a PIC micro, and that seems to be working out ok.
Took me two evenings to figure out why I could get the LED to light, but the torque on command not to work.
Seems easier to check if the torque is on if you're actually turning the right servo..

I've breadboarded a 16f628 with a HEF4053, which is a triple 2-1 analog mux. I use this for two reasons:

1) To switch the Dynamixel dataline from TX to RX
2) To switch between Dynamixel comms and PC comms. Only one UART on a 628 and a software uart just takes up more resources than needed.. I'm not planning on a lot of PC communcation ATM anyway, it's only for debugging purposes.

So now I'm trying to get a little GUI built with GLADE/GTK/Python, which shows what dynamixel ID's are connected, and to be able to set the range limits for all motors.

Progress is slow, but I make a lot of dumb mistakes, as most of you have noticed :p

Oh and happy 4th of July!

07-08-2009, 04:11 PM
Update again:

I've written some robot starting firmware.

That is, right now I have some code that responds to the following codes:

0x01: Scan the bus for all available dynamixel, then display their address on the terminal
0x02: Start range limit loop. Simply scans the bus for the current position, and remembers the minimum and maximum range for each AX-12.
0x03: Stop range limit loop, and display all limit positions to terminal
0x04: Write range limits to AX-12's, so it's impossible to go beyond those points (to prevent accidental current wrecks)
0x05: Loop through min-max range

Pretty simple code, the problem lies in the use of a single UART for both the AX-12 and the pc comms.
Thinking of using the external interrupt to have a transmission from the PC switching the MUX and override dynamixel traffic.

As-is the code is just under 1k (969 bytes) and uses 69 bytes RAM, though I can shave -a lot- off of that just by reusing arrays I've assigned, and dropping out the PC comms which are mostly for debugging purposes.

Reason for this code is

Getting familiar with the dynamixel protocol
Allowing an easy setup of joints in case I would change the robot's physical build.

Next up, trying to get this central pattern generator thing I've been having in my head in actual code.