Lokalisierung von Aruco-Markern

Im letzten Beitrag haben wir darüber gesprochen, wie man von Punkt A nach Punkt B kommt, ohne etwas zu treffen. Aber um etwas zu umgehen, muss man verstehen, wo wir sind und wo es dynamische Hindernisse gibt (unsere Gegner und nicht nur).

Ein Mensch hat Augen, Ohren und Software, die von der Natur und seiner persönlichen Erfahrung festgelegt wurden, damit er sich leicht im Raum bewegen und navigieren kann. Das Lokalisierungssystem ist fast das Auge und das Ohr für Roboter. Es wird benötigt, damit der Roboter im Weltraum navigieren und sich an die Umgebung anpassen kann.

Heute werden wir darüber sprechen, wie wir das Problem der Positionsbestimmung von Robotern auf dem Eurobot-Feld gelöst haben, wie wir all dies tun, starten und selbst konfigurieren können.



Zielbedingungen des Lokalisierungssystems


Eines der Prinzipien von Eurobot Open ist die Autonomie. Autonomie von allem, was sich hinter dem Spielfeld befindet. Alle Berechnungen, Entscheidungen und Lokalisierungen sollten entweder an Robotern oder an speziellen Standorten auf dem Feld vorgenommen werden.

Die Größe des Feldes beträgt 2 x 3 Meter, und der Fehler in der Größe und Position der darauf befindlichen Elemente von Feld zu Feld liegt normalerweise innerhalb von 3 bis 5 mm.

Das Bild unten zeigt ein Diagramm des Eurobot 2019-Feldes mit markierten Bereichen, auf denen wir etwas anderes als Roboter platzieren können.



  • 6 - Experiment Zone (eine der zusätzlichen Aufgaben)
  • 10 - Leuchtturmzonen
  • 11 - Ein spezieller Turm zur Installation eines zentralen Ortungsgeräts (im Folgenden als CCC bezeichnet). Befindet sich über dem Feld in einer Höhe von 1 Meter
  • Auch auf den Robotern selbst können Beacons installiert werden.

Für all diese Bereiche und die Abmessungen der Roboter selbst gelten strenge Gewichts- und Größenbeschränkungen, weshalb es unmöglich ist, ein großes produktives Supermodul herzustellen, in das alles passt. Die Vorbereitungen für den Start sind auf 3 Minuten begrenzt. Während dieser Zeit müssen ein oder zwei Personen aus dem Team die Roboter und alles, was damit zusammenhängt, herausnehmen, arrangieren, konfigurieren und für den Start vorbereiten. Je weniger Junk Sie einstellen und einstellen müssen, desto unwahrscheinlicher ist es, dass Sie vor Beginn des Kampfes einen Fehler machen oder eine Geldstrafe erhalten.


und noch eine zweite solche volle Kiste

Wir analysieren Optionen


