This is a hexapod robot based on OpenSCB, an open source servo controller. All code and schematics will be provided under an open source license. It's still a work in progress but a lot of internal code has been done already.
The hardware is based on a MSR-µBug, which is a tiny hexapod structure from Micromagic Systems + 18x Mystery SD90 servos which are the cheapest servo I have seen so far. When the first prototype works correctly, I may move to something more robust, probably custom-built. Fitting the SD90 servos in the MSR-µBug wasn't an easy task. The frame is not designed for these cheap servos, so I had to shorten some plastic pieces with my dremel. The SD90 are wearing out pretty quickly, already 4 of them had their gears broken, so they are probably a bit too cheap for an hexapod.
The board is running realtime translation and rotation matrix for body orientation, and a 3 DoF inverse kinematic algorithm on each leg, all of them implemented with efficient fixed point arithmetic. The board receives commands from a RC receiver, which had been hacked to get the PPM signal. Four channels are mixed together to drive the hexapod, I can alternate between several modes with a switch on the radio.
When it moves around, it uses a dynamic "tripod gait" algorithm, each tripod is translated and rotated for every step corresponding to channels mixing. In the end, the IK does the magic and place each leg at the correct position.
Holonomic move, remote controlled with a RC transmitter.
That’s actually a two people project, I promise I’ll add up some details whenever I find the time.
I’ve been thinking about building an hexapod for some times already, but I was very disapointed by the available commercial solution for driving servos (like SSC32, pololu maestro, …). From what I’ve seen they are quite closed (in term of software) and a bit expensive.
So I talked about it with a friend who is quite a genius in electronics design. And we started to design a board and software that would provide a good framework for any sort of project involving servo control. Obviously the best way to test and design the board we could think about was to build an hexapod as it involves a lot of complex control. So in the same idea that we are designing OpenSCB, we want to opensource all code and design we make for the hexapod, hence the name OpenHexapod (I guess we lack inspiration on name).
As our servo controller as a great little mcu. I hope we’ll have real time inverse kinematic on all legs. I’m planning to remote control the hexapod with a RC transmitter, and mix moves (forward/backward + left/right) so it is able to move in all directions.
Your controller seems pretty good. I am not an expert but building quadbot myself now using Arduino. I just burned 3 servos last week but problem seems solved by using switch regulator for power suppply. Now the hardest task is IK programming. Even I build a hexapod before but it’s all “play by the book” and have no idea how did I finish that. I looked into the phoenix programming and don’t know what the hell is that all about. So, I decide to start everything from 0 by myself and ask around. For sure I will keep my eyes on your openscb
If your interested at some point we might collaborate. I have been working on a open source project called MyRobotLab - which is a Java application which talks to micro-controllers and hooks into a large variety of other Services (OpenCV, Sphinx voice recognition, etc) Some projects which have started to take shape is the Soccer Game & MoMo
I’m also interested in reverse kinematics. There are a variety of graphics & simulator applications which have physics & reverse kinematics (Blender, Sketchup, Stage & Player) it would be interesting to have these applications provide data for your board. Maybe MyRobotLab could be the glue?
A Service could be constructed for your board which would allow easy control of the hexapod with abstractions such as turn, run stop, do funky dance, etc… Likewise the hexapod could benefit from communication with all the other services. Allow for sensor processing, integration of remote data, etc, etc…
Your project looks very impressive, I guess an interface with your soft would be awesome but I still need to do a lot of progress on the hexapod! Anyway, my goal is to make a very open and flexible software, so I hope adding new interfaces shouldn’t be too hard.
Thanks a lot. For the servos I would recommend something a bit stronger than the mysterys, they are alright for the price, but their gears are very fragile. I think the Hitec HS-65HB would be a better choice.
Though its not very easy to understand as it is implemented in fixed point arithmetic. I’m planning to write a detailed article about all the algorithm I used here, but it’s quite hard to find the time at the moment. Anyway, if you have any questions don’t hesitate!
Thanks for making this open source. This bug looks really great and I love the movements you’ve put together. I’ve recently replaced the plastic gears in my Hitech HS-81 servos with metal ones, using a replacement kit Hitech sells, and I’ve been very happy with no new breakage (so far).
I’d been looking at the Pololu Maestro for some things I want to build, but haven’t gotten into it yet. I’m curious, what were the shortcomings you found with that controller?
Yes I was considering switching to metal gear servos, but they cost about 10 time the price of the ones I used!
About Pololu maestro, I don’t have one myself so I might not be the best one to talk about them. From what we’ve seen from their website, there are a few reasons why we didn’t use it:
It’s designed around a small 16 bits PIC microcontroller (i’m guessing from the picture, because I couldn’t find it anywhere on their site), with 8KB of eeprom available for the user. OpenSCB is designed around a 32 bits AVR microcontroller with 256KB of flash in total (program+user).
I believe the main difference is that because their firmware and configuration GUI is closed source, I’m limited to what Pololu offer me, I can’t extend it, I can’t improve it.
We wanted to have RC/PPM input from a RC transmitter, I don’t think the maestro can do that.
So even if I make the considerable effort of rewriting a custom firmware for the Pololu, I don’t think I would be able to implement real time inverse kinematric and rotation matrix as we did for this robot. We would need another board to control the maestro.
The next release of OpenSCB, will probably have even more IO, and the possibility to easily plug a bluetooth module, Lego NXT sensors, and AX-12 servos. That’s another cool thing about an open source project, people are more easily giving their feedback and we can improve our board.
So for a lot of applications maestro might be a very good board, but when you need more complex control, I believe you need a better board. It really depends what you are trying to do.
I looked up your Mystery servo and foound it for $4. That’s a quarter of the $13 I paid for my HS-81 metal replacement gears alone, so yeah, that’s really cheap!
As a software developer, I’ve spent years in the Microsoft world dealing with closed source product, and I greatly appreciate your point of view on open. I’m also trying to build my individual robot units as cheaply as possible, because after all, then you can have more of them.
Thanks for the thoughtful response, you’ve got me convinced. I already have a Pololu unit so I’m going to test some of the boundaries there, but looking forward to getting an OpenSCB and exploring it’s capabilities. I’m excited about your extremely cool project and I can’t wait to see how you proceed!