This project is a rover that just tries to autonomously navigate away from obstacles. There's really no target, it's just supposed to find a passable path a start walking... or roving in this case.
I'm using an ultrasonic range finder for obstacle detection, which seems to be very in-accurate a lot of times. An Ardunio Uno is the brains that's calculates the route. Along with an XBee shield for spiting out debug data wireless-ly and a motor-shield that actually drives the motors (this will change once I got the navigation algorithm stabilized).
The crux of the algorithm is "Vector Force filed", essentially every obstacle exerts a repulsive force on the rover and the farthest object exerts an attractive force on it. The resultant vector force gives me the direction the rover needs to travel. I won't lie to you, this idea is from a paper I found off of the internet: "Real-time Obstacle Avoidance for Fast Mobile Robots" by,J. Borenstein, Member, IEEE, and Y. Koren, Member, IEEE. (Google will show you the way if you want to check it out).
The algorithm I implemented is a bit rough on the edges, so to speak. When the rover is very close to an obstacle , say a wall, it doesn't know how much to turn to avoid it completely. In other words the rover is not fully aware of it's dimensions... I'm working on improving this aspect of the algorithm. One of the contributing factors is the range finder, it's not giving me consistent data every time the rover scans for obstacle. And the other factor being the fact that I haven't implemented everything the paper suggests and made my own "minor" modifications to the calculations to suit my rover. My biggest challenge was (and still is to a certain extent) to make the rover figure out how to translate the angle calculated into a real world turn. As you can see in the video below (where the rover is trying to get out of the room, through the door and into a corridor) it works alright. Towards the end of the video you'll see what I mean by "rough on the edges" :)
Wednesday, January 19, 2011
I have been working on this tablet for quite some time. Between work and home, this project took a major hit in terms to my attention. But, I finally got it to a decent state with really only one problem: the touch screen.
Let me step back a bit and explain what the project is, well you have guessed it, it a tablet. It's basically an expansion board for Gumstix Overo (earth,water, fire and most likely Tide and FE as well). And do i hear you ask what peripherals I got? Here's the list:
1. 2 x USB host port - ready to be plugged in, no hub necessary
2. 1 x Usb OTG port
3. 1 x audio out
4. touch screen
5. LCD connector: I designed it for 8.9" LCD LED display: LP089WS1
6. battery monitor (gas gauge)
As of now there are no software changes. I just dropped in the official gumstix build and it just works off the bat. But, surely I'll need to make some software changes to enhance battery life and usability etc.
Here's a video demo of the tablet:
If you are sharp, you probably notice a few problems on the board:
1. A red wire jumper close to the usb hub: This is a power distribution switch for the USB ports. When I had this board assembled those parts were in backorder and so I decided to go ahead with out it.
2. bottom left hand side close to the touch screen inputs, I broke off the power switch one day by accident and haven't replaced it yet.
But, other than that I am happy with the way this project went so far... Let me know your thoughts as well...
PS: this is my first blog post and youtube video so, please go easy on the criticism...