Hardware Accelerated Machine Vision platform using the Xilinx Zync 7000 FPGA+ARM System on a Chip and OV07725 Camera

Similar projects worth following
Inspired by the OpenMV and Pixie cam as well as my desire to broaden my horizons and learn the hardware of the Zync 7000 FPAG+SoC. The goal is to combine native OpenCV running on a linux operating system with some CV algorithms running in the FPGA hardware.
The entire design is open source under the CERN open hardware licesnes. The whole thing is being developed using the nightly build of KiCAD!

Specs as follows:
- Xilinx XC7Z010-1CLG225C Dual Core ARM Cortex A9 667MHZ + Artix 7 FPGA 28K Cells
- OV7725 VGA Camera Module
- Micron LDDR2 Memory Module
- USB 2.0 Connectivity
- ESP8285 WiFI SoC for wireless operation
- GPIO headers for addons and hacking
- Onboard DCDC regulators for all voltages with enough current for accessories and hacking

Enjoy this project?



Ted Yapo wrote 01/09/2017 at 19:10 point

Wow, this is a great project idea!

If I can add my humble suggestions - some of the things missing from affordable cameras are external (hardware) frame synchronization and long-ish exposure times.  I ended up finding some older firewire machine vision cameras on ebay relatively inexpensively, but they'd be in the kilodollar range new.  Having this functionality in an open-sourced camera would be awesome.  Even if you don't add it, having the design open-sourced so that someone else could would be a huge win.

  Are you sure? yes | no

Adam Vadala-Roth wrote 01/10/2017 at 05:25 point

Hi Ted, thanks for commenting, I'm always looking for suggestions and wisdom from other engineers! How should I implement those features, there should be plenty of pins available on the Zync for more features even with what I already have planned. 

  Are you sure? yes | no

Adam Vadala-Roth wrote 01/10/2017 at 06:46 point

I'm also adding to the design on the same schematic sheet as the camera an RGB light source and a IR light source. Perhaps I should make a second PCB that mounts around the optics assembly for lighting? Would love your input since you seem to know what you are doing.

  Are you sure? yes | no

Ted Yapo wrote 01/10/2017 at 19:01 point

"Know what I'm doing" is probably generous :-)

I took a look at the OV7725 brief; it's a rolling-shutter sensor, which I guess makes sense because it's inexpensive and available...some of what I was suggesting makes more sense for a global-shutter camera, but the synchronization still applies.

On commercial offerings, they typically provide an opto-isolated trigger input to synchronize the frame scan.  Software sets up the camera to take a single frame or multiple frames, then the camera waits for the external sync signal to capture each frame.  This is useful for synchronizing the exposure with structured light systems or other strobed illumination.  It is also required to obtain well-synchronized stereo or multi-view image sets from multiple cameras.

Long exposure is more difficult with rolling shutter cameras, but it would be useful to have full control over the exposure range (the spec sheet states 510:1 based on fps).  Also, although the "automatic" adjustments done by the camera make for an easy learning curve, exposing the full range of each manual control allows more sophisticated uses.

A second board for illumination is nice for flexibility - I have been frustrated with inexpensive cameras that carry their own LEDs. 

My suggestion would be to use a white LED source for color images instead of RGB unless you intend to do something unusual (like #Bullet Movies - still a work-in-progress).  White LEDs typically provide better color rendition than "white" light created from three separate red, green, and blue LEDs; the latter usually has "holes" in the spectrum.  This has a brief intro:

  Are you sure? yes | no

Does this project spark your interest?

Become a member to follow this project and never miss any updates