I have been amazed and inspired by LMR to make robots.
This is my third robot, but the first I have attempted to document on LMR. My first two were not especially interesting. The first was a 4 legged robot with 8 servos run from an Arduino Uno inspired by the brilliant Chopstick Junior by lumi (https://www.robotshop.com/letsmakerobots/node/29708).
Next, I made a wheeled robot based on an old remote controlled car body with a servo for steering and SR04 Ultrasound for obstacle avoidance. This was fun, but I really wanted was a robot that would walk!
So, I ran across a thread somewhere on the web where someone had talked about spider robots with six legs and 18 servos and they had bough a kit on ebay. While searching ebay I found something totally different:
This is a fun, cheap kit, but actually very well made and simple to put together. They are (were?) still for sale on ebay. Even more interesting is that they use something that looks alot like a "Klaan Linkage" to walk. For more info see (http://www.mechanicalspider.com/) and (http://en.wikipedia.org/wiki/Klann_linkage). It was invented by Joe Klaan. I ran across the Klaan Linkage months before and thought it was really cool but way beyond anything I could build or design! But now, I had a kit!
Problem was, the kit only goes forward. If I put a motor controller on it I could make it go backwards. But I couldn't make it turn. Except, what if each set of 4 legs had an independant motor? Then one set could go backwards and the other set could go forwards, then the spider should turn in one direction. Reverse the motors and it should go in the other! Awesome!
So I bought two kits.
The Electronics:
The original kit uses 1 simple 3-5V hobby motor. So for my robot I have combined two kits and controlled the 2 motors with an Arduino and a SN754410 H-bridge motor driver. While learning this stuff I found Adafruit Tutorials particularly useful (http://learn.adafruit.com/adafruit-motor-shield) and also this tutorial (http://itp.nyu.edu/physcomp/Labs/DCMotorControl).
For the CPU I had already used Arduinos a lot over the last few months but wanted to get away from a commercial development board and use something smaller and cheaper. I found a local guy in New Zealand who manufactures and sells arduino barebone boards on TradeMe that are excellent (www.trademe.co.nz). They are easy to put together, but they do require an external programmer board (see SparkFun FT232R Breakout Board), but this was easy enough to work out how to use from these tutorials - http://arduino.cc/en/Main/Standalone.
The power supply is from two separate sources - the motors are powered by 4xAA-NiMH giving around 4.8V and then the arduino controller can be powered by either a 9V or a lithium 7.4V adapted from the canon BP511 (eventually I will write a post on how to hack these batteries). The photos show the former version.
The photo below shows the controller removed and the NiMH batteries visible along with the motors and gear boxes etc. They slotted in perfectly in the spider frame.
For obstacle avoidance I've used an SR04 ultrasound sensor and the ultrasound library (https://www.robotshop.com/letsmakerobots/node/30209). I've found it to work well and the sensors are cheap.
Note: Spings on the feet, that make it much quieter on wood floors but probably also conserve some energy when the foot lands and then pushes off. I have found it is quite hopeless on a carpetted floor. There seems to be too much friction to turn and the springs get caught in the carpet weeve. I plan to add different flat feet one day to see if it can work on carpet.
In addition to the ultrasound for navigation, I have added to photoresistors, one pointing forward and one pointing backwards. This allows the arduino to sense the light balance in the environment and move to a dark area or a bright area.
This is the underneath view showing the motors and gearboxes.
The code uses the Arduino IDE and is a work in progress. I had never coded until I learned to work with Arduinos so its been a steep and fun learning curve. I've attached the code for anyone who is interested. It's simple stuff but does the job for the moment. I am always thinking of how to improve the code and make the robot behave in a more 'natural' way. More like an animal, where it reacts to the environment but has a task it wants to carry out. At the moment it randomly seeks either the light or the dark.
Well, that's all for now. Enjoy making Robots!
Seek light or dark (Randomly) avoid obstacles with ultrasound
- CPU: arduino 328
- Power source: Alkaline 9V and NiMHx4-AA
- Programming language: Arduino ide
- Sensors / input devices: Photoresistors, SR04 Ultrasound
- Target environment: indoors
This is a companion discussion topic for the original entry at https://community.robotshop.com/robots/show/spider-robot