Sie sind vermutlich noch nicht im Forum angemeldet - Klicken Sie hier um sich kostenlos anzumelden Impressum 
Sie können sich hier anmelden
Dieses Thema hat 6 Antworten
und wurde 3.497 mal aufgerufen
 Eigenbauten & Umbauten
Bastelphilipp Offline



Beiträge: 73

13.04.2023 22:21
Proof of Concept: Videobasiertes selbst fahrender LKW (Car System) Zitat · Antworten

Hallo zusammen,

nachdem ich im Bereich Modellbau, Mechanik und Elektronik nicht die allergrößten Erfolge habe (hier und hier), dachte ich mir letzten Herbst ich widme mich in meinem neuen Projekt auch noch der Software-Entwicklung und kombiniere alles. Jetzt - nach 6 Monaten - stehe ich an einem Punkt in dem Projekt, dass es für erstes Feedback taugt und ich mal eure Meinung dazu einholen möchte.

Problemstellung
Ich will das Problem lösen, dass ich nicht jedes Modell auf meiner Anlage selbst steuern muss (per Funk), sondern mehr gleichzeitig passiert. Und bei der Lösung nicht auf so etwas starres wie Magnetbänder und Servos/IR setzen, sondern etwas flexibleres. Selbst das neuste(?) System CarMotion von Viessmann finde ich diesbezüglich relativ wenig innovativ. Da wurde meines Erachtens eine große Chance verspielt, wenn man sogar schon eigene Platinen entwickelt und dann trotzdem technologisch "in den 90ern" hängen bleibt (Wahrscheinlich haben sie u.a. meinen Ansatz geprüft und für untauglich befunden ). Mir ist natürlich durchaus bewusst, dass der normale "Car System Technologie-Stack" gut abgehangen ist und auch für die meisten - wenn nicht alle - Anwendungsfälle sehr gut funktioniert und der Innovationsdruck bei Viessmann nicht sonderlich hoch ist. Umso spannender, trotzdem neue Wege auszuloten! :-)

Lösungsansatz
Meine Idee ist es, die bekannten Lösungen zu Video-Feeds im Mikromodellbau und die rasante Entwicklung im Software-Bereich hinsichtlich des autonomen Fahrens zusammenzuführen. Heute kann ich sagen, dass ich einen Stand erreicht habe, der zugegegebenermaßen noch nicht funktioniert, ich aber von den tausend Problemen schon mehrere Dutzend gelöst habe, sodass ich dem ganzen weiterhin eine Chance geben möchte.

Was ist also passiert?
1. Nach langer Suche und Kopfzerbrechen habe ich mich für eine digitale Videoübertragung entschlossen. Dh. eine Arduino-Variante mit den Maßen ±12x3cm filmt ein HD-Video und publiziert es unter einer bestimmte IP-Adresse im lokalen Wifi.
2. Das Signal wird auf meinem Rechner abgefragt und mit einem Mustererkennungs-Programm bearbeitet. Das Programm erkennt auf dem Video-Signal so die Fahrspur (relativ einfach, da ziemlich schwarz/weiß im wahrsten Sinne).
3. Die Position der Kamera (= des Buses in meinem Falle) auf der Spur sowie der Kurvenradius wird bestimmt und daraus abgeleitet ein Lenk-Winkel berechnet.
4. Dieser "Lenk-Winkel" wird per HTTP-Calls von dem Rechner an den Arduino zurückgeschickt und an den Lenkservo weitergeleitet. Nebenher steuert der Arduino auch den Motor (mit entsprechendem Controller dazwischen).
5. Der Bus fährt die Fahrspur entlang.
Soweit die Theorie und fast auch die Praxis.

Probleme
Die Liste der Probleme ist so lang und vielfältig, dass ich kein Ende sehe. Aber das passt schon, so ist es ja manchmal und ich muss ja auch nicht wirklich fertig werden. Gerade ist das Problem, dass zwar alle Teile einzeln funktionieren, aber die Framerate des Streams zusammen bricht, sobald ich den Motor einschalte. Das ist ein bisschen zu erwarten gewesen, aber ich hatte gehofft, dass es zumindest für den POC (Proof of Concept) ausreichend ist, wenn ich alles (Arduino, Motor, Servo) mit einer Powerbank versorge. Noch weiß ich nicht, ob das das Problem ist, es sieht aber danach aus und wäre lösbar (würde den Motor mit einem Lipo versorgen).

