I read somewhere that the first imperative for a robot project is to ‘move around and not get stuck’. Well I think I finally got there.
My two take aways from this project are:
1) robots are deceptively complex; and
2) adding a little randomness can go a long way.
So far, in my messy little condo it’s done very well at getting out of canyons and crashing its way over extension cords. It uses two proximity sensors to help avoid obstacles, an instrumented bumper to escape collisions, and a few LEDs and LCD to help with debugging. I leaned heavily on Joseph Jones’ book on behavior based robotic programming to make it happen. I’m sure that I could make it more interesting by getting it to do wall following, but the software works so I’m claiming victory and moving on to another project!
The first picture is kinda cool because you can see the IR beam as a purple dot on the door and the green LED on the Lewis and Clark is indicating that the right IR proximity sensor is triggered.
To err is human.
To really foul up, use a computer.
So while waiting for parts to arrive for my new project I made some software changes/bug fixes to Lewis & Clark:
- There is a new behavior called charge-home that ideally would sense a low voltage battery and dock with a charging station, but today it only sends out an SOS on the buzzer and stops the motors.
- There is also a new line from the arbiter that allows the behaviors to find out who won control of the motors. Cruise uses it to control acceleration.
- Finally I added a new arbiter to control that most important of actuators, the buzzer. The overall effect is to indicate the condition of the robot. When the battery voltage is low the buzzer sounds an SOS. When stuck, the Stasis behavior plays an ominous (dum, da, dum, dum, dummmm) tune on the buzzer. Escape will stop all sounds and Cruise will play either Daisybel, Surf City, Ya-Ya, Johnny B. Goode, Do you want to Dance, Love Potion Number 9 or nothing at all. Not the entire tune just the first 12 bars or so.
Here’s a photo of the new architecture.
To err is human.
To really foul up, use a computer.