Inbetriebnahme der VRmagic Kamera
Autoren: Luca_Di-Lillo, Tim Leonard Bexten
Bearbeitet von: Hendrik Steffen, Sven Posner, Florian Brinkmann, Marc Ebmeyer
Betreuer: Prof. Schneider
Hardware
Hardware Fehler
Fehlermeldung:
EXCEPTION: received ERROR 1: VethControlPipe::dispatchCmd command CMD_INIT failed: Sensor/Frontend-board PnP failed!, device: , device:
See logfile for further details: file:///C:/Users/HSHL-U~1/AppData/Local/Temp/vrmcamlab_2024-01-08_14h25.12096.log
Logfile:
(VuLog::init logfile "C:\Users\HSHL-U~1\AppData\Local\Temp\vrmcamlab_2024-01-08_14h25.12096.log")
logfile date time: 2024-01-08, 14:25:10 (GMT+1)
VRmagic CamLab v3.5.0.0 Win x86 (Qt 4.7.4) built on May 19 2015 11:40:34
VhwPnpManager: create
loaded preferences:6709EAB0<VuPropertyInterface>
STAY_ON_TOP_B=false
ASK_FILENAMES_B=true
SUPPRESS_ERROR_BOX_B=false
AVI_CODEC_I=vrmm
RENDERER_E=D3D9
RENDERER_VSYNC_B=false
RENDERER_INTERPOLATION_E=OFF
SUPPRESS_SETTINGS_CONFIRM_BOXES_B=false
CONTROL_WINDOW_POS_POINT_I=[736,383]
DEFAULT_DATA_PATH_S=""
AUTO_OPEN_DEVICES_B=false
AUTO_START_GRABBING_B=false
LIST_DEVICES_USB_B=true
LIST_DEVICES_ETHERNET_B=true
</VuPropertyInterface>
VgrbDevicePnpConfig::load from "C:\Program Files (x86)\Common Files\VRmagic\vgrbdevice.ini"
loaded config: device support LOC USB ETH
VethPnpCamera: CHANGE_INIT
VethPnpCamera: binding to: 127.0.0.1 169.254.157.251 192.168.1.101
VusbPnpWin32::scan 0 device(s) found:
VethPnpCamera::scan waiting 242ms for replies
VethPnpCamera::scan 0 device(s) found:
VethPnpCamera: binding to: (127.0.0.1) (192.168.1.101)
VethPnpCamera: binding to: (127.0.0.1) 169.254.157.251 (192.168.1.101)
VethPnpCamera: CHANGE_ARRIVAL
VethPnpCamera::scan 1 device(s) found:
<ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:49398>
VrmCamLab::handlePnpEvent EVENT_LISTCHANGE: <INV>
VrmCamLab::handlePnpEvent EVENT_APPEARED: <ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:49398>
Switching device
++ VethCamera::VethCamera
<ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:49398>
CamProtocol version local : 20014
VethPnpCamera: CHANGE_BUSY (this application)
CamProtocol version remote: 20013
<W/14:27:17> Server protocol version is older than local version!
-- VethCamera::VethCamera
++ VethCamera::init
initializing remote device...
VrmCamServer v2.9.1.7 built on Oct 19 2012 12:09:45
CamProtocol version remote: 20014
VethCamera client built on May 19 2015 11:38:29
Found vidin driver version 1.01
++ VdavCamera::init
++ VdavCameraBase::uninit
-- VdavCameraBase::uninit
++ VdavCamera::uninit
-- VdavCamera::uninit
++ VdavCameraBase::init
Clock generator found!
VhwCY22393::clearConfiguration disabled all outputs
-- VdavCameraBase::init
Probing port #1
initSensorEeprom() failed
-- VdavCamera::init
++ VdavCameraBase::uninit
-- VdavCameraBase::uninit
++ VdavCamera::uninit
-- VdavCamera::uninit
VdavCameraImageIo::cancelPendingIO
<E/14:27:17/server> VethControlPipe::dispatchCmd command CMD_INIT failed: Sensor/Frontend-board PnP failed!, device: <LOC><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59>
-- VethCamera::init
++ VethCamera::~VethCamera
<ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:49398>
VethPnpCamera: CHANGE_BUSY (this application)
-- VethCamera::~VethCamera
++VethInterface::closeIoObjects
<ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:49398>
--VethInterface::closeIoObjects
<E/14:27:17> EXCEPTION: received ERROR 1: VethControlPipe::dispatchCmd command CMD_INIT failed: Sensor/Frontend-board PnP failed!, device: <LOC><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59>, device: <ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:49398>
VethPnpCamera: CHANGE_INIT
VethPnpCamera::scan waiting 250ms for replies
VethPnpCamera::scan 1 device(s) found:
<ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:49398>
VethPnpCamera: binding to: (127.0.0.1) (192.168.1.101)
VethPnpCamera: CHANGE_REMOVAL
VethPnpCamera::scan 0 device(s) found:
VrmCamLab::handlePnpEvent EVENT_LISTCHANGE: <INV>
VrmCamLab::handlePnpEvent EVENT_DISAPPEARED: <ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:49398>
VethPnpCamera: binding to: (127.0.0.1) 169.254.157.251 (192.168.1.101)
VethPnpCamera: binding to: (127.0.0.1) (192.168.1.101)
VethPnpCamera: binding to: (127.0.0.1) 169.254.157.251 (192.168.1.101)
VethPnpCamera: CHANGE_ARRIVAL
VethPnpCamera::scan 1 device(s) found:
<ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:50624>
VrmCamLab::handlePnpEvent EVENT_LISTCHANGE: <INV>
VrmCamLab::handlePnpEvent EVENT_APPEARED: <ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:50624>
Switching device
++ VethCamera::VethCamera
<ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:50624>
CamProtocol version local : 20014
VethPnpCamera: CHANGE_BUSY (this application)
CamProtocol version remote: 20013
<W/14:30:46> Server protocol version is older than local version!
-- VethCamera::VethCamera
++ VethCamera::init
initializing remote device...
VrmCamServer v2.9.1.7 built on Oct 19 2012 12:09:45
CamProtocol version remote: 20014
VethCamera client built on May 19 2015 11:38:29
Found vidin driver version 1.01
++ VdavCamera::init
++ VdavCameraBase::uninit
-- VdavCameraBase::uninit
++ VdavCamera::uninit
-- VdavCamera::uninit
++ VdavCameraBase::init
Clock generator found!
VhwCY22393::clearConfiguration disabled all outputs
-- VdavCameraBase::init
Probing port #1
initSensorEeprom() failed
-- VdavCamera::init
++ VdavCameraBase::uninit
-- VdavCameraBase::uninit
++ VdavCamera::uninit
-- VdavCamera::uninit
VdavCameraImageIo::cancelPendingIO
<E/14:30:46/server> VethControlPipe::dispatchCmd command CMD_INIT failed: Sensor/Frontend-board PnP failed!, device: <LOC><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59>
-- VethCamera::init
++ VethCamera::~VethCamera
<ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:50624>
VethPnpCamera: CHANGE_BUSY (this application)
-- VethCamera::~VethCamera
++VethInterface::closeIoObjects
<ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:50624>
--VethInterface::closeIoObjects
<E/14:30:46> EXCEPTION: received ERROR 1: VethControlPipe::dispatchCmd command CMD_INIT failed: Sensor/Frontend-board PnP failed!, device: <LOC><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846> <v1.59>, device: <ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:50624>
VethPnpCamera::scan 1 device(s) found:
<ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:50624>
VethPnpCamera: CHANGE_REMOVAL
VethPnpCamera: binding to: (127.0.0.1) (192.168.1.101)
VethPnpCamera::scan 0 device(s) found:
VrmCamLab::handlePnpEvent EVENT_LISTCHANGE: <INV>
VrmCamLab::handlePnpEvent EVENT_DISAPPEARED: <ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:50624>
VethPnpCamera: binding to: (127.0.0.1) 169.254.157.251 (192.168.1.101)
VethPnpCamera: binding to: (127.0.0.1) (192.168.1.101)
VethPnpCamera: binding to: (127.0.0.1) 169.254.157.251 (192.168.1.101)
VrmCamLabPrefs: applying new preferences:
<VuPropertyInterface>
STAY_ON_TOP_B=false
ASK_FILENAMES_B=true
SUPPRESS_ERROR_BOX_B=false
AVI_CODEC_I=vrmm
RENDERER_E=D3D9
RENDERER_VSYNC_B=false
RENDERER_INTERPOLATION_E=OFF
SUPPRESS_SETTINGS_CONFIRM_BOXES_B=false
CONTROL_WINDOW_POS_POINT_I=[736,383]
DEFAULT_DATA_PATH_S=""
AUTO_OPEN_DEVICES_B=false
AUTO_START_GRABBING_B=false
LIST_DEVICES_USB_B=false
LIST_DEVICES_ETHERNET_B=true
</VuPropertyInterface>
VethPnpCamera: CHANGE_ARRIVAL
VethPnpCamera::scan 1 device(s) found:
<ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:46028>
VrmCamLab::handlePnpEvent EVENT_LISTCHANGE: <INV>
VrmCamLab::handlePnpEvent EVENT_APPEARED: <ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:46028>
Switching device
++ VethCamera::VethCamera
<ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:46028>
CamProtocol version local : 20014
VethPnpCamera: CHANGE_BUSY (this application)
CamProtocol version remote: 20013
<W/14:35:16> Server protocol version is older than local version!
-- VethCamera::VethCamera
++ VethCamera::init
initializing remote device...
VrmCamServer v2.9.1.7 built on Oct 19 2012 12:09:45
CamProtocol version remote: 20014
VethCamera client built on May 19 2015 11:38:29
Found vidin driver version 1.01
++ VdavCamera::init
++ VdavCameraBase::uninit
-- VdavCameraBase::uninit
++ VdavCamera::uninit
-- VdavCamera::uninit
++ VdavCameraBase::init
Clock generator found!
VhwCY22393::clearConfiguration disabled all outputs
-- VdavCameraBase::init
Probing port #1
initSensorEeprom() failed
-- VdavCamera::init
++ VdavCameraBase::uninit
-- VdavCameraBase::uninit
++ VdavCamera::uninit
-- VdavCamera::uninit
VdavCameraImageIo::cancelPendingIO
<E/14:35:16/server> VethControlPipe::dispatchCmd command CMD_INIT failed: Sensor/Frontend-board PnP failed!, device: <LOC><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59>
-- VethCamera::init
++ VethCamera::~VethCamera
<ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:46028>
VethPnpCamera: CHANGE_BUSY (this application)
-- VethCamera::~VethCamera
++VethInterface::closeIoObjects
<ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:46028>
--VethInterface::closeIoObjects
<E/14:35:16> EXCEPTION: received ERROR 1: VethControlPipe::dispatchCmd command CMD_INIT failed: Sensor/Frontend-board PnP failed!, device: <LOC><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59>, device: <ETH><V11A6><PDE00><G80><VRmagic><VRmDC-X-E><XEM7AR><#002846><v1.59><169.254.3.166:46028>
Starten der Hardware
Zum Starten der Kammera wir eine 5V Stromversorgung benötigt. Der Rundpin hat Außen Gnd und Innen +5V mindestens 3A.
Sobald die Spannung anliegt solte eine grüne LED leuchten. Nach etwa 1 min ist die Platine hochgefahren und die LED neben der Stromversorgungsbuchse solte rot leuchten, tut sie dieses nicht liegt ein Fehler vor und die Kammera kann nicht arbeiten und wird von amLab nicht erkannt.
- device type: ETH
- product: VRmDC-X-E
- serial: #VEM8QX (8392550)
- IP: 169.254.5.30:57786
Port Scann mit PortScan:
Host 169.254.5.30
MAC Adresse 00:21:21:80:0F:66[VRMAgic GMbH]
offener Port SSH22
Telenet 23
sunrpc 111
offener Port 42589
offener Port 57786
matlab instrumentencontrol kein zugriff
Klickt man bei VRmagic CamLab auf das Logo, öffnet sich eine Zusatz Info, unter anderem ein Logfile. Dieses beinhaltet die internen Prozesse, damit müste sich über Matlab instrumentenControl test & mesurment eine Verbindung aufbauen lassen.
Ansteuerung mit CamLab am Fahrzeug
Autor: Tim Bexten
Um einen ersten Funktionstest der Kamera durchzuführen, wurde die Kamera über einen Ethernetkabel mit dem Laborrechner verbunden und das zugehörige Netzteil für die Stromversorgung angeschlossen. Als Netzteil wird dabei ein 5V und 4A Netzteil von Phigong verwendet.
Das VRmagic Programm zum ausgeben des Kamerabildes "CamLab" ist auf allen Laborrechnern bereits installiert.
Falls es nicht installiert sein sollte, kann das Programm von der VRmagic Homepage heruntergeladen werden:
VRMagic Homepage.
Außerdem ist die Software im SVN-Repository unter Tools abgelegt.
https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Tools/VRmagic_Kamera_Bibliothek_und_Treiber/VRmUsbCam%20DevKit%20for%20Windows%20(x86)%204.1.0/setup.exe
Der richtige Typ der Software, für den entspechenden Rechner kann unter dem Punkt "USBPlattform/Software" ausgewählt und heruntergeladen werden, siehe Bild.
Nachdem das Programm heruntergeladen wurde, muss die ZIP-Datei entpackt werden und die "Setup"-Datei ausgeführt werden. Für nähere Informationen zur Installation, ist in der ZIP-Datei eine README-Dokument enthalten.
"WICHTIG: Admin-Rechte von Nöten!!!"
Nachdem die Installation erfolgreich abgeschlossen wurde, kann das Programm "CamLab" ausgeführt werden.
Nachdem das Programm geöffnet wurde kann die VRmagic Kamera mit dem CamLab kommunizieren. Die angeschlossene Kamera kann in dem Dropdown-Menü ausgewählt werden. Dies kann nach dem ersten mal anschließen etwas dauern, bis das Programm die Ethernetverbindung zur Kamera findet. Im Anschluss daran kann die Bildausgabe gestartet werden.
Wenn die Kamera ausgewählt wurde, öffnet sich ein erweiteretes Menü. In diesem Menü können alle möglichen Konfigurationen vorgenommen werden, die die VRmagic Kamera anbietet (Format, Timing, Sensor, Filter etc.). Mit einem Klick auf den Button "Grab" kann die Bildwiedergabe gestartet werden. Es können auch Snapshots erstellt werden, die auf dem Rechner gespeichert werden können.
Mit diesem Programm wurde ein erster Funktionstest der Kamera durchgeführt, welcher Grundlage für weitere Ansterungskonzepte mit Visual Studio ist.
Implementierung der Kamera in Visual Studio
Autor: Luca Di-Lillo
Bearbeitet von: Florian Brinkmann
Die Kamera stellt Librarys für die Programmierung in C/C++ bereit, diese sind im SVN Ordner hinterlegt und müssen in die aktuelle Projektmappe im Explorer hinzugefügt werden.
https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/Kamera_VRmagic/Cpp%20Dateien
In Visual Studio wählt man in dem Dropdown Menü in der oberen Leiste neben Debug x86 aus (siehe Abbildung Visual Studio auf x86 einstellen rotes Rechteck), ohne diese Einstellung lässt sich das Programm nicht kompilieren. Im nächsten Schritt wählt man in dem Fenster Projektmappen-Explorer mit einem Rechtsklick die Projektmappe aus und öffnet Eigenschaften.
Die Konfiguration des Eigenschaftsfensters muss auf Debug eingestellt sein und die Plattform auf Aktiv(Win32) (siehe Abbildung Zusätzliche Includeverzeichnisse rote Rechtecke). In diesem Fenster wählt man als erstes die Registerkarte C/C++ aus (blaues Rechteck), dort fügt man jetzt unter dem Punkt Zusätzliche Includeverzeichnisse (grünes Rechteck), den Dateipfad $(SolutionDir)\VRMagic\include hinzu.
Im nächsten Schritt muss man die Library Dateien mit dem Linker verlinken, dazu bleibt man in dem Eigenschaftsfenster und wählt die Registerkarte Linker aus und öffnet dort Allgemein (siehe Abbildung Zusätzliche Bibliotheksverzeichnisse rotes Rechteck). Dort wählt man jetzt den Punkt Zusätzliche Bibliotheksverzeichnisse (siehe grünes Rechteck) und fügt den Dateipfad $(SolutionDir)\VRMagic\lib hinzu. Nun öffnet man auch unter der Registerkarte Linker den Punkt Eingabe (siehe Abbildung Zusätzliche Abhängigkeiten rotes Rechteck), dort fügt man unter dem Punkt Zusätzliche Abhängigkeiten (siehe grünes Rechteck) folgendes hinzu:
- vrmusbcam2.lib
Um die Funktionen der Kamera nutzen zu können, müssen in der der .cpp Datei, in der die Kamera eingebunden werden soll, die folgende Header hinzugefügt werden:
- vrmusbcam2.h
- VRMagicConfig.h
- vrmusbcam2win32.h
Aktueller Softwarestand Visual Studio zum Testen
Der aktuelle und lauffähige Stand einer Software, für die Bild- und Spurerkennung ist unter dem folgenden Link zu finden:
https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/OSE_Draufsicht_Spurpolynom_RS232
Wichtig: Es muss immer die opencv Version verwendet werden, die auch bei der Implementierung des Programms verwendet wurde.
Aufnahme eines Videos
Autor: Florian Brinkmann
Videoaufzeichnung
Um ein Video mit der VRmagic Kamera auf dem Fahrzeug aufzuzeichnen, eignet sich folgender Workflow auf dem Fahrzeug-PC:
- CamLab (x86) starten
- Warten bis die Kamera erkannt wurde.
- Unter
Device
die Kamera auswählen - Unter Format Sensor roi 0,0,752,478
- Wagen ausrichten auf der Bahn und unter Filter den automatischen Weißabgleich ausführen.
- Anzeige des Kamerabildes durch Auswahl von
Grab
- Einstellung des Videoformats
- Preferences öffnen
- Unter AVIi codec
select
auswählen Volle Einzelbilder (unkomprimiert)
auswählen- 2x mit Ok bestätigen
- Aufnahme starten:
Record Avi...
- Dateinamen und -speicherort wählen
- Aufzeichnung stoppen
- Xmedia starten um die AVI Datei in MPEG4 zu wandeln.
Das aufgezeichnete Video kann problemlos in die Simulation der Spurerkennung (Visual Studio Projekt) eingebunden werden.
Video kürzen
Falls das Video gekürzt werden soll, kann dies mit dem folgenden (ausklappbaren) MATLAB-Code getan werden. Die Einstellung der Videolänge erfolgt über den zweiten Wert in der Bedingung der for-Schleife.
%% MATLAB initialisieren
clear all; close all; clc;
%% Videonamen angeben
stQuellVideo = "langesVideo.avi";
stZielVideo = "kurzesVideo.avi";
%% Quell-Video laden
hQuellVideo = VideoReader(stQuellVideo);
%% Ziel-Video erstellen
hZielVideo = VideoWriter(stZielVideo);
open(hZielVideo);
%% Video kürzen
for i = 1:100
% Prüfen, ob Frames vorhanden sind
if ~hasFrame(hQuellVideo)
break
end
% Frame lesen
frame = readFrame(hQuellVideo);
% Frame schreiben
writeVideo(hZielVideo,frame);
end
%% Ziel-Video schließen
close(hZielVideo);
→ zurück zum Hauptartikel: OSE - Objekt - und Spurerkennung
→ zurück zum Hauptartikel: Praktikum SDE