White Legged Spider Monkey?December 2012
White Legged - Yes, it has white legs
Spider - Yes it looks like a spider (with two legs removed - ouch)
Monkey - Yes it has a Baby Orangutan monkey brain
Hexapod - Yes it has six legs
So White Legged Spider Monkey Hexapod is the best name I could come up with.
Walks (hobbles?) around, avoids stuff, future PIR and LDR for light trackingActuators /
- Output devices: 3x 9g Servos
- Control method: autonomous
- CPU: Baby orangutan
- Power source: Rechargeable 9v 300mah
- Programming language: Arduino C
- Sensors / input devices: HC-SR04, (To Add PIR and LDRs)
- Target environment: indoors
Having checked out a few 3 servo hexapods on the robot forums, especially StaffY's Tarantula build, I wanted to give it a go. I've never messed with a walker of any type before, but love the mega servo count walkers roaming around here, so I figured starting as simple as possible was best.
The legs are an old thick coat hanger that has a plastic coating on it which is where the color comes from. Good and bad as the plastic slips or twists at the glued joints which makes a nicer soft feel to it, but it also stretches out pretty fast making it all sag. The legs are simply hot glued to the servo horns and covered up with the little furniture slides that have been gutted and trimmed to fit. The glue is not giving but the plastic is.
The servos are some three dollar 9g's from a HobbyPartz sale again hot glued together in the standard 3 servo configuration. Since I do not have any small LiPo batteries and the Orangutan requires 5.Xv or higher I used a rechargeable 300mah 9v ($6) as the main power. A small Pololu step up/down regulator (S7V7F5 ) ($6) is mounted under the Baby Orangutan chip ($12 on sale) for the 5v to the servos and sensors.
The round perf board is from Radio shack (~$2). I love those little boards and have bought several batches for different builds but figure this is the best use I've found yet - on a spider thingy. The Baby Orangutan is very easy to build a board for, just use a 24pin socket and some male pins for connections. A small regulator for the 5v rail and wire it up. The CPU has two onboard PWM motor outputs as well that I am looking at what to use for. I have a small pager motor I may try to use to make it "buzz" on occasion. No clue for the other yet but maybe a tiny speaker that would buzz instead?
The HC-SR04 is a cheap ($3.00) version from across the ocean. So far I've had some issues with it giving lots of false hits while walking. Not sure if it's the power supply / battery limits or just all the moving around the thing does while walking that is triggering it. Current plan is the have the unit read in between actual movements to see if that helps or not.
The code was developed in the Arduino IDE using the Orangutan and NewPing libraries. This is my first actual bot code in the Arduino world as everything else has been BASIC language solutions so there is likely a lot of optimizing that could be done to the source. There are subs for each walking direction (walkforward, walkbackward, walkleft, walkright, walkstop) that use a "walktimer" to determine which step or frame the bot should take next so the main code can run without delays. I can change the walking speed by changing the global variable "walkdelay" . About 100ms between each step is pretty good but it can be reduced to walk faster or increased to walk slower. It doesn't actually change the servo speed from position to position but the time between each frame position.
Rear ViewI use a "walkmode" variable to track the current activity so I know to reset the walktimer or not and a "walkrequest" variable that is toggled to different walking modes by the main loop. At the end of the main loop are the statements that call the walking sub depending on what the last pass through the loop says we need to do. It's all with timers and subsumption I guess.
I also always use a "robotmode" variable to determine what the current task is at hand such as roam, seek light, hide from light, rest, wait for people, etc as the controls can then be added as sensors or whatever is desired in the future. It's fun to put the thing in different stances as well such as both legs rearward in an "open" posture or both forward giving an aggressive stance. He can even do tricks such as lift one side and move it's leg forwards and backwards. ;-)
Future plans call for a couple tiny LDR inputs on the front for light tracking, maybe the pager/vibrating motor on a motor channel and possibly a PIR sensor *IF* I can find a good place to put it and keep "the look". I need to pick up some red LEDs as well for both indicators and just to add to the look up front.
I can't put too much weight on the platform, however, with the current leg setup so that pretty much fills it up even through there are many more digital and analog inputs I could use on the Orangutan.
Oh yeah, the bit square button at the butt is the power button. I may replace that with a round one but I like the location and the color. I also will shorten all the wires in the near future once I'm really happy with the layout to get rid of the messy appearance at the rear.
Ultrasonic working and avoidance code deployed - seems to work so far. Added another video of it working. Actually the legs seems to work better than a roller when getting stuck as the legs help to push it away / around stuff instead of just driving into it unknowingly.
Next is to add a couple LDRs to track lighting with for the ligth seek and avoid modes. Also going to add a couple additional LEDs for indicators and just because there are a couple places that just seem perfect to mount LEDs. :-)
Update 12/26/2012 - Added vid of "attack mode" testing
In this "mode" It just sits and waits for something to get within ultrasonic range and does a full speed run at it. Funny with the extra rear weight it rears up on two back legs which looks kind of cool. Still have to hook up the LDR eyes for the light sensing functions.