Quadruped robot nearly together, and MRDS simulation work
Hi everyone, here’s an update on the recent work I have been doing on assembly of the quadruped robot design, and also some adventures using the Microsoft Robotics Developer Studio package. I also talk a bit about some experimentation with casting plastic parts using silicone moulds.
As you can see from the picture, the robot is getting near completely assembled now, the only parts remaining are the mounting of the two cameras on the head. No wiring up of servos has been done yet, and the battery pack hasn’t yet been mounted (or purchased), but still it’s looking more and more complete. The shoulder brackets you can see attaching each leg to the body are actually urethane plastic parts cast in a silicone rubber mould which I made using the original milled plastic version of the shoulder brackets. The milled HDPE version took me about 3 hours to machine, so I was looking for a faster way to make a few of these things. I have never done any plastic casting before, and this is a fairly tricky part to start with I think, as it needed a two part mould and had features like counter sunk holes which I chose to try to include in the casting. The brackets didn’t come out as good as I’d hoped, with difficulties around the holes, bubbles in the casting and various imperfections all over and they needed a lot of cleanup, but they are functional.

As an interesting aside, since making these I discovered an interesting company on the net, Shapeways, who have an online 3d printing service where you can upload a 3d model, and get an almost instant quote to have it 3d printed in a choice of a few different materials. If you click on the Gallery and search for AX-12 you can see my parts… Price seems fairly reasonable, so I have actually got an order in for a set of shoulder brackets for the quadruped robot, as a concept test to see if the material is strong enough and whether this could be a good robot prototyping resource.
The feet for the quadruped are a simple design based on half a squash ball (would you believe!) which will give a uniform contact area with the ground during movement. I had originally intended to use some force sensors I have within the feet, however I have instead made a simple variety of the foot which has no sensor at present. During the construction of the feet I did have a good idea (I think) to use a low cost gas pressure sensor and make the squash ball hemisphere airtight - that way force from any direction on the ball will result in a pressure change and should be able to be sensed. That’s an idea for the future at the moment.
I have been working recently on desktop software support for the quadruped, specifically Microsoft Robotics Developer Studio services to support the quadruped. Although I don’t plan to limit the PC end software to MRDS alone, I did want to evaluate the use of Robotics Studio as a means of simulation (especially to develop some simple walking gaits initially) and also perhaps as a rapid software prototyping platform which might enable me to get some interesting behaviours going quite quickly using services developed by other people linked to the hardware of the quadruped robot via a custom MRDS service I would write. It is early days and still very much a work in progress, especially since C# is not my native tongue yet, but I got a physics simulation going and also a very simple walking motion (using the crawl gait).
The crawl gait I have used is pretty unstable, and it doesn’t take much to knock over the robot in the sim. However I intend to improve it by adding some inverse kinematics and a better method of controlling group moves of servos. I also need to add proper support for the differential drive service in MRDS which will enable simple steering and control of the robot using xbox wireless controllers and even the nintendo wiimote. Of course all this is just essentially to demonstrate the capabilities of the robot platform (and have a bit of fun with it) - eventually I would like to implement a brain like hierarchical memory networ with the grand aim of teaching it to walk without classical control concepts.
Here’s a video of the simulation environment running;
Wow great work mate, it’s really coming together!
It must be awesome to be where you are at after working on it for so long. I have been meaning to check out MSRS for ages now and seeing someone else use it successfully is really inspiring. I already use Visual Studio 24×7 for my dev so developing stuff for it would probably be quite easy.
How did you import the mesh etc for your model into it? Was it the dxfs from your cad package?
Have you noticed anything particularly annoying/awesome about it?
Keep up the good work
Thanks Ash, yeah, it’s a good feeling to see a bit of progress for a change. I’ll be happier still when the robot actually moves under it’s own steam! Since the posting I’ve mounted the two cameras to the head, so it’s that little bit closer.
MRDS:
The biggest impediment to just picking up and using MRDS for the newcomer is the terminology I think. When I first looked through the package nothing was immediately obvious to me, to accomplish fairly simple things seemed to require lots of arcane knowledge. I’m sure it would be worlds easier though for a developer who already knows C# and web dev concepts like SOAP (which MRDS heavily borrows from), but even then there are new concepts introduced to handle concurrent tasks and so on with fresh acronyms thrown in. Simple to install and play around with the shipped demos, but to actually accomplish anything I might need seemed to be require a lot of investment in learning. The big breakthrough for me was buying the book “Pro MRDS” from wrox;
http://www.wrox.com/WileyCDA/WroxTitle/Professional-Microsoft-Robotics-Developer-Studio.productCd-0470141077.html
This book is very well written and clear (even the occasional joke thrown in), and has a number of really cool examples which are much closer to what I might need than the ms demos. The quad sim I wrote is adapted from their hexapod simulation for instance.
Getting the meshes from cad to mrds is relatively pain free – for each moving part, export an STL file from the cad software, load into blender, adjust the scale (can’t quite work this out, required scale seems to change from part to part, even though all my parts are designed with mm), move the part so the origin agrees with the physics shape defined in MRDS, apply a texture or material using blender, export as OBJ, and MRDS reads in the OBJ and uses it. In practice it takes a few goes back and forth in blender to rotate the model so the axes line up with MRDS, and if I want one physical object in MRDS to have more than one colour, you have to export each object separately as STL files, then load more than one into blender so they are separate meshes, applying different materials to each. If I try to export a whole assembly of parts from cad as one STL, then the whole thing becomes one mesh with one colour. If I was better at blender I’m sure I could chop the mesh into separate objects, maintaining their relative positions, but I couldn’t figure that out.
cheers,
Murray
———————————————————————–
http://robotsaustralia.googlepages.com