-
Die vorliegende Erfindung betrifft ein Verfahren zum Hinzufügen eines oder mehrerer Ankerpunkte zu einer Karte einer Umgebung, wobei die Karte auf einem SLAM-Graphen basiert, und wobei dem einen oder den mehreren Ankerpunkten insbesondere eine Beschreibung zugeordnet ist oder wird, sowie ein System zur Datenverarbeitung, ein mobiles Gerät und ein Computerprogramm zu dessen Durchführung.
-
Hintergrund der Erfindung
-
Mobile Geräte wie z.B. sich zumindest teilautomatisiert bewegende Fahrzeuge oder Roboter bewegen sich typischerweise in einer Umgebung, insbesondere einer zu bearbeitenden Umgebung oder einem Arbeitsbereich, wie z.B. einer Wohnung, in einem Garten, in einer Fabrikhalle oder auf der Straße, in der Luft oder im Wasser. Eines der grundlegenden Probleme eines solchen oder auch anderen mobilen Geräts besteht darin, sich zu orientieren, also zu wissen, wie die Umgebung aussieht, also insbesondere wo Hindernisse oder andere Objekte sind, und wo es sich (absolut) befindet. Dafür kann das mobile Gerät z.B. mit verschiedenen Sensoren ausgerüstet sein, wie z.B. Kameras, Lidar-Sensoren oder auch Intertialsensoren, mit deren Hilfe die Umgebung und die Bewegung des mobilen Gerätes z.B. zwei- oder dreidimensional erfasst wird. Dies ermöglicht es dem mobilen Gerät, sich lokal zu bewegen, Hindernisse rechtzeitig zu erkennen und zu umfahren.
-
Als SLAM („Simultaneous Localization and Mapping“, in etwa: Simultane Positionsbestimmung und Kartierung) wird ein Verfahren in der Robotik bezeichnet, bei dem ein mobiles Gerät wie ein Roboter gleichzeitig eine Karte seiner Umgebung erstellen und seine räumliche Lage innerhalb dieser Karte schätzen kann oder muss. Es dient damit dem Erkennen von Hindernissen und unterstützt somit die autonome Navigation. Bei SLAM ist in der Regel keine absolute Position wie z.B. von einem GPS-Sensor nötig.
-
Offenbarung der Erfindung
-
Erfindungsgemäß werden ein Verfahren zum Hinzufügen eines oder mehrerer Ankerpunkte zu einer Karte einer Umgebung sowie ein System zur Datenverarbeitung, ein mobiles Gerät und ein Computerprogramm zu dessen Durchführung mit den Merkmalen der unabhängigen Patentansprüche vorgeschlagen. Vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche sowie der nachfolgenden Beschreibung.
-
Die Erfindung beschäftigt sich mit dem Thema SLAM sowie insbesondere dessen Anwendung bei mobilen Geräten. Beispiele für solche mobilen Geräte (oder auch mobile Arbeitsgeräte) sind z.B. Roboter und/oder Drohnen und/oder auch sich teilautomatisiert oder (vollständig) automatisiert (zu Land, Wasser oder in der Luft) bewegende Fahrzeuge. Als Roboter kommen z.B. Haushaltsroboter wie Saug- und/oder Wischroboter, Boden- oder Straßenreinigungsgeräte oder Rasenmähroboter in Betracht, ebenso aber auch andere sog. Service-Roboter, als sich zumindest teilweise automatisiert bewegende Fahrzeuge z.B. Personenbeförderungsfahrzeuge oder Güterbeförderungsfahrzeuge (auch sog. Flurförderfahrzeuge, z.B. in Lagerhäusern), aber auch Luftfahrzeuge wie sog. Drohen oder Wasserfahrzeuge.
-
Ein solches mobiles Gerät weist insbesondere eine Steuer- oder Regeleinheit und eine Antriebseinheit zum Bewegen des mobilen Geräts auf, sodass das mobile Gerät in der Umgebung und z.B. entlang einer Trajektorie bewegt werden kann. Außerdem weist ein mobiles Gerät z.B. einen oder mehrere Sensoren auf, mittels welcher Informationen in der Umgebung und/oder von Objekten (in der Umgebung, insbesondere Hindernisse) und/oder vom mobilen Gerät selbst erfasst werden können. Beispiele für solche Sensoren sind Lidar-Sensoren oder andere Sensoren zum Bestimmen von Abständen, Kameras, sowie Inertialsensoren. Mittels eines Lidar-Sensors können z.B. sog. Punktwolken erfasst bzw. erhalten werden. Ebenso kann z.B. eine sog. Odometrie (des mobilen Geräts) berücksichtigt werden.
-
Bei SLAM gibt es verschiedene Ansätze, Karten und Positionen darzustellen. Herkömmliche Verfahren für SLAM stützen sich in der Regel auf geometrische Informationen, die typischerweise durch Knoten und Kanten repräsentiert werden. Knoten und Kanten sind typischerweise Bestandteile des SLAM-Graphen. Die Knoten und Kanten im SLAM-Graph können verschieden ausgestaltet sein und verschiedene Informationen umfassen; traditionell entsprechen die Knoten z.B. der Pose (Position und Orientierung) des mobilen Geräts oder bestimmter Umgebungsmerkmale zu bestimmten Zeitpunkten, während die Kanten relative Messungen zwischen den Knoten repräsentieren. SLAM-Graphen werden z.B. in „Giorgio Grisetti, Rainer Kümmerle, Cyrill Stachniss, Wolfram Burgard, A Tutorial on Graph-Based SLAM, IEEE Intelligent Transportation Systems Magazine, Vol. 2(4), pp 31-42, 2010“ näher beschrieben.
-
Basierend auf einem solchen SLAM-Graphen kann eine Karte der Umgebung, in der sich das mobile Gerät bewegt, bestimmt sein oder bestimmt werden. Hierzu kann die Karte eine oder mehrere sog. Landmarken (engl.: „landmarks“) umfassen. Hierzu können sog. Anker oder Ankerpunkte mit Position und/oder Orientierung (Pose) verwendet werden, die in der Karte vorhanden sind oder damit verknüpft sind, und denen Informationen oder eine Beschreibung (bzw. Anmerkungen oder engl.: „annotations“) zugeordnet ist. Damit lassen sich z.B. bestimmte Gegenstände oder Objekten wie Hindernisse in der Umgebung in der Karte festlegen und damit erkennen und zur Navigation nutzen. Allgemein können damit nicht nur Objekte definiert sein, sondern z.B. auch bestimmte Bereiche der Umgebung, die z.B. vom mobilen Objekt nicht befahren werden dürfen oder die eine bestimmte Bodenbeschaffenheit aufweisen. Dabei muss nicht immer ein physisches Merkmal in der Umgebung vorhanden sind, da z.B. ein Raum von einem Benutzer willkürlich in zwei Bereiche aufgeteilt werden kann. Ebenso können damit bestimmte Ereignisse definiert sein, z.B. der Zusammenstoß des mobilen Geräts mit einem Hindernis. Ebenso kann damit z.B. eine Docking- oder Ladestation definiert sein.
-
Ein SLAM-Graph wird typischerweise immer wieder aktualisiert, z.B. nach einer sog. Loop-Closure. Dabei kann es vorkommen, dass Knoten und/oder Kanten im SLAM-Graph verändert (aktualisiert bzw. angepasst) werden. Allgemein können sich auch die Karten, und damit nicht nur der SLAM-Graph, sondern auch die Informationen bzw. Beschreibung in der Karte verändern, z.B. bei Aktualisierungen. Auch können z.B. mehrere Karten zu einer neuen Karte verschmolzen werden. Hierbei wird auch von dynamischen Karten gesprochen.
-
Im Falle einer solchen Aktualisierung ist es zweckdienlich, Position und/oder Orientierung von Ankerpunkten (bzw. Landmarken) ebenfalls zu aktualisieren. Hierzu wird eine Möglichkeit vorgeschlagen, Ankerpunkte zu einer Karte, die auf einem SLAM-Graphen basiert, hinzufügen, bei der im Falle einer Aktualisierung des SLAM-Graphen die Ankerpunkte automatisch auch aktualisiert werden. Außerdem kann eine Beschreibung für die Ankerpunkte zur Karte hinzugefügt werden, die dann insbesondere mit einem oder mehreren Ankerpunkten verknüpft ist oder wird. Dabei können z.B. in einem ausführenden System zur Datenverarbeitung, z.B. einem Prozessor oder einer Steuereinheit des mobilen Geräts, ein Ankermodul sowie eines oder mehrere Kartenbearbeitungsmodule bereitgestellt werden, wobei die Kartenbearbeitungsmodule über eine Schnittstelle mit dem Ankermodul kommunizieren (zum Datenaustausch). Es kann sich dabei um getrennte Softwaremodule handeln, die auf derselben Steuereinheit ausgeführt werden, ebenso können aber getrennte Systeme zur Datenverarbeitung verwendet werden.
-
Um nun Ankerpunkte zur Karte hinzufügen, wird für den oder jeden von mehreren Ankerpunkten, die zur Karte hinzuzufügen sind, eine Position und/oder Orientierung bereitgestellt, und zwar z.B. für das Ankermodul. Beispielsweise kann von einem Kartenbearbeitungsmodul, das einen Ankerpunkt hinzufügen möchte, eine Anfrage an das Ankermodul gestellt werden, wozu dann die Position und/oder Orientierung bereitgestellt bzw. übermittelt wird. Die Position und/oder Orientierung des Ankerpunktes kann z.B. von extern beliebig vorgegeben werden, oder aber z.B. auch im Rahmen bestimmter Aktivitäten des mobilen Geräts bestimmt werden. So kann z.B. bei Andocken des mobilen Geräts (z.B. Staubsaugerroboter an eine Dockingstation, die vorher noch nicht bekannt war, von einem entsprechenden Kartenbearbeitungsmodul (automatisch) ein Ankerpunkt für die Dockingstation hinzugefügt werde, bei dem die Position und/oder Orientierung anhand der Position und/oder Orientierung des mobilen Geräts beim Andocken bestimmt ist.
-
Der Ankerpunkt wird dann zu einem Knoten in dem SLAM-Graphen zugeordnet, und zwar insbesondere einem zu dem Ankerpunkt nächstgelegenen Knoten. Der nächstgelegene Knoten kann z.B. durch eine Metrik bestimmt werden, z.B. als Knoten mit dem geringsten Abstand bzgl. der Positionen von Ankerpunkt und Knoten. Der Ankerpunkt, d.h. zumindest dessen Position und/oder Orientierung, wird damit also mit einem im SLAM-Graphen vorhandenen Knoten verknüpft; eine entsprechende Information (über die Verknüpfung) kann dann z.B. abgespeichert werden. Vorzugsweise wird auch eine relative Position und/oder Orientierung zwischen der Position und/oder Orientierung des Ankerpunktes und einer Position und/oder Orientierung des Knotens (die im SLAM-Graphen ja vorhanden bzw. hinterlegt ist) bestimmt.
-
Der Ankerpunkt wird dann zu der Karte der Umgebung hinzugefügt, ggf. auch eine Information zur der relativen Position und/oder Orientierung des Ankerpunktes. Ebenso kann, wie erwähnt, eine Beschreibung („annotation“) des Ankerpunktes, insbesondere eine semantische Beschreibung, bereitgestellt werden, die dann zu der Karte der Umgebung hinzugefügt wird. Diese Beschreibung kann an sich aber getrennt von der Position und/oder Orientierung behandelt werden, und z.B. je nach gewünschter Anwendung verwendet werden. Auch kann eine Beschreibung für mehrere Ankerpunkte gemeinsam gelten, z.B., wenn durch mehrere Ankerpunkte ein bestimmter Bereich definiert wird.
-
Auf diese Weise wird also eine Karte mit Ankerpunkten erhalten, bei der eine Aktualisierung des zugrundeliegenden SLAM-Graphen, also z.B. eine Änderung bzw. Anpassung von Position und/oder Orientierung von Knoten im SLAM-Graphen, automatisch zu einer Aktualisierung der Ankerpunkte führt, da die Zuordnung des Ankerpunktes zum Knoten an sich erhalten bleibt. Anhand der relativen Position und/oder Orientierung zwischen dem Ankerpunkt in Bezug auf den Knoten vor Aktualisierung kann dann auch nach Aktualisierung wieder auf die richtige Position und/oder Orientierung des Ankerpunktes geschlossen werden, dann ausgehend von der neuen Position und/oder Orientierung des Knotens. Es sei erwähnt, dass ein Ankerpunkt kein Knoten im SLAM-Graphen ist oder wird, sondern grundsätzlich vom SLAM-Graphen getrennt ist, jedoch durch die Zuordnung zu einem Knoten damit verknüpft ist. Es sei auch angemerkt, dass sich dabei die relative Position und/oder Orientierung zwischen Ankerpunkt und Knoten nicht ändert, sodass zwar ggf. der Ankerpunkt innerhalb der gesamten Karte etwas geändert, z.B. bewegt und/oder verschoben, wird, jedoch lokal gleichbleibt. Dies wird später in Bezug auf die Figurenbeschreibung noch näher erläutert.
-
Vorzugsweise wird auch eine Kennung, insbesondere eine eindeutige Kennung, für den Ankerpunkt bestimmt und dann bereitgestellt. Dies kann z.B. ebenfalls durch das Ankermodul erfolgen. Damit ist jeder Ankerpunkt eindeutig identifizierbar. So können z.B. mehrere verschiedene Karten vorhanden sein, die Ankerpunkte sind aber über die Karten hinweg unterscheidbar. Damit treten z.B. bei einer Verschmelzung der Karten keine Kollisionen der Ankerpunkte auf. Im Fall von mehreren Karten kann dann für einen Ankerpunkt auch eine Information bereitgestellt werden, in welcher Karte er enthalten ist.
-
Denkbar ist auch, dass eine Prüfung durchgeführt wird, ob ein hinzuzufügender Ankerpunkt überhaupt zur Karte hinzugefügt werden kann. Falls z.B. die Position des Ankerpunkts zu weit von einem nächstgelegenen Knoten entfernt ist, kann das Hinzufügen unterbunden werden. Dies könnte nämlich zu Problemen bei der Aktualisierung des SLAM-Graphen führen.
-
Basierend auf dem SLAM-Graphen oder der Karte, die auf dem SLAM-Graphen basiert, werden dann insbesondere auch Navigationsinformationen für das mobile Gerät bereitgestellt. Dies erlaubt es dem mobilen Gerät, in der Umgebung zu navigieren bzw. sich dort zu bewegen.
-
Neben solchen Anfragen zum Hinzufügen von Ankerpunkten können, z.B. von einem oder mehreren der erwähnten Kartenbearbeitungsmodule, auch Anfragen zum Bereitstellen von Informationen zu einem oder mehreren bestimmten Ankerpunkten oder zu allen Ankerpunkten der Karte erfolgen. Es können dann, z.B. vom Ankermodul, die Informationen zu dem einem oder den mehreren bestimmten Ankerpunkten, sofern vorhanden (d.h. wenn es die angefragten Ankerpunkte überhaupt gibt; diese könne z.B. über die erwähnte Kennung identifiziert werden), oder zu allen Ankerpunkten der Karte bereitgestellt werden. Die Informationen zu den Ankerpunkten könne hierbei die Position und/oder Orientierung, ebenso aber auch die erwähnte Kennung und/oder die Beschreibung umfassen. Ebenso können, z.B. von einem oder mehreren der erwähnten Kartenbearbeitungsmodule, auch Anfragen zum Entfernen eines oder mehrerer bestimmter Ankerpunkte aus der Karte erfolgen. Es können dann, z.B. vom Ankermodul, die betreffenden Ankerpunkte entfernt werden, sofern vorhanden (d.h. wenn es die angefragten Ankerpunkte überhaupt gibt; diese könne z.B. über die erwähnte Kennung identifiziert werden).
-
Nachfolgend soll kurz erläutert werden, wie das Hinzufügen eines Ankerpunktes in einem SLAM-Graphen konkret ablaufen kann. Hierzu kann ein SLAM-Graph 6 = (V, E) angenommen werden, mit einem Satz von Knoten V und einem Satz von Kanten E. Jeder Knoten weist eine optimierte Pose (Position und Orientierung) auf, die zweidimensional (2D) oder dreidimensional (3D) sein kann; dies kann z.B. von der Art der Anwendung oder des mobilen Geräts abhängen. Diese Pose kann sich über die Zeit ändern, z.B., wenn neue Informationen hinzukommen (z.B. bei einer Loop-Closure).
-
Wenn nun das Hinzufügen eines Ankerpunktes mit einer bestimmten Pose p
map angefragt bzw. angefordert wird, wird derjenige Knoten v̂ ∈ V gesucht, dessen Position der Position von p
map z.B. am nächsten ist. Hierzu kann z.B. auf die Euklidische Metrik zurückgegriffen werden, sodass gilt:
-
Dann kann die relative Pose p
rel des Ankerpunktes in Bezug auf v̂ bestimmt bzw. berechnet und z.B. abgespeichert werden:
-
Wenn die aktuelle Pose p
current eines Ankerpunktes angefragt wird, kann diese bestimmt werden, indem die gespeicherte relative Pose p
rel auf die aktuelle Pose des Knotens v̂ angewendet wird, die sich seit dem Hinzufügen des Ankerpunktes geändert haben könnte (aufgrund von Aktualisierungen):
-
Bei SLAM-Graphen gibt es die Möglichkeit, diese auszudünnen, d.h. Knoten und/oder Kanten daraus zu entfernen und so die Datenmenge zu reduzieren. Falls im Rahmen eines solchen Ausdünnens oder aus anderen Gründen einer oder mehrere Knoten aus dem SLAM-Graphen entfernt werden oder werden sollen, könnte es passieren, dass einem oder mehreren zu entfernenden Knoten ein Ankerpunkt zugeordnet ist. Hierbei ist es dann bevorzugt, wenn einem solchen Ankerpunkt ein anderer Knoten (ein Knoten, der im SLAM-Graphen verbleibt) zugeordnet wird. Hier kann dann wieder der nächstgelegene Knoten verwendet werden. Dabei kann ausgehend von der Position und/oder Orientierung des zu entfernenden Knotens und der Position und/oder Orientierung des Ankerpunktes eine neue relative Position und/oder Orientierung zwischen dem Ankerpunkt und dem neuen zugeordneten Knoten bestimmt werden.
-
Ebenso ist es zweckmäßig, wenn das Entfernen von Knoten, denen ein Ankerpunkt zugeordnet ist, unterbunden wird. Damit wird zwar der SLAM-Graph etwas weniger ausgedünnt, dafür bleibt jedoch eine genaue Position für den Ankerpunkt erhalten. Grundsätzlich kann für verschiedene Ankerpunkt auch unterschieden werden, ob ein zugeordneter Knoten entfernt werden darf oder nicht, und dann ggf. ein neuer Knoten zugeordnet werden muss. Dies kann z.B. von einem Kriterium wie der Wichtigkeit des Ankerpunktes abhängig gemacht werden.
-
Ein erfindungsgemäßes System zur Datenverarbeitung, z.B. eine Steuereinheit eines Roboters, einer Drohne, eines Fahrzeugs usw., ist, insbesondere programmtechnisch, dazu eingerichtet, ein erfindungsgemäßes Verfahren durchzuführen.
-
Wenngleich es besonders vorteilhaft ist, die erwähnten Verfahrensschritte in der Rechen- oder Steuereinheit im mobilen Gerät auszuführen, können auch manche oder alle Verfahrensschritte auf einer anderen Recheneinheit oder einem Rechner wie z.B. einem Server (Stichwort: Cloud) durchgeführt werden; hierzu ist entsprechend eine vorzugsweise drahtlose Daten- bzw. Kommunikationsverbindung zwischen den Recheneinheiten nötig. Damit gibt es ein Rechensystem zur Durchführung der Verfahrensschritte.
-
Die Erfindung betrifft ebenfalls ein mobiles Gerät, das in eingerichtet ist, Navigationsinformationen wie vorstehend erwähnt zu erhalten und basierend auf Navigationsinformationen zu navigieren. Es kann sich dabei z.B. um ein Personenbeförderungsfahrzeug oder Güterbeförderungsfahrzeug, einen Roboter, insbesondere Haushaltsroboter, z.B. Saug- und/oder Wischroboter, Boden- oder Straßenreinigungsgerät oder Rasenmähroboter, eine Drohne oder auch Kombinationen davon handeln. Weiterhin kann das mobile Gerät einen oder mehrere Sensoren zur Erfassung von Objekt- und/oder Umgebungsinformationen aufweisen. Außerdem kann das mobile Gerät insbesondere eine Steuer- oder Regeleinheit und eine Antriebseinheit zum Bewegen des mobilen Geräts aufweisen.
-
Auch die Implementierung eines erfindungsgemäßen Verfahrens in Form eines Computerprogramms oder Computerprogrammprodukts mit Programmcode zur Durchführung aller Verfahrensschritte ist vorteilhaft, da dies besonders geringe Kosten verursacht, insbesondere wenn ein ausführendes Steuergerät noch für weitere Aufgaben genutzt wird und daher ohnehin vorhanden ist. Schließlich ist ein maschinenlesbares Speichermedium vorgesehen mit einem darauf gespeicherten Computerprogramm wie oben beschrieben. Geeignete Speichermedien bzw. Datenträger zur Bereitstellung des Computerprogramms sind insbesondere magnetische, optische und elektrische Speicher, wie z.B. Festplatten, Flash-Speicher, EEPROMs, DVDs u.a.m. Auch ein Download eines Programms über Computernetze (Internet, Intranet usw.) ist möglich. Ein solcher Download kann dabei drahtgebunden bzw. kabelgebunden oder drahtlos (z.B. über ein WLAN-Netz, eine 3G-, 4G-, 5G- oder 6G-Verbindung, etc.) erfolgen.
-
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
-
Die Erfindung ist anhand von Ausführungsbeispielen in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung beschrieben.
-
Kurze Beschreibung der Zeichnungen
-
- 1 zeigt schematisch ein mobiles Gerät in einer Umgebung zur Erläuterung der Erfindung in einer bevorzugten Ausführungsform.
- 2 zeigt schematisch einen Aufbau eines Systems zur Erläuterung der Erfindung in einer bevorzugten Ausführungsform.
- 3 zeigt schematisch einen Ablauf eines erfindungsgemäßen Verfahrens in einer bevorzugten Ausführungsform.
- 4 zeigt schematisch eine Karte mit SLAM-Graph zur Erläuterung der Erfindung in einer bevorzugten Ausführungsform.
- 5 zeigt schematisch Karten zur Erläuterung der Erfindung in einer weiteren bevorzugten Ausführungsform.
- 6 zeigt schematisch Karten zur Erläuterung der Erfindung in einer weiteren bevorzugten Ausführungsform.
-
Ausführungsform(en) der Erfindung
-
In 1 ist schematisch und rein beispielhaft ein mobiles Gerät 100 in einer Umgebung 120 zur Erläuterung der Erfindung dargestellt. Bei dem mobilen Gerät 100 kann es sich z.B. um einen Roboter wie einen Staubsauger- oder Rasenmähroboter mit einer Steuer- oder Regeleinheit 102 und einer Antriebseinheit 104 (mit Rädern) zum Bewegen des Roboters 100, z.B. entlang einer Trajektorie 130. Wie erwähnt, kann es sich aber auch um eine andere Art mobiles Gerät handeln, z.B. ein Güterbeförderungsfahrzeug.
-
Weiterhin weist der Roboter 100 beispielhaft einen als Lidar-Sensor ausgebildeten Sensor 106 mit einem Erfassungsfeld (gestrichelt angedeutet) auf. Zur besseren Veranschaulichung ist das Erfassungsfeld hier relativ klein gewählt; in der Praxis kann das Erfassungsfeld aber auch bis zu 360° betragen (z.B. aber mindestens 180° oder mindestens 270°). Mittels des Lidar-Sensors 106 können Objekt- und/oder Umgebungsinformationen wie Abstände von Objekten erfasst werden. Beispielhaft sind zwei Objekte 122 und 124 dargestellt. Außerdem kann der Roboter zusätzlich oder anstelle des Lidar-Sensors z.B. eine Kamera aufweisen.
-
Zudem ist schematisch eine Karte 140 angedeutet, die auf einem SLAM-Graphen basiert und die das mobile Gerät 100 zum Navigieren verwenden kann. Von der Karte 140 sind z.B. die Objekte 122, 124 als Ankerpunkte mit geeigneter Beschreibung umfasst, nachdem sie hinzugefügt worden sind.
-
Weiterhin weist der Roboter 100 ein System 108 zur Datenverarbeitung, z.B. ein Steuergerät, auf, mittels dessen z.B. über eine angedeutete Funkverbindung Daten mit einem übergeordneten System 110 zur Datenverarbeitung ausgetauscht werden können. In dem System 110 (z.B. ein Server, es kann auch für eine sog. Cloud stehen) können z.B. aus der Karte 140 bzw. deren SLAM-Graphen Navigationsinformationen, z.B. umfassend die Trajektorie 130, bestimmt werden, die dann auf das System 108 im Roboter 100 übermittelt werden, basierend worauf dieser dann navigieren soll. Ebenso kann aber vorgesehen sein, dass Navigationsinformationen im System 108 selbst bestimmt werden oder anderweitig dort erhalten werden. Anstelle von Navigationsinformationen kann das System 108 aber z.B. auch Steuerinformationen erhalten, die anhand der Navigationsinformationen bestimmt worden sind, und gemäß welcher die Steuer- oder Regeleinheit 102 über die Antriebseinheit 104 den Roboter 100 bewegen kann, um z.B. der Trajektorie 130 zu folgen.
-
In 2 ist schematisch ein Aufbau eines Systems 108 zur Erläuterung der Erfindung in einer bevorzugten Ausführungsform gezeigt. Bei dem System 108 kann es sich z.B. um das System 108 des Roboters 100 aus 1 handeln, wobei insbesondere nur die auf dem System 108 ausgeführten Funktionen in Form von Modulen (Softwaremodule) dargestellt sind.
-
Hierbei ist zunächst ein SLAM-Modul 210 vorgesehen, das z.B. grundsätzlich alle für SLAM relevanten Funkien wie das Erstellen des SLAM-Graphen und der darauf basierenden Karte 140 ausführt bzw. handhabt. Innerhalb des SLAM-Moduls 210 kann z.B. ein Ankermodul 220 ausgeführt werden, das Ankerpunkte zur Karte 140 hinzufügt und weitere Anfragen handhabt. Weiterhin sind mehrere Kartenbearbeitungsmodule vorgesehen, von denen eines mit 230 bezeichnet ist. Diese Kartenbearbeitungsmodule können über eine Schnittstelle 222 z.B. Anfragen 260 an das Ankermodul stellen, z.B. um eine Ankerpunkt zur Karte hinzufügen oder Informationen 262 zu Ankerpunkten, insbesondere auch Position und/oder Orientierung 264, zu erhalten.
-
Weiterhin ist beispielhaft ein weiteres, nicht näher spezifiziertes Softwaremodul 240 vorgesehen, das Beschreibungen 270 von z.B. Ankerpunkten von einem Kartenbearbeitungsmodul 230 erhalten kann und selbst z.B. Anfragen 272 z.B. zur Bearbeitung von Beschreibungen an ein Kartenbearbeitungsmodul 230 übermitteln kann. Dem Softwaremodul 240 kann außerdem die Karte 140 selbst zur Verfügung gestellt werden.
-
Weiterhin ist ein Sensormodul 250 vorgesehen, das Sensor- bzw. Umgebungsinformationen 252 von z.B. dem Sensor 106 (Vgl. 1) erhält und z.B. an das SLAM-Modul 210, die Kartenbearbeitungsmodule 230 sowie das Softwaremodul 240 bereitstellt.
-
Weiterhin ist ein Benutzer 280 gezeigt, der z.B. ebenfalls (manuell) Anfragen zur Bearbeitung von Beschreibungen an ein Kartenbearbeitungsmodul 230 übermitteln kann.
-
In 3 ist schematisch ein Ablauf eines erfindungsgemäßen Verfahrens in einer bevorzugten Ausführungsform dargestellt. Beispielhaft soll hier ein Ankerpunkt zu einer Karte hinzugefügt werden. Hierzu wird in einem Schritt 300 eine Position und/oder Orientierung 302 des Ankerpunktes 304 bereitstellt, z.B. von einem Kartenbearbeitungsmodule 230 an das Ankermodul 220 (vgl. 2).
-
In einem Schritt 310 wird der Ankerpunkt 304 dann zu einem Knoten 312 in einem SLAM-Graph 314 zugeordnet, Ankerpunkt und Knoten werden verknüpft. In einem Schritt 320 kann eine relative Position und/oder Orientierung 322 zwischen der Position und/oder Orientierung 302 des Ankerpunktes 304 und einer Position und/oder Orientierung des Knotens 312 bestimmt. In einem Schritt 330 kann eine eindeutige Kennung (oder ID) 332 für den Ankerpunkt 304 bestimmt werden.
-
In einem Schritt 340 wird dann der Ankerpunkt 304 zu der Karte 140 hinzugefügt. Außerdem können auch die Information zur relativen Position und/oder Orientierung 322 des Ankerpunktes sowie die Kennung 332 bereitgestellt werden. In einem Schritt 350 können zudem Navigationsinformation 352 bestimmt werden, indem z.B. der Ankerpunkt bzw. dessen Informationen, basierend auf der Karte 140, mit einer (z.B. ebenfalls bereitgestellten) Beschreibung (bzw. semantischen Information) 306 kombiniert oder verknüpft wird, um das mobile Gerät ansteuern zu können, d.h. zum Navigieren des mobilen Geräts.
-
In 4 ist schematisch eine Karte 440 mit SLAM-Graph 442 zur Erläuterung der Erfindung in einer bevorzugten Ausführungsform dargestellt. Wie eingangs erläutert, umfasst ein SLAM-Graph typischerweise eine Vielzahl von Knoten und Kanten. Beispielhaft ist ein Knoten mit 444 bezeichnet, eine Kante mit 446. Mit 450 sind beispielhaft Linien und Punkte bezeichnet, die Objekte oder Wände darstellen und z.B. mittels des Sensors des Roboters erfasst werden und auch in der Karte hinterlegt werden können.
-
Durch Ankerpunkte kann, wie erwähnt, z.B. ein bestimmter Bereich vorgegeben werden. Beispielhaft ist in 4 ein Bereich 408 durch vier Ankerpunkte definiert, die als Stern dargestellt sind und wovon einer mit 404 bezeichnet ist. Beispielsweise kann der Bereich 408 dafür vorgesehen sein, dass er von dem Roboter nicht befahren werden darf (eine sog. Verbotszone).
-
Wenn nun die Ankerpunkte zur Karte 440 hinzugefügt werden, so wird für jeden Ankerpunkt jeweils ein nächstgelegener Knoten in dem SLAM-Graph 442 bestimmt, wie dies anhand gestrichelter Pfeile, die von jeweils einem Ankerpunkt (Stern) zu einem Knoten führen, dargestellt ist. Der Ankerpunkt 404 wird z.B. dem Knoten 444 zugeordnet. Die relative Position zwischen Ankerpunkt 404 und Knoten 444 ist in diesem Fall z.B. durch den gestrichelten Pfeil definiert.
-
In 5 sind schematisch Karten zur Erläuterung der Erfindung in einer weiteren bevorzugten Ausführungsform dargestellt. Hierzu soll das Beispiel eines autonomen mobilen Roboters als mobiles Gerät, wie z.B. auch in 1 gezeigt, betrachtet werden. Der Roboter erkundet z.B. regelmäßig neue Teile der Umgebung und könnte an verschiedenen, dem Roboter unbekannten Orten aus- und eingeschaltet werden (dies ist als sog. „Kidnapped Robot Problem“ bekannt).
-
Um dieses Szenario zu unterstützen, kann ein SLAM-System verwendet werden, das sich an mehrere disjunkte Karten aus der Vergangenheit erinnern kann (d.h. diese sind an sich vorhanden), den Roboter in einer der vergangenen Karten neu lokalisieren kann, mehrere Karten zusammenführen kann und den Inhalt der vergangenen Karten anhand der neuen Informationen, die der Roboter während des Betriebs sammelt, verfeinern und erweitern kann.
-
Gleichzeitig ist es für die Kartenbearbeitungsmodule erforderlich, dass die Position spezifischer statischer Objekte und Beschreibungen (und damit Ankerpunkte) immer auf dem neuesten Stand bleibt. Die Verwendung des Ankermoduls ermöglicht dies, ohne dass jedes Kartenbearbeitungsmodul tief in das SLAM-System integriert und angebunden werden muss.
-
Bei einem Kartenbearbeitungsmodul kann es sich z.B. um ein Docking-Modul für das Batteriemanagement handeln. Das System (also der Roboter) muss z.B. automatisch zu seiner Dockingstation zurückkehren können, um sich aufzuladen, bevor die Batterien leer sind.
-
In diesem Beispiel wird eine Dockingstation durch eine einzelne Pose identifiziert, die der Pose des Roboters beim Andocken an dieser Dockingstation entspricht (oder zumindest basierend darauf bestimmt wird). Immer, wenn der Roboter an einer zuvor unbekannten Dockingstation angedockt wird, fordert das Docking-Modul das Ankermodul auf, einen neuen Ankerpunkt mit der aktuellen Roboterpose (die als Pose des Ankerpunktes verwendet wird) zu erstellen. Dies kann z.B. erfolgen, wenn der Roboter zum ersten Mal in einer Dockingstation startet oder nachdem er erfolgreich in einer neuen Dockingstation angedockt hat. Um festzustellen, ob das Andocken erfolgreich war, kann z.B. überprüft werden, ob die Batterie aufgeladen ist.
-
Das Ankermodul gibt dann eine Kennung bzw. ID zurück, um den Ankerpunkt zu identifizieren, der der neu hinzugefügten Dockingstation entspricht. Das Docking-Modul ordnet die ID des Ankerpunks dann z.B. seiner internen Datenstruktur der Dockingstation zu, dies kann z.B. wie folgt aussehen:
- - Neu hinzugefügte Dockingstation: Dockingstation 4 - Ankerpunkt ID 82
- - Andere Dockingstationen, bereits registriert sind (also schon in der Karte vorhanden sind):
- ◯ Dockingstation 1 - Ankerpunkt ID 04
- ◯ Dockingstation 2 - Ankerpunkt ID 19
- ◯ Dockingstation 3 - Ankerpunkt ID 72
-
Bei Bedarf kann das Andockmodul die Standorte der einzelnen Dockingstationen in der aktuellen Karte abrufen, indem es entweder explizit Ankerdaten anfordert oder z.B. einen Ausgabekanal des Ankermoduls abhört (falls ein solcher vorgesehen ist).
-
In 5 ist auf der linken Seite in der Karte 540, die auf einem SLAM-Graphen basiert, beispielhaft ein Ankerpunkt 504 vorhanden, der z.B. wie vorstehend erläutert hinzugefügt wurde. Auf der rechten Seite ist die Karte 540 erneut dargestellt, jedoch nachdem der SLAM-Graph aktualisiert wurde, z.B. nach einer Loop-Closure. Hier ist zu sehen, dass der rechte Teil der Karte, der zuvor etwas schief war, nunmehr gerade ausgerichtet ist (in Bezug auf den linken Teil der Karte). Der Ankerpunkt, der sich in diesem rechten Teil der Karte befindet, wird auf diese Weise ebenfalls aktualsiert, da der Knoten des SLAM-Graphen, dem er zugeordnet ist (hier nicht gezeigt) aktualisiert wurde. Die Position der Dockingstation in der Karte bleibt damit konsistent, wenn die Karte korrigiert wird.
-
In 6 sind schematisch Karten zur Erläuterung der Erfindung in einer weiteren bevorzugten Ausführungsform dargestellt. Wie erwähnt, können z.B. bestimmte Bereiche vorgegeben werden, die vom Roboter nicht befahren werden dürfen, z.B., weil es dort Hindernisse gibt, die für den Sensor unsichtbar sind und dem Roboter selbst schaden könnten oder die beim Überfahren beschädigt werden könnten. Dies könnten z.B. ein See oder eine Treppe sein, die nach unten führt, wenn nur ein parallel zum Boden montiertes 2D-Lidar als Sensor verwendet wird.
-
Solche Verbotszonen können als Polygone dargestellt und über Ankerpunkte an den Eckpunkten der Polygone auf der Karte definiert werden. Eine rechteckige Verbotszone wird zum Beispiel durch vier Ankerpunkte (vgl. z.B. 4) dargestellt - einen für jede Ecke. Eine dreieckige Verbotszone kann z.B. durch drei Ankerpunkte dargestellt werden. In 6 auf der linken Seite ist eine Karte 640 mit eine solchen Verbotszone (bzw. allgemein einem Bereich) 608 gezeigt, die durch drei Ankerpunkte (als Sterne dargestellt) definiert ist.
-
Hierbei kann z.B. ein Benutzer eine neue Verbotszone erstellen, indem er bestimmte Stellen auf der Karte des Roboters markiert. Zu diesem Zweck fordert ein entsprechendes Kartenbearbeitungsmodul die Erstellung von drei neuen Ankerpunkten vom Ankermodul an. Das Ankermodul gibt drei IDs (Kennungen) zurück, um jeden der neu erstellten Ankerpunkte zu identifizieren.
-
Das Kartenbearbeitungsmodul ordnet diese IDs der internen Verbotszonen-Datenstruktur zu, z. B:
- - Neu hinzugefügtes Dreieck:
- ◯ Verbotszone 3, Ecke 1 - Ankerpunkt ID 41
- ◯ Verbotszone 3, Ecke 2 - Ankerpunkt ID 42
- ◯ Verbotszone 3, Ecke 3 - Ankerpunkt ID 47
- - Andere (dreieckige) Polygone, die bereits registriert sind:
- ◯ Verbotszone 1, Ecke 1 - Ankerpunkt ID 01
- ◯ Verbotszone 1, Ecke 2 - Ankerpunkt ID 02
- ◯ Verbotszone 1, Ecke 3 - Ankerpunkt ID 03
- ◯ Verbotszone 1, Ecke 4 - Ankerpunkt ID 04
- ◯ Verbotszone 2, Ecke 1 - Ankerpunkt ID 14
- ◯ Verbotszone 2, Ecke 2 - Ankerpunkt ID 15
- ◯ Verbotszone 2, Ecke 3 - Ankerpunkt ID 16
-
Von nun an kann das Kartenbearbeitungsmodul verfolgen, wie sich die Posen dieser Polygone während der Kartenaktualisierung ändern, indem es entweder den Ausgabekanal des Ankermoduls abhört oder explizit die Daten der Ankerpunkte anfragt bzw. anfordert.
-
Wie eine dreieckige Verbotszone (oder ein sonstiger Bereich) bei einer Kartenzusammenführung erhalten bleibt, ist in 6 dargestellt. Wie erwähnt, ist auf der linken Seite eine Karte 640 mit eine solchen Verbotszone 608 gezeigt, die durch drei Ankerpunkte (als Sterne dargestellt) definiert ist. Ein auf der linken oberen Seite der Karte 640 angedeuteter Korridor soll z.B. zunächst durch eine Tür verschlossen sein.
-
Wenn diese Tür dann später z.B. geöffnet wird, kann der Roboter hindurchfahren und den Korridor erkunden. Hierbei kann eine weitere Karte 642 erstellt werden, wie auf der rechten Seite von 6 dargestellt. Beide Karten 640 und 642 können dann auch verschmolzen werden. Dabei bleibt die Verbotszone 608 erhalten, da diese durch die drei Ankerpunkte mit eindeutigen Kennungen (IDs) definiert ist.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- Giorgio Grisetti, Rainer Kümmerle, Cyrill Stachniss, Wolfram Burgard, A Tutorial on Graph-Based SLAM, IEEE Intelligent Transportation Systems Magazine, Vol. 2(4), pp 31-42 [0007]