Surveyor Robotics Journal
   



email: support@surveyor.com

SRV-1 home page

Surveyor Corporation home page

Subscribe to a syndicated RSS feed.

Subscribe with Bloglines

Archives
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
Februray 2006
January 2006

       
Sun, 20 Apr 2008

Mobot '08 at CMU - congrats to John Palmisano and Pikachu

At the 14th Annual Mobot Race, hosted this past week by School of Computer Science of Carnegie Mellon University, Society of Robots founder John Palmisano used the SRV-1 Blackfin camera with his ERP (Experimental Robot Platform) to win 2nd place overall and gain a Judge's Choice Prize for most innovative design.



Details of the design are found here - ERP (Experimental Robot Platform).

Posted Sun, 20 Apr 2008 12:40 | HTML Link | see additional stories ...

Sun, 13 Apr 2008

exposure control for the OV9655 camera module

After deriving a stable set of register settings for the OV9655 camera module last fall, there hasn't been much done with the settings except for addition of a command to invert the image orientation. It has seemed that the "shutter speed" as well as gain control are a bit slow, so I started to tweak some registers today and got some encouraging results.

The formula provided by Omnivision for exposure time calculation is as follows:

Exposure time = 1/PCLK x 2 x 1520 x (Exposure line + Dummy line)
    Where
        PCLK => Pixel output clock
        Exposure line = (0xA1[5:0] x 1024) + (0x10[7:0] x 4) + 0x04[1:0]
        Dummy line = (0x2E[7:0] x 256) + Value of 0x2D[7:0]

The default settings are reg 0xA1 = 0x40, reg 0x10 = 0x40, reg 0x04 = 0x03. I experimented with reducing the value in the high order bits (reg 0xA1) from 0x40 to 0x20 to 0x10 and finally to 0x00. My guess is that there is a bounds checking in the firmware which sets a lower limit, as changing from 0x10 to 0x00 seemed to make no difference, but the change from 0x40 to 0x10 was noticeable, with reduced motion blurring and somewhat faster gain control response.

The register settings are found in ov9655.h in the data structure:
        static unsigned char ov9655_setup[] {};

As noted, the current default setting for register 0xA1 is 0x40. I would be interested in hearing from others who want to experiment with these settings. The next step is to look at the gain control registers - it appears that registers 0x13 and 0x14 provide significant control of that function.

By the way, the register definitions for the OV9655 are found here - http://www.surveyor.com/blackfin/OV9655-datasheet.pdf

Posted Sun, 13 Apr 2008 14:33 | HTML Link | see additional stories ...

Sat, 12 Apr 2008

more robot Lisp ...

The basic motivation in adding Lisp to the SRV-1 firmware is to create a mechanism by which the robot processors could build adaptive world models and reason their way through that world. Our first attempt to integrate Lisp into the Blackfin firmware didn't go so well, though it exposed several problems - limits to the code size supported by the version of ldr-utils we use to build the .ldr firmware images, issues with the old Blackfin toolchain we were using and recommending (2006R2_RC6), and limits to extensibility as well as memory issues with the lithp code itself.

After a long week of head-pounding, these issues seem to have been resolved - we have a new version of ldr-utils for Linux and Windows, we have successfully switched over to the 2008R1_RC8 version of the Blackfin toolchain, and another Lisp interpreter which may prove adequate for our near-term requirements has been integrated into firmware.

Specifically, this version of Lisp was created by Dr Gregory Chaitin of IBM Research to develop proofs for theorems in set theory. It was originally written in Mathematica and then converted to C. Though not aligned with any particular Lisp dialect, it is compact, fast, and easy to use. Descriptions of the code are found here -

      http://www.umcs.maine.edu/~chaitin/lisp.html
      http://www.umcs.maine.edu/~chaitin/rov.html (sample code at bottom of page)

The interpreter in the latest firmware has not yet been connected to SRV-1 robot functions (other than memory and console), but robot functions will be added in the coming week, and stack monitoring as well garbage collection are planned. The interpreter can run programs from the flash buffer or operate interactively. The interactive mode is interesting, as we can configure the interpreter to load Lisp libraries from flash and then operate as the robot command processor. One thought is to add a natural language capability to the command interface.

This experiment is just in its earliest stages, and we may discover that the Chaitin Lisp is similarly too limiting, requiring that we consider an Lisp implementation more fully defined such as PicoLisp or TinyScheme. For the moment, however, this seems like a reasonable starting point.

Posted Sat, 12 Apr 2008 13:00 | HTML Link | see additional stories ...

Wed, 02 Apr 2008

Just added a small Lisp interpreter to SRV-1 Blackfin firmware

I have been exploring some alternatives to the C interpreter currently built into the SRV-1 Blackfin firmware as our onboard behavior scripting engine, and came across a very compact LISP interpreter called Lithp, written by Scott Anderson. Tucked into the SRV-1 firmware, the code takes just a bit more the 6 kbytes of program space, and while it hosts only a fairly limited subset of Common Lisp, the code is very clean and easy to extend, and it already has a lot of capability.

The code is described here -

        http://www.umlautllama.com/projects/lithp/

and full documentation is found here -

        http://www.umlautllama.com/projects/lithp/lithp.pdf

The interpreter runs a program that has been transferred to the onboard flash buffer either from flash memory, via XMODEM transfer, or directly entered through the onboard line editor. The 'P' command launches code execution. The SRV-1 firmware has now been split in to separate versions to support either the C interpreter or Lisp interpreter, but not both in the same image. The download link for the test version of firmware is found in this forum thread -

        http://www.surveyor.com/cgi-bin/yabb2/YaBB.pl?num=1207001321

To get this to run, some new memory management functions were added and the processor stack was moved. We are just at the beginning of the testing cycle, so some revisions should be expected. Also, none of the core motor, sensor or vision functions have been linked to Lisp calls, though that should follow shortly. One of the goals is to link Lisp functions to the neural net library now built into the firmware - some interesting possibilities for SRV-1 behavior development should emerge once we figure out how to tie those pieces together.

Posted Wed, 02 Apr 2008 16:02 | HTML Link | see additional stories ...