Last year i built a K-9 Autonomous robot as a pet. It's programming has been ongoing to add more life-like characteristics. You will be surprised with how much expression and life you can bring to a styrene shell
The project goal was to simply have a robot pet. We've all dreamt of that (well, us geeks have anyway)... And we don't want a robot that just drives around and does the same thing over and over. Neither do we want one that gets stuck and requires our supervision. We want to come home from work and be greeted at the door by it... And that is exactly what K-9 is and does...
- 18F4685 8 bit microcontroller
- 20 mhz resonator
- Body made of styrene
- Sharp IR Analog distance sensor
- 2 LEDs for eyes
- 1 LED for status
- 1 Two line blue LCD for status and sensor readings
- 1 EMIC sound module for voice
- 1 Speaker for EMIC
- 1 Speaker for PIC driven bleeps/bloops and 1 bit audio bark
- 2 modified servos for drivetrain
- 2 servos for head movement
- 1 micro servo for tail
- 2 pager motors for ears
- 1 IR detector for following infrared detection
- 2 buttons to activate and navigate through diagnostic menu interface
- 1 switch for power
- 1 lion 7.4V 2400 mh battery
- Complete Specifications of my K-9
- Pics and Video of Version #1
- Pics and Video of Version #2
- Pics and Video of Version #3
- Pics and Video of Version #4
- Pics and Video of Version #5
Firstly, I started out with a simple tractor base with the sharp sensor mounted to move up down right left. The programming is the heart of his interactivity. He creates a 3-D map of his surroundings. And yes timing was important, so i used servo's to power his treads.
My goal with Version #1 was obsticle avoidance and 2-D mapping. My technique looped through a 2-D array to determine the route. But that wasn't enough....
Recognizing raised or lowered surfaces was a challenge. But with timing and adding a third dimension to the 2-D array, I can now keep track of the floor contours. I do so by scanning the floor in a set time.
Now for his personality, i needed him to recognize human interaction. So to do that, i determined that if an object had moved then it must be a living thing.... So interact with it. By doing that, a global personality variable increases which causes him to be more active. and over time, the personality variable decreases, causing him to make less active decisions.
There are Actions and Modes. Modes define a list of actions. He determines his Mode based on his personality. Then the actions are determined by the 3-D array.
So even if he decides to follow an object that has moved, he will still reference his 3-D array for object avoidance. The same applies to following IR sources.
I don't know what else to write, maybe there are questions?