Despite the fact that the motors are physically TINY, they seem to have enough power to carry Bernie around fairly comfortably. Better yet, I have got the program to work so that the analog joystick on the Playstation controller operates the two motors and lets me steer! I expect he will get slowed down once he is dragging the full load of skin and wings and his tail is reattached, but for now he is pretty zippy.
I have been busy working on giving Bernie a way to get around. He won't be autonomous (that's a whole other level of complexity and honestly I don't need a dragon who can move around when I'm not there, that's just going to lead to disaster!), but he will be able to move around on wheels under control from the Playstation controller and he has four legs to crawl around on.
Each leg has a bearing joint in the knee/elbow, which is made up of a screw, nut, some washers and most importantly one rivet attached to each piece of wood to allow the parts of the leg to move around the screw without too much friction.
Once in place, the bearings work very nicely for letting the leg move, but they initially didn't do much to stop the leg splaying out to the side, so to avoid this I added the third rivet which you can see in the top picture, as well as a second section of the lower leg which is supported by a 6mm spacer (just visible in the picture on the left) to allow the joint to move freely around the screw without moving sideways. I also replaced the nuts with nyloc nuts so that the repeated rotation and vibration doesn't continually loosen the joint. This way tightening the nut on each joint gives me very good control over how much resistance the joint offers to rotation as well as how much the lower leg wobbles around.
Reconnecting the legs to the body and wiring up the servos to the arduino made it very simple to test out a basic walking motion. The timing still needs some work, and without the wheels and tail to provide resistance the whole body has a tendency to wobble around, but the basic idea is there and the pulley system seems to be working nicely.
To make the legs move a bit nicer I need to make the hips more rigid by adding some blocks around the join to the spine and also reinforce the screws joining the servo horns to the hips. hopefully I will have that done by the end of the week and can move on to the final programming of the walk motion.
Did you notice he's not actually getting anywhere? I have some lovely little micro geared motors and wheels from pololu (bought through littlebirdelectronics) which I have wired up through an ardumotor shield and will be mounting as soon as possible, however the scroll saw is out of action for the moment so I can't cut the recesses in the body to mount the axle supports. These will also raise the body off the floor by about 15mm so the legs can move more easily without rocking the body from side to side.
It's been quite a long time since I've updated here, which sadly reflects just how long it has been since I've had some spare time to work on Bernie: between organizing the Melbourne Mini and studying for exams it's been a very busy couple of months! I finally have some holidays so I can get going on Bernie and flesh out some of the designs I've been working on.
Poor Bernie has been sitting there on the coffee table unable to move for a while now. He has developed a bit of a lean because his poor tummy is carrying all of his weight, He can't even wave when people come to visit him. Clearly this must be fixed, and as many a quadruped knows, limbs are handy things to have around.
I've been thinking about how to do this for a while now, because I want to use just one servo motor to control the whole limb. This will reduce the load on the arduino, simplify the programming and make the leg lighter, but makes the mechanism more complicated to design. I started by playing with some cardboard, and then went back to the drawing board to see how I could make this idea work. Like all of this project, there is a lot of documentation which will probably never see the light of day, but it sure does help fill a boring lecture and makes construction much easier and quicker.
Just like my very first bit of body construction I decided to make a cardboard prototype to see if my idea really worked. Initially I had different designs for the arms and legs because they are such different shapes, but I didn't like the extra complexity in the legs so I have decided to modify the design to work on a single concept. The joints work because the string does not change length - both ends are fixed to the leg, but there is a pulley point on the body so that the relative motion of the leg to the body makes the elbow/knee extend.
Before anyone asks, these legs are not in any way load rated! They will not be carrying the weight of the dragon, just providing some balance and making him look less like a glorified snake.
I've had a few questions about how 'wired' this dragon is.
This is what he looks like at the moment. As you can see, he is tethered to power by two power cables (the black and red you can see in the photo), and has a usb cable (the grey one) which can connect to my laptop to reprogram the arduino.
The usb cable is completely removable, which leaves the two power supplies. These can both be replaced by rechargeable li-po batteries when the dragon moves beyond the current testing phase.
That's the easy bit though. I want a control panel which will allow me to interact with the dragon and control him to move around, which means I will eventually need to work out some remote wireless i/o. I'm not going to be up to that for a while though, so I can do a lot more research first.
I love working with this arduino Mega board - so far everything I have tried to do has just worked, and I can already see that it will make development much faster and less depressing, especially in comparison with my last attempt using PIC technology and hand wiring everything.
About half an hour after I got home I had the first servo running, only to discover that actually I didn't know how to stop it... I was so surprised that it worked it took me a little while to remember to wire in a switch.
I now have a momentary push button which enables the servos, which means that if I release the button they gradually come to a stop as they complete their respective routines. In future I will program this as an interrupt as it will be a safety device to stop the dragon trying to move further once it has reached the limits of the skeleton structure - I would hate for it to destroy itself on the first test!
The button will also be replaced by a slider switch so that I can turn the dragon on and off properly rather than having to re-enable it each time it cycles through the main loop program.
The circuits in this photo have been rigorously tested by a 3 year old who found the concept of pressing a button and having things spin fascinating for about an hour. I figure if it can survive that, I'm on the right path.
My only issue so far is that the tower-pro servos are incredibly noisy - I think for a lot of the more important servos I will have to invest in better quality servos which have metal gears instead of plastic so that they are more accurate and less loud.