C++Guns – RoboBlog blogging the bot

12.02.2009

PIV Tag 12

Filed under: particle tracking system — Thomas @ 14:02

gpiv war wieder das heutige Thema. gpiv_combing unterstütze nicht das ppm Format. coriander hingegen speichert bevorzugt im ppm Format ab. Das oder raw. Aber bei raw ist mir gpiv bisher immer abgestürzt. Da liegt die Idee natürlich nahe in einem kleinen Scipt erstmal alle Bilder in ein von gpiv_combing unterstützes Format zu bringen. Ich hab mich da für pgm entschieden. Das kostet natürlich Zeit. Zeit die ich nicht aufbringen will. Also hab ich mir den Code angeschaut und ppm Unterstützung eingebau. War auch ganz einfach. Dabei habe ich festgestellt, dass das Programm die Bilder intern erstmal alle ins png Format umwandelt.

Beim Wasserradprojekt hab ich es geschafft den Messverstärker über die Serielleschnittstelle zu steuern. Zwei Problem gab es dabei. Erstens musste man erstmal feststellen, dass die Masseleitung des Kabels am Gerät ab war und zweitens wie man die Partität auf Gerade stellt. Bin ich irgendwie zu doof dafür :)

04.02.2009

PIV Tag 11

Filed under: particle tracking system — Thomas @ 22:02

Heute lästern wir mal etwas über Matrox. Um genauer zu sein über Mil-Lite. Ein Softwarepaket für industrielle Bildverarbeitung, welche auch unter Linux zu nutzen ist. Das steht jedenfalls überall so, funktioniert aber nicht wirklich. Erst muss in irgendeiner Headerdatei festgelegt werden, dass man wirklich Linux nutzt. Dann noch ein paar Include Datei korrigieren und alle Dateien die einen Großbuchstaben enthalten umbenennen, da Windows den Unterschied zwischen "A" und "a" nicht kennt. Die Softwareentwickler übrigends auch nicht, keiner von ihnen! Nach diesen Änderungen compiliert das mitgelieferte Testprogramm auch, nur linken mag es nicht. Ich weiss auch nicht, was ich den Compiler an Linkeroptionen mitgeben soll. Es gibt zwar eine mil.lib und mil.dll aber die mit angeben löst das Problem auch nicht. Ich hätte das ganze ja liebend gern unter Windows ausprobiert, aber er findet keinen Kameratreiber wenn ich das Beispiel starte. Einfach so von heute auf morgen geht es nicht mehr. Wie immer....

Aber halb so schlimm. Ich hab von meinem Prof. gehört, dass IDL auch ganz toll Bilder bearbeiten kann. Nur unterlieg das mal wieder einer Lizenz, aber dafür gibts ja die GDL. Ein IDL Klon unter der GPL ohne GUI. Und LPG kostet übrigens bei Jet jetzt .609 stat .599

Äh was? Jetzt nochmal zum mitschreiben.

IDL (Interactive Data Language) [1] steht unter einer Lizenz die Geld kostet. GDL (GNU Data Language) [2] ist ein Klon der nichts kostet. Nachteil: er hat keine GUI (Graphical User Interface) [3]. Und LPG (Liquified/Liquefied Petroleum/Propane Gas) [4] ist toll.

GDL benutzt MPI (Message Passing Interface) [5]. Das bedeutet, es war nicht einfach zu compilieren. Und als es dann lief, konnte es kein Fenster öffnen und stürze ab. Dankeschön.

Jetzt kommen wir zu einem erfreulichen Thema. Wie ich bestimmt im letzten Post erwähnt habe geht es darum, den Drehgeber eines Wasserrades auszulesen. Also habe ich mich die Woche hingesetzt und ein kleines Programm in einen Mikrocontroller gehackt, der die Impulse aufsummiert und alle Sekunde ausgibt. Das hat sogar recht schnell funktioniert. Der Vorteil liegt auf der Hand. Die Entscheidung, wann eine Sekunde rum ist übernimmt nun der mC, welcher das viel genauer kann als das Windows Programm. Welches ja schon ins stocken komt, wenn man es nur anklickt und verschieb. Noch hinzu muss diese Information nicht durchs USB Interface geschickt werden, welches alles andere als Echtzeit fähig ist.

