Produkte:

Landmark-basierte Positionsbestimmung:

ROS-Node: "camera_localization"

Die in diesem ROS-Node implementierte Positionsbestimmung arbeitet mit Landmarks/Markern (wie QR-Codes, ARUCO-Markern oder Data-Matrix-Codes), welche an bekannten Positionen in der Umgebung angebracht sind.

Auf Basis von mindestens einem erfassten Marker trianguliert der ROS-Node die dreidimensionale Pose (Position, Rotation) einer kalibrierten Kamera des AGVs und published sie über das ROS-Topic "tf".

Mögliche Positionsbestimmungsverfahren

Der angebotene ROS-Node implementiert zwei mögliche Positionsbestimmungsverfahren:

• Das üblichere Verfahren "Single Marker Localization"
Triangulation auf Basis der Eckpunkte eines einzelnen Markers:
Dieses Verfahren erreicht auf bis zu 0.5 m Distanz eine Genauigkeit im Millimeter-Bereich, kommt allerdings bereits mit einem detektierten Marker aus.

• Das weniger häufig verwendete "Multi Marker Localization"-Verfahren
Triangulation auf Basis von Punkten mehrerer verteilter Marker:
Dieses Verfahren erreicht auf bis zu 2 m Distanz eine Genauigkeit im Millimeter-Bereich, setzt aber mindestens drei erfasste Marker voraus.

Fallback-Konfiguration

Sind beide Verfahren aktiviert und werden mindestens drei Marker im Sichtbereich erkannt, wird eine "Multi Marker Localization" durchgeführt. Werden weniger erkannt oder schlägt die "Multi Marker Localization" fehl, wird automatisch auf die "Single Marker Localization" als Fallback gewechselt.
Eine Status-Nachricht gibt das derzeit verwendete Positionsbestimmungsverfahren, bzw. den dadurch derzeit erreichten Genauigkeits-Status wieder, um die Genauigkeit der gepublishten Pose bewerten zu können und in Filter-Verfahren richtig gewichten zu können.

Anwendungen:

Genaue Lokalisierung relativ zu einer Maschine – durch an dieser angebrachte Marker

Zum:
- präzisen Andocken des AGV an die Verlade-Stelle einer Maschine oder
- direkten Beschicken des Spannfutters einer Maschine, über einen auf dem AGV angebrachten Roboter-Arm.
⇒ Auf Grundlage der exakten Kenntnis über die Transformation zwischen beiden Koordinaten-Systemen

Redundanz zur Lidar-Lokalisierung an (für diese) schwierigen Stellen – über Decken-montierte Marker


Redundante Positionsbestimmung an Stellen (im Werk), an denen die Lidar-Lokalisierung, aufgrund eines Mangels an statischen Kontouren auf der Lidar-Scan-Ebene, fehlschlagen kann.

Bei Stellen mit zu wenig statischen Kontouren auf der Lidar-Scan-Ebene (an denen die Lidar-Lokalisierung fehlschlagen kann) handelt es sich meist um größere Freiflächen oder Orte mit einem erhöhten Verkehr dynamischer Objekte, wie Kreuzungen.
Hier kann eine redundante Lokalisierung über Decken-montierte Marker Abhilfe schaffen.

Eigenschaften des ROS-Nodes

Software-Umgebung, Schnittstellen und Einstellungsmöglichkeiten

Der ROS-Node "camera_localization" wird im Master/Main-Branch für ROS (1) - Noetic, unter Ubuntu 20.04, maintained.
Er ist allerdings so konzipiert, dass er einfach auf andere ROS-Distributionen portiert werden kann.

Unterstützt Kamera-Streams aller Camera Image Publisher Nodes welche im Format "sensor_msgs/Image" publishen
➞ Kompatibel zu USB Cameras (UVC Standard) und Ethernet-Cameras (GenICam/GigE Standard) über entsprechende Open-Source ROS Image Publisher Nodes.

Der "camera_localization"-Node published drei Typen von Nachrichten:

• Die Transform vom Koordinaten-Ursprung "world_frame" zur Kamera im Format "geometry_msgs/TransformStamped"

• Die selbe Pose im Format "geometry_msgs/Pose"

• Eine Status Nachricht im eigens definierten Format "camera_localization/CameraLocalizationStatus" mit den Variablen:

- std_msgs/Header "header": Ein standard ROS-Message Header (mit Node-Name und Timestamp)
- bool "marker_detected": Flag ob (bekannte) Marker detektiert wurden
- int32 "number_of_detected_markers": Anzahl (bekannter) detektierter Marker
- int32[] "marker_ids": Die ID's der (bekannten) detektierten Marker
- bool "position_determined": Flag ob die Pose der Kamera erfolgreich bestimmt werden konnte
- int16 "localization_mode": 1 wenn erfolgreich eine Multi-Marker-Lokalization durchgeführt werden konnte, 0 wenn nur eine Single-Marker-Lokalization durchgeführt werden konnte

Die folgende Liste enthält die einstellbaren "ROS-Params" des Nodes:

- "calibration_filename": Pfad der Kalibrierungsdatei der Kamera im standardisierten ".INI"-Format
- "marker_list_filename": Pfad der Marker-Koordinaten-Liste im ".CSV"-Format
- "marker_size": Größe der verwendeten Marker (in m)
- "dict_info": Verwendetes Marker-Dictionary (ARUCO, APRIL)
- "multi_marker_localization_enabled": Flag ob die Multi-Marker-Lokalisierung verwendet werden soll
- "single_marker_localization_enabled": Flag ob die Single-Marker-Lokalisierung verwendet werden soll
(Sind sowohl Multi- als auch Single-Marker-Lokalisierung aktiviert wird zunächst eine Multi-Marker-Lokalisierung versucht und wenn diese nicht möglich ist wird als Fallback eine Single-Marker-Lokalisierung durchgeführt. Eine Variable in der Status-Meldung gibt in diesem Fall die Art des verwendeten Lokalisierungsverfahrens aus.)
- "roi_enabled": Flag ob der Kamera-Bildbereich auf eine Region-of-Interest beschränkt werden soll
- "roi_[x/y/w/h]": Region-of-Interest des Kamera-Bildes

