Archiv verlassen und diese Seite im Standarddesign anzeigen : vehikel[eins] als kamerabasierter Linienfolger
Frohes Neues!
Ich habe hier vor längerer Zeit mal von meinem vehikel[eins] Projekt berichtet, damals allerdings nur von dem ersten erreichten Etappenziel, der erfolgreichen Entwicklung einer fahrbaren Plattform. Mittlerweile bin ich um einiges weiter, und habe gerade ein kleines Experiment abgeschlossen, das vielleicht den einen oder anderen hier interessieren könnte.
Da ich alles auf meinem Blog (s.u.) erklärt habe, erlaube ich mir mal, mich hier kurz zu fassen, und nur das Experiment selbst zu beschreiben. Mir ging es darum, auf Basis eines Kamerabildes, das mein Vehikel aufnimmt, einen Linienfolger zu realisieren. Das Kamerasignal wird dazu per Funk an einen PC übertragen, auf diesem unter MATLAB verarbeitet und schließlich die gewonnen Steuerinformationen zurück an das Vehikel gefunkt, das sich dann entsprechend verhält. Die technische Herausforderung an der Sache war, alles als closed-loop-System zu realisieren, das insgesamt (incl. Bildverarbeitung) schnell genug ist, um in "Echtzeit" funktionieren zu können. Eine andere Herausforderung war, einen geeigneten Algorithmus zur Navigation zu finden. Meine erste Lösung dieses Problems ist erstaunlich simpel: ich bestimme den Schwerpunkt des jeweils aktuellen Kamerabildes und leite aus dessen Abweichung von der Bildmitte die Aktivierung der Motoren ab. Das funktioniert unter gewissen Randbedingungen (die kompliziertere Verfahren aber meiner Erfahrung nach ebenso haben…) überraschend gut.
Den Quellcode veröffentliche ich in den nächsten Tagen auf meinem Blog, ich bin immer noch nicht dazu gekommen, ihn so zu bereinigen, dass man jemand anderen reingucken lassen kann ;-)
Hier dann das Link zu meinem Blog, dort gibt's auch ein Video des Vehikels beim Linienfolgen:
http://www.vehikeleins.blogspot.com/
Wer Fragen oder Kommentare hat, kann diese hier oder gerne auch auf meinem Blog loswerden, ich freue mich, wenn da auch mal ein bisschen "Traffic" ist.
Es grüßt Euch
Malte
hier noch zwei Bilder:
Hallo Malte,
das ist ein ausserordentlich gut gearbeitetes Projekt.
Alles sehr solide und weit ausbaufähig. Ansicht der Mechanik von unten ond Schaltbild wären interessant.
Auf deine nächsten Bildverarbeitungsexperimente darf mann gespannt sein.
grüsse,
Hannes
NumberFive
03.01.2008, 09:54
Hut ab !
dooles Teil. Einfache Hardware sauber Software.
Wie viele Frames schaffst du ?
Was sind die Rand Bedingungen ?
Wie kommen die daten nach Matlab ?
Was ist aus deinem VB Projekt geworden ?
Gruß
Hallo!
Danke für das positive Feedback! Die von mir praktizierte Maxime "wenn, dann auch ordentlich", ist durchaus nicht Selbstzweck. Ich finde es einfach extrem nervig, wenn man gute Ideen nicht umsetzen kann, nur weil es aufgrund von schlechter Vorarbeit an alle Ecken und Enden klappert. Ich weiß von mir, dass mir dann schnell die Lust vergehen würde. Aber das nur am Rande...
@Hannes
Ein umfassendes Schaltbild existiert im Moment nicht, ich habe meist nur kleine Kritzeleien auf ausgedruckten Datenblättern gemacht, eben nur soweit, wie ich von den „typical applications“ abgewichen bin. Der Schrittmotortreiber entspricht beispielsweise im Wesentlichen dem Schaltungsvorschlag aus dem Datenblatt. Naja, und die Beschaltung des AVR ist ja auch ein bisschen wie mit LEGO spielen, also irgendwie immer das gleiche. Wenn der Quellcode in kürze kommt, wird man relativ leicht sehen können, wie das System aufgebaut ist. Weitere Bilder von der Mechanik sind im Blog weiter hinten zu finden. Ob direkt eine Ansicht von unten dabei, weiß ich gerade gar nicht genau. Kann aber gerne bei Gelegenheit nochmal eine Aufnahme machen. Bist Du dabei an etwas speziellem interessiert?
Auf meine nächsten Experimente bin ich übrigens selber auch gespannt, ich hab‘ mir da ein paar ganz wilde Sachen ausgedacht, aber bevor es nicht zumindest ein wenig funktioniert, wird davon sicher nichts verraten ;-)
@NumberFive
Also die Obergrenze der Framerate ist erstmal durch die Funkkamera definiert, und die macht so ca. 15 fps. Mit wie vielen Frames man die Bildverarbeitung schafft, hängt einfach von dem Rechenaufwand des verwendeten Algorithmus und also der Leistungsfähigkeit des Computers ab. Mein Algorithmus braucht jetzt incl. Grafikausgabe auf meinem Rechner (AMD Athlon 2600+, 512MB Ram) zwischen ca. 90 ms und 120 ms, ich könnte also theoretisch auf Raten von 8-11 Hz kommen. Tatsächlich werte ich im Moment nur jedes fünfte Frame aus, arbeite also ca. bei 3 fps. Um in Matlab auf die Frames zuzugreifen, verwende ich die Image Acquisition Toolbox, das ist relativ einfach (vorausgesetzt man hat sich erstmal an die Eigenheiten von Matlab gewöhnt). Und damit ist implizit auch Deine letzte Frage beantwortet (beachtlich übrigens, dass Du Dich noch an meine damalige Frage erinnern kannst): nachdem ich es in Matlab halbwegs hinbekommen hatte, habe ich es mit VB.net erstmal nicht weiter versucht. Alles in allem kann ich Matlab für solche Zwecke im Nachhinein durchaus empfehlen – und wenn man erstmal in Matlab ist, ist man eben sehr flexibel, man kann dann eben auch auf zahlreiche Toolboxes wie z. B. die (freie) machine vision toolbox zurückgreifen (die ich mir aber noch nicht angesehen habe).
Es grüßt
Malte
NumberFive
05.01.2008, 06:17
Konnte mich daran erinnern weil es zwei Projekte mit so Mathe Software gab einmal Mal Matlab und einem mal SCI-Lab die müssen sehr Ähnlich sein.
Für die SCI-Lab habe ich nämlich eine DLL gemacht welche die Bilder vom der Cam holt. Währe schön gewesen wenn du meine Software benutzt hättest.
Im Prinzip sind 3 FPS schon ganz ordentlich wo bei du Natürlich immer an den Speed von Bot denken mußt bei 30 KM/H reichst wohl nimmer.
Auch die Verwendete Machine ist nix kleines. Träume noch da von so was
mal aut meinen C3 Processor des Epia machen zu können *g*.
Ein gebette in der gesamt Softwarelösung an der ich zur Zeit arbeite.
Ich habe gesehen da du den andern Thread mit der Mini Bot und Cam auch gelesen hast. Meinst du das das JPG zum Auswerten der Daten reichen würden ?
Gruß
Hallo NumberFive,
ich habe Matlab genommen, weil das alles in allem extrem flexibel ist, mit dem Toolbox-Konzept stehen mir halt viele Möglichkeiten offen. Ist so'n bisschen eine Frage der Weltanschauung: ich finde es auf jeden Fall beachtlich, wenn man wirklich alles selber macht, ich tendiere prinzipiell auch dazu. Aber irgendwie muss man das Rad ja auch nicht immer wieder neu erfinden. Und in Matlab findet man eben viele Dinge schon fertig und gut implementiert, sodass man sich dann wirklich auf die eigentlichen Ideen und Probleme konzentrieren kann.
Und nochmal zur Framerate: wie gesagt, ich denke, da ist noch einiges mehr drin, wenn man einen schnelleren Rechner verwendet. Ich könnte jetzt schon bis ca. 10 fps kommen, mit einem schnellen 64bit Rechner würde ich vermutlich die 15 fps voll schaffen. Aber wie Du schon sagtest: bei einem langsamen Roboter braucht man ja nicht so hohe Raten. Was übrigens ein anderer sehr unangenehmer Punkt ist, ist die Latenz des Grabbers. Ich habe das mal auf die schnelle sehr grob gemessen, und komme da auf 100-200 ms. Das würde ich mittelfristig durch andere Hardware noch weiter minimieren wollen. Vielleicht mache ich hier mal in kürze einen Thread zu dieser Problematik auf, weil ich selber nicht so recht weiss, welche Grabber wirklich deutlich schneller sind - die meisten Hersteller machen dazu zumindst keine Angaben.
Deine Frage zu dem Thread "Mini Bot und Cam" habe ich nicht ganz verstanden. Welchen Thread meinst Du? Falls Du wissen willst, ob die Bildanalyse, die ich jetzt machen auch mit einem JPG-komprimierten Bild funktioniert: ja, das funktioniert definitiv. Die Methode ist extrem robust.
Gruß
Malte
NumberFive
05.01.2008, 14:14
so ungefähr das habe ich gemeint.
Ich habe ein Uralten PCI Karte zu Grappen die ist ordentlich schnell.
Mir würde es eher um die Optimierung des Algo gehen also auf einem 486 voll 10 FPS so was würde Spass machen. Vielleicht hast du ja lust vom Mat lab weg zu gehen und doch was in einer "echten" sprache zu machen wenn der algo steht. Vielleicht hast du lust was wir was zusammen machen.
Gruß
Hallo!
Also ich werde erstmal bei Matlab bleiben. Ich bin ganz zufrieden, dass ich jetzt so eine universelle Umgebung habe, das will ich jetzt erstmal voll auskosten. Den Algorithmus zu portieren sollte übrigens kein Problem darstellen, der ist sehr simpel.
Gruß
Malte
Hallo!
Ich hatte es schon seit langem angekündigt, jetzt habe ich es endlich mal geschafft: auf meinem Blog (http://www.vehikeleins.blogspot.com/) gibt's jetzt endlich auch mal den Quellcode zu meinem Projekt. Potentiell interessant könnte das für all jene sein, die sich für einen (oder mehrere) der folgenden Punkte interessieren:
- Roboter mit Funkkamera
- (einfache) visuelle Navigation
- Linienfolger
- Robotersteuerung mittels PC, insb. Matlab
- bidirektionale Funkstrecke mit RFM12-Modulen unter Bascom
Darüber hinaus sind sicherlich auch noch manch andere interessante Punkte an dem System.
Fragen und Anmerkungen willkommen! Hier oder im Blog...
Gruß,
Malte
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.