DE102020115513A1 - Korrektur von digitalen modellen - Google Patents

Korrektur von digitalen modellen Download PDF

Info

Publication number
DE102020115513A1
DE102020115513A1 DE102020115513.1A DE102020115513A DE102020115513A1 DE 102020115513 A1 DE102020115513 A1 DE 102020115513A1 DE 102020115513 A DE102020115513 A DE 102020115513A DE 102020115513 A1 DE102020115513 A1 DE 102020115513A1
Authority
DE
Germany
Prior art keywords
robot
target locations
data
area
navigable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102020115513.1A
Other languages
English (en)
Inventor
Shankar Narayan Mohan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ford Global Technologies LLC
Original Assignee
Ford Global Technologies LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ford Global Technologies LLC filed Critical Ford Global Technologies LLC
Publication of DE102020115513A1 publication Critical patent/DE102020115513A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/0094Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots involving pointing a payload, e.g. camera, weapon, sensor, towards a fixed or moving target
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0268Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means
    • G05D1/0274Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means using mapping information stored in a memory device
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/005Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 with correlation of navigation data from several sources, e.g. map or contour matching
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0212Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
    • G05D1/0219Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory ensuring the processing of the whole working surface
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • G05D1/0246Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using a video camera in combination with image processing means

Landscapes

  • Engineering & Computer Science (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • General Physics & Mathematics (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Electromagnetism (AREA)
  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
  • Manipulator (AREA)

Abstract

Die vorliegende Offenbarung stellt die Korrektur von digitalen Modellen bereit. Ein System beinhaltet einen Computer, der einen Prozessor und einen Speicher beinhaltet, auf dem von dem Prozessor ausführbare Anweisungen zum Zerlegen einer gespeicherten Karte eines Bereichs in eine Vielzahl von polygonalen Unterbereichen gespeichert sind. Die Anweisungen beinhalten Anweisungen zum Erzeugen einer Menge von Zielstandorten in den polygonalen Unterbereichen gemäß einem Leaky-Ball-Algorithmus. Die Anweisungen beinhalten Anweisungen zum Betätigen eines Roboters, damit er sich zu einem ersten der Zielstandorte der Menge bewegt. Die Anweisungen beinhalten Anweisungen zum Betätigen eines Sensors, damit er Daten an dem ersten der Zielstandorte erhebt.

Description

  • TECHNISCHES GEBIET
  • Die Offenbarung betrifft im Allgemeinen die Fahrzeugnavigation und insbesondere das Verwenden eines Roboters zur Unterstützung bei der Fahrzeugnavigation.
  • ALLGEMEINER STAND DER TECHNIK
  • Unbemannte Fahrzeuge oder Roboter können in einem Bereich eingesetzt werden, um Daten über einen Bereich zu erhalten, z. B. Kartendaten und Daten über Objekte in dem Bereich. Es bestehen jedoch Probleme hinsichtlich des Betriebs solcher Roboter. Beispielsweise kann ein Roboter häufig mit bestenfalls unvollständigen und/oder veralteten Kartendaten eines Bereichs ausgestattet sein, z. B. können Begrenzungen oder Hindernisse wie etwa Wände, Treppen usw. verlegt, hinzugefügt oder entfernt worden sein, seit eine Karte zuletzt aktualisiert wurde. Darüber hinaus können Objekte wie Geräte, Möbel usw. hinzugefügt, entfernt oder verlegt worden sein. Das Betreiben eines Roboters auf Grundlage von derartigen veränderten, unvollständigen und/oder ungenauen Daten, um zu einem geeigneten Standort und oder einer geeigneten Pose zu navigieren, um Daten über ein Objekt und/oder Kartendaten zu erhalten, birgt Schwierigkeiten.
  • KURZDARSTELLUNG
  • Ein System beinhaltet einen Computer, der einen Prozessor und einen Speicher beinhaltet, auf dem von dem Prozessor ausführbare Anweisungen zum Zerlegen einer gespeicherten Karte eines Bereichs in eine Vielzahl von polygonalen Unterbereichen gespeichert sind. Die Anweisungen beinhalten Anweisungen zum Erzeugen einer Menge von Zielstandorten in den polygonalen Unterbereichen gemäß einem Leaky-Ball-Algorithmus. Die Anweisungen beinhalten Anweisungen zum Betätigen eines Roboters, damit er sich zu einem ersten der Zielstandorte der Menge bewegt. Die Anweisungen beinhalten Anweisungen zum Betätigen eines Sensors, damit er Daten an dem ersten der Zielstandorte erhebt.
  • Die Anweisungen können ferner Anweisungen zum Zerlegen der gespeicherten Karte des Bereichs in die Vielzahl von polygonalen Unterbereichen auf Grundlage von Standorten von Objekten, die auf der gespeicherten Karte angegeben sind, beinhalten.
  • Jeder der Zielstandorte kann einen Datenerhebungsbereich definieren, und die Anweisungen können ferner Anweisungen zum Ermitteln eines ersten Datenerhebungsbereichs eines der Zielstandorte beinhalten, der sich mit einem zweiten Datenerhebungsbereich eines anderen der Zielstandorte überschneidet.
  • Die Anweisungen können ferner Anweisungen zum Entfernen des den ersten Datenerhebungsbereich definierenden Zielstandorts aus der Menge beinhalten, bevor der Roboter betätigt wird, damit er sich zu dem ersten der Zielstandorte bewegt.
  • Die Anweisungen können ferner Anweisungen zum Ermitteln einer Menge von navigierbaren Wegen auf Grundlage der gespeicherten Karte und zum Betätigen des Roboters, damit er sich zu dem ersten der Zielstandorte entlang eines oder mehrerer der navigierbaren Wege bewegt, beinhalten.
  • Die Anweisungen können ferner Anweisungen zum Betätigen des Sensors, damit er Daten erhebt, während der Roboter betätigt wird, damit er sich entlang eines oder mehrerer der navigierbaren Wege bewegt, beinhalten.
  • Die gespeicherte Karte kann Barrieren beinhalten, und die Anweisungen können ferner Anweisungen zum Ermitteln der Menge von navigierbaren Wegen auf Grundlage der in der Karte beinhalteten Barrieren beinhalten.
  • Die Anweisungen können ferner Anweisungen zum Auswählen einer Teilmenge navigierbarer Wege aus der Menge von navigierbaren Wegen beinhalten, wobei die Teilmenge von Wegen die Zielstandorte verbindet.
  • Die Anweisungen können ferner Anweisungen zum Auswählen der Teilmenge von navigierbaren Wegen zum Minimieren einer Entfernung entlang der navigierbaren Wege, die die Zielstandorte verbinden, beinhalten.
  • Ein System beinhaltet einen Computer, der einen Prozessor und einen Speicher beinhaltet, auf dem von dem Prozessor ausführbare Anweisungen zum Ermitteln einer Menge von navigierbaren Wegen auf Grundlage einer gespeicherten Karte eines Bereichs gespeichert sind. Die Anweisungen beinhalten Anweisungen zum Betätigen eines Roboters, damit er sich entlang der navigierbaren Wege bewegt. Die Anweisungen beinhalten Anweisungen zum Betätigen eines von dem Roboter getragenen Sensors, damit er Daten erhebt, während der Roboter betätigt wird, damit er sich entlang eines oder mehrerer der navigierbaren Wege bewegt. Die Anweisungen beinhalten Anweisungen zum Ermitteln eines Objekts, von dem in einem digitalen Modell des Bereichs, das auf einem entfernten Server gespeichert ist, angegeben ist, dass es sich auf einem der navigierbaren Wege befindet. Die Anweisungen beinhalten Anweisungen zum Aktualisieren des Objekts in dem digitalen Modell auf Grundlage der erhobenen Daten.
  • Die navigierbaren Wege können Datenerhebungsbereiche definieren, und die Anweisungen können ferner Anweisungen zum Auswählen einer Teilmenge von navigierbaren Wegen aus der Menge der navigierbaren Wege auf Grundlage der Datenerhebungsbereiche beinhalten.
  • Die Anweisungen können ferner Anweisungen zum Auswählen der Teilmenge der navigierbaren Wege, derart dass die Datenerhebungsbereiche sich mit dem Bereich der gespeicherten Karte überschneiden und eine von dem Roboter zurückgelegte Entfernung minimiert wird, beinhalten.
  • Ein Verfahren beinhaltet das Zerlegen einer gespeicherten Karte eines Bereichs in eine Vielzahl von polygonalen Unterbereichen. Das Verfahren beinhaltet das Erzeugen einer Menge von Zielstandorten in den polygonalen Unterbereichen gemäß einem Leaky-Ball-Algorithmus. Das Verfahren beinhaltet das Betätigen eines Roboters, damit er sich zu einem ersten der Zielstandorte der Menge bewegt. Das Verfahren beinhaltet das Betätigen eines Sensors, damit er Daten an dem ersten der Zielstandorte erhebt.
  • Das Verfahren kann das Zerlegen der gespeicherten Karte des Bereichs in die Vielzahl von polygonalen Unterbereichen auf Grundlage von Standorten von Objekten, die auf der gespeicherten Karte angegeben sind, beinhalten.
  • Jeder der Zielstandorte kann einen Datenerhebungsbereich definieren, und das Verfahren kann das Ermitteln eines ersten Datenerhebungsbereichs eines der Zielstandorte, der sich mit einem zweiten Datenerhebungsbereich eines anderen der Zielstandorte überschneidet, beinhalten.
  • Das Verfahren kann das Entfernen des den ersten Datenerhebungsbereich definierenden Zielstandorts aus der Menge, bevor der Roboter betätigt wird, damit er sich zu dem ersten der Zielstandorte bewegt, beinhalten.
  • Das Verfahren kann das Ermitteln einer Menge von navigierbaren Wegen auf Grundlage der gespeicherten Karte beinhalten und das Verfahren kann das Betätigen des Roboters, damit er sich zu dem ersten der Zielstandorte entlang eines oder mehrerer der navigierbaren Wege bewegt, beinhalten.
  • Das Verfahren kann das Betätigen des Sensors, damit er Daten erhebt, während der Roboter betätigt wird, damit er sich entlang eines oder mehrerer der navigierbaren Wege bewegt, beinhalten.
  • Die gespeicherte Karte kann Barrieren beinhalten, und das Verfahren kann das Ermitteln der Menge von navigierbaren Wegen auf Grundlage der in der Karte beinhalteten Barrieren beinhalten.
  • Das Verfahren kann das Auswählen einer Teilmenge von navigierbaren Wegen aus der Menge von navigierbaren Wegen beinhalten, wobei die Teilmenge von Wegen die Zielstandorte verbindet.
  • Figurenliste
    • 1 ist ein Blockdiagramm von Komponenten eines Systems zum Betreiben eines Roboters in einem Bereich.
    • 2 ist eine perspektivische Ansicht eines beispielhaften Roboters des Systems aus 1.
    • 3 ist eine beispielhafte Karte eines definierten Bereichs.
    • 4 ist eine beispielhafte Zerlegung des Bereichs in Unterbereiche.
    • 5 ist eine Veranschaulichung beispielhafter Zielstandorte in zwei Unterbereichen einschließlich eines redundanten Zielstandorts.
    • 6 ist eine Veranschaulichung der beispielhaften Zielstandorte in den Unterbereichen ohne den redundanten Zielstandort.
    • 7 ist eine beispielhafte Karte eines definierten Bereichs des Bereichs.
    • 8 ist eine Veranschaulichung des navigierbaren Weges der Karte.
    • 9 ist eine Veranschaulichung einer Teilmenge der navigierbaren Wege.
    • 10 ist eine Veranschaulichung eines Ablaufdiagramms für einen Prozess zum Steuern des Systems.
    • 11 ist eine Veranschaulichung eines Ablaufdiagramms, das einen Teilprozess des Prozesses aus 10 detailliert beschreibt.
  • DETAILLIERTE BESCHREIBUNG
  • Unter Bezugnahme auf die 1 und 2, wobei gleiche Bezugszeichen gleiche Teile in den verschiedenen Ansichten angeben, beinhaltet ein System 20 zum Aufzeichnen von Veränderungen einer Gestaltung eines Bereichs 50 einen Computer 22, der einen Prozessor und einen Speicher beinhaltet, auf dem von dem Prozessor ausführbare Anweisungen zum Zerlegen einer gespeicherten Karte 54 des Bereichs 50 in eine Vielzahl von polygonalen Unterbereichen 56 (in den 4-6 gezeigt) gespeichert sind. Die Anweisungen beinhalten Anweisungen zum Erzeugen einer Menge von Zielstandorten 52 in den polygonalen Unterbereichen 56 gemäß einem Leaky-Ball-Algorithmus. Die Anweisungen beinhalten Anweisungen zum Betätigen eines Roboters 30, damit er sich zu einem ersten der Zielstandorte 52 der Menge bewegt. Die Anweisungen beinhalten Anweisungen zum Betätigen eines Sensors 32, damit er Daten an dem ersten der Zielstandorte 52 erhebt.
  • Die in den 3-4 und 7-9 gezeigte Karte 54 gibt eine Gestaltung eines definierten Bereichs 50 an. Die Gestaltung ist eine Angabe von Begrenzungen des Bereichs 50 sowie von physikalischen Merkmalen, die den Bereich 50 definieren, wie etwa Wänden, Barrieren, Stufen, Rampen usw., d. h. eine Gestaltung gibt typischerweise zusätzlich zu den Begrenzungen des Bereichs 50 ferner Standorte 52 und Ausrichtungen von Objekten und andere physikalische Merkmale des Bereichs 50 an. Der definierte Bereich 50 kann ein Bereich wie etwa ein Produktionsgebäude, ein Montagegebäude, ein Lagergebäude, ein Bürogebäude usw. sein. Die Karte 54 kann Daten beinhalten, die Barrieren 58 angeben, d. h. Objekte oder andere physikalische Merkmale (wie etwa Wände, Treppen, Rampen, Geräte usw.), die die Bewegung innerhalb des Bereichs 50 behindern. Anders ausgedrückt schränken die angegebenen Barrieren 58 die Bewegung von einer Seite der Barriere 58 zu der anderen ein, z. B. kann der Roboter 30 nicht durch eine Wand navigieren. Die Daten können Koordinaten der Barrieren 58, X-Y-Koordinaten bezogen auf angegebene X-Y-Achsen mit einem angegebenen Ursprung angeben. Die X-Y-Koordinaten können sich auf ein Positionierungssystem (wie etwa GPS), auf eine bestimmte Barriere (wie etwa eine tragende Stützwand oder Stütze in dem Bereich 50), auf Kanten oder einen Mittelpunkt des Bereichs 50 oder auf (ein) beliebige(s) andere(s) geeignete(s) Datenelement oder Daten zum Definieren von Standorten von Barrieren 58 auf der Karte 54 beziehen. Die Daten der Karte 54 können auf Blaupausen und anderen technischen Dokumenten des definierten Bereichs 50, einem Aufmaß des definierten Bereichs 50, einem zuvor gespeicherten digitalen Modell des definierten Bereichs 50 oder anderen Informationen basieren, die zum Angeben der Gestaltung des definierten Bereichs 50 geeignet sind.
  • Ein digitales Modell ist eine Menge von elektronischen Daten, d. h. die in einem Computerspeicher gespeichert werden können, die Objekte und andere physikalische Merkmale beschreiben. Ein digitales Modell eines Bereichs 50 beinhaltet Daten, die eine Gestaltung des definierten Bereichs 50 angeben. Das digitale Modell kann Daten beinhalten, die Koordinaten (z. B. X-Y-Koordinaten, wie für die Karte 54 beschrieben) von Barrieren 58 und anderen Objekten in dem definierten Bereich 50 angeben. Beispielsweise können die Objekte Wände, Türöffnungen, Räume, Korridore, Maschinen, Schreibtische, Arbeitsplatztrennwände, Lagerbereiche, Warenbestands-, Montage- und Packmaterialtransfersysteme usw. beinhalten. Das digitale Modell kann Daten beinhalten, die Formen der Objekte angeben. Die Formen können dreidimensional (3-D) sein, z. B. können die Daten Höhen, Breiten und Tiefen von Flächen der Objekte angeben. Das digitale Modell kann Daten beinhalten, die Ausrichtungen der Objekte angeben. Die Ausrichtungen der Objekte sind Drehausrichtungen der Objekte, z. B. Blickrichtungen angegebener Flächen der Objekte bezogen auf X-Y-Achsen. Das digitale Modell kann Daten einer computergestützten Entwicklung (Computer Aided Design - CAD) und/oder Netzdaten beinhalten. CAD-Daten sind Daten, die von einem CAD-Computerprogramm verwendet werden, um die Gestaltung des definierten Bereichs 50 und den Standort, die Form und Ausrichtung von Objekten in dem definierten Bereich 50 anzugeben. Beispiele für CAD-Computerprogramme beinhalten AutoCAD von Autodesk und MPDS4 von CAD Schroder. Netzdaten sind Daten, die eine Sammlung von Scheitelpunkten, Kanten und Flächen angeben, die eine Form eines Objekts definieren. Die Flächen können Dreiecke, Vierecke oder andere konvexe Polygone sein.
  • Der Zielstandort 52 ist ein Standort, der Koordinaten angibt, von dem der Sensor 32 Informationen erheben und Daten erzeugen kann, die ein oder mehrere Objekte in dem Bereich 50 angeben. Der Zielstandort 52 kann von dem Servercomputer 22 wie nachstehend beschrieben bestimmt werden.
  • Der Roboter 30 kann autonom durch den Bereich 50 navigieren und über die Sensoren 32 Daten zum Aktualisieren des digitalen Modells erheben. Autonome Navigation ist die Navigation des Roboters 30, z. B. damit er sich ohne menschliche Eingaben zu einem angegebenen Standort 52 und/oder entlang eines angegeben Weges 60 bewegt. Der Roboter 30 beinhaltet eine Basis 34, die andere Komponenten trägt, wie etwa die Sensoren 32 (z. B. über eine Datenerhebungsbaugruppe 36), Navigationssensoren 38, einen Robotercomputer 40 und ein Antriebssystem 42. Die Basis 34 kann aus Metall, Kunststoff oder einem beliebigen geeigneten Material mit ausreichender Festigkeit zum Tragen der Komponenten sein, einschließlich einer Kombination aus verschiedenen Materialien.
  • Das Antriebssystem 42 wandelt gespeicherte Energie in Bewegung des Roboters 30 um. Das vorgeschlagene System 20 beinhaltet eine Energiespeichervorrichtung, wie etwa eine Batterie oder einen Kondensator. Das Antriebssystem 42 beinhaltet einen oder mehrere Elektromotoren, z. B. Elektromotoren, die elektrische Energie in mechanische Energie, d. h. Drehmoment, umwandeln. Das Antriebssystem 42 beinhaltet Räder, die mit dem Elektromotor (den Elektromotoren) wirkverbunden sind, derart dass das Drehmoment von dem Elektromotor (den Elektromotoren) auf die Räder übertragen wird. Verschiedene Räder können mit verschiedenen Elektromotoren wirkverbunden sein, z. B. derart, dass die Elektromotoren bewirken können, dass sich die Räder in entgegengesetzte Richtungen drehen, um eine Richtung des Roboters 30 zu ändern. Das vorgeschlagene System 20 kann den Roboter 30 als Reaktion auf einen Befehl von dem Robotercomputer 40 bewegen.
  • Der Roboter 30 kann ein Lenksystem 44 beinhalten, das einen Lenkwinkel von einem oder mehreren Rädern des Roboters 30 steuert. Das Lenksystem 44 beinhaltet einen Servomotor und ein Lenkgestänge oder eine andere geeignete Struktur zum Steuern des Lenkwinkels der Räder als Reaktion auf einen Befehl von dem Robotercomputer 40.
  • Die Navigationssensoren 38 stellen Daten bereit, die einen Standort und/oder eine Nähe des Roboters 30, z. B. bezogen auf die X-Y-Koordinaten der Karte 54, andere Koordinatensysteme (wie etwa GPS, wenn die Koordinaten der Karte 54 auf einem lokalen System basieren), und/oder erfasste physische Objekte angeben. Die Navigationssensoren 38 können Global-Positioning-System(GPS)-Sensoren; Beschleunigungsmesser wie etwa Sensoren piezoelektrischer oder mikroelektromechanischer Systeme (MEMS-Sensoren); Kreisel wie etwa Wendekreisel, Laserkreisel oder Faserkreisel; inertiale Messeinheiten (Inertial Measurement Unit - IMU); Magnetometer; Radarsensoren; Abtastlaserentfernungsmesser, Light-Detection-and-Ranging-Vorrichtungen (LIDAR-Vorrichtungen); Sonarsensoren; und/oder Bildverarbeitungssensoren 32, wie etwa Kameras, sein.
  • Der Roboter 30 beinhaltet die Datenerhebungsbaugruppe 36 zum Erheben von Daten, die Parameter von erfassten Objekten angeben. Die Datenerhebungsbaugruppe 36 beinhaltet einen oder mehrere Sensoren 32. Die Datenerhebungsbaugruppe wird von dem Roboter 30 getragen, ist z. B. an der Basis 34 des Roboters 30 befestigt. Die Datenerhebungsbaugruppe kann ein oder mehrere Beine beinhalten, die die Sensoren 32, z. B. um einen bestimmten Wert über der Basis 34 tragen. Ein unteres Ende der Beine kann an der Basis 34 befestigt sein, und die Sensoren 32 können an einem oberen Ende der Beine, das dem unteren Ende gegenüberliegt, getragen werden.
  • Die Datenerhebungsbaugruppe 36 kann einen Kardanring 46 zum Steuern einer Blickrichtung D eines oder mehrerer der Sensoren 32 (wie etwa einer Kamera 32b) beinhalten, d. h. einer Richtung, in der der Sensor 32 Informationen sammelt und aus der er Daten erzeugt. Der Kardanring 46 kann die Sensoren 32 schwenken, um einen Azimutwinkel A1 und/oder einen Höhenwinkel A2 der Blickrichtung D des Sensors 32 bezogen auf die Basis 34 (in 2 gezeigt) zu verändern. Zum Beispiel kann ein erster Abschnitt des Kardanrings 46 an (dem) den Bein(en) befestigt sein und ein zweiter Abschnitt des Kardanrings 46 kann an den Sensoren 32 befestigt sein. Der erste Abschnitt und der zweite Abschnitt können über ein oder mehrere Scharniere, Rotatorplatten, Stifte, Buchsen, Lager und/oder eine andere geeignete Struktur zum Bereitstellen einer relativen Drehung miteinander verbunden sein. Der Kardanring 46 kann einen oder mehrere Elektromotoren, Zahnräder, Servomotoren oder eine andere geeignete Struktur zum Steuern des Azimutwinkels A1 und/oder des Höhenwinkels A2 der Blickrichtung D des Sensors 32 z. B. als Reaktion auf einen Befehl von dem Robotercomputer 40 beinhalten.
  • Die Sensoren 32 erfassen die Außenwelt, indem sie Informationen erheben und Daten erzeugen, die Parameter von Objekten angeben, die von den Sensoren 32 erfasst werden. Beispielsweise können die Daten einen Standort eines erfassten Objekts bezogen auf den Sensor 32 und/oder Roboter 30 angeben, z. B. eine Entfernung von dem Sensor 32 zu dem Objekt, einen Azimutwinkel A1 des Objekts bezogen auf eine angegebene Richtung (z. B. vorwärts), einen Höhenwinkel A2 des Objekts bezogen auf eine angegebene Richtung (z. B. parallel zu der Basis 34 und/oder bezogen auf den Höhenwinkel A2 der Blickrichtung D des Sensors 32). Als weiteres Beispiel können die Daten eine Form des erfassten Objekts angeben. Die Form kann dreidimensional (3-D) sein, z. B. können die Daten eine Höhe, Breite und Tiefe einer Fläche des erfassten Objekts angeben.
  • Einer oder mehrere der Sensoren 32 können ein Light-Detection-and-Ranging-Lidar-Sensor (LIDAR-Sensor) 32a sein, der Entfernungen zu erfassten Objekten misst, indem das Objekt mit gepulstem Laserlicht ausgeleuchtet wird und die Rücklaufzeiten reflektierter Impulse gemessen werden. Unterschiede bei den Rücklaufzeiten und Wellenlängen der reflektierten Impulse können dann verwendet werden, um Daten zu erzeugen, die eine 3D-Form des Objekts angeben.
  • Einer oder mehrere der Sensoren 32 können eine Kamera 32b sein, die Daten erzeugt, die ein von der Kamera 32b erfasstes Bild angeben. Die Daten können eine Vielzahl von Pixeln angeben, die in einem Raster angeordnet sind, das z. B. ein X-Y-Koordinatensystem definiert. Die Daten können eine Farbe, Helligkeit, einen Farbton usw. für jedes Pixel angeben. Ein Kamerapaar kann verwendet werden, um z. B. eine Zweikamerabildanalyse (auch als stereoskopische Bildanalyse bekannt) zu ermöglichen, um die Nähe eines Objekts in den Bildern zu bestimmen, d. h. eine Entfernung von dem Kamerapaar zu dem Objekt.
  • Der Robotercomputer 40 ist eine mikroprozessorbasierte Steuerung, die über Schaltungen, Chips oder andere elektronische Komponenten umgesetzt ist. Beispielsweise beinhaltet der Robotercomputer 40 einen Prozessor, einen Speicher usw. Der Speicher des Robotercomputers 40 kann einen Speicher zum Speichern von durch den Prozessor ausführbaren Anweisungen sowie zum elektronischen Speichern von Daten und/oder Datenbanken beinhalten. Der Robotercomputer 40 kann in elektronischer Kommunikation mit den Navigationssensoren 38, dem Antriebssystem 42, dem Servercomputer 22 und dem Datenerheber stehen, z. B. über drahtgebundene und/oder drahtlose Mechanismen wie etwa ein Kommunikationsnetz 48 oder einen anderen geeigneten Mechanismus zum Übertragen und Empfangen von Daten und Befehlen. Wenngleich in 1 zur übersichtlicheren Veranschaulichung ein Robotercomputer 40 gezeigt ist, versteht es sich, dass der Robotercomputer 40 eine oder mehrere Rechenvorrichtungen beinhalten könnte und verschiedene in dieser Schrift beschriebene Vorgänge durch eine oder mehrere Rechenvorrichtungen ausgeführt werden könnten.
  • Der Robotercomputer 40 ist dazu programmiert, d. h. in dem Speicher sind durch den Prozessor ausführbare Anweisungen gespeichert, den Roboter 30 zu navigieren. Der Computer kann den Roboter 30 navigieren, indem er Befehle an das vorgeschlagene System 20 überträgt. Die Befehle können die Betätigung eines oder mehrerer der Elektromotoren angeben, z. B. können die Befehle eine Drehrichtung, eine Größe des Drehmoments und/oder eine Drehzahl für jeden Elektromotor angeben. Beispielsweise können die Befehle die Betätigung der Elektromotoren angeben, derart dass sich die Räder des Roboters 30 in dieselbe Richtung und mit derselben Drehzahl drehen, wodurch bewirkt wird, dass sich der Roboter 30 in einer geraden Linie bewegt. Als weiteres Beispiel können die Befehle die Betätigung der Elektromotoren angeben, derart dass sich Räder auf einer rechten Seite und einer linken Seite des Roboters 30 in entgegengesetzte Richtungen oder mit unterschiedlichen Drehzahlen drehen, wodurch bewirkt wird, dass sich der Roboter 30 dreht beziehungsweise sich entlang eines gekrümmten Wegs bewegt. Der Computer kann den Roboter 30 navigieren, indem er Befehle an das Lenksystem 44 überträgt, z. B. indem er einen Lenkwinkel für die Räder des Roboters 30 angibt.
  • Der Robotercomputer 40 navigiert den Roboter 30 auf Grundlage von Daten von den Navigationssensoren 38. Beispielsweise können Daten von den Navigationssensoren 38 eine Nähe des Roboters 30 zu einem erfassten Objekt angeben, und der Robotercomputer 40 kann das Antriebssystem 42 und das Lenksystem 44 auf Grundlage derartiger Daten anweisen, z. B. einen Kontakt mit dem erfassten Objekt zu vermeiden, eine angegebene Entfernung von dem erfassten Objekt einzuhalten usw. Als weiteres Beispiel können Daten von den Navigationssensoren 38 einen Standort 52 des Roboters 30 bezogen auf Koordinaten, z. B. GPS-Koordinaten, Koordinaten bezogen auf ein bestimmtes erfasstes Objekt (z. B. eine Stütze oder ein anderes feststehendes Objekt des Bereichs 50) und Koordinaten, die auf der Triangulation einer Vielzahl von erfassten Signalen basieren (wie etwa HF-Signalen, die von Sendern des Bereichs 50 übertragen werden) angeben. Der Robotercomputer 40 kann Befehle zum Bewegen des Roboters 30 von dem angegebenen Standort 52 des Roboters 30 zu einem Zielstandort 52 und/oder entlang eines angegebenen navigierbaren Weges 60 an das Antriebssystem 42 und das Lenksystem 44 übertragen.
  • Der Robotercomputer 40 kann den Roboter 30 als Reaktion auf einen Befehl von dem Servercomputer 22 bewegen. Der Befehl von dem Servercomputer 22 kann einen oder mehrere Zielstandorte 52 und navigierbare Wege 60 angeben. Der Robotercomputer 40 kann den Roboter 30 zu den Zielstandorten 52 und entlang der navigierbaren Wege 60 navigieren.
  • Der Robotercomputer 40 kann dazu programmiert sein, einen oder mehrere der Sensoren 32 zu bewegen, um die Blickrichtung D der Sensoren 32 zu steuern. Beispielsweise kann der Robotercomputer 40 einen Befehl an den Kardanring 46 übertragen, z. B. an Elektromotoren, Servomotoren usw. des Kardanrings 46. Der Befehl kann einen Azimutwinkel A1 und/oder einen Höhenwinkel A2 angeben. Der Robotercomputer 40 kann die Sensoren 32 als Reaktion auf einen Befehl von dem Servercomputer 22 bewegen, z. B. die Betätigung des Roboters 30, damit er eine angegebene Pose einnimmt (nachstehend beschrieben), anweisen.
  • Der Robotercomputer 40 kann dazu programmiert sein, die Sensoren 32 zu betätigen. Beispielsweise kann der Robotercomputer 40 einen Befehl an die Sensoren 32 übertragen, der die Sensoren 32 anweist, Informationen zu erheben und Daten über Objekte zu erzeugen, die von den Sensoren 32 erfasst werden.
  • Der Robotercomputer 40 kann dazu programmiert sein, Daten über von den Sensoren 32 erfasste Objekte an den Servercomputer 22 zu übertragen, z.B. über das Kommunikationsnetz 48. Daten über ein Objekt (Objektdaten) sind Daten, die ein oder mehrere physikalische Attribute des Objekts angeben. Beispielsweise können Objektdaten eine Höhe, eine Breite, eine Form, eine Oberflächenkrümmung, einen Standort und/oder eine Ausrichtung (z. B. bezogen auf X-Y-Koordinaten und -Achsen) usw. des Objekts angeben.
  • Kommunikationsnetz
  • Das Kommunikationsnetz 48 (manchmal als Weitverkehrsnetz bezeichnet, weil es die Kommunikation zwischen Vorrichtungen beinhalten kann, die geografisch voneinander entfernt sind, d. h. nicht in demselben Gebäude) beinhaltet Hardware, um die Kommunikation zwischen Komponenten des Systems 20, z. B. dem Servercomputer 22 und dem Robotercomputer 40 zu ermöglichen. Das Kommunikationsnetz 48 kann die drahtgebundene oder drahtlose Kommunikation zwischen den Komponenten gemäß einer Reihe von Kommunikationsprotokollen und -mechanismen ermöglichen. Zum Beispiel kann es sich bei dem Kommunikationsnetz 48 um eine beliebige gewünschte Kombination aus drahtgebundenen (z. B. Kabel und Glasfaser) und/oder drahtlosen (z. B. Mobilfunk, drahtlos, Satellit, Mikrowelle und Funkfrequenz) Kommunikationsmechanismen und jeder beliebigen gewünschten Netzwerktopologie (oder -topologien, wenn mehrere Kommunikationsmechanismen verwendet werden) handeln. Beispielhafte Kommunikationsnetze beinhalten drahtgebundene und drahtlose Kommunikationsnetze unter Verwendung von Bluetooth, IEEE 802.11, lokale Netzwerke (Local Area Networks - LAN) und/oder Weitbereichsnetzwerke (Wide Area Networks - WAN), Ethernet, WiFi, Local Interconnect Network (LIN) und das Internet zum Bereitstellen von Datenkommunikationsdiensten.
  • Servercomputer
  • Bei dem Servercomputer 22 handelt es sich um eine Rechenvorrichtung, die Hardware beinhaltet, z. B. Schaltungen, Chips, Antennen usw., die dazu programmiert ist, Informationen an andere Rechenvorrichtungen zu übertragen, von diesen zu empfangen und zu verarbeiten.
  • Der Servercomputer 22 ist von dem Roboter 30 und der Datenerhebungsbaugruppe 36 entfernt. Bei dem Servercomputer 22 kann es sich um einen oder mehrere Computer handeln, die jeweils im Allgemeinen zumindest einen Prozessor und zumindest einen Speicher, die wie in dieser Schrift beschrieben umgesetzt sind, beinhalten, wobei in dem Speicher durch den Prozessor ausführbare Anweisungen gespeichert sind, einschließlich Anweisungen zum Ausführen verschiedener Prozesse, die in dieser Schrift beschrieben sind. Der Servercomputer 22 steht in Kommunikation mit dem Robotercomputer 40, z. B. über das Kommunikationsnetz 48. Der Servercomputer 22 speichert die Karte 54 des definierten Bereichs 50, z. B. in dem Speicher des Servercomputers 22. Der Servercomputer 22 speichert das digitale Modell.
  • Der Servercomputer 22 ist dazu programmiert, eine Gruppe von Zielstandorten 52 in dem definierten Bereich 50 zu bestimmen. Die Zielstandorte 52 werden gemäß Koordinaten, z. B. X-Y-Koordinaten, auf der Karte 54 des definierten Bereichs 50 angegeben. Die X-Y-Koordinaten geben Positionen entlang der X-Y-Achsen eines kartesischen Koordinatensystems 62 an. Ein Ursprung des kartesischen Koordinatensystems 62 kann an einem Schnittpunkt der X-, Y-Achsen des kartesischen Koordinatensystems 62 liegen. Der Ursprung kann in einem Mittelpunkt des Bereichs 50 der Karte 54, einer Ecke des Bereichs 50 der Karte 54 usw. liegen.
  • Jeder der Zielstandorte 52 kann einen Datenerhebungsbereich 64 definieren (in den 5 und 6 gezeigt). Der Datenerhebungsbereich 64 ist ein Bereich, aus dem Daten durch einen Sensor 32 der Datenerhebungsbaugruppe 36 erhalten werden können, wenn sich der Roboter 30 an dem Standort 52 befindet. Der Datenerhebungsbereich 64 kann durch Fähigkeiten der Sensoren 32 definiert sein. Beispielsweise kann der Datenerhebungsbereich 64 kreisförmig sein und einen Radius aufweisen, der durch einen Erfassungsbereich eines 360-Grad-LIDAR-Sensors 32a definiert ist. Als weiteres Beispiel kann der Datenerhebungsbereich 64 eine dreieckige Form aufweisen, z. B. eine Länge aufweisen, die durch einen Erfassungsbereich einer Kamera 32b definiert ist, und einem Scheitelwinkel, der durch ein Sichtfeld der Kamera 32b definiert ist.
  • Der Servercomputer 22 kann dazu programmiert sein, die Zielstandorte 52 zu bestimmen, indem zuerst die gespeicherte Karte 54 des definierten Bereichs 50 in eine Vielzahl von polygonalen Unterbereichen 56 zerlegt wird (in den 4-6 gezeigt). Jeder Unterbereich 56 umschließt einen Abschnitt des definierten Bereichs 50. Die Unterbereiche 56 können sich überschneiden. Die Unterbereiche 56 stellen kleinere, weniger komplexe Formen bereit (im Vergleich zu der Gesamtheit des definierten Bereichs 50). Der Computer 22 kann die gespeicherte Karte 54 des Bereichs 50 in die Vielzahl von polygonalen Unterbereichen 56 auf Grundlage von Standorten 52 von Objekten, wie etwa Barrieren 58, die in der gespeicherten Karte 54 angegeben sind, zerlegen. Beispielsweise kann der Servercomputer 22 die Barrieren 58 auf der gespeicherten Karte 54 als Anfangsbegrenzungen eines komplexen Polygons und/oder einer anderen Form, einschließlich Bereichen, die nicht vollständig umschlossen sind, verwenden. Der Servercomputer 22 kann die Anfangsbegrenzungen unter Verwendung bekannter polygonaler Zerlegungsalgorithmen in eine Vielzahl von umschlossenen konvexen Polygonen zerlegen. Einer oder mehrere der Unterbereiche 56 können sich überschneiden. Der Servercomputer 22 kann andere Zerlegungstechnikenverwenden , wie etwa Boustrophedon Cellular Decomposition, Trapezoidal Decomposition und Convex Polygonal Decomposition.
  • Als Nächstes kann der Servercomputer 22 die Menge von Zielstandorten 52 in den polygonalen Unterbereichen 56 gemäß einem Leaky-Ball-Algorithmus erzeugen. Der Leaky-Ball-Algorithmus bestimmt die Zielstandorte 52 durch Positionieren von Kreisen in jedem der Unterbereiche 56. Die Kreise sind derart positioniert, dass sie alles (oder im Wesentlichen alles) von jedem der Unterbereiche 56 abdecken. Die Kreise überschneiden sich. Die Kreise sind so positioniert, dass eine minimale Anzahl von Kreisen erforderlich ist, um die Unterbereiche 56 abzudecken. Das Abdecken der Unterbereiche 56 mit der minimalen Anzahl von Kreisen ist ein geometrisches Mengenüberdeckungsproblem. Überdeckungsprobleme, wie etwa das geometrische Mengenüberdeckungsproblem, können unter Verwendung eines linearen Programms und eines Approximationsalgorithmus wie etwa eines Greedy-Algorithmus gelöst werden. Der Servercomputer 22 kann andere Techniken verwenden, um die Menge von Zielstandorten 52 in den polygonalen Unterbereichen 56 zu erzeugen, wie etwa unter Verwendung eines Voronoi-Diagramms.
  • Ein Durchmesser der Kreise, die mit dem Leaky-Ball-Algorithmus verwendet werden, basiert auf Datenerfassungsfähigkeiten des Sensors 32. Anders ausgedrückt können die Kreise dieselbe Größe und Form haben wie der Datenerhebungsbereich 64, der durch den Zielstandort 52 definiert ist. Beispielsweise kann der Kreisradius gleich einem Erfassungsbereich eines 360-Grad-LIDAR-Sensors 32a sein. Die Kreise können weniger als alles jedes Unterbereichs 56 abdecken, z. B. im Wesentlichen alles. Zum Beispiel können die Karte 54 und/oder das digitale Modell Daten beinhalten, die Abschnitte des definierten Bereichs 50 angeben, die nicht abgedeckt werden müssen und/oder die Gestaltung der Karte 54 kann eine vollständige Abdeckung verhindern.
  • Das Bestimmen der Zielstandorte 52 jedes Unterbereichs 56 verringert die Rechenleistung, die zum Lösen des Leaky-Ball-Algorithmus erforderlich ist, z. B. indem kleinere, einfachere, abzudeckende polygonale Bereiche bereitgestellt werden. Sobald Zielstandorte 52 für jeden Unterbereich 56 erzeugt sind, können sie kombiniert werden, um die Menge von Zielstandorten 52 in dem definierten Bereich 50 bereitzustellen.
  • Der Servercomputer 22 kann dazu programmiert sein, redundante Zielstandorte 52a aus der Menge von Zielstandorten 52 zu entfernen (vergleiche 5 und 6). Ein redundanter Zielstandort 52a ist ein Zielstandort 52, der einen Datenerhebungsbereich 64a definiert, der sich vollständig mit Datenerhebungsbereichen 64 überschneidet, die von anderen Zielstandorten 52 definiert sind. Redundante Zielstandorte 52a können durch das Kombinieren der Zielstandorte 52 jedes der Unterbereiche 56 auftreten, z. B. wenn sich die Unterbereiche 56 überschneiden. Der Computer 22 kann redundante Zielstandorte 52a eliminieren, indem er einen Kreis aus den Ergebnissen des Leaky-Ball-Algorithmus ermittelt, der einen Bereich umschließt, der vollständig von Bereichen abgedeckt ist, die von anderen Kreisen aus den Ergebnissen des Leaky-Ball-Algorithmus umschlossen sind. Anders ausgedrückt kann der Servercomputer 22 einen ersten Datenerhebungsbereich 64a von einem der Zielstandorte 52 ermitteln, der sich mit zweiten Datenerhebungsbereichen 64 von anderen Zielstandorten 52 überschneidet. Der Servercomputer 22 kann den Zielstandort 52, der den ersten Datenerhebungsbereich 64 definiert, von dem ermittelt wurde, dass er sich überschneidet, aus der Menge von Zielstandorten 52, die im Speicher des Servers gespeichert sind, entfernen.
  • Der Servercomputer 22 kann die Menge von Zielstandorten 52 auf Grundlage von Eingaben, die von einem Benutzer empfangen werden, bestimmen. Beispielsweise kann ein Benutzer dem Servercomputer 22 Eingaben bereitstellen, die einen oder mehrere Zielstandorte 52 angeben. Der Servercomputer 22 kann die Menge von Zielstandorten 52 auf Grundlage der Karte 54 und/oder des digitalen Modells bestimmen. Zum Beispiel können die Karte 54 und/oder das digitale Modell Daten beinhalten, die einen oder mehrere Zielstandorte 52 angeben, z. B. Zielstandorte 52, die zuvor mit dem Leaky-Ball-Algorithmus bestimmt wurden, über Eingaben eines Benutzers bereitgestellt wurden, usw. Der Servercomputer 22 kann andere Techniken zum Bestimmen der Menge von Zielstandorten 52 verwenden.
  • Der Servercomputer 22 kann dazu programmiert sein, eine Pose für den Roboter 30 zu bestimmen. Eine Pose ist eine angegebene Ausrichtung (typischerweise Nicken, Rollen und Gieren) des Roboters 30 und von Komponenten des Roboters 30, um den Sensor 32 so auszurichten, dass er in eine bestimmte Richtung zeigt. Beispielsweise kann eine Pose eine Ausrichtung der Basis 34 des Roboters 30 angeben, z. B. bezogen auf das kartesische Koordinatensystem 62 der Karte 54, und kann einen Azimutwinkel A1 und/oder Höhenwinkel A2 für den Kardanring 46 angeben. Die Pose ermöglicht es dem Roboter 30, den Sensor 32 derart auszurichten, dass er einem bestimmten Objekt zugewandt ist. Die Pose gibt eine Ausrichtung des Sensors 32 in Bezug auf die Basis 34 des Roboters 30, die Koordinaten der Karte 54 und/oder die Koordinaten des digitalen Modells an. Die Pose kann Daten beinhalten, die einen Azimutwinkel A1 und einen Höhenwinkel A2 angeben. Der Azimutwinkel A1 und der Höhenwinkel A2 können einem der Zielstandorte 52 zugeordnet sein, z.B. derart, dass der Sensor 32 dem angegeben Azimutwinkel A1 und dem Höhenwinkel A2 zugewandt sein kann, während sich der Roboter 30 an dem zugeordneten Zielstandort 52 befindet. Der Servercomputer 22 kann die Pose bestimmen, indem er die Koordinaten des Zielstandorts 52 mit den Koordinaten des Objekts vergleicht, z. B. um den Azimutwinkel A1 eines Vektors zu bestimmen, der sich von den X-Y-Koordinaten des Zielstandorts 52 zu den X-Y-Koordinaten des Objekts erstreckt. Der Servercomputer 22 kann den Höhenwinkel A2 auf Grundlage einer Höhe des durch das digitale Modell angegebenen Objekts und einer Höhe des Sensors 32, die z. B. durch Daten angegeben wird, die im Speicher des Servercomputers 22 gespeichert sind, und auf Grundlage einer Entfernung zwischen dem Zielstandort 52 und dem Objekt gemäß den X-Y-Koordinaten bestimmen. Der Servercomputer 22 kann die Pose auf Grundlage von Eingaben eines Benutzers bestimmen, die z. B. einen Azimutwinkel A1, einen Höhenwinkel A2 und einen zugeordneten Zielstandort 52 angeben. Der Servercomputer 22 kann andere Techniken verwenden, um die Posezu bestimmen, wie etwa das Zusammenführen von Daten inertialer Messeinheiten (IMU) mit einem LIDAR-Datenabgleich unter Verwendung von Kalman-Filtern (z. B. Partikel-, Unscented und/oder Erweiterte Kalman-Filter).
  • Der Servercomputer 22 ist dazu programmiert, eine Menge von navigierbaren Wegen 60 auf Grundlage der gespeicherten Karte 54 (in den 8 und 9 gezeigt) zu ermitteln. Die navigierbaren Wege 60 sind Abschnitte des definierten Bereichs 50, die von dem Roboter 30 navigiert werden können. Der Computer kann die Menge von navigierbaren Wegen 60 auf Grundlage der in der Karte 54 beinhalteten Barrieren 58 ermitteln. Beispielsweise kann der Computer Entfernungen zwischen Barrieren 58 ermitteln, die in den Daten der Karte 54 angegeben sind. Die Entfernungen können mit physikalischen Attributen des Roboters 30 verglichen werden, z. B. einer Breite des Roboters 30 und/oder einem Wenderadius des Roboters 30. Der Servercomputer 22 kann Abschnitte des definierten Bereichs 50 als navigierbare Wege 60 ermitteln, wenn die Entfernung zwischen den Barrieren 58 ausreichend ist, damit der Roboter 30 zwischen diesen navigieren kann. Wenn der Abstand zwischen den Barrieren 58 zum Beispiel größer als die Breite des Roboters 30 ist. Als weiteres Beispiel kann/können die gespeicherte Karte 54 und/oder das digitale Modell Daten beinhalten, die Abschnitte des definierten Bereichs 50 als navigierbare Wege 60 angeben. Der Servercomputer 22 kann andere Techniken verwenden, um die Menge von navigierbaren Wegen 60 zu ermitteln.
  • Die navigierbaren Wege 60 können Datenerhebungsbereiche definieren, d. h. einen Bereich, von dem Informationen von dem Sensor 32 der Datenerhebungsbaugruppe 36 empfangen werden können, wenn der Roboter 30 entlang des navigierbaren Wegs 60 navigiert. Die Datenerhebungsbereiche 64 können auf einer Blickrichtung D des Sensors 32, Fähigkeiten der Sensoren 32, z. B. Erfassungsbereichen, Sichtfeldern usw. der Sensoren 32 basieren, wie vorstehend für die Datenerhebungsbereiche 64 der Zielstandorte 52 beschrieben.
  • Der Servercomputer 22 kann dazu programmiert sein, eine Teilmenge 66 von navigierbaren Wegen 60 aus der Menge von navigierbaren Wegen 60 auszuwählen. Man vergleiche beispielsweise die in 8 gezeigten navigierbaren Wege 60 mit der Teilmenge 66 der in 9 gezeigten navigierbaren Wege 60. Die Teilmenge 66 von Wegen 60 kann die Zielstandorte 52 verbinden, z. B. derart, dass der Roboter 30 entlang der Teilmenge 66 von Wegen 60 navigieren kann, um zu jedem Zielstandort 52 zu navigieren. Der Computer kann die Teilmenge 66 von navigierbaren Wegen 60 auswählen, um eine Entfernung entlang der navigierbaren Wege 60, die die Zielstandorte 52 verbinden, zu minimieren. Beispielsweise kann der Servercomputer 22 einen Algorithmus verwenden, der dazu ausgestaltet ist, ein Problem des Handlungsreisenden zu lösen, wie er z. B. in bekannten Routenplanungssoftwareanwendungen verwendet wird.
  • Der Servercomputer 22 kann eine Teilmenge 66 von navigierbaren Wegen 60 aus der Menge der navigierbaren Wege 60 auf Grundlage der Datenerhebungsbereiche 64 auswählen. Der Servercomputer 22 kann die Teilmenge 66 der navigierbaren Wege 60 derart auswählen, dass die Datenerhebungsbereiche sich mit dem Bereich 50 der gespeicherten Karte 54 überschneiden und eine von dem Roboter 30 zurückgelegte Entfernung minimiert wird. Beispielsweise kann der Servercomputer 22 Datenerhebungsbereiche ermitteln, die durch einen oder mehrere navigierbare Wege 60 definiert sind, die sich mit Datenerhebungsbereichen eines oder mehrerer anderer navigierbarer Wege 60 überschneiden. Anders ausgedrückt kann der Servercomputer 22 redundante Datenerhebungsbereiche 64 ermitteln. Der Servercomputer 22 kann für die Teilmenge 66 der navigierbaren Wege 60 einen der navigierbaren Wege 60 auswählen, die die sich überschneidenden Datenerhebungsbereiche definieren, und darauf verzichten, den anderen auszuwählen. Zusätzlich oder alternativ kann der Servercomputer 22 die navigierbaren Wege 60, die die sich überschneidenden Datenerhebungsbereiche definieren, zu einem einzigen navigierbaren Weg zusammenfassen, z. B. entlang eines medianen Wegs zwischen den navigierbaren Wegen 60, die die sich überschneidenden Datenerhebungsbereiche 64 definieren. Der Servercomputer 22 kann die Teilmenge 66 von navigierbaren Wegen 60 z. B. mit einem Algorithmus, der dazu ausgestaltet ist, ein Problem des Handlungsreisenden zu lösen, wie er z. B. in bekannten Routenplanungssoftwareanwendungen verwendet wird, verbinden.
  • Der Servercomputer 22 kann die navigierbaren Wege 60 und/oder eine Teilmenge 66 von navigierbaren Wegen 60 mit Daten definieren, die eine Vielzahl von Wegpunkten, Vektoren und/oder Kurven, z. B. bezogen auf X-Y-Koordinaten der Karte 54, angeben. Die navigierbaren Wege 60 und/oder eine Teilmenge 66 von navigierbaren Wegen 60 kann/können durch ein Polynom dritten Grades (manchmal als „Wegpolynom“ bezeichnet) dargestellt werden, wie etwa Y= aX + bX2 + cX3. Y und X stehen für X-Y-Koordinaten, z. B. bezogen auf die Karte 54.Die Parameter a, b und c eines solchen Polynoms können eine Wegkrümmung bestimmen.
  • Der Servercomputer 22 kann dazu programmiert sein, den Roboter 30 zu betätigen, damit er sich zu einem oder mehreren der Zielstandorte 52 bewegt. Beispielsweise kann der Servercomputer 22 einen Befehl an den Robotercomputer 40 übertragen, der die Menge von Zielstandorten 52 angibt. Der Servercomputer 22 kann den Roboter 30 betätigen, damit er sich entlang eines oder mehrerer der navigierbaren Wege 60 zu den Zielstandorten 52 bewegt. Beispielsweise kann der Servercomputer 22 einen Befehl an den Robotercomputer 40 übertragen, der eine Vielzahl von Wegpunkten, Vektoren, und/oder Kurven, z. B. bezogen auf X-Y-Koordinaten der Karte 54 und/oder das digitale Modell, angibt.
  • Der Servercomputer 22 kann dazu programmiert sein, den Roboter 30 zu betätigen, damit er eine Pose einnimmt, die angegeben ist, um den Sensor 32 in Bezug auf das Objekt auszurichten. Beispielsweise kann der Servercomputer 22 einen Befehl an den Robotercomputer 40 übertragen, der einen Azimuthwinkel A1 und einen Höhenwinkel A2 angibt. Der Befehl kann eine Zuordnung zwischen einem bestimmten der Zielstandorte 52 und dem Azimutwinkel A1 und dem Höhenwinkel A2 angeben, z. B. derart, dass der Sensor 32 betätigt wird, damit er dem angegebenen Azimutwinkel A1 und dem Höhenwinkel A2 zugewandt ist, sobald der Roboter 30 betätigt wird, damit er sich zu dem zugeordneten Zielstandort 52 bewegt.
  • Der Servercomputer 22 kann dazu programmiert sein, den Sensor 32 an dem Roboter 30 zu betätigen, damit er Daten an den Zielstandorten 52 erhebt. Beispielsweise kann der Servercomputer 22 einen Befehl an den Robotercomputer 40 übertragen, der die Betätigung des Sensors 32 angibt und einen oder mehrere der Zielstandorte 52 für eine solche Betätigung angibt.
  • Der Servercomputer 22 kann dazu programmiert sein, den Sensor 32 zu betätigen, damit er Daten erhebt, während der Roboter 30 betätigt wird, damit er sich entlang eines oder mehrerer der navigierbaren Wege 60 bewegt. Beispielsweise kann der Servercomputer 22 einen Befehl an den Robotercomputer 40 übertragen, der die Betätigung des Sensors 32 angibt und einen oder mehrere der navigierbaren Wege 60 für eine solche Betätigung angibt.
  • Der Servercomputer 22 kann dazu programmiert sein, ein Objekt zu ermitteln, von dem in dem digitalen Modell angegeben ist, dass es sich an den Koordinaten für den Zielstandort 52 befindet. Der Servercomputer 22 kann ein Objekt in Daten ermitteln, die aus Informationen erzeugt wurden, die von dem Sensor 32 aus dem Datenerhebungsbereich 64 erhoben werden, während sich der Roboter 30 an dem Zielstandort 52 befindet.
  • Der Servercomputer 22 kann das in dem digitalen Modell angegebene Objekt ermitteln, indem er die an einem der Zielstandorte 52 erhobenen Daten mit den Daten des digitalen Modells vergleicht, die die dreidimensionale Form des Objekts angeben. Beispielsweise kann der Servercomputer 22 einen oder mehrere Parameter, z. B. Länge, Breite, Krümmung usw., der/die durch die Daten angegeben wird/werden, die mit dem LIDAR-Sensor 32a erzeugt werden, während sich der Roboter 30 an einem der Zielstandorte 52 befindet, mit einem oder mehreren Parametern, die durch die Daten des Objekts an dem Zielstandort 52 in dem digitalen Modell angegeben werden, vergleichen. Der Servercomputer 22 kann das Objekt in dem digitalen Modell als das Objekt in den Daten von dem LIDAR-Sensor 32a ermitteln, wenn die in solchen Daten angegebenen Parameter übereinstimmen oder innerhalb eines Schwellenwerts der Übereinstimmung liegen, z. B. 95 %.
  • Der Servercomputer 22 kann das in dem digitalen Modell angegebene Objekt auf Grundlage einer Bilderkennungsanalyse von Daten ermitteln, die ein oder mehrere Bilder angeben, die von der Kamera 32b an einem der Zielstandorte 52 aufgenommen wurden. Die Bilder können aufgenommen werden, während sich der Roboter 30 in einer angegebenen Pose befindet. Beispielsweise können die Objekte in den Bilddaten unter Verwendung bekannter Techniken und Verfahren erkannt werden, und Parameter solcher Objekte können mit den Parametern verglichen werden, die durch die Daten des Objekts in dem digitalen Modell angegeben sind.
  • Der Servercomputer 22 kann dazu programmiert sein, ein Objekt zu ermitteln, von dem in dem digitalen Modell des Bereichs 50 angegeben ist, dass es sich entlang eines der navigierbaren Wege 60 befindet. Der Servercomputer 22 kann das Objekt auf Grundlage von verglichenen Parametern, Bilderkennung usw. ermitteln, wie für das Objekt an dem Zielstandort 52 beschrieben. Der Servercomputer 22 kann andere Techniken verwenden, um das Objekt an dem Zielstandort 52 und/oder entlang des navigierbaren Wegs 60 zu ermitteln.
  • Die Daten, die die ermittelten Objekte in den Daten des Sensors 32 angeben, stimmen möglicherweise nicht genau mit den Daten überein, die solche Objekte in dem digitalen Modell angeben. Beispielsweise können ein oder mehrere Objekte seit der Erzeugung des digitalen Modells ihren Standort und/oder ihre Ausrichtung verändert haben. Anders ausgedrückt ist das digitale Modell möglicherweise nicht mehr aktuell. Die Ermittlung der Objekte in den Daten von dem Sensor 32 und in dem digitalen Modell ermöglicht es, Unterschiede, z. B. in Bezug auf Standort, Ausrichtung usw., zwischen solchen Daten zu korrigieren, z. B. derart, dass die digitalen Daten mit den Daten von dem Sensor 32 übereinstimmen.
  • Der Servercomputer 22 ist dazu programmiert, das Objekt in dem digitalen Modell auf Grundlage der erhobenen Daten zu aktualisieren. Beispielsweise kann der Servercomputer 22 die Daten des digitalen Modells, die das Objekt angeben, ändern, so dass sie die Daten, die dieses Objekt in den vom Sensor 32 erzeugten Daten angeben, replizieren.
  • Der Servercomputer 22 kann dazu programmiert sein, einen oder mehrere zusätzliche Zielstandorte 52 auf Grundlage der mit dem Sensor 32 z. B. an einem der Zielstandorte 52 und/oder entlang eines der navigierbaren Wege 60 erhobenen Daten zu ermitteln. Der zusätzliche Standort 52 kann außerhalb des definierten Bereichs 50 liegen, d. h.eines Bereichs, der in dem digitalen Modell nicht angegeben ist. Die von dem Sensor 32 erhobenen Daten können einen Korridor oder einen anderen Bereich 50 angeben, der nicht in der Karte 54 und/oder dem digitalen Modell beinhaltet ist und von dem Roboter 30 navigiert werden kann. Der Servercomputer 22 kann einen Zielstandort 52 in einem solchen Bereich ermitteln.
  • Prozesse
  • 10 ist ein Prozessablaufdiagramm, das einen beispielhaften Prozess 1000 zum Betreiben des Systems 20 veranschaulicht. Der Prozess 1000 beginnt in einem Block 1005, in dem der Servercomputer 22 Zielstandorte 52 zum Erheben von Daten und/oder navigierbaren Wegen 60 bestimmt, z. B. wie in dieser Schrift beschrieben. Der Servercomputer 22 kann die Zielstandorte 52 und/oder navigierbaren Wege 60 gemäß einem Prozess 1100 bestimmen (nachstehend beschrieben).
  • Bei einem Block 1010 betätigt der Servercomputer 22 den Roboter 30, damit er zu einem der Zielstandorte 52 und/oder entlang der navigierbaren Wege 60, die in dem Block 1005 bestimmt wurden, navigiert. Beispielsweise kann der Servercomputer 22 den Roboter 30 betätigen, indem er einen Befehl an den Roboter 30 überträgt, der die Zielstandorte 52 und/oder navigierbare Wege 60 angibt, wie z. B. in dieser Schrift beschrieben.
  • Bei einem Block 1015 betätigt der Servercomputer 22 den Roboter 30, damit er eine angegebene Pose einnimmt, z.B. um den Sensor 32 in Bezug auf ein Objekt an dem Zielstandort 52 auszurichten. Der Servercomputer 22 kann die angegebene Pose wie in dieser Schrift beschrieben bestimmen. Der Servercomputer 22 kann den Roboter 30 betätigen, damit er die Pose einnimmt, indem er einen Befehl an den Roboter 30 überträgt, der z. B. einen Azimutwinkel A1, einen Höhenwinkel A2 und einen zugehörigen Zielstandort 52 (bezogen auf das kartesische Koordinatensystem 62 der Karte 54) angibt.
  • Bei einem Block 1020 betätigt der Servercomputer 22 einen oder mehrere der Sensoren 32 des Roboters 30, damit er/sie Daten erhebt/erheben. Der Servercomputer 22 kann die Sensoren 32 des Roboters 30 betätigen, indem er einen Befehl an den Roboter 30 übermittelt. Der Servercomputer 22 betätigt einen oder mehrere der Sensoren 32, damit er/sie Daten erhebt/erheben, wenn sich der Roboter 30 an dem Zielstandort 52 befindet. Der Servercomputer 22 kann einen oder mehrere der Sensoren 32 betätigen, damit er/sie Daten erhebt/erheben, wenn der Roboter 30 entlang des navigierbaren Wegs 60 navigiert. Der Servercomputer 22 kann einen oder mehrere der Sensoren 32 betätigen, damit er/sie Daten erhebt/erheben, wenn sich der Roboter 30 in der angegebenen Pose befindet.
  • Bei einem Block 1025 ermittelt der Servercomputer 22 ein in dem digitalen Modell angegebenes Objekt und ermittelt ein solches Objekt, das in Daten angegeben ist, die in dem Block 1020 erhoben wurden. Der Servercomputer 22 kann ein solches Objekt wie in dieser Schrift beschrieben ermitteln.
  • Bei einem Block 1030 aktualisiert der Servercomputer 22 die Daten, die das Objekt in dem digitalen Modell angeben, damit sie mit den von den Sensoren 32 erhobenen Daten, die das Objekt angeben, übereinstimmen, z. B. wie in dieser Schrift beschrieben.
  • Bei einem Block 1035 ermittelt der Servercomputer 22 einen nächsten Zielstandort 52. Der Servercomputer 22 kann den nächsten Zielstandort 52 als außerhalb des definierten Bereichs 50 befindlich und auf Grundlage der in dem Block 1020 erhobenen Daten bestimmen, z. B. wie in dieser Schrift beschrieben. Alternativ kann der Servercomputer 22 den nächsten Zielstandort 52 auf Grundlage der zuvor bei dem Block 1005 bestimmten Zielstandorte 52 ermitteln. Nach dem Block 1035 kehrt der Prozess 1000 zu dem Block 1010 zurück und wiederholt den Prozess 1000, z. B. Navigieren und in Pose bringen des Roboters 30, und dann Erheben von Daten und Aktualisieren des digitalen Modells. Der Servercomputer 22 kann fortfahren, den Prozess 1000 zu wiederholen, bis Daten an allen ermittelbaren Zielstandorten 52 erhoben wurden.
  • 11 ist ein Prozessablaufdiagramm, das einen beispielhaften Prozess 1100 zum Bestimmen von Zielstandorten 52 und navigierbaren Wegen 60 veranschaulicht. Der Prozess 1100 beginnt in einem Block 1105, in dem der Servercomputer 22 eine gespeicherte Karte 54 eines Bereichs 50 in eine Vielzahl von polygonalen Unterbereichen 56 zerlegt, z. B. auf Grundlage von Daten, die Barrieren 58 angeben, und wie in dieser Schrift beschrieben.
  • Als Nächstes erzeugt der Servercomputer 22 bei einem Block 1110 Zielstandorte 52 in jedem der Unterbereiche 56. Der Servercomputer 22 erzeugt die Zielstandorte 52 in den Unterbereichen 56 gemäß einem Leaky-Ball-Algorithmus. Der Servercomputer 22 führt die erzeugten Zielstandorte 52 zu einer Menge von Zielstandorten 52 zusammen.
  • Als Nächstes ermittelt der Servercomputer 22 bei einem Block 1115 alle Zielstandorte 52a, die bei dem Block 1105 erzeugt wurden und einen Datenerhebungsbereich 64a aufweisen, der sich mit Datenerhebungsbereichen 64 überschneidet, die durch andere Zielstandorte 52 definiert sind. Anders ausgedrückt ermittelt der Servercomputer 22 redundante Zielstandorte 52a.
  • Als Nächstes entfernt der Servercomputer 22 bei einem Block 1120 die bei dem Block 1115 ermittelten Zielstandorte 52 aus der Menge von Zielstandorten 52, die in dem Block 1110 erzeugt wurde.
  • Bei einem Block 1125 ermittelt der Servercomputer 22 einen Menge von navigierbaren Wegen 60, z. B. auf Grundlage von Barrieren 58 und anderen physischen Objekten, die auf der Karte 54 angegeben sind und wie in dieser Schrift beschrieben.
  • Als Nächstes ermittelt der Servercomputer 22 bei einem Block 1130 Datenerhebungsbereiche der Menge von navigierbaren Wegen 60, die bei dem Block 1125 ermittelt wurde. Die Datenerhebungsbereiche sind durch Fähigkeiten der Sensoren 32 und wie in dieser Schrift beschrieben definiert.
  • Schließlich wählt der Servercomputer 22 bei einem Block 1135 eine Teilmenge 66 von navigierbaren Wegen 60 aus den bei dem Block 1125 ermittelten navigierbaren Wegen 60 aus. Der Servercomputer 22 kann die Teilmenge 66 auswählen, um eine Entfernung entlang der navigierbaren Wege 60, die die Zielstandorte 52 verbinden, derart auszuwählen, dass die Datenerhebungsbereiche sich mit dem Bereich 50 der gespeicherten Karte 54 überschneiden und eine von dem Roboter 30 zurückgelegte Entfernung minimiert wird usw. wie in dieser Schrift beschrieben.
  • Schlussfolgerung
  • Hinsichtlich der in dieser Schrift beschriebenen Prozesse 1000, 1100 versteht es sich, dass die Schritte solcher Prozesse 1000, 1100 zwar als gemäß einer bestimmten Reihenfolge erfolgend beschrieben worden sind, derartige Prozesse 1000, 1100 aber mit den beschriebenen Schritten in einer Reihenfolge durchgeführt werden könnten, die von der in dieser Schrift beschriebenen Reihenfolge abweicht. Es versteht sich ferner, dass bestimmte Schritte gleichzeitig durchgeführt, andere Schritte hinzugefügt oder bestimmte in dieser Schrift beschriebene Schritte weggelassen werden könnten. Anders ausgedrückt wird die Beschreibung des Prozesses 300 im vorliegenden Zusammenhang zu Zwecken der Veranschaulichung bestimmter Ausführungsformen bereitgestellt und sollte keinesfalls dahingehend ausgelegt werden, dass sie den offenbarten Gegenstand einschränken.
  • Rechenvorrichtungen, wie etwa der Computer des Roboters, der Computer der Datenerfassungsbaugruppe und der Servercomputer, beinhalten im Allgemeinen computerausführbare Anweisungen, wobei die Anweisungen durch eine oder mehrere Rechenvorrichtungen, wie etwa die vorangehend aufgeführten, ausgeführt werden können. Computerausführbare Anweisungen können von Computerprogrammen kompiliert oder interpretiert werden, die unter Verwendung einer Vielfalt an Programmiersprachen und/oder - techniken erstellt wurden, einschließlich unter anderem und entweder für sich oder in Kombination Java™, C, C++, Visual Basic, Java Script, Perl usw. Einige dieser Anwendungen können auf einer virtuellen Maschine wie etwa der Java Virtual Machine, der Dalvik Virtual Machine oder dergleichen kompiliert und ausgeführt werden. Im Allgemeinen empfängt ein Prozessor (z. B. ein Mikroprozessor) Anweisungen, z. B. von einem Speicher, einem computerlesbaren Medium usw., und führt diese Anweisungen aus, wodurch er einen oder mehrere Prozesse durchführt, darunter einen oder mehrere der in dieser Schrift beschriebenen Prozesse. Derartige Anweisungen und anderen Daten können unter Verwendung einer Vielfalt von computerlesbaren Medien gespeichert und übertragen werden.
  • Ein computerlesbares Medium (auch als vom Prozessor lesbares Medium bezeichnet) schließt ein beliebiges nichtflüchtiges (z. B. materielles) Medium ein, das an der Bereitstellung von Daten (z. B. Anweisungen) beteiligt ist, die von einem Computer (z. B. von einem Prozessor eines Computers) gelesen werden können. Ein solches Medium kann viele Formen annehmen, einschließlich unter anderem nichtflüchtiger Medien und flüchtiger Medien. Zu nichtflüchtigen Medien können zum Beispiel optische Platten oder Magnetplatten und andere dauerhafte Speicher gehören. Flüchtige Medien können zum Beispiel einen dynamischen Direktzugriffsspeicher (DRAM) beinhalten, der in der Regel einen Hauptspeicher darstellt. Derartige Anweisungen können durch ein oder mehrere Übertragungsmedien übertragen werden, einschließlich Koaxialkabeln, Kupferdraht und Glasfaser, einschließlich der Drähte, die einen an einen Prozessor eines Computers gekoppelten Systembus umfassen. Gängige Formen computerlesbarer Medien beinhalten zum Beispiel eine Diskette, eine Folienspeicherplatte, eine Festplatte, ein Magnetband, ein beliebiges anderes magnetisches Medium, eine CD-ROM, eine DVD, ein beliebiges anderes optisches Medium, Lochkarten, Lochstreifen, ein beliebiges anderes physisches Medium mit Lochmustern, einen RAM, einen PROM, einen EPROM, einen FLASH-EEPROM, einen beliebigen anderen Speicherchip oder eine beliebige andere Speicherkassette oder ein beliebiges anderes Medium, das durch einen Computer ausgelesen werden kann.
  • In einigen Beispielen können Systemelemente als computerlesbare Anweisungen (z. B. Software) auf einer oder mehreren Rechenvorrichtungen (z. B. Servern, PCs, Rechenmodulen usw.) umgesetzt sein, die auf zugehörigen computerlesbaren Speichermedien (z. B. Platten, Speichern usw.) gespeichert sind. Ein Computerprogrammprodukt kann derartige Anweisungen umfassen, die zum Ausführen der in dieser Schrift beschriebenen Funktionen auf computerlesbaren Medien gespeichert sind.
  • Die Offenbarung wurde auf veranschaulichende Weise beschrieben und es versteht sich, dass die verwendete Terminologie vielmehr der Beschreibung als der Einschränkung dienen soll.In Anbetracht der vorstehenden Lehren sind viele Modifikationen und Variationen der vorliegenden Offenbarung möglich und die Offenbarung kann anders als konkret beschrieben umgesetzt werden.
  • Gemäß der vorliegenden Erfindung wird ein System bereitgestellt, das einen Computer aufweist, der einen Prozessor und einen Speicher beinhaltet, auf dem durch den Prozessor ausführbare Anweisungen zu Folgendem gespeichert sind: Zerlegen einer gespeicherten Karte eines Bereichs in eine Vielzahl von polygonalen Unterbereichen; Erzeugen einer Menge von Zielstandorten in den polygonalen Unterbereichen gemäß einem Leaky-Ball-Algorithmus; Betätigen eines Roboters, damit er sich zu einem ersten der Zielstandorte der Menge bewegt; und Betätigen eines Sensors, damit er Daten an dem ersten der Zielstandorte erhebt.
  • Gemäß einer Ausführungsform beinhalten die Anweisungen ferner Anweisungen zum Zerlegen der gespeicherten Karte des Bereichs in die Vielzahl von polygonalen Unterbereichen auf Grundlage von Standorten von Objekten, die auf der gespeicherten Karte angegeben sind.
  • Gemäß einer Ausführungsform definiert jeder der Zielstandorte einen Datenerhebungsbereich, und wobei die Anweisungen ferner Anweisungen zum Ermitteln eines ersten Datenerhebungsbereichs eines der Zielstandorte, der sich mit einem zweiten Datenerhebungsbereich eines anderen der Zielstandorte überschneidet, beinhalten.
  • Gemäß einer Ausführungsform beinhalten die Anweisungen ferner Anweisungen zum Entfernen des den ersten Datenerhebungsbereich definierenden Zielstandorts aus der Menge, bevor der Roboter betätigt wird, damit er sich zu dem ersten der Zielstandorte bewegt.
  • Gemäß einer Ausführungsform beinhalten die Anweisungen ferner Anweisungen zum Ermitteln einer Menge von navigierbaren Wegen auf Grundlage der gespeicherten Karte und zum Betätigen des Roboters, damit er sich zu dem ersten der Zielstandorte entlang eines oder mehrerer der navigierbaren Wege bewegt.
  • Gemäß einer Ausführungsform beinhalten die Anweisungen ferner Anweisungen zum Betätigen des Sensors, damit er Daten erhebt, während der Roboter betätigt wird, damit er sich entlang eines oder mehrerer der navigierbaren Wege bewegt.
  • Gemäß einer Ausführungsform beinhaltet die gespeicherte Karte Barrieren und beinhalten die Anweisungen Anweisungen zum Ermitteln der Menge von navigierbaren Wegen auf Grundlage der in der Karte beinhalteten Barrieren.
  • Gemäß einer Ausführungsform beinhalten die Anweisungen Anweisungen zum Auswählen einer Teilmenge von navigierbaren Wegen aus der Menge von navigierbaren Wegen, wobei die Teilmenge von Wegen die Zielstandorte verbindet.
  • Gemäß einer Ausführungsform beinhalten die Anweisungen Anweisungen zum Auswählen der Teilmenge von navigierbaren Wegen zum Minimieren einer Entfernung entlang der navigierbaren Wege, die die Zielstandorte verbinden.
  • Gemäß der vorliegenden Erfindung wird ein System bereitgestellt, das einen Computer aufweist, der einen Prozessor und einen Speicher beinhaltet, auf dem durch den Prozessor ausführbare Anweisungen zu Folgendem gespeichert sind: Ermitteln einer Menge von navigierbaren Wegen auf Grundlage einer gespeicherten Karte eines Bereichs; Betätigen eines Roboters, damit er sich entlang der navigierbaren Wege bewegt; Betätigen eines von dem Roboter getragenen Sensors, damit er Daten erhebt, während der Roboter betätigt wird, damit er sich entlang eines oder mehrerer der navigierbaren Wege bewegt; Ermitteln eines Objekts, von dem in einem digitalen Modell des Bereichs, das auf einem entfernten Server gespeichert ist, angegeben ist, dass es sich auf einem der navigierbaren Wege befindet; und Aktualisieren des Objekts in dem digitalen Modell auf Grundlage der erhobenen Daten.
  • Gemäß einer Ausführungsform definieren die navigierbaren Wege Datenerhebungsbereiche, und wobei die Anweisungen ferner Anweisungen zum Auswählen einer Teilmenge von navigierbaren Wegen aus der Menge der navigierbaren Wege auf Grundlage der Datenerhebungsbereiche beinhalten.
  • Gemäß einer Ausführungsform beinhalten die Anweisungen Anweisungen zum Auswählen der Teilmenge der navigierbaren Wege, derart dass die Datenerhebungsbereiche sich mit dem Bereich der gespeicherten Karte überschneiden und eine von dem Roboter zurückgelegte Entfernung minimiert wird.
  • Gemäß der vorliegenden Erfindung beinhaltet ein Verfahren Folgendes: Zerlegen einer gespeicherten Karte eines Bereichs in eine Vielzahl von polygonalen Unterbereichen; Erzeugen einer Menge von Zielstandorten in den polygonalen Unterbereichen gemäß einem Leaky-Ball-Algorithmus; Betätigen eines Roboters, damit er sich zu einem ersten der Zielstandorte der Menge bewegt; und Betätigen eines Sensors, damit er Daten an dem ersten der Zielstandorte erhebt.
  • Gemäß einer Ausführungsform ist die Erfindung ferner gekennzeichnet durch das Zerlegen der gespeicherten Karte des Bereichs in die Vielzahl von polygonalen Unterbereichen auf Grundlage von Standorten von Objekten, die in der gespeicherten Karte angegeben sind.
  • Gemäß einer Ausführungsform definiert jeder der Zielstandorte einen Datenerhebungsbereich, und umfasst diese ferner das Ermitteln eines ersten Datenerhebungsbereichs eines der Zielstandorte, der sich mit einem zweiten Datenerhebungsbereich eines anderen der Zielstandorte überschneidet.
  • Gemäß einer Ausführungsform ist die Erfindung ferner gekennzeichnet durch das Entfernen des den ersten Datenerhebungsbereich definierenden Zielstandorts aus der Menge, bevor der Roboter betätigt wird, damit er sich zu dem ersten der Zielstandorte bewegt.
  • Gemäß einer Ausführungsform ist die Erfindung ferner gekennzeichnet durch das Ermitteln einer Menge von navigierbaren Wegen auf Grundlage der gespeicherten Karte und umfasst ferner das Betätigen des Roboters, damit er sich zu dem ersten der Zielstandorte entlang eines oder mehrerer der navigierbaren Wege bewegt.
  • Gemäß einer Ausführungsform ist die Erfindung ferner gekennzeichnet durch das Betätigen des Sensors zum Erheben von Daten, während der Roboter betätigt wird, damit er sich entlang eines oder mehrerer der navigierbaren Wege bewegt.
  • Gemäß einer Ausführungsform beinhaltet die gespeicherte Karte Barrieren und umfasst ferner das Ermitteln der Menge von navigierbaren Wegen auf Grundlage der in der Karte beinhalteten Barrieren.
  • Gemäß einer Ausführungsform ist die Erfindung ferner gekennzeichnet durch das Auswählen einer Teilmenge von navigierbaren Wegen aus der Menge von navigierbaren Wegen, wobei die Teilmenge von Wegen die Zielstandorte verbindet.

Claims (15)

  1. Verfahren, das Folgendes umfasst: Zerlegen einer gespeicherten Karte eines Bereichs in eine Vielzahl von polygonalen Unterbereichen; Erzeugen einer Menge von Zielstandorten in den polygonalen Unterbereichen gemäß einem Leaky-Ball-Algorithmus; Betätigen eines Roboters, damit er sich zu einem ersten der Zielstandorte der Menge bewegt; und Betätigen eines Sensors, damit er Daten an dem ersten der Zielstandorte erhebt.
  2. Verfahren nach Anspruch 1, das ferner das Zerlegen der gespeicherten Karte des Bereichs in die Vielzahl von polygonalen Unterbereichen auf Grundlage von Standorten von Objekten, die in der gespeicherten Karte angegeben sind, beinhaltet.
  3. Verfahren nach Anspruch 1, wobei jeder der Zielstandorte einen Datenerhebungsbereich definiert, und das ferner das Ermitteln eines ersten Datenerhebungsbereichs eines der Zielstandorte, der sich mit einem zweiten Datenerhebungsbereich eines anderen der Zielstandorte überschneidet, umfasst.
  4. Verfahren nach Anspruch 3, das ferner das Entfernen des den ersten Datenerhebungsbereich definierenden Zielstandorts aus der Menge umfasst, bevor der Roboter betätigt wird, damit er sich zu dem ersten der Zielstandorte bewegt.
  5. Verfahren nach Anspruch 1, das ferner das Ermitteln einer Menge von navigierbaren Wegen auf Grundlage der gespeicherten Karte und das Betätigen des Roboters, damit er sich zu dem ersten der Zielstandorte entlang eines oder mehrerer der navigierbaren Wege bewegt, umfasst.
  6. Verfahren nach Anspruch 5, das ferner das Betätigen des Sensors, damit er Daten erhebt, während der Roboter betätigt wird, damit er sich entlang eines oder mehrerer der navigierbaren Wege bewegt, umfasst.
  7. Verfahren nach Anspruch 5, wobei die gespeicherte Karte Barrieren beinhaltet, und die Anweisungen Anweisungen zum Ermitteln der Menge von navigierbaren Wegen auf Grundlage der in der Karte beinhalteten Barrieren beinhalten.
  8. Verfahren nach Anspruch 5, das ferner das Auswählen einer Teilmenge von navigierbaren Wegen aus der Menge von navigierbaren Wegen umfasst, wobei die Teilmenge von Wegen die Zielstandorte verbindet.
  9. Verfahren nach Anspruch 8, das ferner das Auswählen der Teilmenge von navigierbaren Wegen, um eine Entfernung entlang der navigierbaren Wege, die die Zielstandorte verbinden, zu minimieren, umfasst.
  10. Computer, der einen Prozessor und einen Speicher aufweist, auf dem durch den Prozessor ausführbare Anweisungen zum Durchführen des Verfahrens nach einem der Ansprüche 1-9 gespeichert sind.
  11. Computerlesbares Medium, auf dem durch einen Prozessor ausführbare Anweisungen zum Durchführen des Verfahrens nach einem der Ansprüche 1-9 gespeichert sind.
  12. Verfahren, das Folgendes umfasst: Ermitteln einer Menge von navigierbaren Wegen auf Grundlage einer gespeicherten Karte eines Bereichs; Betätigen eines Roboters, damit er sich entlang der navigierbaren Wege bewegt; Betätigen eines von dem Roboter getragenen Sensors, damit er Daten erhebt, während der Roboter betätigt wird, damit er sich entlang eines oder mehrerer der navigierbaren Wege bewegt; Ermitteln eines Objekts, von dem in einem digitalen Modell des Bereichs, das auf einem entfernten Server gespeichert ist, angegeben ist, dass es sich auf einem der navigierbaren Wege befindet; und Aktualisieren des Objekts in dem digitalen Modell auf Grundlage der erhobenen Daten.
  13. Verfahren nach Anspruch 12, wobei die navigierbaren Wege Datenerhebungsbereiche definieren, und das ferner das Auswählen einer Teilmenge von navigierbaren Wegen aus der Menge der navigierbaren Wege auf Grundlage der Datenerhebungsbereiche umfasst.
  14. Verfahren nach Anspruch 12, das ferner das Auswählen der Teilmenge der navigierbaren Wege, derart dass die Datenerhebungsbereiche sich mit dem Bereich der gespeicherten Karte überschneiden und eine von dem Roboter zurückgelegte Entfernung minimiert wird, umfasst.
  15. Computer, der einen Prozessor und einen Speicher aufweist, auf dem durch den Prozessor ausführbare Anweisungen zum Ausführen des Verfahrens nach einem der Ansprüche 12-14 gespeichert sind.
DE102020115513.1A 2019-06-12 2020-06-10 Korrektur von digitalen modellen Pending DE102020115513A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/439,151 US11231712B2 (en) 2019-06-12 2019-06-12 Digital model rectification with sensing robot
US16/439151 2019-06-12

Publications (1)

Publication Number Publication Date
DE102020115513A1 true DE102020115513A1 (de) 2020-12-17

Family

ID=73546952

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020115513.1A Pending DE102020115513A1 (de) 2019-06-12 2020-06-10 Korrektur von digitalen modellen

Country Status (3)

Country Link
US (1) US11231712B2 (de)
CN (1) CN112082542A (de)
DE (1) DE102020115513A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11231712B2 (en) 2019-06-12 2022-01-25 Ford Global Technologies, Llc Digital model rectification with sensing robot
US11220006B2 (en) * 2019-06-24 2022-01-11 Ford Global Technologies, Llc Digital model rectification

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5202661A (en) * 1991-04-18 1993-04-13 The United States Of America As Represented By The Secretary Of The Navy Method and system for fusing data from fixed and mobile security sensors
JP2000506294A (ja) 1996-03-06 2000-05-23 ゲーエムデー―フォルシュングスチェントルム インフォマーションズテクニク ゲーエムベーハー センサ及び地図に基づいて導管ネットワーク内を進路案内するための自律的可動ロボットシステム
US8896660B2 (en) * 2003-05-30 2014-11-25 Alcatel Lucent Method and apparatus for computing error-bounded position and orientation of panoramic cameras in real-world environments
US20060235610A1 (en) * 2005-04-14 2006-10-19 Honeywell International Inc. Map-based trajectory generation
EP2496995B1 (de) 2009-11-06 2019-04-24 iRobot Corporation Verfahren und system zur kompletten abdeckung einer fläche durch einen autonomen roboter
US20110153338A1 (en) 2009-12-17 2011-06-23 Noel Wayne Anderson System and method for deploying portable landmarks
KR102068216B1 (ko) 2011-01-28 2020-01-20 인터치 테크놀로지스 인코퍼레이티드 이동형 원격현전 로봇과의 인터페이싱
US9323250B2 (en) 2011-01-28 2016-04-26 Intouch Technologies, Inc. Time-dependent navigation of telepresence robots
KR101203897B1 (ko) * 2011-02-25 2012-11-23 동국대학교 산학협력단 이동체(mobile body)를 위한 셀?기반 경로 계획 장치 및 방법
DE102012109004A1 (de) 2012-09-24 2014-03-27 RobArt GmbH Roboter und Verfahren zur autonomen Inspektion oder Bearbeitung von Bodenflächen
KR102071575B1 (ko) 2013-04-23 2020-01-30 삼성전자 주식회사 이동로봇, 사용자단말장치 및 그들의 제어방법
CN107110651B (zh) 2014-09-08 2021-04-30 应美盛股份有限公司 用于使用地图信息辅助的增强型便携式导航的方法和装置
US20180364045A1 (en) 2015-01-06 2018-12-20 Discovery Robotics Robotic platform with mapping facility
US10478973B2 (en) * 2016-02-09 2019-11-19 Cobalt Robotics Inc. Mobile robot security enforcement
US20180284746A1 (en) 2016-05-09 2018-10-04 StrongForce IoT Portfolio 2016, LLC Methods and systems for data collection optimization in an industrial internet of things environment
US20180299899A1 (en) 2017-04-13 2018-10-18 Neato Robotics, Inc. Localized collection of ambient data
US10697779B2 (en) 2017-04-21 2020-06-30 X Development Llc Landmark placement for localization
US9939814B1 (en) 2017-05-01 2018-04-10 Savioke, Inc. Computer system and method for automated mapping by robots
US10330480B1 (en) * 2017-09-07 2019-06-25 Amazon Technologies, Inc. Deployable sensors
US10807236B2 (en) 2018-04-30 2020-10-20 Beijing Jingdong Shangke Information Technology Co., Ltd. System and method for multimodal mapping and localization
US11243540B2 (en) * 2018-05-17 2022-02-08 University Of Connecticut System and method for complete coverage of unknown environments
US11231712B2 (en) 2019-06-12 2022-01-25 Ford Global Technologies, Llc Digital model rectification with sensing robot

Also Published As

Publication number Publication date
US11231712B2 (en) 2022-01-25
US20200393833A1 (en) 2020-12-17
CN112082542A (zh) 2020-12-15

Similar Documents

Publication Publication Date Title
EP3659001B1 (de) Magnetometer für die roboternavigation
DE60011674T2 (de) Autonomes mehrplattform robotersystem
DE102015203016B4 (de) Verfahren und Vorrichtung zur optischen Selbstlokalisation eines Kraftfahrzeugs in einem Umfeld
DE102015006014A1 (de) Bodenbearbeitungsgerät und Verfahren zu dessen Navigation sowie Schwarm von Bodenbearbeitungsgeräten und Verfahren zu deren gemeinsamer Navigation
DE102019127058A1 (de) Fahrzeugwegplanung
EP2916106B1 (de) Verfahren zur Positions- und Lagebestimmung mittels virtueller Referenzbilder
WO2019043171A1 (de) Bewegungsplanung für autonome mobile roboter
EP3008534B1 (de) Verfahren zum modellieren eines umfelds eines fahrzeugs
DE102019119162A1 (de) Posenschätzung
EP3824247A1 (de) Verfahren und system zum bestimmen einer position eines fahrzeugs
DE102019126542A1 (de) Lokalisierung einer stationären kamera
DE102020102915A1 (de) Hybride metrisch-topologische kamerabasierte positionsbestimmung
DE102018100987A1 (de) Objektverfolgung durch unüberwachtes lernen
DE102020115513A1 (de) Korrektur von digitalen modellen
DE112020000590T5 (de) Karte und verfahren zum erstellen einer karte
DE102020122752A1 (de) Sensorlokalisierung anhand externer quelldaten
Kim et al. Autonomous mobile robot localization and mapping for unknown construction environments
DE102018130597A1 (de) 3d-kartierung mit hoher bildschärfe
DE102020100022A1 (de) Positionsbestimmungstechnik
DE102022108505A1 (de) Objekterfassung durch ein neuronales netz
DE102020116431A1 (de) Korrektur von digitalen modellen
EP3575912A1 (de) Mähroboter
EP2749982B1 (de) Bezugsmodellerzeugung und Aktualisierung
EP3534297B1 (de) Verfahren zur positionsermittlung eines beweglichen objekts, verfahren zur wegplanung für ein bewegliches objekt, vorrichtung hierfür, datenträger
EP4095639B1 (de) Navigieren eines fahrzeugs mit spurführung

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: BONSMANN - BONSMANN - FRANK PATENTANWAELTE, DE