Mit dem Bewusstsein unserer Fähigkeiten und dem Wunsch, eine Positionierungsgenauigkeit von mindestens einigen Millimetern zu erreichen, wollen wir uns ansehen, wie wir dieses Problem im Allgemeinen lösen können:

  • Die Rad- Kilometerzähler-Messung mit direkt am Antrieb angebrachten Encodern oder zusätzlichen Messrädern ermöglicht es Ihnen, die vom Roboter zurückgelegte Strecke abzulesen und deren Position relativ zum Startpunkt zu bestimmen. Viele Eurobot-Teams verwenden es als primäre Lokalisierungsmethode. Dies ist eine der schnellsten Quellen für Bewegungsinformationen für den Roboter. In der Praxis besteht jedoch insbesondere beim Fahren auf Omni-Rädern (eine kleinere Aufstandsfläche als bei klassischen Rädern, Rollenspiel und größere Herstellungsfehler) die Gefahr, dass die Kilometerzähler das Problem der kumulativen Fehler aufweisen, die irgendwie korrigiert werden müssen. Sie können mit bekannten Koordinaten an der Oberfläche ausrichten oder mit einem zusätzlichen System komplexieren. Wenn Sie Encoder an den Antriebsrädern verwenden, besteht das Problem des Durchrutschens der Räder bei scharfen Manövern und bei Kollisionen des Roboters. Messräder können dieses Problem lösen, sind aber in einem kleinen Roboter schwer zu platzieren.


    Selbstgebautes Omni-Messrad mit Einzelradaufhängung und magnetischem Encoder, das wir 2018 verwendet haben
  • Lidare haben erhebliche Vorteile: Wir erhalten eine fast kreisförmige Sicht und Abstände zu Hindernissen. Unter den Minuspunkten sind der hohe Preis, die Schwierigkeit, kleine entfernte Objekte vom Müll zu unterscheiden, und ein relativ komplizierter Lokalisierungsalgorithmus hervorzuheben. Preiswerte Lidars (wie Rplidar) haben eine relativ niedrige Bildwiederholfrequenz und Winkelauflösung und werden auch von anderen Lidars, Entfernungsmessern usw. beleuchtet. Bei Robotern ist es schwierig, auf der Seitenebene einen Lidar zu finden, um die klassischen SLAM-Algorithmen zu verwenden, jedoch mit den bereitgestellten Höhenregeln für Lokalisierungssysteme haben nur wenige statische Objekte zum Binden. Das Skoltech-Team ist jedoch seit mehreren Jahren erfolgreich mit dem Hokuyo ust-10lx unterwegs und belegte im vergangenen Jahr den zweiten Platz im europäischen Finale des Eurobot-Wettbewerbs in Frankreich.
  • Wir haben auch Trägheitssysteme in Betracht gezogen, aber in unserem Fall passten sie nicht gut zusammen. Der Beschleunigungsmesser ist laut, das Gyroskop schwebt, Sie können den Kompass in Innenräumen vergessen. Selbst die Verwendung eines Kalman-Filters erreicht nicht die gewünschte Genauigkeit. Es stellt sich heraus, dass die IMU nur in sehr kurzer Zeit effektiv zur Korrektur eingesetzt werden kann. Das Maximum an nützlichen Informationen, die wir mit pixhawk2 erhalten konnten, ist der Winkel während einer scharfen Kurve (z. B. bei einer Kollision).
  • GPS funktioniert in Innenräumen nicht und die Genauigkeit ohne RTK beträgt Meter.
  • Ultraschallortung . Eine der Implementierungen finden Sie hier: m.habr.com/de/post/451408 . Leider ist die Genauigkeit für unsere Aufgaben nicht sehr hoch (+ -2cm), das Übersprechen wirkt sich stark aus, oder wenn Sie Sensoren mit diesem Schutz verwenden, wird eine niedrige Abfragefrequenz erzielt. Eines der russischen Teams setzt diese Lösung mit unterschiedlichem Erfolg ein, und das deutsche Turag-Team setzt recht erfolgreich auf eine ähnliche Technologie, die im Labor entwickelt wurde.
  • Die visuelle Odometrie gibt keine Auskunft über die Position der Gegner, da es nicht sehr viele Punkte auf dem Spielfeld gibt, an denen man sich zuverlässig festhalten kann.
  • \ Tof Stereokameras haben einen engen Winkel, der es nicht erlaubt, das Feld abzudecken, wenn sie sich auf dem zentralen Verfolgungsgerät befinden, oder eine kreisförmige oder zumindest akzeptable Sicht zu erhalten, wenn sie auf einem Roboter installiert sind.
  • Die Treuhandmarkierungen , die wir ausgewählt haben und die wir genauer untersuchen werden.

Treuhandmarkierungen


