StereoPi - unsere Hardware zum Studium von Computer Vision, Drohnen und Robotern

Hallo allerseits!

Heute möchte ich Ihnen von unserer neuen Hardware erzählen, die auf dem Raspberry Pi Compute Module basiert und Computer Vision und Installation auf Robotern und Drohnen untersucht. Tatsächlich handelt es sich um eine „intelligente“ Stereokamera - sie unterstützt die gleichzeitige Arbeit mit zwei Kameras, hat echte Himbeeren als „Herz“ und funktioniert vor allem mit der Standardversion von Raspbian.
So sieht die zusammengebaute Lösung mit zwei installierten Kameras und einem Pi Compute-Modul aus.

Bild

Das Gerät funktioniert mit der Standardversion von Raspbian. Sie müssen nur unsere Datei dtblob.bin kopieren, um die Unterstützung für zwei Kameras zu aktivieren.

Dies bedeutet, dass Sie die üblichen Hilfsprogramme für Raspivid, Raspistill und andere für die Arbeit mit Bildern und Videos verwenden können.

Als Referenz erschien die Unterstützung für den Stereomodus bereits 2014 in Raspbian, gleichzeitig mit der Veröffentlichung der ersten Version von Raspberry Pi Compute. Sie können die Geschichte der Entwicklung der Stereo-Unterstützung im Raspberry-Forum sehen.

Bevor ich die technischen Details beschreibe, möchte ich Ihnen einige Beispiele aus der Praxis zeigen, wie das Gerät funktioniert.

1. Bilderfassung


Code:

raspistill -3d sbs -w 1280 -h 480 -o 1.jpg 

und Sie erhalten Folgendes:

Bild

Sie können das aufgenommene Originalbild hier herunterladen.

2. Videoaufnahme


Code:

 raspivid -3d sbs -w 1280 -h 480 -o 1.h264 

und Sie erhalten Folgendes:

Bild

Sie können die Originalvideodatei (konvertiert in mp4) von diesem Link herunterladen.

3. Erstellen Sie mit Python und OpenCV eine Tiefenkarte


Bild