Es langt aber nicht nur die Drehzahl zu messen, sondern noch irgendwie das Gewicht des Wassers, dass gegen die Schaufelblätter drückt. Wie genau das aufgebaut ist habe ich immer noch nicht verstanden. Jedenfalls gibt es einen Messverstärker mit RS232 Ausgang. Den muss ich irgendwie möglichst syncron zur Drehzahl auslesen und die Daten dann zusammen an den PC schicken. Aber darum kümmer ich mich nach den Klausuren....

[1] http://www.ittvis.com/
[2] http://gnudatalanguage.sourceforge.net/
[3] http://de.wikipedia.org/wiki/Graphical_User_Interface
[4] http://de.wikipedia.org/wiki/Fl%C3%BCssiggas
[5] http://de.wikipedia.org/wiki/Message_Passing_Interface

29.01.2009

PIV Tag 10

Filed under: particle tracking system — Thomas @ 19:01

Wenn der Namen Nvidia fällt, denk jederman sofort an die Grafikkarte. Dass aber in diesem Fall die Netzwerkkarte gemeint ist, hat mich auch überrascht. Das ist wieder eine schöne Ironie. Versuche doch mal mit einer Windows Kiste Treiber aus dem Internet zu laden, wenn noch garkeine Netzwerktreiber installiert sind. Aber auch das habe ich hinbekommen, wenn auch mit langen Umwegen.

Danach habe ich die neuste Version von diesem MilLite installiert und mich wieder mit der Lizenz rumgeärgert. Warum hat ein Programm, welches einfach nur Bilder von einer Kamera einliest eine so umständliche Lizenz? Naja egal. Gleich noch das Visual Studio C++ installiert. Was auch wieder viel länger gedauert hat, als ich es annahm.

Zum Schulss habe ich mir noch diesen Wasserrad Versuchsaufbau angesehen, bei dem es einfach nur darum geht, die Geschwindigkeit des Rades Sekundengenau in den PC einzulesen. Dazu wurde eine ext. Messkarte angeschafft, die die Impulse des Drehgebers am Rad zählt. Ausgelesen wird der Zähler über USB. Aber auch gestoppt und gestartet bzw resetet. Und genau das ist das Problem. Bis das Simulationsprogramm am PC den Wert eingelesen, abgespeichert und den Zähler neu gestartet hat vergehen einige Millisekunden. Und in genau dieser Zeit wird nicht gemessen. Wird das Messintervall hingegen 10sek lang gemacht, stimmen die gemessenen Werte mit den realen Werten fast überein.

Man sollte meinen, alle Sekunde ein Messwert abzuspeichern soll keine Kunst sein. Nur wenn die Hard und Software nicht darauf ausgelegt ist, wird es nichts. Die Impulse des Gebers haben auch keine allzu hohe Frequenz. Maximal 1kHz. Ich denke ich werde mit meiner eigenen Hardware daran gehen, bevor irgendeine teuere Realtime Messkarte angeschafft wird, die dann hinter doch nicht das kann, was man braucht. Aber dafür alles andere.

21.01.2009

PIV Tag 9

Filed under: particle tracking system — Thomas @ 20:01

Heute gab es eine Überraschung. Eine neue Switch stand auf dem Tisch. D.h. nie wieder Kabel umstecken! Hat auch nur 4 Monate gedauert... Nur eine eigene IP für mich gibt es immer noch nicht. Zwei Rechner mit der gleichen MAC Adresse, das hat die Switch freude dran :)

Danach haben wir uns Gedanken gemacht, wie denn so die Geschwindigkeit eines Punkes zu berechnen sei. Was eigentlich ganz einfach ist. Nachdem zwei Bilder gemacht wurden, ist die Zeit bekannt und die Anzahl Pixel um die sich das Objekt verschoben haben. Nun muss man nur noch feststellen wieviel Pixel ein Zentimeter entsprechen. Das geht am einfachsten, wenn man kariertes Papier mit auf die Bilder aufnimmt.

Ja, mehr fällt mir grad nicht ein.

19.01.2009

PIV Tag 7-8

Filed under: particle tracking system — Thomas @ 17:01

Über die Jahreswende ist einiges passiert. Ich habe mit einer Kamera weiter Testbilder einer sich drehenden Scheibe gemacht, auf der ein Stück Papier mit schwarzen Punkte angebracht war. gpiv hat mit diesen Bilder ordentliche Richtungsvektoren berechnet. Bis auf ein paar Ausnahmen, aber das wird wohl normal sein. Da die Kamera nur 4 Bilder pro Sekunde schafft, habe ich wieder auf die Firewire Kamera zurückgegriffen. Das hat den Vorteil, dass sie schon Graustufenbilder liefert, und man nicht mehr die jpeg Farbbilder umrechnen muss.