Die Markernavigation gibt es schon lange. Rein theoretisch kann der sogenannte Marker ein beliebiges Objekt sein. Bei der Verwendung treten jedoch viele Probleme auf:

  • Einschränkungen aufgrund der Kameraauflösung;
  • Unzuverlässigkeit der Erkennung bei Verwendung von Farbe als Hauptinformationsquelle;
  • die Notwendigkeit, die Ausrichtung des Markers zu bestimmen;
  • kontrastarme Markierungen funktionieren nur bei gutem Licht gut;
  • Hohe Rechenleistung des Equipments ist erforderlich (Echtzeitverarbeitung eingehender Frames).

Um die oben genannten Probleme zu umgehen, müssen Sie für die Erkennung normalerweise etwas Einfaches und Eindeutiges verwenden, z. B. einen farbigen Kreis oder ein Quadrat (und ich hätte gerne eine gelbe Ente).

Bild
verschiedene Arten von Markern

Tatsächlich besteht häufig zusätzlich zur Bestimmung der Position eines Markers die Notwendigkeit, seine Eindeutigkeit zu bestimmen, um beispielsweise mehrere Objekte gleichzeitig zu erfassen. Um dies zu tun, können Sie die Farbe oder Form ändern, aber dann werden wir schnell feststellen, dass die Zuverlässigkeit der Erkennung abnimmt.
Dieses Problem ist weit verbreitet und es gibt viele Markierungsstandards. Der bekannteste von ihnen ist qr-Code, der jedoch aufgrund von Redundanz und der Notwendigkeit einer hohen Auflösung nur selten bei Lokalisierungsproblemen eingesetzt wird. In der Regel sind alle Marker zweifarbig (meistens s / w), haben eine einfache Form (meistens ein Quadrat) und kodieren den Bezeichner irgendwie in sich. Die bekanntesten Marker für die Lokalisierung sind Aruco, April Tag, ARToolKit.

Jeder, der mehr über sie erfahren möchte, ist ein interessanter Artikel , der auch die Zuverlässigkeit ihrer Erkennung vergleicht.

Fraktale Markierungen
Es gibt Zeiten, in denen wir ein Objekt sowohl aus der Ferne als auch direkt erkennen müssen. Die Verwendung mehrerer Marker unterschiedlicher Größe ist eine Möglichkeit, aber Sie können es schlauer machen und „fraktale“ Marker verwenden, von denen verschiedene Teile in verschiedenen Maßstäben des Bildes funktionieren.

docs.google.com/document/u/1/d/1SdsOTjGdu5o8gy2Ot2FDqYDS9ALgyhOBJcJHOZBR7B4/mobilebasic

In unserem Fall haben wir viele positive Aspekte bei der Verwendung von Markern:

  • Mit der Möglichkeit, eine statische Kamera mit einem guten Betrachtungswinkel und einer guten Markierung zu installieren, ist keine schwer zu findende Ausrüstung erforderlich und möglicherweise nicht sehr schwierig zu implementieren.
  • Die entfernte Kamera kann die Position aller Objekte auswerten, auf die wir Marker setzen können.
  • Die Berechnungen werden nicht auf dem Bordgerät des Roboters, sondern auf einem separaten Computer durchgeführt (es besteht jedoch ein Problem mit der Zuverlässigkeit und Verzögerungen bei der Datenübertragung).
  • die Fähigkeit, jedes andere mit dem Sehen verbundene Problem zu lösen.

Nach der Analyse der oben genannten Systeme haben wir uns auf den Nachweis von Markern festgelegt. Dies ermöglichte es uns nicht nur, unsere Odroids von Robotern zu befreien, sondern ihnen auch, die gesamte Situation auf dem Feld aus der Vogelperspektive zu betrachten.

Wie funktioniert das?


Die „Zuverlässigkeit“ der Markererkennung ist ein relativer Begriff. Unterschiedliche Aufgaben erfordern ein unterschiedliches Maß an Genauigkeit und Stabilität. Die Angabe dieser Parameter hängt vom Videosensor, den Objektiven, den Lichtverhältnissen usw. ab.


