Embedded Eye

Give your gizmo the gift of sight

I am working with FireFly Small sensors on an XMOS proccesor (RAM is limited, so I am not using the large sensor). I used a XC-1A development kit, which consists of a 4 core 400mhz processor, and a lot of peripherals that are useless in this application.
Here is my progress, chronologically:

The XMOS board has a painfully slow FTDI interface, totally useless for getting image data. My main computer does not have a RS232 port, so a very roundabout way was used. The image data is sent via a 900mhz modem to a old server, and the data is grabbed via VNC.
Computer executes code -> image via 900mhz modem ->computer #2 receives it -> computer #1 receives through SSH from computer 2.

First image:

A piece of carbon fiber laying over the sensor (don't know what was up with that line, only appears sometimes):

Here are some tries with edge detect:

And a whole image w/ lens and :

Add a FPN mask (not pointed at the same spot):

I am mainly interested in tying this in with an IMU for larger UAV's, as well as 3D reconstruction from two sensors. The IMU I am working with (yea, I screwed up the PCB :p):

Craziness while trying to tune the PID (blue is roll, red is pitch, green is yaw):

I think the major obsticle in the XMOS line is the lack of RAM, or IO to add a significant amount of external RAM.
The XMOS XDE project with code is attached. Use that to get images from the XMOS dev kit. Change ports and the .xn file to use with others.

Views: 354


Reply to This

Replies to This Discussion

Thank You for the write-up! I think the FTDI interface is best for diagnostics/debugging, and was never really meant for high speed transfer of data. We used a different XMOS dev-board- the one with Ethernet- and found Ethernet to be faster.

For image processing there are some things you can do with limited memory but I agree external memory will be needed for other tasks.
The XTAG allows for full speed USB through a high speed serial port, so that will make independent modules that are not based on a dev kit much easier, with a convenient programming adapter. I am looking for a connector that is small and allows for all the connections. I actually received a sample from JST today, part 41FVX-RSM1-GAN-ETF. 41 connections, and this thing in tiny, a bit smaller than the size of 4x .1" pin headers (and looks painful to hand solder!)
Started a rewrite to make it more effecient/easier to use. I did not, however, ever get linear response to work, so for now, will be log response. Current progress:

XC File: http://pastebin.com/9fm7DHY5
Header: http://pastebin.com/cixeTwEw

The header defines all the constants.

Can someone look over the init method in the XC? I do not know if I defined the binning patterns correct (in the if statements, eg, 0b01010101). Line 110

Thanks for your comment. I will look at this today and get back to you.



© 2022   Created by Geoffrey L. Barrows.   Powered by

Badges  |  Report an Issue  |  Terms of Service