Einige andere weiter entfernte Probleme sind:
- Mechanik verbessern, hier vor allem Servo --> Lenkung, um feinere Lenkbewegungen überhaupt abbilden zu können
- Umstellen von Stromversorgung von Powerbank auf LifePo4
- Bessere Lösung (evtl. anderen Controller finden) für kapazitativ-bedingte Framedrops (s. die Lösung mit der Alufolie, antistatischer Folie und der Holzstückchen inkl. Kabelbinder, um dem Problem erstmal Herr zu werden - die beste Lösung im Internet für dieses bekannte Problem)
- Alles mal verlöten und vom Breadcrumb zu einer Version gelangen, die tatsächlich in den Reisebus passt (in der Theorie passt alles)

Darüberhinaus gibt es unzählige Optimierungspotentiale, da sobald der Stream zuverlässig auf dem Rechner ankommt, die Möglichkeiten nahezu grenzenlos sind:
- Von der reinen Mustererkennung zu Machine Learning migrieren, um das System robuster zu machen und Straßen zu erkennen, die jetzt nicht wie meine aussieht
- Lenkwinkel-Berechnung optimieren (das allein ist ein Thema für Doktorarbeiten, siehe bspw. hier: https://www.youtube.com/watch?v=4Y7zG48uHRo
- Interpretieren von anderen Verkehrsteilnehmern
- Interpretieren von Schildern und Ampeln
- Spurwechsel programmieren
- Abbiegevorgänge programmieren
- Kreuzungen inkl. T-Kreuzungen (hier hab ich noch keine Ahnung, wie ich anderen Verkehr außerhalb meiner 60° Linse sehen soll, aber sollte ich jemals soweit kommen, dass das ein Problem ist, wird auch das lösbar sein)
- FPS im Stream erhöhen, Schnelligkeit der Lenkbefehle (aktuell ±0,5s) optimieren
- ... usw.

Vision
Warum ich's trotz aller Schwierigkeiten gerne weiterführen möchte ist, weil's super viel Spaß macht und ich darüberhinaus am weit entfernten Horizont ein System sehe, dass auf "realistisch gestalteten Straßen" von alleine fahren und Entscheidungen treffen kann. So könnte man sich bspw. verschiedene Profile ausdenken und jeden Arduino sich anders verhalten lassen. Möglich wären bspw. eine Feuerwehr, ein Profil des Rasers oder Dränglers, ein Bus oder ein normaler LKW... Limitierender Faktor ist gerade noch die Baugruppengröße, aber das wird sich in Zukunft auch noch ändern. PKWs sehe ich hier allerdings nicht. Hinzu kommt, dass die Software auch immer besser wird und wir davon direkt profitieren können. Umso realistischer (schöner) ein Modul dann gestaltet ist, desto besser kann das Gefährt sich darauf bewegen (Schilder, Ampeln, ...).


Hier zwei Fotos, um das mal zu veranschaulichen.

Das Fenster des Programms, das hier den Stream anzeigt und als Overlay die erkannte Spur sowie links oben Daten zur Kurve (gerade steht er auf einer Geraden) sowie wie weit er vom Zentrum der Lane entfernt ist:

foo.jpg - Bild entfernt (keine Rechte)

Hier der aktuelle Versuchsaufbau. Kamera vorne (hinge dann in echt im Fahrzeug an der Decke), darauf folgt die integrierte Antenne bzw. das Drumherum, damit sie richtig sendet, dann der Controller, hinten ein Mini-Breadboard, um den Motorcontroller anschließen zu können. Das breite orangene Kabel verlässt das Fahrzeug hinten und führt zur Powerbank:

bar.jpg - Bild entfernt (keine Rechte)


Das wars. Ich hoffe, es hat Spaß gemacht mitzulesen. Ich bin gespannt, was ihr sagt und freue mich auf Feedback!

Schönen Feierabend!
Bastelphilipp

Uff...!


Folgende Mitglieder finden das Top: MilchMAN, Julian, Theoretiker, Skippy, mog-joe, Der Hirsch und fossilbones
Theoretiker und fossilbones haben sich bedankt!
e-up! Offline




Beiträge: 1.329

14.04.2023 06:10
#2 RE: Proof of Concept: Videobasiertes selbst fahrender LKW (Car System) Zitat · Antworten

Hallo Philipp,

Deine Visionen und Dein Projekt gefallen mir sehr.

Wenn Du magst, unterstütze ich Dich mit der kostenlosen Anpassung/Fertigung meiner zahnstangenbasierten Pendelvorderachse.

Habe bereits alles im Inventor und benötige nur Spurweite und Achsstand Deines Fahrzeugs.

Die Vorderräder sind doppelt kugelgelagert, die Zahnstangen/Zahnrad-Kombination ist nahezu spielfrei und der Lenkeinschlag von +/- 35° nutz den max. nutzbaren 190°-Drehwinkel des Potis.

Ich würde Dir ein Vorderachs-Modul liefern, welches Du leicht in Dein Fahrzeug intergieren kannst.

Gruß und viel Erfolg,


Siegfried

Fotos und Videos meiner Bauberichte findet Ihr zukünftig unter YouTube www.youtube.com/road87 und auf Facebook unter Sieg Fried


Selbstfeiermeister Offline




Beiträge: 1.814

14.04.2023 14:59
#3 RE: Proof of Concept: Videobasiertes selbst fahrender LKW (Car System) Zitat · Antworten

Hallo Philipp!
Echt tolles Projekt und scheinbar eine Lebensaufgabe. Für 6 Monate Arbeit sind das schon beachtliche Ergebnisse. Ich habe mich vor über 15 Jahren mal wärend meiner Diplomarbeit mit Videocapturing beschäftigt (ging um Blickrichtungserkennung des menschlichen Auges während eines Diagnoseprogrammes). Da die Umgebung stockfinster war, musste ich mittels Infrarotlicht für ein Kamerabild sorgen. Den Stream der Kamera konnte man gleich als Schwarzweißbilder abrufen (sind eventuell weniger Daten, als ein Farbstream) und dann die Bildauswertung über die Helligkeitsunterschiede machen. Bei dir sehe ich bunte Bilder. Brauchst du zwingend Umgebungsbeleuchtung zur Bildauswertung?

Gruß
Sebastian

https://www.shapeways.com/shops/sebastians-shapeways-shop


Theoretiker Offline




Beiträge: 2.340

15.04.2023 10:14
#4 RE: Proof of Concept: Videobasiertes selbst fahrender LKW (Car System) Zitat · Antworten

Hallo Philipp,

sehr schönes und interessantes Projekt.
Ich hatte mich vor längerer Zeit auch schon mal an sowas versucht.
Allerdings ist es bei mir daran gescheitert, das ich nicht die nötigen Programmierkenntnisse besitze und deshalb das Projekt eingestellt habe.

Bei meiner Recherche bin ich über dieses Projekt gestolpert, eventuell hilft dir das weiter bzw. du kannst du da ein paar Inspirationen holen.



Die Hardware im Fahrzeug für die Fahrfunktionen sollten das kleines Problem sein.
Ich denke der größte Knackpunkt ist die Weiterleitung der Videodaten an die externe Rechnereinheit.
Vielleicht benötigst du im Fahrzeug ja nur eine Kamera und einen Videotransmitter.
Die Steuerung könnte vom Computer über eine Sendemodul auf z.B. einen Deltang Empfänger erfolgen.
Mittels Arduino sollte man z.B. ein Sendemodul TX1 ansteuern können.

Dadurch hast du im Fahrzeug einiges an Platz gespart und der Stromverbrauch im Fahrzeug hat sich um einiges reduziert.
Ist nur mal eine kleine Anregung.

Grüße Oliver

PS: Bist du zufällig auf der Intermodellbau in Dortmund?

Videos, Tutorials, How to ...
Homepage: www.der-theoretiker.de
Youtube: www.youtube.com/user/Mikromodelle
Facebook: www.facebook.com/Mikromodellbau.theoretiker/


Folgende Mitglieder finden das Top: Chantal und Skippy
Bastelphilipp Offline



Beiträge: 73

23.04.2023 13:27
#5 RE: Proof of Concept: Videobasiertes selbst fahrender LKW (Car System) Zitat · Antworten

Hallo zusammen,

vielen Dank für euer Feedback, das motiviert mich auf jeden Fall an dieser Mammutaufgabe dran zu bleiben. Leider bekomme ich mit meinem ersten Lösungsversuch die Frame-Drops nicht in den Griff. Auch wenn die Framerate gleich bleibt, habe ich einen Lag von ca. 2 Sekunden, der leider in 1:87 viel zu groß ist. Ich weiß aber, dass es theoretisch möglich ist, eine stabile und schnelle Framerate hinzubekommen. Ich bleibe also dran.

@Siegfried: Vielen Dank für das Angebot auf das ich gerne zurück komme, wenn ich das Framerate-Problem geknackt habe und der Bus einmal eine Spur entlang gefahren ist.

@Sebastian: Ja, es scheint mir auch immer mehr, dass es einzeln eine Lebensaufgabe sein könnte. Eigentlich hatte ich auch noch andere Dinge vor... Evtl. finde ich ja noch Mitstreiter/innen! Eine Übertragung in Graustufen wäre zumindest für den POC ausreichend, das stimmt. Ich teste mal, ob die Probleme rund um die Framerate dann kleiner werden - guter Tipp!

@Oliver: Programmierkenntnisse habe ich tatsächlich auch nicht sehr viele. Aber tatsächlich ist mit Github und Chat-GPT mittlerweile möglich, was ich vor 10 Jahren noch nicht ansatzweise geschafft hätte. Das Video kenne ich natürlich, aber vielen Dank für's Verlinken! OpenCV ist bei mir auch im Einsatz. Den Einsatz von einem Sender, wie du ihn verbaust und dann die Übertragung der Steuerung per Deltang etc. hatte ich auch überlegt, mich aber dagegen entschieden, um die Komplexität des Systems überschaubar zu halten. Für mich - wahrscheinlich im Gegensatz zu dir - ist der Arduino genauso Neuland wie der Deltang oder das Video-Transmitter System, das du im Einsatz hast.
Falls du dich grundsätzlich nochmal dran wagen magst (an den Softwareteil - diesmal mit freundlicher Unterstützung von Chat-GPT) findest du hier ein sehr gutes Code-Repository auf dem man aufbauen kann. Sag mir dann auf jeden Fall Bescheid und wir klemmen uns gemeinsam dahinter
Intermodellbau hab ich nicht geschafft - ich hoffe ihr habt Spaß! Ich plane im Herbst mal nach Leipzig zu kommen.

Schönen Sonntag allerseits!

Uff...!


PhilWil91 Online



Beiträge: 23

28.08.2023 21:09
#6 RE: Proof of Concept: Videobasiertes selbst fahrender LKW (Car System) Zitat · Antworten

Hallo Philipp,

ich hoffe du hast hier noch nicht aufgegeben, das Projekt gefällt mir ziemlich gut!
Was für einen "Arduino" benutzt du denn? auf dem Foto sieht das nach der ESP-Cam aus?
Hast du die 2s Delay auch wenn du das Standardbeispiel für den HTTP Stream nutzt? Bei meinem 1:14 Blitzeranhänger hatte ich Probleme mit zu wenig PSRAM bzw. falschen Boardeinstellungen in der Arduino IDE.

Gruß Philipp


Bastelphilipp hat sich bedankt!
Bastelphilipp Offline



Beiträge: 73

04.09.2023 17:54
#7 RE: Proof of Concept: Videobasiertes selbst fahrender LKW (Car System) Zitat · Antworten

Hi,
ne, nicht aufgegeben. Aber erstmal eingemottet bis zum Winter.
Richtig, das ist die ESP32-Cam. Da gibt es Dev-Varianten, die dann genug zusätzliche Pins exposen, um auch noch die Servo- und Motorsteuerung zu realisieren. Und trotzdem noch klein genug sind, dass sie rein rechnerisch inkl. allem Zubehör in einen Reisebus passen.
Der Delay tritt sehr unregelmäßig auf. Wenn man es googelt gibt es lauter Berichte zu verschiedenen Boards, die aber alle ähnliche Probleme teilen. Die Lösungen gehen von Aluminiumfolie bis zum Anlöten ext. Antennen. PSRAM hat meine Version eigentlich genug, um eine HDready-Auflösung steady streamen zu können. Ich gehe auch nach wie vor davon aus, dass es möglich ist. Werde es daher auch weiterverfolgen :-)

Uff...!


 Sprung  

disconnected Mikromodell-Chat Mitglieder Online 6
Xobor Xobor Community Software
Datenschutz