|
|
The machine vision system is one of the more interesting modules on Calculon (of course, I'm biased because machine vision was my specialty). Machine vision is also hard. It is the art of extracting useful information from an image or video. In our case, we only really care about are things we want to avoid. It is a little difficult to not hit stuff if you try to navigate with your eyes closed. Of course, robots have other sensors like lasers that help them see most solid objects. However, vision is the only way to identify the non-solid obstacles, such as white lines painted on grass.
Calculon currently has 1 DV camcorder with a wide angle lens. The wide angle lens helps us to be able to see a bit more of the surroundings (like the lane lines on either side of the vehicle). The DV camera is 3CCD, which gives us better image quality and great white balance. One of the downfalls of having one camera facing forward is that Calculon can only see what is in front of the vehicle. As soon as an obstacle goes out of vision to the right or left and is to the side of the vehicle, Calculon can't see it anymore. Unless we save a world map of everything we've seen so far, this means that Calculon doesn't know this obstacle exists anymore. In general, the path planner tries to make sure the vehicle can rotate 360 degrees at any time (just in case there is a cone right out of sight to our side).
From previous experience, one of the hardest parts of machine vision is the extensive trial and error necessary to see if a set of algorithms work in all situations. Sometimes an algorithm will work well when it is shady out, but fail miserably when it is sunny out. Or become confused when it sees shadows from obstacles or the vehicle itself. So for Calculon, a system was built to make it as easy as possible to test out various filters and algorithms. The result was the construction of a GUI application called Discover Vision that allowed a user to create script files and run them with an interpreter. This approach made it very easy to use all the machine vision code developed from a BASIC like script. The script could then run on an image, sequence of images, or live video. A user could change and re-compile the script at any time and the effect would be seen immediately, even in the middle of a live video.
The end setup was to use the Discover Vision GUI to write a script through trial and error. Images and video could be loaded into Discover Vision and run through the script to test how well a script worked. Once we settled on a script that works well, we would export it to a file. The client can then load in this script and use the Discover Vision Engine to run the script on the incoming video frames from the camera. Once a video frame is processed, the identified obstacles then go to the mapping system and the script executes again on the next video frame.
|