In unserem Fall ist es bei einer Feldgröße von 2x3 Metern und einer Kamera nur einen Meter darüber erforderlich, eine Ultraweitwinkeloptik mit einem Sichtfeld von mindestens 120-140 Grad zu verwenden, um die Sichtbarkeit des gesamten Spielraums zu gewährleisten, was sich negativ auf die Erkennung (und Genauigkeit) kleiner Marker in der Ferne auswirkt Ecke des Spielfeldes und unter beliebigen Lichtverhältnissen machen diese Aufgabe noch schwieriger.
Wie die Praxis gezeigt hat, können selbst unter normalen, völlig natürlichen Beleuchtungsbedingungen fehlerhafte Definitionen der Markierungsposition auftreten.



Die folgenden Bilder zeigen also zwei aufeinanderfolgende Bilder mit Markierungserkennungsergebnissen: Die Richtung der Z-Achse (blau) wird um 180 Grad geändert.




www.youtube.com/watch?v=xzG2jQfxLlY

In einen wettbewerbsfähigen Zustand bringen


Ändern Sie den Algorithmus


Um die Position des Roboters auf dem Feld genau zu bestimmen, müssen Sie die Winkelposition der Kamera, die allgemeine Transformation des Koordinatensystems und die Position der Kamera relativ zur Position des Feldes kennen. Für diese Konvertierung haben wir einen eigenen Algorithmus entwickelt. Da eine Person das zentrale Kontrollzentrum manuell aufhängt und die Felder leicht voneinander abweichen, ist es nicht möglich, immer dieselbe Kameraposition zu erhalten. Die Winkelverschiebung der Kamera relativ zum Feld wirkt sich sehr negativ auf die Positionserkennung der Roboter aus. Die grundlegende Lösung besteht darin, mehrere statische Marker zu bestimmen, die wir vor dem Match für die Kalibrierung setzen können.

Die Aruco-Bibliothek in opencv bietet die Möglichkeit, die 6dof-Markierungsposition relativ zur Kamera zu bestimmen. Zuerst haben wir versucht, es zu verwenden, aber es stellte sich als sehr instabil und ungenau heraus. In unserem Fall, wenn die Position der Kamera bekannt ist, sie fest ist und sich Roboter (und zugehörige Markierungen) auf einer Ebene bewegen, die nicht durch den Befestigungspunkt der Kamera verläuft, ist es sinnvoll, uns auf die Aufgabe zu beschränken, die 3D-Position zu ermitteln (z-const, x-y, + Drehung um eine Achse z) durch die Triangulation eines Punktes in einer Ebene unter einem sichtbaren Winkel.

Es wird erwartet, dass eine Verringerung der Abmessung und eine Vergrößerung der Basis der Triangulation (die Größe des Markers im Verhältnis zum Abstand von der Ebene der Marker zur Kamera) des gelösten Problems den Grad der Unsicherheit und des Rauschens der Erfassungsergebnisse verringert.
Dazu anstelle der Standardfunktion

cv::aruco::estimatePoseSingleMarkers(markerCorners, 0.05, cameraMatrix, distCoeffs, rvecs, tvecs); 


Um anhand der gefundenen Ecken der Marker die 6dof-Position des Markers zu bestimmen, haben wir unseren Positionsschätzer nach folgenden Grundsätzen geschrieben:

  • Die Position der 3D-Kamera ist im Voraus bekannt.
  • Markerhöhe ist im Voraus bekannt;
  • als Ergebnis der Erfassung sind Pixel (v, u) von 4 Markierecken bekannt;
  • Als Ergebnis der Kamerakalibrierung wird eine 4x4-Kameramatrix definiert.
  • Wenn Sie die 'Kameramatrix', die Position und Ausrichtung der Kamera und die Position der Pixelwinkel des Markers kennen, können Sie die Projektion der Position der Winkel im 3D-Raum auf der z-Ebene abrufen, auf der sich die Scheitelpunkte des Markers befinden (die Höhe des Markers wird durch seine Nummer bestimmt).
  • Durch Ausführen des vorherigen Schritts für alle 4 Markierungsecken und Mitteln der erhaltenen Daten ist es möglich, 3D-Koordinaten der Markierungsscheitelpunkte im Kamerakoordinatensystem zu erhalten.
  • Bei Anwendung der Transformation von der SK-Kamera auf die SK des Spielfelds werden die Koordinaten des Markers im SK-Feld erhalten.