Über ein "remap" von einem ROS-Topics im Format "sensor_msgs/Image.msg" auf das Topic "camera_localization_node/image_raw" wird dem ROS-Node das zu verwendende Image-Topic zugewiesen.

Verwendung des ROS-Nodes

Der Start des Nodes erfolgt über ein "Launch-Script" in welchem alle Einstellungen des Nodes als "ROS-Params" gesetzt werden und sowohl der Pfad des zu verwendenden Kamera-Kalibrierungs-Files als auch der Marker-Koordinaten-Liste angegeben werden.
Der Node läuft dabei im Hintergrund, zu Debug-Zwecken kann allerdings aktiviert werden, dass das aktuell ausgewertete Kamera-Bild in einem OpenCV-Image-Window angezeigt wird, in welchem auch die Umriss der erkannten Marker durch Lables gekennzeichnet werden.
Zur Überwachung des Nodes kann die Status-Nachricht im Format "camera_localization/CameraLocalizationStatus" für jeden Callback über den ROS-Command "ros echo" ausgegeben oder von einem Node, welcher diesen Message-Type included, empfangen und  interpretiert werden.
Für die bestimmte Transformation im "geometry_msgs/TransformStamped", als auch im "geometry_msgs/Pose"-Format besteht, wie für alle standard ROS-Formate, die Möglichkeit sie über RVIZ zu visualisieren.

Montage und Kartierung der Marker-Targets

Auf der folgenden, separaten Seite ist zusammengestellt, was bezüglich der Beschaffenheit, Montage und Kartierung der Marker-Targets zu berücksichtigen ist.

Mehr Informationen über die:

Beispiel-Aufbau

Bestehend aus: einer ebenen Span-Verbundplatte mit vier aufgeklebten Markern und der an den Laptop, auf welchem der ROS-Node läuft, angeschlossenen USB-Kamera, welche lokalisiert wird.

Abbildung: Demonstrator-Versuchsanordnung

RVIZ-Output

Visualisierung der bestimmten Kamera-Pose in RVIZ, wie auch Ausgabe des Kamera-Bildes mit Labeln, welche die Ursprungs-Punkte der erkannten Marker anzeigen. Die untere linke Ecke des Target-Boards ist dabei der Ursprung des definierten globalen Koordinaten-Systems.

Abbildung: RVIZ-Output für die gezeigte Versuchsanordnung

Sie wollen die beschriebene kamerabasierte Positionsbestimmung testen?

Gerne können Sie sich auf Basis unseres Demonstrator-Setups (Kamera, PC und Marker-Platte) in Stuttgart, in den Räumlichkeiten der TTI, selbst ein Bild über die Genauigkeit und Robustheit der angebotenen kamerabasierten Positionsbestimmung machen.

Sie wollen mehr Daten zur angebotenen kamerabasierten Positionsbestimmung?

Gerne erstellen wir Ihnen auf Anfrage einen Test-Report über die Korrekte Funktion des ROS-Nodes und die Genauigkeit der Positionsbestimmung unter der verwendeten Hardware.

Kostenlosen:

Gründe für die kamerabasierter Positionsbestimmung

Insbesondere als Ergänzung zur Lidar-Lokalisierung/redundantes System

Robustheit gegenüber dynamischer Umgebung

Durch die Navigation auf Basis von eindeutig codierten, Decken-montierten Markern auch an Orten mit großer Veränderung der Szenerie korrekte Funktion

Höhere Positions-genauigkeit

In speziellen Anwendungen höhere Positionsgenauigkeit als bei der Lokalisierung mit Standard-Lidaren möglich (durch Multi-Marker-Triangulation und bei nahen Targets), mit Varianz im Millimeter-Bereich

Zuverlässig bei Skalierung

Im Gegensatz zu z.B. Funk-basierten Lösungen bei der unabhängigen Verwendung, an mehreren Orten gleichzeitig, keine Gefahr von gegenseitiger Störung (Interference)

Geringer Rechenbedarf

Geringerer Arbeitsspeicher- und Rechenbedarf als übliche Kartierungs- und Lokalisierungs-Nodes auf Lidar-Basis

Flexibel/Optional

Möglich als optionale Lösung für bestimmte Docking-Anwendungen oder bestimmte, für die Lidar-Lokalisierung problematische, Bereiche im Werk

Lizenz-Modell

Da sich die IPS als Entwicklungs-Dienstleister und nicht hauptsächlich als Software-Anbieter sieht, bietet sie ihren Kunden die vollen und unbeschränkten Rechte an der entwickelten Software an.
Einzig behält die IPSS dabei das Recht, ihre Software auch an andere Kunden anzubieten, um über Kunden-übergreifend standardisierte Lösungen und auf Wunsch auch Support und Updates anbieten zu können.

Dürfen wir Ihnen ein Angebot machen?

Unverbindliches Angebot für den Aufbau eines Prototypen/Technologiedemonstrators auf Basis Ihrer AGV-Plattform (gerne auch nach kostenlosem Test an unserem generischen Demonstrator) oder bereits für die Lizenzierung der vollen und unbeschränkten Rechte am Source-Code der Software anfragen.

Unverbindlich: