Arduino - Looking for Suggestions
This is my first robot project, and I have had a lot of fun so far.
I am building a Roomba-like autonomous robot vacuum cleaner. I took an existing rechargable vacuum cleaner, added wheels, an Arduino and some whiskers when it runs into a wall so it will back up, turn a bit and go forward. I am using a 9V battery to power the Arduino and the existing 7.2 v rechargable NiCad battery to run the wheels and the vacuum itself. To control the power going to the motors, I use DPDT 3 position switches with some small servos to physically move the switch to the position I need. I started out with relays, but the power to keep them closed was > 3 watts so this seemed a less power intensive solution. If I was staring over, I would buy an H Bridge (didn't know they existed until after I built mine), but hey it works.
Question 1: I bought 2 battery powered screw drivers for $8 a piece to power the wheels. The thing doesn't track straight but always kind of edges to the right since one of the drills goes faster. What would be a good way to get it to track straight? I thought about resistors but it would be changing battery power for heat which seems inefficient. I also thought about ripping out my electro mechanical H Bridge and either make my own with transistors, diodes and caps or buy it for $2.50 from our kind hosts. Any suggestions I might have missed?
My next challenge is to have it find a charging station and recharge the 7.2V rechargable battery when it needs it. After a bit of research, I saw a video where a guy put an IR sensor in a tube and would rotate the tube until it sensed the IR from a VCR remote. From that, he could deduce where the IR source was in relation to his robot. The problem with that is a VCR remote creates a pretty narrow beam, has a limited range and also only works line of sight. I had thought about cleaning under my couch and just have the 5 remotes I lost 2 years ago pointing altogether outward. I could have the robot but if someone has a better solution, I would love to hear it. What algorithm have other folks used to solve this problem?
Thanks in advance.