Lösen von Beleuchtungs- und Leistungsproblemen


Die Stabilität und Geschwindigkeit der Erkennung von Markern hängt stark von den Umgebungslichtbedingungen und der Hintergrundstruktur ab. Je mehr verschiedene Objekte sich im Rahmen befinden, desto länger dauert die Verarbeitung. Da die Regeln für die Eurobot-Beleuchtung und den Hintergrund in keiner Weise geregelt sind, können sie sich von Zeit zu Zeit stark ändern. Es kann auch andere Bereiche geben, Personen im Hintergrund. Insbesondere sind zusätzliche Belichtungen durch feindliche Roboter, Kamerablitze oder Scheinwerfer zu erwarten, die in das Sichtfeld der Kamera fallen.

Um den Einfluss der Umgebungsbeleuchtung auf die Erkennungsstabilität von Markern zu verringern, wurde ein spezielles „Design“ entwickelt, bei dem invertierte Aruco-Marker verwendet wurden. Der dunkle Teil wird durch eine retroreflektierende Folie ersetzt, und eine aktive LED-Hintergrundbeleuchtung ist direkt auf der Kamera installiert. Die Bildverarbeitung erfolgt im Negativ, während der Kontrast des Hintergrunds viel geringer ist als der Kontrast der eigenen Marker.

Durch Erhöhen des Kontrasts des Markers können Sie Bereiche von Interesse auf dem Frame effektiv auswählen und nur in diesen nach Markern suchen, nicht im gesamten Frame, wodurch die Produktivität erheblich verbessert wird.


Vergleich der Kontrastunterschiede zwischen einem Standardmarker und einem Marker mit reflektierender Oberfläche

Wir wählen Eisen


Da die Lichtverhältnisse nicht definiert sind und die Geschwindigkeit der Roboter sehr hoch sein kann, haben wir von Anfang an nach einer Kamera mit Global Shutter und nicht mit Rolling Shutter gesucht. Der Unterschied besteht darin, dass der Globale gleichzeitig Informationen über die Helligkeit der Pixel sammelt und zeilenweise rollt, wodurch es zu Verzerrungen in der geometrischen Form sich bewegender Objekte kommen kann.
Die günstigste Kamera ist oCam-1mgn, die wir 2 Jahre lang benutzt haben. Es ist jedoch schwarzweiß und hat eine Auflösung von nur 1 Mpx, was sich am unteren Rand einer akzeptablen Auflösung befindet (die Anzahl der Bildpixel pro 1 "Pixel" des Markers).
Ursprünglich befand sich der Detektor auf derselben Platine wie die Roboter selbst - odroid xu4, und die Arbeitsgeschwindigkeit betrug etwa 20 fps. Der Wunsch, zusätzliche Funktionen in die zentrale Leitstelle zu integrieren und zu verstehen, dass eine bessere Kamera erforderlich war, führte dazu, dass der PC durch einen leistungsfähigeren Intel ersetzt wurde Nuc, und die Kamera ... die Kamera, die wir für die neue Saison noch aufheben.

Wir starten das Projekt


Es wird weiterhin davon ausgegangen, dass Sie ROS Kinetic oder Melodic bereits konfiguriert haben.

Als erstes müssen Sie OpenCV 3, Eigen3 und das Projekt https://bitbucket.org/eurobot1718/ocam_usb_cam herunterladen und installieren (für die Ocam-Kamera) oder ein anderes Projekt verwenden, dessen Struktur der Veröffentlichung von Daten in Themen ähnelt.

