L33T - Personal service robot
Edit: If you would like to look at the code and see if you can work out why it doesn't always work, feel free, the code is right here : http://tinyurl.com/d96s3a2
See third video for all details.
Obstacle avoidance code has been majoratively fixed. There are still some problems with it as sometimes it can't choose which way it wants to go when it hits a certain wall, not sure why that is, but I'll keep trying.
The prototyping shield and breadboard have been removed and replaced with a permanent Freetronics Short Protoshield. All the circuitry is permanent, except for parts that may need to be removed later.
A pyroelectric infrared motion sensor has been added to the front to detect movement. I will be adding in a gaurd mode which will alert you via a tweet message when he detects movement.
Some paint has been added to the bottom and sides to get rid off the mdf look.
An accelerometer has been added to detect whether he is being picked up, or placed down. I added this feature for the presentation I will be giving on monday so hopefully make him easier to control.
L33T's GUI is now up and running! He now has the ability to respond to my voice, talk, face track, and be controlled through keyboard keys.
See below for a snapshot of the GUI:
The second video shows all of it up and running.
The bot is by no means finished though, I still have to work out a permanent solution for the camera, I was thinking of making a head maybe on a pan and tilt mechanism. I also need to find ways of mounting the switches onto the shell and cup holders aswell.
L33T is now completely running wirelessly, see video, removing the need to mound the netbook on him. The plan ATM is to transmit serial data via bluetooth to my desktop for computation and then send commands back. The module I am using to give the Arduino bluetooth capabilities is the HC-05 which is readily avaliable off Ebay (mogul recommended this one for the extensive documentation on the web, thanks mogul). The module is powered of the 3V output on the Arduino, the transmit pin on the module is hooked up to the Arduino recieve pin and the transmit pin on the Arduino goes through a voltage divider to the modules receive pin. The next step is to make the GUI in processing and get all the voice recognition up and running.
Time to make a formal reveal as to the project I am working on, L33T. The idea behind L3 is to be a personal service robot, to help out wherever he can and interact with people in the household, efectively being a robot butler.
When thinking of what L3 should be and what it should look like I drew a lot of inspiration from R2, even the naming scheme is similar. R2 was able to manevour well in tight situations, he could 'talk' to and understand people, and was capable of performing bulter like tasks.
The original design of L3 was to be made out of a large rubbish bin, think of those big thigh height green bins, however this was changed for several reasons.
1) The continous rotation servos I had weren't able to provide enough torque to drive the motor forward
2) It was to big to manevour well in the household
3) My sister liked to kick it
The next idea for a chassis was to use a smaller bucket, after a few weeks we, being me and my Dad, couldn't find anything. The next idea was to use checkerplate and construct our own body, this idea was scrapped due to the cost of the checkerplate. All hope was not lost however, one day out shopping we luckily found a plastic tub that would be the perfect size for the body of the bot.
9mm MDF was chosen for the base of the robot as the previous version of the bot we made with the bigger bucket used 6mm and I found it a little to 'weak' for my liking. Tracing the outline of the bucket onto the piece of MDF I cut it out with the jigsaw and thought about how to best tackle the task of construction. I am by no means handy with tools, although I have never cut myself, I rush most things and find it hard to slow down, but under the careful watch of my Dad I completed the task.
Once the base was cutout it was much easier to work out where things were going to be placed. I divided the circle into quarters and found that it seemed reasonable to put the two drive wheels and two casters at these points.
After some measuring for the size of the wheels and castors I bought I cut out the holes by first drilling some starter holes and then cutting it out with a jigsaw. I took to the computer and worked out how much ground clearance the bot would have and then worked out how high I needed to moung the castors off the base to allow for the 'perfect grip' I wanted. After all of this I was left with this.
The drive wheels were found at the local hobby shop, their intended purpose is to be used on remote control aircraft as they are incredible light weight, however with some modification on a servo horn I was able to screw the wheel onto the servo horn and then attach it to the servo. I thought it seemed necessary to put an axle through the wheel and into the servo as to better support the wheel and servo axle better and prevent wearing down gears etc. I found somethings out in the shed that were perfect, I have no idea what their purpose was or what they are called but they were exactly what I was looking for. These things were placed and washers were put on the end, the other end of this thing was inserted into a bit of timber for added support.
Wheels in, next step castors, they weren't hard to put it, just screw basically.
All of the screws used were countersunk so I also learn how to countersunk all the screw holes, good stuff.
That ugly bit of orange acrylic has since been replaced by some spacer things.
After all of the big stuff was finished I moved onto the wiring.
After some prototype runs I found I was experiencing a lot of problems with powering the servos. First I was powering each one seperately with 4.8V rechargable packs, didn't have enough speed for my liking. Next up was a 7.2V lipo being regulated back down to 6V, I had some wierd problems with this aswell. I believe the problem was that the regulator was heavily restricting the amount of current being given to the servos. I then just decided to use normal AA's and run each one on a seperate 6V power supply.
I got some more soldering skills under my belt as I soldered all the leads to switches and heatshrunk it all. I really wanted a pair of helping hands but I found pegs were just as good.
Attaching the proshield on top and some header pins I connected the servos and power leads up.
I had an OCD moment when hooking everything up. The power leads from the switches are white, brown, red and black, I didn't have black so I improvised.
After it was all wired up I mounted the HC-SR04's by drilling some holes in the tube and pushing them through, still need to put a dab of hot glue just to hold them there.
And thats all the hardware for now.
Originally a netbook was suppose to be mounted inside to take care of all the processing but it didn't fit very well at all so I have decided to buy a bluetooth module and connect the Arduino to the computer via that.
Thanks to mogul for the help choosing which one. I should get that by Wednesday so expect this bot to be finished quite soon.
All of the processing is done on a computer using Processing. I have written several versions and will keep re-writing them until I feel it does its job properly. Once I have finished with it I will release more as to what exactly it does, but for now its all a bit blurry.
The idea is that the robot has lots of modes, all of which are toggled with voice. So far I have, follow my face, movement and patrol (being basic obstacle avoidance). More info will come as I get more into the programming side of things and finalize the body of the robot, thanks for reading.