KUBEL logo KUBEL logo    SECTION5
KUBEL logo KUBEL logo Home | Embedded / Signal Processing | Device control library | Visualization | Contacts/Links

round
Blackfin/uClinux
ICEbear-JTAG
Software
VisionKit
AppNotes
Support

Das VisionKit Kamera-Framework

Speziell für embedded uClinux-Systeme haben wir seit 2006 ein robustes Kamera-Framework für industrielle Applikationen entwickelt, welches nun offiziell als Dienstleistung angeboten wird. Wir glauben, dass es eine der flexibelsten Linux-Video-Lösungen ist, da es eine weit über die üblichen v4l2-Linux-Anwendungen hinausgehende Funktionalität besitzt. Es besteht aus den folgenden Modulen:

  1. ppivideo: Hochperformanter, buffer queue basierter Kerneltreiber für Blackfin/uClinux
  2. videoserver: Multi thread Kamera-Server: Pipelined, quasi-simultane Bilderfassung, Verarbeitung und Versand via netpp or standard UDP/TCP Video-Protokolle. Der videoserver ist portabel zu anderen Architekturen (i86, ARM, ...)
  3. Sensor-Steuerungs-Bibliothek, unterstützt vollen Registerzugriff für verschiedene Sensoren, siehe unten
  4. display: Remote display server mit Unterstützung für verschiedene rohe Videoformate
  5. Das Camasutra user interface. Ursprünglich zur Fernkontrolle von Kameras entwickelt (daher der Name) kann es zur Fernsteuerung von beliebigen Geräten benutzt werden
Alle Sensoreigenschaften und -Konfigurationen werden beim Start des videoserver detektiert. Es werden auch Multi-Kamera-Konfigurationen unterstützt (tristated bus), ohne dass der Kernel neucompiliert werden muss. Damit können mehrere Kamera-Konfigurationen mit ein und derselben Firmware laufen.

Die wichtigen Unterschiede zum bestehenden SoC v4l2 framework sind, dass alle Konfiguration und Steuerung der Sensoren im UserSpace via über das netpp Framework geschieht. Die Vorteile:

  • Keine Verpflichtung Spezifikationen oder Treiber offenzulegen!
  • Kein mit unnötigem Code aufgeblasenes Kernel
  • Kein Treiberunterhalt nötig, wenn auf neue Kernels umgestiegen wird

Die Bildverarbeitungs-Fähigkeiten des videoserver sind prinzipiell durch eine FIFO buffer queue bedingt. Der Anwender teilt dem Kernel mit (bevorzugt per v4l2 USERPTR Methode) wo die Video-Frames abgelegt werden sollen. Ein DMA-Prozess füllt die Puffer mit den eintreffenden Video-Daten und benachrichtig das Anwenderprogramm, wenn ein Puffer bereit ist. Anschliessend wird der Puffer von der FIFO-Queue "geholt", die Daten verarbeitet, und optional wieder in die FIFO-Queue zur weiteren Verfarbeitung oder zum Versand zurückgesteckt.

Die Architektur ist so konzipiert, dass kein Datenverlust auftreten kann, was erlaubt, das System für schnelle Line-Scan-Anwendungen einzusetzen. Das implementierte 3-Stufen-FIFO (acquire, process, deliver) bietet maximale Effektivität bei hoher Flexibiliät was die Verarbeitung angeht. Für bessere Latenz und Geschwindigkeit sind optionale Echtzeit-Erweiterungen verfügbar.

Referenzanwendungen:

  • MJPEG streaming via http
  • MPEG streaming per ffmpeg libraries
  • 2D Barcode-Leser, 3-5 frames per second
  • Line-Scan Anwendungen
  • Punktverfolgung (hohe Zuverlässigkeit), Blob-Detection

Der VisionKit ist keine plug''n''play-Kamera. Es ist ein Referenzdesign, speziell ausgerichtet auf Systementwickler, die (möglicherweise drahtlose) Netzwerk-Funktionalität eines Linux systems mit den typischen Bildverarbeitungs-Anforderungen auf eigenen Kameraentwicklungen (oder auf section5-designter Hardware) kombinieren möchten. Der VisionKit basiert momentan auf (uC)Linux kernel version 2.6.34.

Der VisionKit baut stark auf netpp auf und bietet somit:

  • Platformunabhängiges Scripting: Fernsteuerung ganzer 'Kamera-Pools' per Python-Scripte
  • Rapides Prototyping von Kamera-Kontrolltools per XML (wird vom Camasutra GUI control tool zur Laufzeit geladen

Screen shots

Beispielanwendung der Camasutra-App und Remote Display Server. Die komplette Verarbeitung findet auf der Kamera statt.

Weitere Dokumentation:

Der VisionKit unterstützt die folgenden frei kommerziell verfügbaren Kameras und Module:

Camera SystemSensor modules
VendorProduct NameLink
Supercomputing SystemsLeanXcamhttp://leanxcam.origo.ethz.ch/
Imaging DiagnosticsCamelothttp://www.imagine2d.com/
Surveyor Corp.SRV1 camera robothttp://www.surveyor.com/
Mesa ImagingSwissRanger 3000/4000http://www.mesa-imaging.ch/
BluetechnixCM-BF527/537 based camerashttp://www.bluetechnix.at/

Weitere Referenzlösungen (automotive/medical) und Ports auf andere Architekturen (TI/OMAP) verfügbar

VendorProduct ID
AptinaMT9V024
AptinaMT9V032
AptinaMT9V034
AptinaMT9D131
AptinaMT9D111
AptinaMT9P031
AptinaMT9T111
OmnivisionOV9620
OmnivisionOV9655
OmnivisionOV7725
AMIS/Photonfocus70700/Emphis300

Unterstützung für kundenspezifische Sensoren können per netpp mit wenig Programmieraufwand leicht implementiert werden

mailaddr


Version: 11.2011