Announcement: Welcom to APVNS

January 9, 2009
by Bradford Barr (bnb06)

APVNS (Automatic Programming of Visual Navigation Systems) is an attempt to harness the computing power of Genetic Programming for applications in robotics and machine vision. The goal of the project is to get an autonomous robot to detect and avoid objects using a color mono-camera system. APVNS is being developed as Bradford Barr’s Division 3 project. This weblog will be used to discuss research in the fields of evolutionary robotics, evolutionary computing and machine vision as well as implementation details of APVNS’s systems. Check back soon for updates.

Platform Specifics

January 9, 2009
by Bradford Barr (bnb06)


The platform that APVNS uses consists of an iRobot Create as the robot, an Asus Eee PC 901 for the computation. The Eee PC is connected to the Create via a serial to USB converter and is fastened to the Create. The integrated camera on the Eee PC is used for the vision. The Eee PC is also connected to an Arduino micro-controller via USB for some extra sensor processing.


The Eee PC runs Arch Linux, a type of GNU/Linux. All of the software systems are programmed in a combination of C and Python. OpenCV is used to interface with the camera systems and perform the image processing tasks. The automatic programming system that is being used is a steady state Genetic Programming system, based off of the Push programming language.


The largest constraints for the APVNS project are cost and ease of use. Those constraints guided the purchasing of hardware and the development of the software systems.

The Eee PC offers a good amount of processing power, small form factor, and great battery life for a relitively low price. Use of an Eee PC also allows for a full operating system. Since the Eee PC has a full GNU/Linux operating system on board development time is relatively standard. Use of microcontrollers would require embedded programming skills and a lot more of the development would have to be done in C or C++. Single-board computer usually require additional hardware to interface with I/O devices. Some single-board computers (such as the Gumstix) do not require additional hardware, but their processing power is relatively low in comparison to the Eee PC.

iRobot Create was designed for hobby robotics and is based on the well used Roomba platform. The Create offers the same functionality as a Roomba with an extended sensor suite. The vacuum was replaced with a cargo bay which houses the Arduino. The Create is very well priced and robust enough that institutions such as Georgia Institute of Technology have adopted them as research platforms. The sensor suite includes optical encoders for the motors, bump sensors and omni-directional infrared light detection.

Arch Linux was chosen to be the host operating system because of it’s small size, ease of use, cost, and my familiarity with the OS.

Python was selected as the programming language of choice because it has a lot of features that let developers rapidly prototype new programs and ideas. Python also has a large user base, and because of that user base Python has high-level modules to interface with the Create. Python can also be extended with the C programming language.

C was selected as the language for image processing mainly because OpenCV was written in C. C also offeres great speed advantages over Python.

The Arduino was selected as a sensor board simply because of it’s availability. I had one laying around, and decided to put it to good use.

OpenCV is fully optimized image processing library for the Pentium class processor. Since the Eee PC uses an Intel Atom APVNS takes full advantage of all of the optimizations. OpenCV is also used widely in machine vision research. It is well documented and easy to use.

Discussion of the Genetic Programming system will come in a later post, and this post will be periodically updated to reflect changes in the platform.