You are currently browsing the tag archive for the ‘robotics’ tag.
This is our new favourite place – MakerCrate. Complete with 3-D printers. What's not to like?
Find out more here.
This was a quick weekend project, inspired by some YouTube videos.
Three small servos, stuck together with double-sided tape, form the body of the bot. Two servos point upwards and the centre one points forwards. Hot-glue connects the galvanised wire legs to the servo horns. The parts are small, so use a small hot-glue gun if you have one. Hot-glue and double-sided tape are strong enough for the bot, but not so strong that the parts can’t be disassembled and re-used.
The robot walks by pushing the middle leg down on one side, then using the servo on the opposite side to swing the body of the robot forwards. The servo on the near side also rotates in the same direction at the same time, so as to be in position for the next step.
To turn the bot, the top servos are rotated in opposite directions during each half cycle.
A standard Arduino is far too big for this bot, however, an Arduino Pro Mini is smaller than the back of the bot (18mm x 33mm). The Pro Mini is a full featured Arduino, but without the USB interface. To program this board you also need an FTDI adapter like the Sparkfun FTDI breakout. There is no connector on the Arduino, but you can just hold the header pins on the FTDI breakout against the holes along the end of the Arduino.
The Arduino Pro Mini I had was the 5V version. Lacking a boost converter to turn the 3.7V battery into 5V, I tried wiring the battery directly to the Arduino and everything worked. The 110mAh battery I used is tiny and fits underneath the bot.
An infra-red LED and infra-red photo-transistor form the obstacle detector. The photo-transistor is wired with its emitter to ground and its collector to Vcc, via a 5.5k resistor. The Arduino measures the voltage across the photo-transistor. There is a fair amount of ambient infra-red light, so the bot measures the voltage on the photo-transistor with the LED turned off, then again with it turned on. If the voltages are much different, it’s time to turn. In a sunlit room, a black paper tube to shield the sides of the photo-transistor will make detection more reliable.
- 3 small 3-6v servos
- Arduino Pro Mini
- 110mAh lithium-ion battery (and charger)
- Sparkfun FTDI Breakout or Adafruit FTDI Friend
- Infra-red LED
- Infra-red phototransistor, e.g. TOPS-050
- 5.5k resistor
- hookup wire
- heatshrink tubing
- Hot glue gun
- Double-sided tape
- rubber bands
- 1.25mm galvanised wire for the legs
The Arduino sketch can be downloaded from https://bitbucket.org/johnmccombs/bot8_3_servo_walking_robot/get/1d8d6c769bb2.zip or cloned from the bitbucket repo https://bitbucket.org/johnmccombs/bot8_3_servo_walking_robot
Here’s another iteration of an Arduino controlled autonomous floor robot. This one uses a Tamiya gearbox and servo steering, with infra-red and touch sensors for obstacle detection.
The robot chassis is built from Fischer Technik and a rectangular section plastic downpipe fitting. The parts are held together with screws, plastic cable ties, gaffer tape, glue and rubber bands.
A Tamiya double gearbox powers the back wheels. The white spacer between the gearbox and the red plate of the robot is a PVC downpipe adapter. In this project, both motors are always driven in the same direction and speed.
A basic Futaba servo steers the Fischer Technik front wheels. The front axle is screwed to the servo horn and cable ties attach the servo to the chassis.
One of the challenges with this kind of robot is that whatever sensors you use they only work with 80% of household obstacles. For this robot we used two Sharp infra-red distance sensors pointing slightly left and right. The Sharp sensors have quite a narrow beam. Setting them pointing outwards works well for detecting approaching walls, but leaves a dead-spot in the centre that misses narrow objects like chair legs. The infra-read sensors also miss low (15-35mm) obstructions that the robot can’t drive over.
To deal with things that slip past the IR sensors, we added a touch sensor bar to the front, about 35mm above the floor. This is made of two strips of wood. Two microswitches were glued with epoxy to one strip and the second strip is positioned in front of the switches so that the switches are closed if the front bar hits anything along its length. The front bar was hinged with gaffer tape. This touch sensor gets quite a beating so it needs to be strong and well attached.
The motorshield controls the two DC motors in the gearbox. Separate 9v NiMH battery packs provide power for the Arduino and the motors.
The touch sensors and IR sensor are wired to analog ports on the Arduino and polled to detect obstructions.
The software that controls the robot has a simple set of rules:
- if an object is detected within a few hundred millimeters on either side the robot steers away from that side until the obstruction is no longer detected.
- if an object is detected close up on either side, or moderately close on both sensors, the robots backs up and turns. The turn takes it away from whichever side is closer to the obstruction.
- After the robot backs up, it remembers the turn direction for 3 seconds. Without this rule the robot could back up in alternate directions, leaving it still pointing at the obstruction.
- Arduino Duemilanove
- Adafruit motorshield
- Tamiya double gearbox with wheels
- Sharp GP2Y0A02YK0F IR distance sensor. The IR distance sensors sensors come in several versions, optimised to work over different distances. We used one designed for 200 – 1500mm range. The GP2Y0A21YK0F which works over 100 – 800mm, and has a wider beamwidth, might be a better choice
- 5mm square section wood strips for the touch detector
- 2 x microswitches, recovered from an old mouse
- plastic cables ties, epoxy glue, rubber bands, M3 machine screws and nuts.
- 2 x 6-cell AA battery pack and NiMH batteries
- Fischer Technik baseplate, axle and wheels
This robot negotiates the floor fairly successfully. Going forwards the sensors detect pretty much everything. The main problem is that the robot is fairly tall. Some overhangs or sloping chair legs can strike the top of the robot without being detected by the IR sensors or hitting the touch sensor. Similarly objects that fit under the touch sensor stop the robot.
There are no sensors on the back of the robot, so it’s unaware of hitting something while backing up. The robot can get stuck in a close space where the robot can’t back up, but the IR sensors show an obstruction. When the happens the robot will backup continuously without success. This situation could perhaps be improved with some software changes.