In diesem Fall habe ich einen leicht modifizierten Code aus einem früheren 3Dberry-Projekt verwendet ( https://github.com/realizator/3dberry-turorial ).

Um diese Bilder und Videos zu erhalten, haben wir dieses Kamerapaar verwendet:

Bild

Für die Installation auf Drohnen verwenden wir häufig Weitwinkel (160 Grad). Dies sind:

Bild

Nun etwas mehr über das Stück Eisen selbst




Technische Details


Vorderansicht:

Bild

Blick von oben:

Bild

Hauptmerkmale:
Abmessungen: 90x40 mm
Kameras: 2 x CSI 15-spuriges Kabel
GPIO: 40 klassische Raspberry PI GPIO
USB: 2 x USB Typ A, 1 USB an einem Pins
Ethernet: RJ45
Speicher: Micro SD (für CM3 Lite), für den Rest NAND (Flash)
Monitor: HDMI-Ausgang
Stromversorgung: 5V DC
Unterstützte Himbeeren: Raspberry Pi Compute Modul 3, Raspberry Pi CM 3 Lite, Raspberry Pi CM 1
Arten von unterstützten Kameras: Raspberry Pi-Kamera OV5647, Raspberry Pi-Kamera Sony IMX 219, HDMI In (Einzelmodus)
Für NAND-Firmware: MicroUSB-Anschluss
Netzschalter: Ja, ja, das war's. Keine MicroUSB-Steckstecker mehr für einen Neustart der Stromversorgung!

Ein bisschen Geschichte


Im Allgemeinen tauchte die Idee selbst bereits 2015 auf. Die erste Version wurde Ende 2015 geboren. Einige Leute wissen, dass unser Team eine "Modeerscheinung" bei der Fernbedienung verschiedener mechanischer Geräte hat. In der ersten Version wurde ein zusätzlicher Chip an Bord installiert, der uns 16 PWM-Ausgänge gab - für Lenkung, Motoren und andere nützliche Dinge.

Bild

Zu diesem Zeitpunkt gab es nur die erste Version des Compute-Moduls auf dem Markt, bei der es sich um einen alten Prozessor der ersten Himbeere handelte. Das Stück Eisen hat großartige Arbeit beim Aufnehmen, Komprimieren und Streamen von Videos geleistet, aber am Ende sind wir auf den Prozessor gestoßen. Zum Beispiel war es bereits nicht genug für einen h264-Stream zu einem Piloten und einen RTMP-Stream zu einem Server gleichzeitig. Und für die Roboterbauer bestand der Hauptwunsch darin, eine Weltraumkarte mit einer Tiefenkarte und SLAM zu erstellen - hier fehlte der Prozessor völlig.

Bild

Hier kommt die Compute Module 3-Version heraus. Sie "sprangen" sofort von der ersten Version zur dritten und setzten den Prozessor von der dritten Himbeere. Jetzt reichte seine Leistung bereits aus, um im laufenden Betrieb etwas zu berechnen.

Es stellte sich jedoch heraus, dass die Generationen kompatibel zu sein scheinen, aber es scheint, dass sie nicht sehr kompatibel sind. Die Tatsache, dass das Computermodul 3 einen Millimeter breiter war, hat uns nicht gestört. Die Ernährungsbedürfnisse haben sich jedoch stark verändert.

Darüber hinaus haben wir bereits Kommentare zu den Ergebnissen der Arbeit mit der ersten Version gesammelt und beschlossen, eine neue Version zu veröffentlichen, in der wir alle gesammelten Änderungen vorgenommen haben.

Was ist in der zweiten Generation festgelegt


Unterstützung für Compute Module 3 hinzugefügt

Wir haben ein umschaltbares Stromversorgungsschema. Wenn Sie möchten, können Sie mit der ersten Himbeere arbeiten. Die Wahl hier ist einfach: Wenn Sie nur das Video senden müssen, ist die erste Himbeere perfekt genug. Als Bonus kommt es mit fast dreimal weniger Stromverbrauch und Wärmeableitung. Und Sie müssen etwas Ernsthafteres berechnen (ein paar Videos oder Computer Vision) - setzen Sie das dritte.

Bereitgestelltes Modul "Chips von der Platine"

In der ersten Version wurde der SoDIMM-Steckertyp auf der Platine verwechselt, wodurch das Computermodul mit Chips "zur Mutter" aufgestanden wurde. Auf dem Computermodul 1 verursachte dies keine Probleme - der Prozentsatz erwärmte sich leicht und es gab genügend Engpässe zwischen den Platinen für eine normale Kühlung. Mit einem dritten wäre ein solcher Trick nicht gerollt, also haben wir den Stecker „gedreht“, was dazu führte, dass die gesamte Platine von Grund auf neu verkabelt wurde.

Native microSD-Unterstützung

Das erste Computermodul hatte standardmäßig einen eingebauten FLASH an Bord und konnte nicht mit microsd arbeiten. Wir haben versucht, MicroSD dort als zweites Laufwerk hinzuzufügen, aber wir sind auf ein großes Problem gestoßen, um es zu unterstützen. Die Kommunikation mit Kernel-Mitarbeitern in einem Himbeer-Forum hat gezeigt, dass das Problem nicht einfach ist (beim Laden hat das Modul zufällig NAND oder MicroSD für den Start ausgewählt). Infolgedessen haben wir bei der aktuellen Revision die Verkabelung wie auf dem Referenz-Himbeer-Devboard vorgenommen. Wenn Compute Module Lite - ohne eingebautes NAND - arbeiten wir mit microsd wie bei gewöhnlichen Himbeeren. Wenn die Version nicht Lite oder das erste Modul ist, ist das microsd nicht verfügbar.

Bewegen Sie die Kameraanschlüsse nach oben und in einem Abstand von 65 mm

In der ersten Version waren die Verbinder entlang der Platinenebene gerichtet. Eine Kleinigkeit, aber nach vielen Installationen im Fall wurden einige Probleme klar.

  • Aus den Anschlüssen ragt eine Kameraschlaufe heraus, die sich nicht verbiegen sollte (insbesondere das blau verstärkte Teil). Dies nahm dumm unnötigen Platz in dem Fall ein und verhinderte die Installation.
  • Die Anschlüsse waren sehr eng - dies verhinderte das Arbeiten mit Kabeln.
  • Die Kameras im Gehäuse stehen normalerweise auf einer 65-mm-Stereobasis, und die Kabel auf der Platine befanden sich in der Nähe. Es stellt sich heraus, dass jede Schleife unnatürlich gebogen werden musste - Brüche, Risse, Herausspringen aus den Anschlüssen.

Der Chip und weitere 16 PWM wurden entfernt

Nachdem wir viele aktuelle Projekte analysiert haben, haben wir festgestellt, dass diese Funktion irrelevant ist. Meistens reicht Software Raspberries PWM aus.

Netzschalter hinzugefügt

Wer wenigstens ein bisschen mit Himbeeren gearbeitet hat, versteht worum es geht :-)

Ein dritter USB-Anschluss an den Stiften an der Seite wurde hinzugefügt

In unseren Himbeerprojekten benötigen wir häufig USB-Dongles an Bord. Wenn sie in den Anschlüssen auf der Platine stecken, ragt ein Modul nach außen. Der Versuch, ein USB-Verlängerungskabel zu verwenden, verschärft das Problem. Es gab nur eine Möglichkeit - die Verkabelung direkt mit Himbeeren zu verlöten. Mit den von uns hinzugefügten Seitenstiften können wir ein einfaches Verlängerungskabel herstellen und einen USB-Dongle (normalerweise WiFi oder 4G) direkt auf der Platine platzieren. Diese gesamte Wirtschaftlichkeit passt perfekt in ein kompaktes Gehäuse.

Hier ist eine solche Geschichte, die ich Ihnen heute erzählen wollte. Vielen Dank für Ihre Aufmerksamkeit und bin bereit, Fragen zu beantworten.

Source: https://habr.com/ru/post/de415587/


All Articles