Wir klonen das Repository mit dem Arude-Detektor-Projekt: https://gitlab.com/eurobot2019/aruco_detector und gui dafür https://github.com/alexpostnikov/aruco-gui
Nach der Installation der Projekte müssen Sie die Kamera kalibrieren, die Dispersionsmatrix und die Kamera-Verzerrungsmatrix abrufen und dann alles in die yaml-Datei „camera_params.yml“ packen. Ein einfaches Beispiel ist die Verwendung eines Schachbretts. Link zur Implementierung in C ++, in der Sie lediglich die Parameter der Karte und der Kamera sowie den Namen der Ausgabedatei erfassen und angeben müssen.

Die wichtigsten Einstellungen befinden sich in der Datei aruco_detector_params.yml:

  • len_of_cube_markers und width_marker die Länge und Breite der Marker in Metern;
  • marker_height - Vergleich des Markers und seiner Höhe;
  • Marker - Ein Array, das beschreibt, ob ein bestimmter Marker zu einem bestimmten Roboter gehört. Es zeigt die Marker im Uhrzeigersinn an. Und bei Gegnern spielt die Reihenfolge der Marker in config ebenfalls keine Rolle, da ihre Richtung für uns nicht wichtig ist. Sie müssen nur den Markierungscode angeben. Wir haben auch Markierungen auf der oberen Abdeckung, deren Nummern sind separat hervorgehoben;
  • static_markers_ids - Marker, die während des Kalibrierungsprozesses gesucht werden;
  • marker_position - ein Wörterbuch mit dem Versatz und der Drehung jedes Markers relativ zur Mitte des Roboters;
  • Helligkeit_Schwelle kann nicht berührt werden - dies wird für die anfängliche automatische Kalibrierung des Lichts verwendet;
  • camera_position_yellow und ein ähnlicher Parameter dienen als Standardeinstellungen für den Fall, dass die Kalibrierung fehlschlägt.

Die Transformationsmatrix vom Kamerakoordinatensystem zum Feldkoordinatensystem befindet sich in der Datei transform_from_cam_to_map.xml

Nach all den Einstellungen müssen Sie es endlich ausführen. Die Pfade zu der Datei mit den Parametern, der Standardseite und dem Pfad zum Videogerät werden in der Datei aruco_detector_debug.launch festgelegt, die wir starten werden. Für einen vollständigen Start ist es jedoch besser, das Bash-Skript aruco.bash zu verwenden, das zusätzlich zum Detektor gui (127.0.0.1►000) startet. Hier können wir die Seite auswählen, die Kalibrierung starten und das System steuern. Im zweiten Fenster werden interessierende Bereiche und gefundene Markierungen angezeigt.



Nun wird in den Themen "/ enemy_robot1 / aruco", "/ enemy_robot2 / aruco", "/ big_robot / aruco", "/ small_robot / aruco" die Position der gefundenen Roboter veröffentlicht.

Hurra! Wir konnten die Koordinaten der Roboter ermitteln. Das ist nur so, wie Sie sehen können, sie sind falsch. Dies liegt daran, dass vor der Verwendung die Position der Kamera relativ zum Feld kalibriert werden muss. Dafür ist es notwendig

  • Setze die Würfel in die Ecken des Feldes, während es wichtig ist, dass sie von den Seiten gedreht werden, die in der Konfiguration angegeben sind
  • Stellen Sie die Neigung der Kamera so ein, dass der gesamte erforderliche Raum in den Rahmen fällt
  • Passen Sie die Helligkeit der Hintergrundbeleuchtung an, bis die Marker zuverlässig erkannt werden
  • Wählen Sie in GUI die gewünschte Seite aus und klicken Sie auf "Kalibrieren".
  • dann sollte sich der Status von "Suche statische Würfel" zu "Suche Würfel" ändern

Wir machen Marker und TsUS