Ok zugegeben, Coriander liefert nur ppm Bilder und gpiv will pgm haben. Also muss man sie doch convertieren. Aber ich habe beim Entwickler nachgefragt, er sagte es sei leicht den ppm support für gpiv zu ergänzen.

Und noch ein Problem habe ich gelöst bekommen. Wenn man Zwei Bilder mit gpiv_combing kombiniert, ist das Ergebnisbild genauso hoch wie die Originalbilder, was dazu führt, dass es nur noch zwei halbe Bilder sind. Schaltet man die Warning von gpiv_combing ein, sag es, dass im ersten Bild schon ein Xcorr Frame vorliegt, was aber nicht der Fall ist. Grund dafür ist, da das Programm die Konfigurationsdatei in /etc/gpiv.conf einliest, bei der per default IMG.x_corr auf 1 gesetzt ist. In der neueren Version wird diese Information aber in den Header der Bilder hinterlegt. Es genügt also IMG.x_corr auf 0 zu setzen.

Des weiteren habe ich mir noch ein Shell Script geschrieben, welches automatisch alle Bilder convertiert, kombiniert, gpiv darauf anwendet und die Ergebnisse mit gnuplot darstellt. Die Ergebnisbilder kann man dann mit mencoder zu einem mpeg4 Video zusammenfassen. Allerdings sieht es noch nicht so toll aus wie erhofft.

10.12.2008

PIV Tag 6

Filed under: particle tracking system — Thomas @ 09:12

Mal überlegen, was hab ich denn gemacht... gpiv u.s.w. mit weiteren Testdaten gefüttert und es gibt auch fast brauchbare Ergebnisse. Ich hab auch zwei leicht verständliche PDFs über PIV und so gefunden, die werd ich mir mal durchlesen. Dann kann ich auch die Parameter im Programm besser einstellen.

27.11.2008

PIV Tag 5

Filed under: particle tracking system — Thomas @ 22:11

Letzens habe ich das Programm gpiv [1] gefunden und war begeistert. Das scheint wenigstens zu funktionieren, die GUI ich brauchbar und es gibt Dokumentation! Im Gegensatz zu openpiv..
Nur leider ist der Teil des Programmes nicht gepflegt worden, der die Bilder von der IEEE1394 Camera einliest. Und man muss die gpiv lib mit der Option --enable-cam neu compilieren. Das geht aber nur, wenn man von irgendeiner libdc die ältere Version nutzt. Bei der neueren findet er dann irgendeine Funktion nicht. Nun, jedenfalls habe ich es geschafft ein paar 100 Compilerfehler zu beseitigen. Aber an einigen Stellen musste ich raten und deswegen gibt es auch ein Segfaul wenn man das Programm jetzt startet :)

Jedenfalls habe ich deswegen den Autor des Programmes kontakiert und er sagte mir, dass es ja noch die gpiv Konsolentools gibt, mit denen man Bilder von der Cam bekommt. Und wenn das auch nicht geht, gibt es noch das Coriander Programm, welches ich hier auch schonn erwähnt habe. Das kann man dann in Kombination mit gpiv nutzen.

Was hat mein Chef vor 2 Monaten gesagt? Mitte Dezember soll das Projekt laufen :P

[1] http://gpiv.sourceforge.net/gpiv_home.html

19.11.2008

PIV Tag 4

Filed under: particle tracking system — Thomas @ 19:11

Einen kleinen Erfolg gab es heute zu verzeichnen. Aber als erstet musste ich feststellen, dass die Windows Kiste keine Treiber für die Netzwerkkarte, Soundkarte noch für die Kamera hat. Ich wusste noch nicht mal von welchen Hersteller die Karten sind, da dass ja einem nicht angezeigt wird. Und Treiber runterladen ohne Netzwerk geht nunmal nicht. Also die D: Platte aufgeteilt und Linux installiert. Allerdings wieder von USB Stick, da ich natürlich keine CD zur Hand hatte. Wenn das Bios etwas älter ist, muss man zusätzlich den Befehl install-mbr /dev/sdb ausführen damit irgenwas ins MBR installiert wird. Sonst mag es nicht vom Stick booten. Danach schnell Linux und alle Software installiert, Netzwerkkarte geht dort ja :) Es war übrigends eine Nvidia Netzwerkkarte, kein Wunder dass Windows keine Treiber dafür parat hatte.

