Tuesday, June 10, 2008

Progress (Finally!)

Finally, (in the middle of my exams, of course) I have some proper progress to report on my robot.

I have determined the first feature/ability benchmark for the robot, and I have made some significant progress towards that benchmark.

Before the first benchmark, I had a number of goals, outlined below:
  • Fabrication of basic frame, motors, camera hardware etc (90% complete)
  • IO board for PC-based motor control (70% complete)
  • Battery systems (50% complete)
Some of these will have to be further completed before the first benchmark can be complete, the rest are good enough for proof-of-concept development.

The first benchmark is based on creating some simple vision based navigation software and is defined as such:
  • Provide and act upon locational information on coloured target (100% complete)
    • This is the detection of a red target (as seen in the image on the right), and the reporting of commands to rotate the camera (robot) to centre the target horizontally. This has now been completed, with the robot able to locate and centre on the target autonomously, even if the target is not initially in the frame.
  • Applying commands (50% complete)
    • Finish attaching the camera to the robot, connecting the camera to the MicroClient Jr, and debugging and movement command problems.
  • Path Planning (10% complete)
    • This is the determination and actioning of a path towards the target, including the avoidance of obstacles (Conveniently placed shoes...) along the way.
Now, obviously, I don't expect to create a perfect vision-based navigation program in the next two weeks! As you will notice, the floor is a rather conveniently white and the obstacles are rather conveniently contrasting black/purple. If the code under development for the path-planning works, the robot should be able to navigate a simple situation like this with just the single camera. It should also be noted that the CMUCam does the majority of the actual target tracking and most of the work described in this article was in the development of a robust RS232 command suite for the camera and a system for converting the target's locational information into movement commands.

Speaking of the camera, the image shown above is an actual still from the CMUCam. When recorded, the image has a resolution of 80x143 pixels. I have doubled the horizontal resolution of to repair the perspective. Before the alteration, the image looked like this (on left).

Finally, I will post some code for the tracking and centre-ing as soon as it is debugged in my damn-small-linux build.