Gemäß den Regeln können wir unsere Roboter nach Belieben einfärben und zusätzlich einen speziellen Platz auf den Robotern unserer und anderer Leute verwenden, auf dem Sie etwas bis zu einer Größe von 10 x 10 x 8 cm platzieren können. Ein spezieller Platz befindet sich auf der Abdeckung des Roboters, hat eine feste Höhe und eine bessere Sichtbarkeit für die zentrale Leitstelle, außer wenn sich der Roboter unter der Kamera befindet.


Höhe und Abmessungen der Leuchttürme am Roboter

Daher verwenden wir als Hauptmarker für unsere Roboter 10 x 10 x 108 cm große Parallelepipede, die auf 4 Seiten von Aruco aufgeklebt sind, sowie zusätzliche Markierer auf der Oberseite unserer Roboter zur Lokalisierung in einem komplexen Bereich unter der Kamera.

Da wir nichts auf den feindlichen Deckel kleben können, haben wir beschlossen, Markierungen in Form eines Pyramidenstumpfes anzubringen, um den Sichtbereich zu vergrößern. Und wie Sie sehen, ist der Marker viel besser sichtbar geworden.



Wir drucken die Basis für den Würfel \ Pyramide auf einem 3D-Drucker, damit er stark genug ist und eine bequeme und zuverlässige Halterung hat.



Hier befinden sich Modelle zum Bedrucken eines Würfels, einer Pyramide und einer Gegenhalterung .