Ich wollte ja das Programm openpiv nutzen. Die Windows Version schaut ja viel versprechend aus, habe sie aber noch nicht getestet. Unter Linux gibts das auch, mit python aber ich bin absolut nicht begeistert davon. Man kann die Größe des Fensters nicht verändern und das Menu wird immer zu klein dargestellt. Auch habe ich den Eindruck, dass Einstellungsmöglichkeiten fehlen. MAl stürzt es ab oder bleibt in einer Endlosschleife hängen. Und ein Menufenster kann man zwar öffnen, aber es ist einfach nur leer. Im Hintergrund rattern dann ein paar Python Fehler durch. Naja, zumindest was die Größe des Fensters angeht, das kann ich selbst im Programm ändern.

Ansonsten habe ich mit dem Programm noch nicht viel gemacht, es fehlt irgendwie Dokumentation oder ich habe sie noch nicht gefunden.

05.11.2008

PIV Tag 3

Filed under: particle tracking system — Thomas @ 22:11

Dieser Tag sollte Ergebnisse bringen, er brachte aber nur Tatsachen. Tatsache ist, dass die Kamera nach weitern vier Stunden immer nich nicht funktioniert. Genauer gesagt funktionier sie schon, nur die Software lässt sich nicht vollständig installieren. CD defekt... Ältere Versionen lassen sich installieren, funktionieren dann aber nur zur Hälfte.

Dann hab ich immernoch kein Internet. OK, mein Fehler. Habe es verpennt rechtzeitig meine MAC preiszugeben, damit man der Switch sagen kann, dass ich ein lieber User bin. Aber wozu kann man MACs fälschen...? Plötzlich funktionierte die Switch nicht an die mein Rechner angeschlossen werden sollte. Eine kurze Diagnose später zeigte, dass das Schaltnetzteil defekt ist. So haben wir sie umgebaut und mit einem externen Netzgerät mit Strom versorgt. Das funktionierte auch, nur leider nicht zufriedenstellend. Anscheinend hat der Processor doch etwas abbekommen, denn ein Ping wurde zwar mit 13ms beantwortet. Er schickte aber vllt. nur 4 Pakete pro Minute los.

Aber ein Fortschritt gab es dennoch. Die Kamera funktioniert unter Linux ohne zusätzliche Treiber! Das hat mich sehr überrascht, denn ich hatte vor zwei Wochen schon einmal probiert ein Bild zu bekommen. Aber weder mplayer noch Kino funktionierte. Aber dafür das Programm coriander[1]. Das Programm bietet auch verschiedene Einstellungsmöglichkeiten für Auflösung, fps, viele Sachen die mir nichts sagen, und man kann die Bilder automatisch auf einen FTP hochladen.

Der nächste Schritt ist also die Kamera, das Blitzlicht und den PC miteinander zu koppeln. Wie genau das geht, weiss ich noch nicht. Jedenfalls hat die Kamera verschiedene Ausgänge die da Blitzlicht triggern sollen, wenn ein Bild gemacht wird. Leider braucht man dazu einen RJ48 Stecker der 10polig ist. Bis der bestellt ist, dauert das wieder...

Und dann fehlt noch die Auswertung der Bilder...

Zumindest MS Office lies sich problemlos installieren.

[1] http://damien.douxchamps.net/ieee1394/coriander/

25.10.2008

PIV Tag 2

Filed under: particle tracking system — Thomas @ 09:10

Heute habe ich ersteinmal eine 160GB Festplatte in den Rechner eingebaut und XP installiert. Das ganze dauerte auch nur 3 Stunden. Das formatieren hat eine Stunde gedauert. Aber da muss man durch. Dummerweise habe ich es irgendwie geschafft die Windowsinstallation auf die zwei Partionen zu verteilen. Also nochmal formatieren (diesmal mit Quickformat) und installieren. Danach war alles richtig.

Zwichenzeitlich habe ich mal die Firewire Camera an meinen Laptop angeschlossen. Wurde unter Windows erkannt und der Movie Maker lieferte ein Bild. Unter Linux wurde ein Firewire Device erstellt. Allerdings hatte ich keine Software installiert, die Firewire Cameras mögen und Internet gabs auch noch nicht für ich. Später hatte ich gelesen, dass mplayer das wohl kann. Aber ich habe wohl das falsche Device angegeben und/oder man braucht noch libdv Support. Nächste Woche wird es sich zeigen..

Older Posts »

Powered by WordPress