Dieser Würfel ist mit einem Reflektor verklebt (wir verwenden weißes AVERY
DENNISON V6700B (50 mm breit, obwohl teurer, funktioniert es um ein Vielfaches besser als billiges Chinesisch), und die Markierungen selbst sind darauf geklebt. Der einfachste Weg, dies zu tun, besteht darin, die Markierungen auf dem Plotter auszuschneiden, obwohl Sie sie in ein paar beruhigenden Stunden aus Papier oder Film ausschneiden können (ein Satz besteht aus 16 Markierungen).

Hier ist unser letztes Jahr.


verschiedene "Generationen" unserer Marker

Sie können auch als statische Marker für die Kalibrierung verwendet werden. Dazu platzieren Sie sie in den äußersten Ecken des Feldes und klicken auf - kalibrieren.

Montage eines zentralen Ortungsgerätes


Was wird benötigt:


Einplatinencomputer. Diese Zeichnungen sind für den Standort von Intel NUC gemacht, aber Sie könnten überlegen, ob Sie sie in das Gehäuse legen, zum Beispiel Odroid xu4 oder Himbeer pi4.

oCam . Eigentlich die Kamera, für die alles läuft. Wir haben das Standardobjektiv für einen weiten Betrachtungswinkel auf 2,5 mm geändert
Anzeige (7-Zoll-HDMI-LCD (B) mit Waveshare-Funktion) . Mithilfe dieser Funktion werden die Kalibrierung und eine Reihe anderer Vorgänge ausgeführt.

LED-Streifen. Zum Beleuchten der reflektierenden Oberfläche von Markern. Es ist besser, die hellste verfügbare zu verwenden.

Batterie 16,8 V LiPo. Wir verwenden 4s5200mAh. Dies sind die gleichen Batterien wie beim Roboter, da dies praktisch ist und lange hält.

DC-DC-Abwärtswandler. Zum Einschalten des LED-Streifens. Nuc und der Router werden direkt von der Batterie mit Strom versorgt, da alle Stromkabel bereits vorhanden sind.

Gedruckte Teile. Dies sind insbesondere eine Kamerahalterung, ein Display und Ecken zum Zusammenbauen des Gehäuses: https://yadi.sk/d/swUJUwxTnTVYFw

Gehäuse Details. In unserem Fall handelte es sich um eine 2-mm-Carbonplatte. Dies ist jedoch nicht die beste Option, da kohlenstoffleitend, schwierig zu verarbeiten und nicht so leicht wie beispielsweise Plexiglas - vielleicht die einfachste Option. Obwohl viel härter. Finden Sie den Link oben.

Router (Zyxel keenetic extra). Wir mussten es aus dem Koffer nehmen, um in Größe und Gewicht zu passen. Im Allgemeinen empfehlen wir dies jedoch nicht.
Viele kleine Dinge. Schrauben M3 * 8 ~ 40 Stk., Gestelle für Leiterplatten 3x10 ~ 12 Stk., Drähte, Schraubendreher, WAGO usw.

Versammlung


Zuerst müssen Sie die gedruckten Ecken vorbereiten und Muttern hineinpressen. Es kann sein, dass es nur wenige Presspassungen gibt und sie leicht geklebt werden müssen oder geschmolzene Muttern verwenden müssen
Als nächstes müssen Sie dieses Teil in der Basis installieren. Es ermöglicht eine eindeutige Positionierung des zentralen Kontrollzentrums an seinem Platz.



Jetzt montieren wir die Kamerahalterung, setzen die oCam dort ein, kleben die Hintergrundbeleuchtung vom LED-Streifen so nah wie möglich an das Objektiv und befestigen das Modul an der Basis.





Danach können Sie alle Seitenwände montieren und an den zuvor beschriebenen Ecken befestigen. Die Löcher für sie sind besser im Voraus zu kontern.



Wir setzen einen Single-Board-Computer und einen Router. In unserem Fall sind dies NUC und Zyxel keenetic extra.






Und wir bekommen das zusammengebaute Trackingsystem. Es bleibt nur die Neigung der Kamera einzustellen.


Lokalisierungs-Debugging im Jahr 2018

Was ist das Ergebnis


Also erzählten wir alle Geheimnisse, die es uns ermöglichen, unser System mit eigenen Händen zu wiederholen. Mit ihm können Sie schnell und ohne Änderungen Ihr System zur Lokalisierung des Roboters auf dem Eurobot-Feld machen. Und mit minimalen Änderungen machen Sie ein ziemlich universelles und zuverlässiges Tracking-System für etwas. Es ist jedoch zu berücksichtigen, dass bei Verwendung von aruco 8x8, einer Markierungsgröße von 10x8 cm und einer Kamera mit 1 Mpx der Erfassungsradius nicht besonders vergrößert werden kann. Wenn wir jedoch strenge Einschränkungen in Bezug auf Größe und Leistung haben, verwenden wir im Allgemeinen nur interessantere Geräte.

In diesem Jahr wurde in den Regeln die Verwendung von aruco 4x4 sowie deren nicht überschneidende Bereiche für jede Seite des Feldes erwähnt. In naher Zukunft planen wir, dies in unsere Lösung zu integrieren, damit wir in Zukunft keine Angst mehr vor der Überschneidung von Markernummern haben. Ein weiteres Muss, aber noch nicht erledigt, ist die manuelle Kalibrierung auf dem Feld.
Im nächsten Artikel werden wir über die niedrigere Ebene von Robotern sprechen, wie die Kinematik von Robotern berücksichtigt wird, wie wir Server, Engines und Kegel steuern, wenn wir mit Freertos arbeiten.

Ich möchte mich bedanken:

Alexey Postnikov (in dessen Auftrag es sich wahrscheinlich gelohnt hat, alles zu veröffentlichen) - für den gesamten Code in diesem Artikel und direkte Unterstützung beim Schreiben des Artikels.
Egor Alexandrov - für alle Zeichnungen und Modelle Hilfe beim Schreiben des Artikels und 34 Kommas.
Tamara Sinelnikova - für die Hilfe beim Schreiben des Artikels.

Und der Rest des Teams!

Noch weniger als vier Monate bis zum Beginn des Wettbewerbs, aber das Sberbank Eurobot-Team ist immer noch offen für neue Teilnehmer. Unser Telegramm: https://t.me/SetUpSber

Vorherige Artikel:

Was ist üblich zwischen einem Revolver, Unterlegscheiben und einem autonomen Roboter
Eigener Navigationsstack. Besser als ROS?

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


All Articles