-
HINTERGRUND DER ERFINDUNG
-
Die vorliegende Offenbarung bezieht sich im Allgemeinen auf Roboterreiniger und insbesondere auf das Erstellen von Grundrissen.
-
Reinigungsroboter enthalten häufig Kameras für verschiedene Zwecke. Die Kamera kann Bilder eines zu reinigenden Bereichs aufnehmen und Objekte in diesem Bereich anzeigen. Gesammelte Bilddaten können zur Erstellung einer Karte unter Verwendung eines SLAM-Algorithmus (Simultaneous Location and Mapping) verwendet werden. Bei Bilddaten kann ein VSLAM-Lokalisierungsverfahren (Visuelles SLAM unter Verwendung von Bildsensoren) verwendet werden. Eine Kamera kann Bilder von einer Decke aufnehmen und diese zur Navigation verwenden. Die Karte kann durch Zusammenfügen von Bildern erstellt werden. Die iRobot Anmeldung mit der Veröffentlichungs-Nr. 20170052033 beschreibt eine solche visuelle SLAM-Methode. Das Carnegie Mellon Patent mit der Nr. 5.999.866 beschreibt eine Positionsbestimmung aus einzigartigen Aspekten der Bilder, wie z.B. Teppichmustern. Die veröffentlichte iRobot Anmeldung mit der Nr. 20170203446 zeigt einen Grundriss und Kamerabilderfassung von Objekten und gibt einen Hinweis auf den Grundriss, wo sich Objekte befinden, mit einem Link zum Bild. Das iRobot Patent mit der Nr. 9.014.848 beschreibt die Korrektur von Verzerrungen in einer Ziel-Layoutkarte verglichen mit einer vom Roboter generierten Karte.
-
Reinigungsroboterkarten und -grundrisse sind für die Verwendung durch den Roboter optimiert, um die Position zu bestimmen und um andere Maßnahmen zu ergreifen, jedoch nicht für die Verwendung durch Menschen. Es wäre wünschenswert, eine für die menschliche Benutzerinteraktion optimierte Karte zur Steuerung eines Reinigungsroboters zu haben.
-
KURZZUSAMMENFASSUNG DER ERFINDUNG
-
In einer Ausführungsform erzeugt ein Roboter (z.B. ein Reinigungsroboter) eine (planare) Karte aus der Vogelperspektive, indem er die Ansicht einer Roboterkamera transformiert und Bilder, die nach Position markiert sind, zusammenfügt. Die planare Karte kann dann auf einer Benutzeroberfläche als ein Grundriss dargestellt werden, der die Position von Objekten (z.B. Teppichen) anzeigt. Eine Kamera ist im Reinigungsroboter ausreichend hoch im Gehäuse des Reinigungsroboters montiert, so dass eine geneigte Sicht nach unten auf einen Boden möglich ist. Das Sichtfeld der Kamera wird als Bild aufgenommen, und ein Teil oder Segment dieses Bildes wird zugeschnitten oder maskiert. Das zugeschnittene Segment wird aus der Kameraperspektive in eine planare Ansicht (vor oder nach dem Zuschneiden) umgewandelt und mit anderen Bildern zu einer Karte eines Grundrisses kombiniert.
-
In einer Ausführungsform wird ein Objektiv (z.B. ein Fischaugenobjektiv) vor der Kamera verwendet. Vor (oder nach) der Transformation von der Roboterperspektivenansicht in die planare Ansicht, wird ein Verzerrungsalgorithmus angewendet, um die durch die Linse verursachte Bildverzerrung zu korrigieren. Die Transformation von der Roboterperspektivenansicht zur planaren Ansicht nutzt die bekannte Einbauhöhe der Kamera vom Boden und den bekannten Abwärtswinkel der Kamera, um eine Bildpunktposition mit einer planaren Bodenposition zu korrelieren. Die Position in Bezug auf den Roboter wird als Offset zur lokalisierten Position des Roboters verwendet. Jede Neigung des Roboters wird erkannt und verwendet, um die Bildpunktposition zu korrigieren oder das Bild einfach zu verwerfen.
-
In einer Ausführungsform wird der Grundriss einem Benutzer auf einem Smartphone oder einer anderen Anzeigevorrichtung angezeigt. Der Benutzer stellt Eingaben auf dem Grundriss bereit, um eine Betriebseigenschaft des Roboters zu ändern. So kann der Benutzer beispielsweise Bereiche angeben, in die der Roboter nicht gelangen soll, Bereiche, die eine intensivere Reinigung erfordern, etc.
-
In einer Ausführungsform werden Segmente für einen Bereich erfasst, der gleich groß oder größer als die minimale Auflösung des zu erzeugenden Grundrisses ist. So kann beispielsweise eine Fläche von wenigen Millimetern einem einzelnen Pixel eines auf einem Smartphone angezeigten Grundrisses entsprechen, und somit wäre eine feinere Auflösung eine Verschwendung von Rechenleistung. Ebenso kann eine preiswertere Kamera mit nur einer solchen erforderlichen Auflösung den Zwecken der vorliegenden Erfindung dienen. Überlappende Segmente werden erfasst, was eine Ausrichtungseinstellung durch Abgleichen der überlappenden Abschnitte ermöglicht. Der gleiche Segmentbereich kann mehrfach aus unterschiedlichen Abständen im Sichtfeld der Kamera oder von verschiedenen Durchgängen über den gleichen Bereich aufgenommen werden. Die Bildqualität kann gewichtet werden, wobei ein Bild mit höherer Qualität ein Bild mit niedrigerer Qualität ersetzt. Zu den Gewichtungsfaktoren gehören beispielsweise eine Geschwindigkeit des Roboters beim Erfassen des Bildes, Vibrationen, ein Winkel (eine Neigung), eine Übereinstimmung mit überlappenden Teilen anderer Segmente, eine Nähe des Segments zur Kamera und eine Beleuchtung.
-
In einer Ausführungsform wird die Beleuchtung des Bildes bestimmt und Abweichungen in der Beleuchtung verschiedener Segmente korrigiert. Die Beleuchtung kann aufgrund von Schwankungen der Beleuchtung in der Umgebung oder aufgrund von Schwankungen der Intensität der Beleuchtung eines Lichts am Reinigungsroboter im Kamerasichtfeld variieren.
-
Figurenliste
-
- 1 ist eine Darstellung eines Reinigungsroboters mit einem LIDAR-Turm gemäß einer Ausführungsform.
- 2 ist eine Darstellung eines Reinigungsroboters und einer Ladestation gemäß einer Ausführungsform.
- 3 ist eine Darstellung der Unterseite eines Reinigungsroboters gemäß einer Ausführungsform.
- 4 ist eine Darstellung einer Smartphonesteuerungsapplikationsanzeige für einen Reinigungsroboter gemäß einer Ausführungsform.
- 5 ist eine Darstellung einer intelligenten Uhrensteuerungsapplikationsanzeige für einen Reinigungsroboter gemäß einer Ausführungsform.
- 6 ist eine Darstellung eines elektronischen Systems für einen Reinigungsroboter gemäß einer Ausführungsform.
- 7 ist ein vereinfachtes Blockdiagramm eines repräsentativen Computersystems und eines Client-Computersystems, das zur Implementierung bestimmter Ausführungsformen der vorliegenden Erfindung geeignet ist.
- 8 ist eine Darstellung einer Kamera, die in ein Reinigungsrobotergehäuse gemäß einer Ausführungsform eingebettet ist.
- 9 ist eine Darstellung eines Reinigungsroboters mit einer Kamera, bei der die berechnete planare Position eines Punktes im Bild der Kamera gemäß einer Ausführungsform dargestellt ist.
- 10 ist eine Darstellung eines Bildes von der Kamera eines Roboters, das durch eine Fischaugenlinse gemäß einer Ausführungsform verzerrt ist.
- 11 ist eine Darstellung eines Bildes von der Kamera eines Roboters nach einer Transformation zur Korrektur der Verzerrung durch eine Fischaugenlinse gemäß einer Ausführungsform.
- 12 ist eine Darstellung eines Bildes von der Kamera eines Roboters, das das Zuschneiden eines Teils des Bodens gemäß einer Ausführungsform zeigt.
- 13 ist eine Darstellung eines Bildes von der Kamera eines Roboters, das in eine planare Form umgewandelt wurde und ein erfasstes Segment des Bildes gemäß einer Ausführungsform zeigt.
- 14 ist eine Darstellung einer Benutzergeräteanzeige, das zusammengefügte Segmente zeigt, um ein planares Bild mit Objekten gemäß einer Ausführungsform zu bilden.
- 15 ist eine Darstellung einer Anzeige einer Benutzervorrichtung, die zusammengefügte Segmente zeigt, um ein planares Bild mit No-Go-Abschnitten zu bilden, die von einem Benutzer auf der Anzeige markiert werden, gemäß einer Ausführungsform.
- 16 ist ein Flussdiagramm des Verfahrens zum Erzeugen eines Grundrisses einer planaren Ansicht gemäß einer Ausführungsform.
-
DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
-
Gesamtarchitektur
-
1 ist eine Darstellung eines Reinigungsroboters mit einem LIDAR-Revolver bzw. LIDAR-Turm gemäß einer Ausführungsform. Ein Reinigungsroboter 102 weist einen LIDAR (Light Detection and Ranging) Turm 104 auf, der einen rotierenden Laserstrahl 106 aussendet. Erfasste Reflexionen des Laserstrahls von Objekten werden verwendet, um sowohl den Abstand zu Objekten als auch den Standort bzw. die Position des Reinigungsroboters zu berechnen. Eine Ausführungsform der Entfernungsberechnung ist in dem US Patent mit der Nr. 8.996.172, „Abstandssensorsystem und -verfahren“ gezeigt, dessen Offenbarung hierin durch Verweis aufgenommen ist. Alternativ kann VSLAM (Visual SLAM mit Bildsensoren) oder können andere Lokalisierungsverfahren verwendet werden. Die gesammelten Daten werden auch zur Erstellung einer Karte unter Verwendung eines SLAM-Algorithmus (Simultaneous Location and Mapping) verwendet. Eine Ausführungsform eines SLAM-Algorithmus ist in dem US Patent mit der Nr. 8.903.589, „Verfahren und Vorrichtung zur gleichzeitigen Lokalisierung und Abbildung der Umgebung eines mobilen Roboters“, beschrieben, dessen Offenbarung hierin durch Verweis aufgenommen ist.
-
2 ist eine Darstellung eines Reinigungsroboters und einer Ladestation gemäß einer Ausführungsform. Der Reinigungsroboter 102 mit Turm 104 ist dargestellt. Ebenfalls dargestellt ist eine Abdeckung 204, die geöffnet werden kann, um auf einen Schmutzsammelbeutel zuzugreifen und die Oberseite einer Bürste. Die Tasten 202 ermöglichen grundlegende Funktionen des Roboterreinigers, wie z.B. das Starten eines Reinigungsvorgangs. Eine Anzeige 205 stellt dem Benutzer Informationen zur Verfügung. Der Reinigungsroboter 102 kann an eine Ladestation 206 andocken und über die Ladekontakte 208 Strom beziehen.
-
3 ist eine Darstellung der Unterseite eines Reinigungsroboters gemäß einer Ausführungsform. Die Räder 302 bewegen den Reinigungsroboter, und eine Bürste 304 hilft, dass freier Schmutz in den Schmutzbeutel gesaugt wird.
-
4 ist eine Darstellung einer Smartphonesteuerungsanwendungsanzeige für einen Reinigungsroboter gemäß einer Ausführungsform. Ein Smartphone 402 verfügt über eine Anwendung bzw. App, die heruntergeladen wird, um den Reinigungsroboter zu steuern. Eine einfach zu bedienende Schnittstelle verfügt über eine Starttaste 404, um die Reinigung einzuleiten.
-
5 ist eine Darstellung einer intelligenten Uhrensteuerungsanwendungsanzeige für einen Reinigungsroboter gemäß einer Ausführungsform. Es sind Beispielanzeigen angezeigt. Eine Anzeige 502 bietet eine einfach zu bedienende Starttaste. Eine Anzeige 504 bietet die Möglichkeit, mehrere Reinigungsroboter zu steuern. Eine Anzeige 506 gibt dem Benutzer eine Rückmeldung, z.B. eine Meldung, dass der Reinigungsroboter einen Vorgang beendet hat.
-
6 ist eine Übersichtsdarstellung eines elektronischen Systems für einen Reinigungsroboter gemäß einer Ausführungsform. Ein Reinigungsroboter 602 beinhaltet einen Prozessor 604, der ein in den Speicher 606 heruntergeladenes Programm bedient. Der Prozessor kommuniziert mit anderen Komponenten über einen Bus 634 oder andere elektrische Verbindungen. In einem Reinigungsmodus steuern die Radmotoren 608 die Räder unabhängig voneinander, um den Roboter zu bewegen und zu lenken. Bürsten- und Vakuummotoren 610 reinigen den Boden und können in verschiedenen Betriebsarten betrieben werden, wie z.B. einem Intensivreinigungsmodus mit höherer Leistung oder einem Modus mit normaler Leistung.
-
Ein LIDAR-Modul 616 beinhaltet einen Laser 620 und einen Detektor 616. Alternativ kann ein Bildsensor mit einem VSLAM-Betrieb verwendet werden. Ein Revolver-Motor 622 bewegt den Laser und den Detektor, um Objekte bis zu 360 Grad um den Reinigungsroboter herum zu erfassen. Es gibt mehrere Umdrehungen pro Sekunde, z.B. etwa 5 Umdrehungen pro Sekunde. Verschiedene Sensoren stellen Eingänge für den Prozessor 604 zur Verfügung, wie beispielsweise ein Stoßsensor 624, der den Kontakt mit einem Objekt anzeigt, ein Näherungssensor 626, der die Nähe zu einem Objekt anzeigt, und Beschleunigungs- und Neigungssensoren 628, die einen Sturz (z.B. Treppe) oder ein Kippen des Reinigungsroboters (z.B. beim Besteigen eines Hindernisses) anzeigen. Beispiele für den Einsatz solcher Sensoren für die Navigation und andere Steuerungen des Reinigungsroboters sind in dem US Patent mit der Nr. 8.855.914, „Verfahren und Vorrichtung zum Durchqueren von Ecken einer Bodenfläche mit einer Roboter-Oberflächenbehandlungsvorrichtung“ beschrieben, deren Offenbarung hierin durch Bezugnahme aufgenommen ist. Andere Sensoren können in andere Ausführungsformen einbezogen werden, wie beispielsweise ein Schmutzsensor zum Erfassen der Menge an zu saugendem Schmutz, ein Motorstromsensor zum Erfassen, wenn der Motor überlastet ist, z.B. weil er in etwas verstrickt ist, ein Bodensensor zum Erfassen der Art des Bodens und ein Bildsensor (Kamera) zum Bereitstellen von Bildern der Umgebung und von Objekten.
-
Eine Batterie 614 versorgt den Rest der Elektronik über Leistungsanschlüsse (nicht dargestellt) mit Strom. Eine Batterieladeschaltung 612 liefert der Batterie 614 einen Ladestrom, wenn der Reinigungsroboter an die Ladestation 206 von 2 angedockt ist. Eingabetasten 623 ermöglichen eine direkte Steuerung des Roboterreinigers 602 in Verbindung mit einem Display 630. Alternativ kann der Reinigungsroboter 602 ferngesteuert werden und Daten über Transceiver 632 an entfernte Standorte senden.
-
Eine Kamera 642 oder mehrere Kameras sind an den Bus 634 angeschlossen. Ein Objektiv 644 befindet sich vor der Kamera. Es kann eine Leuchte 646 vorgesehen werden, um das Sichtfeld der Kamera zu beleuchten. Die Bilder können im Speicher 606 gespeichert und/oder über eine drahtlose oder drahtgebundene Verbindung und das Internet in die Cloud hochgeladen werden.
-
Über das Internet 636 und/oder andere Netzwerke kann der Reinigungsroboter gesteuert werden und Informationen an einen entfernten Benutzer zurücksenden. Ein Remote-Server 638 kann Befehle bereitstellen und Daten verarbeiten, die vom Reinigungsroboter hochgeladen werden. Ein tragbares Smartphone oder eine Uhr 640 kann von einem Benutzer bedient werden, um Befehle entweder direkt an den Reinigungsroboter 602 zu senden (über Bluetooth, direktes RF, ein WiFi-LAN, etc.) oder Befehle über eine Verbindung zum Internet 636 zu senden. Die Befehle können zur weiteren Verarbeitung an den Server 638 gesendet und dann in modifizierter Form über das Internet 636 an den Reinigungsroboter 602 weitergeleitet werden.
-
Computersysteme für eine Medienplattform und Client-System
-
Verschiedene hierin beschriebene Vorgänge können auf Computersystemen ausgeführt werden. 7 zeigt ein vereinfachtes Blockdiagramm eines repräsentativen Computersystems 702 und eines Client-Computersystems 704, das zur Implementierung bestimmter Ausführungsformen der vorliegenden Erfindung geeignet ist. In verschiedenen Ausführungsformen kann das Computersystem 702 oder ähnliche Systeme das Reinigungsroboterprozessorsystem, den entfernten Server oder ein anderes hierin beschriebenes Computersystem oder Teile davon implementieren. Das Client-Computersystem 704 oder ähnliche Systeme können Benutzergeräte wie ein Smartphone oder eine Uhr mit einer Roboterreinigungsanwendung implementieren.
-
Das Computersystem 702 kann eines von verschiedenen Typen sein, einschließlich Prozessor und Speicher, ein tragbares Handgerät (z.B. ein iPhone®-Handy, ein iPad®-Computertablett, ein PDA), ein tragbares Gerät (z.B. ein Google Glass®-Kopfbildschirm), ein Personal Computer, eine Arbeitsstation, ein Großrechner, ein Kiosk, ein Server-Rack oder ein anderes Datenverarbeitungssystem.
-
Das Computersystem 702 kann ein Verarbeitungssubsystem 710 beinhalten. Das Verarbeitungssubsystem 710 kann über das Bussubsystem 770 mit einer Reihe von Peripheriesystemen kommunizieren. Diese peripheren Systeme können ein I/O-Subsystem 730, ein Speichersubsystem 768 und ein Kommunikationssubsystem 740 beinhalten.
-
Das Bussubsystem 770 bietet einen Mechanismus, mit dem die verschiedenen Komponenten und Subsysteme des Server-Computersystems 704 wie vorgesehen miteinander kommunizieren können. Obwohl das Bussubsystem 770 schematisch als einzelner Bus dargestellt ist, können alternative Ausführungsformen des Bussubsystems mehrere Busse verwenden. Das Bussubsystem 770 kann ein lokales Netzwerk bilden, das die Kommunikation bei der Verarbeitung des Subsystems 710 und anderer Komponenten des Server-Computersystems 702 unterstützt. Das Bussubsystem 770 kann mit verschiedenen Technologien implementiert werden, einschließlich Serverracks, Hubs, Routern usw. Das Bussubsystem 770 kann eine von mehreren Arten von Busstrukturen sein, einschließlich eines Speicherbusses oder einer Speichersteuerung, eines Peripheriebusses und eines lokalen Busses unter Verwendung einer beliebigen Vielzahl von Busarchitekturen. Solche Architekturen können beispielsweise einen ISA-Bus (Industry Standard Architecture), einen MCA-Bus (Micro Channel Architecture), einen Enhanced ISA-Bus (EISA), einen lokalen Bus (Video Electronics Standards Association, VESA) und einen PCI-Bus (Peripheral Component Interconnect) beinhalten, der als Mezzanine-Bus nach dem IEEE-Standard P1386.1 und dergleichen implementiert werden kann.
-
Das I/O-Subsystem 730 kann Vorrichtungen und Mechanismen zur Eingabe von Informationen in das Computersystem 702 und/oder zur Ausgabe von Informationen aus oder über das Computersystem 702 beinhalten. Im Allgemeinen ist die Verwendung des Begriffs „Eingabegerät“ dazu gedacht, alle möglichen Arten von Vorrichtungen und Mechanismen zur Eingabe von Informationen in das Computersystem 702 einzubeziehen. Eingabevorrichtungen für die Benutzeroberfläche können beispielsweise eine Tastatur, Zeigevorrichtungen wie eine Maus oder ein Trackball, ein Touchpad oder ein in eine Anzeige integrierter Touchscreen, ein Scrollrad, ein Klickrad, ein Zifferblatt, eine Taste, ein Schalter, eine Tastatur, Audioeingabevorrichtungen mit Spracherkennungssystemen, Mikrofone und andere Arten von Eingabevorrichtungen sein. Eingabegeräte der Benutzeroberfläche können auch Bewegungssensor- und/oder Gestenerkennungsgeräte wie den Microsoft Kinect® Bewegungssensor beinhalten, der es Benutzern ermöglicht, mit einer Eingabevorrichtung, dem Microsoft Xbox® 360 Spielsteuergerät, Geräten, die eine Schnittstelle zum Empfangen von Eingaben über Gesten und gesprochene Befehle bereitstellen zu steuern und mit diesen zu interagieren. Eingabegeräte der Benutzeroberfläche können auch Geräte zur Erkennung von Augengesten beinhalten, wie beispielsweise den Google Glass® Blinkdetektor, der Augenaktivitäten (z.B. „Blinzeln“ während der Aufnahme von Bildern und/oder der Auswahl eines Menüs) von Benutzern erkennt und die Augengesten als Eingabe in ein Eingabegerät (z.B. Google Glasse) umwandelt. Darüber hinaus können Eingabegeräte der Benutzeroberfläche Spracherkennungsgeräte beinhalten, die es den Benutzern ermöglichen, über Sprachbefehle mit Spracherkennungssystemen (z.B. Siri® navigator) zu interagieren.
-
Weitere Beispiele für Eingabegeräte der Benutzeroberfläche sind unter anderem dreidimensionale (3D-)Mäuse, Joysticks oder Zeige-Sticks, Gamepads und Grafiktabletts sowie Audio/Visuelle Geräte wie Lautsprecher, Digitalkameras, digitale Camcorder, tragbare Medienplayer, Webcams, Bildscanner, Fingerabdruckscanner, Barcodeleser, 3D-Scanner, 3D-Drucker, Laserentfernungsmesser und Blickverfolgungsgeräte. Darüber hinaus können Eingabegeräte der Benutzeroberfläche beispielsweise Eingabegeräte für die medizinische Bildgebung wie Computertomographie, Magnetresonanztomographie, Positionsemissionstomographie und medizinische Ultraschallgeräte sein. Eingabegeräte für die Benutzeroberfläche können beispielsweise auch Audioeingabegeräte wie MIDI-Tastaturen, digitale Musikinstrumente und dergleichen sein.
-
Ausgabevorrichtungen der Benutzeroberfläche können ein Anzeigesubsystem, Kontrollleuchten oder nicht-visuelle Anzeigen wie Audioausgabevorrichtungen usw. beinhalten. Das Anzeigesubsystem kann eine Kathodenstrahlröhre (CRT), eine Flachbildvorrichtung, wie sie beispielsweise eine Flüssigkristallanzeige (LCD) oder eine Plasmaanzeige verwendet, eine Projektionsvorrichtung, ein Touchscreen und dergleichen sein. Im Allgemeinen umfasst die Verwendung des Begriffs „Ausgabevorrichtung“ alle möglichen Arten von Vorrichtungen und Mechanismen zur Ausgabe von Informationen aus dem Computersystem 702 an einen Benutzer oder einen anderen Computer. Beispielsweise können Ausgabegeräte der Benutzeroberfläche ohne Einschränkung eine Vielzahl von Anzeigevorrichtungen beinhalten, die Text, Grafiken und Audio-/Videoinformationen visuell übertragen, wie z. B. Monitore, Drucker, Lautsprecher, Kopfhörer, Navigationssysteme für Kraftfahrzeuge, Plotter, Sprachausgabegeräte und Modems.
-
Das Verarbeitungssubsystem 710 steuert den Betrieb des Computersystems 702 und kann eine oder mehrere Verarbeitungseinheiten 712, 714 usw. umfassen. Eine Verarbeitungseinheit kann einen oder mehrere Prozessoren beinhalten, einschließlich Einzelkernprozessoren oder Mehrkernprozessoren, einen oder mehrere Kerne von Prozessoren oder Kombinationen davon. In einigen Ausführungsformen kann das Verarbeitungssubsystem 710 einen oder mehrere spezielle Co-Prozessoren wie Grafikprozessoren, digitale Signalprozessoren (DSPs) oder dergleichen beinhalten. In einigen Ausführungsformen können einige oder alle Verarbeitungseinheiten des Verarbeitungssubsystems 710 unter Verwendung kundenspezifischer Schaltungen implementiert werden, wie beispielsweise anwendungsspezifische integrierte Schaltungen (ASICs) oder Field Programmable Gate Arrays (FPGAs). In einigen Ausführungsformen führen solche integrierten Schaltungen Anweisungen aus, die auf der Schaltung selbst gespeichert sind. In anderen Ausführungsformen können die Verarbeitungseinheit(en) Anweisungen ausführen, die in einem lokalen Speicher gespeichert sind, z.B. in einem lokalen Speicher 722, 724. Jede Art von Prozessoren in jeder beliebigen Kombination kann in die Verarbeitungseinheit(en) 712, 714 enthalten sein.
-
In einigen Ausführungsformen kann das Verarbeitungssubsystem 710 in einem modularen Design implementiert sein, das eine beliebige Anzahl von Modulen beinhaltet (z.B. Blades in einer Blade-Server-Implementierung). Jedes Modul kann Verarbeitungseinheiten und lokale Speicher beinhalten. So kann beispielsweise das Verarbeitungssubsystem 710 die Verarbeitungseinheit 712 und den entsprechenden lokalen Speicher 722 sowie die Verarbeitungseinheit 714 und den entsprechenden lokalen Speicher 724 beinhalten.
-
Der lokale Speicher 722, 724 kann flüchtige Speichermedien (z.B. herkömmlicher DRAM, SRAM, SDRAM oder dergleichen) und/oder nichtflüchtige Speichermedien[0001]
, z.B. magnetische oder optische Platte, Flash-Speicher oder dergleichen) beinhalten. Speichermedien, die in den lokalen Speicher 722, 724 integriert sind, können je nach Wunsch fest, wechselbar oder erweiterbar sein. Der lokale Speicher 722, 724 kann physisch oder logisch in verschiedene Untereinheiten bzw. Subeinheiten unterteilt werden, wie beispielsweise einen Systemspeicher, ein ROM und eine permanente Speichervorrichtung. Der Systemspeicher kann eine Schreib- und Lese-Speichervorrichtung oder ein flüchtiger Schreib- und Lese-Speicher sein, wie beispielsweise ein dynamischer Direktzugriffsspeicher. Der Systemspeicher kann einige oder alle Anweisungen und Daten speichern, die die Verarbeitungseinheit(en) 712, 714 zur Laufzeit benötigen. Das ROM kann statische Daten und Anweisungen speichern, die von den Verarbeitungseinheiten 712, 714 benötigt werden. Die permanente Speichervorrichtung kann eine nichtflüchtige Schreib- und Lese-Speichervorrichtung sein, die Anweisungen und Daten speichern kann, selbst wenn ein Modul mit einer oder mehreren Verarbeitungseinheiten 712, 714 und einem lokalen Speicher 722, 724 ausgeschaltet ist. Der hierin verwendete Begriff „Speichermedium“ umfasst jedes Medium, auf dem Daten auf unbestimmte Zeit gespeichert werden können (vorbehaltlich Überschreiben, elektrischer Störungen, Stromausfall oder dergleichen), nicht jedoch Trägerwellen und vorübergehende elektronische Signale, die sich drahtlos oder über drahtgebundene Verbindungen ausbreiten.
-
In einigen Ausführungsformen kann der lokale Speicher 722, 724 ein oder mehrere Softwareprogramme speichern, die von den Verarbeitungseinheiten 712, 714 ausgeführt werden sollen, wie beispielsweise ein Betriebssystem und/oder Programme, die verschiedene Serverfunktionen wie Funktionen des UPP-Systems 102 oder andere Server, die dem UPP-System 102 zugeordnet sind, implementieren. „Software“ bezieht sich im Allgemeinen auf Befehlsfolgen, die bei Ausführung durch die Verarbeitungseinheit(en) 712, 714 das Computersystem 702 (oder Teile davon) veranlassen, verschiedene Operationen durchzuführen, wodurch eine oder mehrere spezifische Maschinenimplementierungen definiert sind, die die Operationen der Softwareprogramme ausführen und durchführen. Die Anweisungen können als Firmware gespeichert werden, die sich im schreibgeschützten Speicher befindet, und/oder als Programmcode, der auf nichtflüchtigen Speichermedien gespeichert ist und zur Ausführung durch die Verarbeitungseinheit(en) 712, 714 in den flüchtigen Arbeitsspeicher eingelesen werden kann. In einigen Ausführungsformen können die Anweisungen vom Speichersubsystem 768 gespeichert werden (z.B. computerlesbare Speichermedien). In verschiedenen Ausführungsformen können die Verarbeitungseinheiten eine Vielzahl von Programmen oder Codeanweisungen ausführen und mehrere gleichzeitig ausgeführte Programme oder Prozesse verwalten. Zu einem bestimmten Zeitpunkt kann ein Teil oder der gesamte auszuführende Programmcode im lokalen Speicher 722, 724 und/oder im Speichersubsystem, einschließlich möglicherweise auf einem oder mehreren Speichermedien, gespeichert sein. Software kann als ein einzelnes Programm oder eine Sammlung von separaten Programmen oder Programmmodulen implementiert werden, die nach Belieben interagieren. Von den lokalen Speichern 722, 724 (oder den nachfolgend beschriebenen nicht-lokalen Speichern) können die Verarbeitungseinheiten 712, 714 Programmanweisungen zur Ausführung und Daten zur Verarbeitung abrufen, um verschiedene oben beschriebene Operationen auszuführen.
-
Das Speichersubsystem 768 stellt ein Repository oder einen Datenspeicher zum Speichern von Informationen bereit, die vom Computersystem 702 verwendet werden. Das Speichersubsystem 768 stellt ein greifbares, nicht-flüchtiges, computerlesbares Speichermedium zur Speicherung der grundlegenden Programmier- und Datenkonstrukte dar, die die Funktionalität einiger Ausführungsformen bereitstellen. Software (Programme, Codemodule, Anweisungen), die bei Ausführung durch das Verarbeitungssubsystem 710 die oben beschriebene Funktionalität bietet, kann im Speichersubsystem 768 gespeichert werden. Die Software kann von einer oder mehreren Verarbeitungseinheiten des Verarbeitungssubsystems 710 ausgeführt werden. Das Speichersubsystem 768 kann auch ein Repository für die Speicherung von Daten bereitstellen, die gemäß der vorliegenden Erfindung verwendet werden.
-
Das Speichersubsystem 768 kann eine oder mehrere nichtflüchtige Speichervorrichtungen beinhalten, einschließlich flüchtiger und nichtflüchtiger Speichervorrichtungen. Wie in 7 dargestellt, beinhaltet das Speichersubsystem 768 einen Systemspeicher 760 und ein computerlesbares Speichermedium 752. Der Systemspeicher 760 kann eine Reihe von Speichern beinhalten, darunter einen flüchtigen Hauptspeicher zum Speichern von Anweisungen und Daten während der Programmausführung und einen nichtflüchtigen ROM- oder Flash-Speicher, in dem feste Anweisungen gespeichert sind. In einigen Implementierungen kann ein Basic Input/Output System (BIOS), das die grundlegenden Routinen enthält, die helfen, Informationen zwischen Elementen innerhalb des Computersystems 702 zu übertragen, z.B. beim Start, typischerweise im ROM gespeichert werden. Das RAM enthält typischerweise Daten- und/oder Programmmodule, die derzeit durch die Verarbeitung des Subsystems 710 betrieben und ausgeführt werden. In einigen Implementierungen kann der Systemspeicher 760 mehrere verschiedene Speichertypen beinhalten, wie beispielsweise den statischen Direktzugriffsspeicher (SRAM) oder den dynamischen Direktzugriffsspeicher (DRAM). Das Speichersubsystem 768 kann auf magnetischen, optischen, Halbleiter- oder anderen Datenspeichermedien basieren. Direct Attached Storage, Storage Area Networks, Network Attached Storage und dergleichen können verwendet werden. Alle Datenspeicher oder andere Datensammlungen, die hierin als von einem Dienst oder Server produziert, verbraucht oder gepflegt beschrieben werden, können im Speichersubsystem 768 gespeichert werden.
-
Ein Systemspeicher 760 kann beispielsweise, wie in 7 dargestellt, Anwendungsprogramme 762 speichern, die Client-Anwendungen, Webbrowser, Mid-Tier-Anwendungen, relationale Datenbank-Managementsysteme (RDBMS) usw., Programmdaten 764 und ein oder mehrere Betriebssysteme 766 enthalten können. Beispielsweise kann ein Beispielbetriebssystem verschiedene Versionen von Microsoft Windows®, Apple Macintosh® und/oder Linux-Betriebssystemen, eine Vielzahl von handelsüblichen UNIX®- oder UNIX-ähnlichen Betriebssystemen (einschließlich, aber nicht beschränkt auf die Vielzahl von GNU/Linux-Betriebssystemen, Google Chrome® OS und dergleichen) und/oder mobile Betriebssysteme wie iOS, Windows® Phone, Android® OS, BlackBerry® 10 OS, Palm® OS und Palm® OS beinhalten.
-
Computerlesbare Speichermedien 752 können Programmier- und Datenkonstrukte speichern, die die Funktionalität einiger Ausführungsformen bereitstellen. Software (Programme, Codemodule, Anweisungen), die, wenn sie durch die Verarbeitung des Subsystems 710 ausgeführt wird, von einem Prozessor bereitgestellt wird, der die oben beschriebene Funktionalität bereitstellt, kann im Speichersubsystem 768 gespeichert werden. So können beispielsweise computerlesbare Speichermedien 752 einen nichtflüchtigen Speicher wie eine Festplatte, ein Magnetplattenlaufwerk, ein optisches Laufwerk wie eine CD-ROM, DVD, eine Blu-Ray®-Disk oder andere optische Medien beinhalten. Computerlesbare Speichermedien 752 können Zip®-Laufwerke, Flash-Speicherkarten, USB-Sticks, sichere digitale (SD) Karten, DVD-Disks, digitale Videobänder und dergleichen beinhalten, sind aber nicht darauf beschränkt. Computerlesbare Speichermedien 752 können auch Solid-State-Laufwerke (SSD), die auf einem nichtflüchtigem Speicher basieren, wie Flash-Speicher-basierte SSDs, Unternehmens-Flash-Laufwerke, Solid-State-ROMs und dergleichen, SSDs, die auf flüchtigem Speicher basieren, wie Solid-State-RAM, dynamisches RAM, statisches RAM, statisches RAM, DRAM-basierte SSDs, magnetoresistive RAM (MRAM) SSDs und Hybrid-SSDs, die eine Kombination aus DRAM und Flash-Speicher-basierten SSDs verwenden, basieren. Computerlesbare Medien bzw. Datenträger 752 können das Speichern von computerlesbaren Anweisungen, Datenstrukturen, Programmmodulen und anderen Daten für das Computersystem 702 ermöglichen.
-
In bestimmten Ausführungsformen kann das Speichersubsystem 768 auch einen computerlesbaren Speichermedienleser 750 beinhalten, der weiterhin mit dem computerlesbaren Speichermedium 752 verbunden werden kann. Zusammen und optional in Kombination mit dem Systemspeicher 760 können computerlesbare Speichermedien 752 entfernte, lokale, feste und/oder wechselbare Speichervorrichtungen sowie Speichermedien zum Speichern computerlesbarer Informationen umfassend darstellen.
-
In bestimmten Ausführungsformen kann das Computersystem 702 Unterstützung für die Ausführung einer oder mehrerer virtueller Maschinen bieten. Das Computersystem 702 kann ein Programm wie beispielsweise einen Hypervisor ausführen, um die Konfiguration und Verwaltung der virtuellen Maschinen zu erleichtern. Jeder virtuellen Maschine können Speicher, Rechenleistung (z.B. Prozessoren, Kerne), I/O und Netzwerkressourcen zugewiesen werden. Jede virtuelle Maschine betreibt typischerweise ihr eigenes Betriebssystem, das gleich oder verschieden von den Betriebssystemen sein kann, die von anderen virtuellen Maschinen ausgeführt werden, die vom Computersystem 702 ausgeführt werden. Dementsprechend können mehrere Betriebssysteme gleichzeitig vom Computersystem 702 ausgeführt werden. Jede virtuelle Maschine läuft im Allgemeinen unabhängig von den anderen virtuellen Maschinen.
-
Ein Kommunikationssubsystem 740 bietet eine Schnittstelle zu anderen Computersystemen und Netzwerken. Das Kommunikations-Subsystem 740 dient als Schnittstelle zum Empfangen von Daten von und Übertragen von Daten an andere Systeme vom Computersystem 702. So kann beispielsweise das Kommunikationssubsystem 740 es dem Computersystem 702 ermöglichen, einen Kommunikationskanal zu einem oder mehreren Client-Computervorrichtungen über das Internet zum Empfangen und Senden von Informationen von und zu den Client-Computervorrichtungen einzurichten.
-
Das Kommunikationssubsystem 740 kann sowohl drahtgebundene als auch drahtlose Kommunikationsprotokolle unterstützen. So kann beispielsweise das Kommunikationssubsystem 740 in bestimmten Ausführungsformen Hochfrequenz (RF)-Sender-Empfänger-Komponenten für den Zugriff auf drahtlose Sprach- und/oder Datennetze beinhalten (z.B. unter Verwendung von Mobilfunktechnologie, fortschrittlicher Datennetztechnologie wie 3G, 4G oder EDGE (erhöhte Datenraten für die globale Entwicklung), WiFi (IEEE 802.11-Familienstandards oder andere mobile Kommunikationstechnologien oder eine beliebige Kombination davon), Global Positioning System (GPS)-Empfängerkomponenten und/oder andere Komponenten. In einigen Ausführungsformen kann das Kommunikationssubsystem 740 zusätzlich zu oder anstelle einer drahtlosen Schnittstelle eine drahtgebundene Netzwerkverbindung (z.B. Ethernet) bereitstellen.
-
Das Kommunikationssubsystem 740 kann Daten in verschiedenen Formen empfangen und senden. So kann beispielsweise das Kommunikationssubsystem 740 in einigen Ausführungsformen eine Eingangskommunikation in Form von strukturierten und/oder unstrukturierten Datenfeeds, Ereignisströmen, Ereignisaktualisierungen und dergleichen empfangen. So kann beispielsweise das Kommunikationssubsystem 740 konfiguriert sein, um Datenfeeds in Echtzeit von Nutzern von Social Media-Netzwerken und/oder anderen Kommunikationsdiensten wie Twitter®-Feeds, Facebook®-Updates, Webfeeds wie Rich Site Summary (RSS) Feeds und/oder Echtzeit-Updates von einer oder mehreren Informationsquellen Dritter zu empfangen (oder zu senden).
-
In bestimmten Ausführungsformen kann das Kommunikationssubsystem 740 konfiguriert sein, um Daten in Form von kontinuierlichen Datenströmen zu empfangen, die Ereignisströme von Echtzeit-Ereignissen und/oder Ereignisaktualisierungen beinhalten können, die kontinuierlich oder unbegrenzt sein können, ohne ein explizites Ende. Beispiele für Anwendungen, die kontinuierliche Daten generieren, können beispielsweise Sensordatenanwendungen, Finanzticker, Netzwerk-Performance-Messwerkzeuge (z.B. Netzwerküberwachungs- und Traffic-Management-Anwendungen), Clickstream-Analyse-Tools, Kfz-Verkehrsüberwachung und dergleichen sein.
-
Das Kommunikationssubsystem 740 kann auch konfiguriert sein, um die strukturierten und/oder unstrukturierten Datenfeeds, Ereignisströme, Ereignisaktualisierungen und dergleichen an eine oder mehrere Datenbanken auszugeben, die mit einem oder mehreren Streaming-Datenquellencomputern, die mit dem Computersystem 702 verbunden sind, in Verbindung stehen können.
-
Das Kommunikationssubsystem 740 kann eine Kommunikationsschnittstelle 742, z.B. eine WAN-Schnittstelle, bereitstellen, die die Datenkommunikation zwischen dem lokalen Netzwerk (Bussubsystem 770) und einem größeren Netzwerk, wie beispielsweise dem Internet, ermöglichen kann. Es können konventionelle oder andere Kommunikationstechnologien verwendet werden, einschließlich drahtgebundener (z.B. Ethernet, IEEE 802.3 Standards) und/oder drahtloser Technologien (z.B. Wi-Fi, IEEE 802.11 Standards).
-
Das Computersystem 702 kann als Reaktion auf Anforderungen bzw. Requests arbeiten, die über die Kommunikationsschnittstelle 742 empfangen werden. Darüber hinaus kann die Kommunikationsschnittstelle 742 in einigen Ausführungsformen die Computersysteme 702 miteinander verbinden und skalierbare Systeme bereitstellen, die in der Lage sind, hohe Aktivitätsvolumina zu verwalten. Es können konventionelle oder andere Techniken zur Verwaltung von Serversystemen und Serverfarmen (Sammlungen von Serversystemen, die zusammenarbeiten) verwendet werden, einschließlich der dynamischen Ressourcenzuweisung und -umverteilung.
-
Das Computersystem 702 kann mit verschiedenen benutzereigenen oder benutzergesteuerten Geräten über ein weiträumiges Netzwerk wie das Internet interagieren. Ein Beispiel für ein benutzergeführtes Gerät ist in 7 als Client-Computer-System 702 dargestellt. Das Client-Computersystem 704 kann beispielsweise als Verbrauchervorrichtung wie ein Smartphone, ein anderes Mobiltelefon, ein Tablet-Computer, ein tragbares Computergerät (z.B. eine intelligente Uhr, eine Brille), ein Desktopcomputer, ein Laptop usw. implementiert sein.
-
So kann beispielsweise das Client-Computersystem 704 über die Kommunikationsschnittstelle 742 mit dem Computersystem 702 kommunizieren. Das Client-Computersystem 704 kann herkömmliche Computerkomponenten wie Verarbeitungseinheit(en) 782, Speichervorrichtung 784, Netzwerkschnittstelle 780, Benutzereingabevorrichtung 786 und Benutzerausgabevorrichtung 788 beinhalten. Das Client-Computersystem 704 kann eine Computervorrichtung sein, die in einer Vielzahl von Formfaktoren implementiert ist, wie beispielsweise ein Desktop-Computer, ein Laptop-Computer, ein Tablet-Computer, ein Smartphone, andere mobile Computervorrichtungen, tragbare Computergeräte oder dergleichen.
-
Die Verarbeitungseinheit(en) 782 und die Speichervorrichtung 784 können ähnlich sein wie die oben beschriebenen Verarbeitungseinheiten 712, 714 und der lokale Speicher 722, 724. Je nach den Anforderungen an das Client-Computersystem 704 können geeignete Vorrichtungen ausgewählt werden; beispielsweise kann das Client-Computersystem 704 als „Thin“-Client mit eingeschränkter Verarbeitungsfähigkeit oder als- Hochleistungs-Computervorrichtung implementiert werden. Dem Client-Computersystem 704 kann Programmcode bereitgestellt werden, der von den Verarbeitungseinheiten 782 ausführbar ist, um verschiedene Interaktionen mit dem Computersystem 702 eines Nachrichtenverwaltungsdienstes zu ermöglichen, wie z.B. den Zugriff auf Nachrichten, das Ausführen von Aktionen auf Nachrichten und andere oben beschriebene Interaktionen. Einige Client-Computersysteme 704 können auch unabhängig vom Nachrichtenverwaltungsdienst mit einem Nachrichtendienst interagieren.
-
Eine Netzwerkschnittstelle 780 kann eine Verbindung zu einem Weitverkehrsnetz (z.B. dem Internet) herstellen, an das auch die Kommunikationsschnittstelle 740 des Computersystems 702 angeschlossen ist. In verschiedenen Ausführungsformen kann die Netzwerkschnittstelle 780 eine verkabelte Schnittstelle (z.B. Ethernet) und/oder eine drahtlose Schnittstelle beinhalten, die verschiedene HF-Datenübertragungsstandards wie Wi-Fi, Bluetooth oder Mobilfunk-Datennetzstandards (z.B. 3G, 4G, LTE, etc.) implementiert.
-
Eine Benutzereingabevorrichtung 786 kann jede Vorrichtung (oder Vorrichtungen) enthalten, über die ein Benutzer Signale an das Client-Computersystem 704 bereitstellen kann; das Client-Computersystem 704 kann die Signale als Hinweis auf besondere Benutzeranforderungen oder -informationen interpretieren. In verschiedenen Ausführungsformen kann die Benutzereingabevorrichtung 786 eine Tastatur, ein Touchpad, einen Touchscreen, eine Maus oder eine andere Zeigevorrichtung, ein Scrollrad, ein Click Wheel, ein Zifferblatt, eine Taste, einen Schalter, eine Tastatur, ein Mikrofon und so weiter enthalten.
-
Eine Benutzerausgabevorrichtung 788 kann jede Vorrichtung enthalten, über die das Client-Computersystem 704 einem Benutzer Informationen bereitstellen kann. So kann beispielsweise die Benutzerausgabevorrichtung 788 eine Anzeige zum Anzeigen von Bildern beinhalten, die von dem Client-Computersystem 704 erzeugt oder an dieses geliefert werden. Die Anzeige kann verschiedene Bilderzeugungstechnologien beinhalten, z.B. eine Flüssigkristallanzeige (LCD), eine Leuchtdiode (LED) einschließlich organischer Leuchtdioden (OLED), ein Projektionssystem, eine Kathodenstrahlröhre (CRT) oder dergleichen, zusammen mit unterstützender Elektronik (z.B. Digital-Analog- oder Analog-Digital-Wandler, Signalprozessoren oder dergleichen). Einige Ausführungsformen können eine Vorrichtung, wie beispielsweise einen Touchscreen, beinhalten, der sowohl als Ein- als auch als Ausgabegerät fungiert. In einigen Ausführungsformen können andere Benutzerausgabevorrichtungen 788 zusätzlich zu oder anstelle einer Anzeige vorgesehen sein. Beispiele sind Blinkleuchten, Lautsprecher, taktile „Anzeige“-Geräte, Drucker usw.
-
Einige Ausführungsformen beinhalten elektronische Komponenten, wie Mikroprozessoren, Speicherung und Speicher, die Computerprogrammanweisungen auf einem computerlesbaren Speichermedium speichern. Viele der in dieser Beschreibung beschriebenen Funktionen können als Prozesse implementiert werden, die als ein Satz von Programmanweisungen spezifiziert sind, die auf einem computerlesbaren Speichermedium kodiert sind. Wenn diese Programmanweisungen von einer oder mehreren Verarbeitungseinheiten ausgeführt werden, veranlassen sie die Verarbeitungseinheit(en), verschiedene in den Programmanweisungen angegebene Vorgänge auszuführen. Beispiele für Programmanweisungen oder Computercode sind Maschinencode, wie er von einem Compiler erzeugt wird, und Dateien mit übergeordnetem Code, die von einem Computer, einer elektronischen Komponente oder einem Mikroprozessor unter Verwendung eines Interpreters ausgeführt werden. Durch geeignete Programmierung können die Verarbeitungseinheiten 712, 714 und 782 verschiedene Funktionen für das Computersystem 702 und das Client-Computersystem 704 bereitstellen, einschließlich einer der hierin beschriebenen Funktionen, die von einem Server oder Client ausgeführt werden, oder einer anderen Funktionalität im Zusammenhang mit Nachrichtenverwaltungsdiensten.
-
ist zu beachten, dass das Computersystem 702 und das Client-Computersystem 704 veranschaulichend sind und dass Abweichungen und Änderungen möglich sind. Computersysteme, die in Verbindung mit Ausführungsformen der vorliegenden Erfindung verwendet werden, können andere Fähigkeiten aufweisen, die hier nicht ausdrücklich beschrieben sind. Obwohl das Computersystem 702 und das Client-Computersystem 704 mit Bezug auf bestimmte Blöcke beschrieben werden, ist zu verstehen, dass diese Blöcke aus Gründen der Übersichtlichkeit definiert sind und nicht dazu bestimmt sind, eine bestimmte physikalische Anordnung von Bauteilen implizit zu beinhalten. So können sich beispielsweise verschiedene Blöcke in derselben Einrichtung, im gleichen Server-Rack oder auf derselben Hauptplatine befinden, müssen sich aber nicht dort befinden. Außerdem müssen die Blöcke nicht mit physisch unterschiedlichen Komponenten übereinstimmen. Blöcke können konfiguriert werden, um verschiedene Operationen auszuführen, z.B. durch Programmierung eines Prozessors oder Bereitstellung einer geeigneten Steuerschaltung, und verschiedene Blöcke können je nachdem, wie die anfängliche Konfiguration erhalten wird, rekonfigurierbar sein oder nicht. Ausführungsformen der vorliegenden Erfindung können in einer Vielzahl von Vorrichtungen, einschließlich elektronischer Vorrichtungen, realisiert werden, die unter Verwendung einer beliebigen Kombination aus Schaltung und Software implementiert sind.
-
Photomosaische Bodenkartierung
-
8 ist eine Darstellung einer Kamera, die in ein Reinigungsrobotergehäuse gemäß einer Ausführungsform eingebettet ist. Eine Ausführungsform verwendet eine einzelne Kamera 804 im vorderen Gehäuse 802 eines Reinigungsroboters. Eine alternative Ausführungsform fügt eine zweite Kamera 806 hinzu. Wie dargestellt, sind beide Kameras in einer Aussparung 812 an der Vorderseite des Gehäuses 802 montiert. Die Kameras 804, 806 sind so montiert, dass sie etwas nach unten in Richtung eines Bodens 810 zeigen. In einer Ausführungsform ist zwischen den Kameras eine Leuchte 808 montiert, die für die Beleuchtung des Sichtfeldes der Kameras sorgt.
-
9 ist eine Darstellung des Reinigungsroboters mit einer Kamera, die die berechnete planare Position eines Punktes im Bild der Kamera gemäß einer Ausführungsform darstellt. Der Reinigungsroboter 902 weist eine Kamera 904 auf, die in der Vorderseite montiert ist. Die Kamera hat ein Sichtfeld, das durch den Bereich zwischen der Aufwärtslinie 916 und der Abwärtslinie 918 dargestellt wird. Die Kamera ist in einem bekannten Abstand 906 von einem Boden oder einer anderen Auflagefläche 908 montiert. Für jedes einzelne Pixel in einem Bild im Sichtfeld der Kamera kann die planare Position aus der Position und der Kamerahöhe 906 berechnet werden. So wird beispielsweise der Punkt 912 von der Kamera an einer Pixelposition betrachtet, die dadurch veranschaulicht wird, dass eine Linie 914 die Kamera berührt. Dieses Pixel im Bild kann dann einer Position zugeordnet werden, die einem Achsabstand 910 von der Kamera bis zum Punkt 912 auf dem Boden 908 entspricht.
-
Die Position des Roboters 902 ist von einem LIDAR-Modul 920 bekannt. Somit wird, wenn man den Offsetabstand zwischen dem Detektor im LIDAR-Modul 920 und der Kamera 904 kennt, ein Offset bzw. Versatz bestimmt. Die Position des Punktes 912 ist also die vom LIDAR bestimmten Koordinaten des Roboterreinigers 902, plus der Offset bzw. Versatz, plus der Achsabstand 910. Zu beachten ist, dass abwechselnd andere Lokalisierungsmechanismen verwendet werden können, wie z.B. VSLAM, Indoor-GPS, Radkilometerzähler oder eine beliebige Kombination. Die Standortberechnung bzw. Positionsberechnung würde entsprechend angepasst. Bei VSLAM wäre der Offset beispielsweise der Abstand zwischen der Kamera 904 und der VSLAM-Kamera. Wenn für beide Funktionen die gleiche Kamera 904 verwendet wird, kann der Offset eliminiert werden.
-
Alternative Methoden können auch verwendet werden, um die planare Position eines Pixels im Kamerabild zu bestimmen. So können beispielsweise Objekte, wie Wände oder Geräte, im Bild erkannt werden, und die Position kann durch vorherigen Kontakt von einem Höhensensor am Roboterreiniger bekannt sein. Aus dieser bekannten Position und der bekannten Position des Roboterreinigers kann die Position der Pixel im Bild berechnet werden.
-
Jede Neigung des Roboters wird erkannt und wird verwendet, um die Bildpunktposition bzw. Bildpixelposition zu korrigieren oder das Bild einfach zu verwerfen. Die Neigung kann durch einen Neigungssensor, Beschleunigungssensor oder die Analyse der Bilddaten erfasst werden. So kann beispielsweise die vertikale Bewegung eines bekannten Punktes in einem Bild, die mehr als die translatorische Bewegung des Roboters ergeben würde, als Hinweis auf die Neigung verwendet werden.
-
Um ein ausreichendes Sichtfeld zu gewährleisten, kann ein Fischauge oder eine andere Linse vor der Kamera platziert werden, wie beispielsweise eine Linse bzw. ein Objektiv 644, wie in 6 dargestellt. In einer Ausführungsform ist ein Sichtfeld zwischen 100 und 180 Grad, wie beispielsweise mit 160 Grad, vorgesehen. Alternativ können zwei Kameras verwendet werden, wie in 8 dargestellt, wodurch die Notwendigkeit eines Objektivs entfällt oder die Menge an vergrößertem Sichtfeld, die vom Objektiv benötigt wird, reduziert wird. In einer Ausführungsform befindet sich die Kamera mehrere Zentimeter vom Boden entfernt, beispielsweise zwischen 5-20 Zentimeter oder etwa 7 Zentimeter in einer Ausführungsform. Das Sichtfeld der Kamera kann mehrere Zentimeter vor dem Roboter, zwischen 5-25 Zentimeter vor ihm oder 10 Zentimeter vor ihm in einer Ausführungsform beginnen. Das von der Kamera aufgenommene Sichtfeld ist größer als die minimale Auflösung des eventuellen planaren Grundrisses und kann ein Bereich zwischen 4x4 mm und 40x60 cm sein. In einer Ausführungsform umfasst das Sichtfeld einen rechteckigen Bereich von 20 cm in Richtung des Kamerablicks und 30 cm in Richtung orthogonal zum Kamerablick. Die aufgenommenen bzw. erfassten Bilder können zugeschnitten werden, und die zugeschnittenen Bilder enthalten ein oder mehrere Kacheln oder Segmente, aus denen die Karte besteht. In einer Ausführungsform sind die Segmente oder Kacheln ca. 4x4 cm groß. Alternativ können die Segmente zwischen 4x4 mm und 40x60 cm groß sein.
-
In einer Ausführungsform hat die Kamera eine Auflösung am unteren Ende des HD-Bereichs. Da die Bilder verwendet werden, um einen auf einem Smartphone sichtbaren Grundriss zu füllen, ist keine höhere Auflösung erforderlich, was Kosten und Verarbeitung spart. Beispielsweise wäre eine 720p HD-Kamera (1280 x 720 Pixel) mehr als genug Auflösung.
-
Die Anzahl der Bilder pro Sekunde muss ebenfalls nicht hoch sein und kann an die Genauigkeit der Lokalisierung angepasst werden. Wenn beispielsweise ein LIDAR-System verwendet wird, das 5 Bilder/Sekunde erfasst, ist eine Bildrate von 5 Bildern/Sekunde für die Kamera mehr als ausreichend. Der Zeitpunkt der Bildaufnahme kann durch Synchronisation mit dem Zeitpunkt der Lokalisierungsbestimmung in einer Ausführungsform erfolgen, um sicherzustellen, dass das Bild genau dem Standort entspricht.
-
10 ist eine Darstellung eines Bildes von der Kamera eines Roboters, das durch ein Fischaugenobjektiv gemäß einer Ausführungsform verzerrt ist. Wie zu sehen ist, beinhaltet das Sichtfeld einen Boden 1002 und eine Wand 1004 mit offensichtlicher Verzerrung.
-
11 ist eine Darstellung eines Bildes von der Kamera eines Roboters nach einer Transformation zur Korrektur der Verzerrung durch ein Fischaugenobjektiv bzw. eine Fischaugenlinse gemäß einer Ausführungsform. Das Bild des Bodens 1102 wurde korrigiert, ebenso wie die Wand 1104. In einer Ausführungsform wird die Verzerrung mit dem Open CV (Computer Vision) Warp-Programm korrigiert.
-
12 ist eine Darstellung eines Bildes von der Kamera eines Roboters, die das Zuschneiden eines Teils des Bodens gemäß einer Ausführungsform zeigt. Eine Fläche 1202 der Bodenfläche 1204 wird zur Bearbeitung beschnitten. Das Entwölben kann vor oder nach dem Zuschneiden erfolgen. Das zugeschnittene Bild kann dann in eine planare Kartenkoordinate umgewandelt werden.
-
13 ist eine Darstellung eines Bildes von der Kamera eines Roboters, das in eine planare Form umgewandelt wurde und ein erfasstes Segment des Bildes gemäß einer Ausführungsform zeigt. Wie man sehen kann, ist das transformierte Bild ein Trapez 1304, wobei sich die Form ändert, wenn sie aus der Schrägansicht auf eine ebene Fläche abgebildet wird. Ein Segment / eine Kachel 1302 wird dann erfasst, um ein Bild zu erzeugen, das mit anderen Segmenten / Kacheln zusammengefügt werden kann, um den planaren Grundriss zu erzeugen. In einer Ausführungsform werden aus jedem Kamerabild eine Reihe von Segmenten / Kacheln extrahiert. So kann beispielsweise eine Reihe von Segmenten / Kacheln 1302 erfasst werden. Die Segmente können sich überlappen, so dass der Prozess des Zusammenfügens die Ausrichtung beliebig geringfügig anpassen kann, indem die Teilsegmente verschoben werden, bis die überlappenden Abschnitte übereinstimmen. Eine zweite Reihe kann aus einem nachfolgenden Bild entnommen werden, nachdem der Roboterreiniger so weit fortgeschritten ist, dass die gleiche Reihe im Bild die nächste Reihe auf der ebenen Fläche ist, mit Überlappung in Vorwärtsrichtung.
-
Es können verschiedene andere Ausführungsformen verwendet werden. Ein Raster von Segmenten kann aus einem einzelnen Bild aufgenommen werden, und eine Reihe von überlappenden Segmenten kann aus nachfolgenden Bildern kann erhalten werden. In einer Ausführungsform ist die primäre Reihe der aufgenommenen Segmente ausreichend weit von der Kamera entfernt, um die Standortberechnung sehr genau zu machen, aber nicht zu weit, so dass die Bildklarheit gut ist. Wenn mehrere Kameras verwendet werden, überschneidet sich ihr Sichtfeld, und diese Überschneidung wird in die Ausrichtung der Segmente einbezogen. Mehrere Kameras können auch eine Redundanz darstellen, falls das Objektiv einer Kamera verschmutzt ist oder die Bilder anderweitig verschwommen sind, und es können überlappende oder nachfolgende Bilder der anderen Kamera mit höherer Qualität gewichtet und stattdessen verwendet werden.
-
Die Bildqualität kann gewichtet werden, wobei ein Bild mit höherer Qualität ein Bild mit niedrigerer Qualität ersetzt, unabhängig davon, ob die Bilder von derselben Kamera oder mehreren Kameras stammen. Zu den Gewichtungsfaktoren gehören beispielsweise die Geschwindigkeit des Roboters beim Erfassen des Bildes, Vibrationen, Winkel (Neigung), Übereinstimmung mit überlappenden Teilen anderer Segmente, Nähe des Segments zur Kamera und Beleuchtung. Ein Bild, das mit einer langsameren Robotergeschwindigkeit aufgenommen wurde, kann eine höhere Gewichtung haben als ein Bild, das mit einer höheren Geschwindigkeit aufgenommen wurde. Ein Bild, das näher am Roboter aufgenommen wird, kann eine höhere Gewichtung haben als ein Bild, das weiter vom Roboter entfernt aufgenommen wird. Ein Bild, das während eines Kipp- oder Vibrationsereignisses aufgenommen wird, kann eine geringere Gewichtung haben als ein Bild, das ohne diese Neigung oder Vibration oder mit weniger Neigung oder Vibration aufgenommen wird. Bilder, die mit höherer Beleuchtung aufgenommen werden, können höher gewichtet werden, bis zu einem Niveau, bei dem zu viel Beleuchtung die Qualität des Bildes beeinträchtigt.
-
14 ist eine Darstellung einer Anzeige einer Benutzervorrichtung, die zusammengefügte Segmente zeigt, um ein planares Bild mit Objekten gemäß einer Ausführungsform zu bilden. Eine Anzeige 1406 zeigt eine planare Karte 1402 eines von einem Reinigungsroboter abgebildeten Grundrisses. Die Karte zeigt zwei Teppiche 1404 und 1406. Die Karten sind ausreichend detailliert, um die Fransen der Teppiche zu zeigen und so den Benutzer daran zu erinnern, dass die Teppiche Fransen haben.
-
In einer Ausführungsform wird zunächst ein geradliniges Raster des Grundrisses aus Lokalisierungs- bzw. Positionsdaten erstellt. Die verschiedenen Rechtecke im Raster werden dann mit Bildern der Kamera ausgefüllt. Die den Bildern zugeordneten Positionsmarkierungen werden verwendet, um die geeignete Rasterposition für das Bild anzuzeigen. Anpassungen erfolgen unter Verwendung der überlappenden Bereiche. Der überlappende Teil eines der Bildsegmente wird dann entfernt.
-
15 ist eine Darstellung einer Anzeige einer Benutzervorrichtung, die zusammengefügte Segmente zeigt, um ein planares Bild mit No-Go-Abschnitten zu bilden, die von einem Benutzer gemäß einer Ausführungsform auf der Anzeige markiert werden. Der planare Grundriss 1402 zeigt die Teppiche 1404 und 1408 wie in 14. Der Benutzer hat mit dem Display interagiert, um No-Go-Bereiche 1502 und 1504 um den Rand des Teppichs 1404 herum zu zeichnen, so dass die Bürste des Roboterreinigers nicht am Rand bzw. an den Fransen hängen bleibt. Die No-Go-Bereiche 1506 und 1508 sind auf dem Teppich 1408 gekennzeichnet. Anstatt einen No-Go-Bereich anzugeben, können auch andere Modifikationen des Roboterreinigers angezeigt werden. So kann beispielsweise der Roboterstaubsauger über diese Bereiche fortfahren, aber die Bürste kann abgeschaltet werden, um ein Verfangen bzw. Verheddern zu vermeiden. Die Abbildung ist nur ein Beispiel für die Objekte, die erkannt werden können. Viele andere Objekte können präsentiert werden, wie z.B. ob der Boden gefliest oder mit Teppichen ausgelegt ist, kleine Objekte oder nicht zugeordnete Bereiche, die auf Möbel hinweisen, etc.
-
16 ist ein Flussdiagramm des Verfahrens zum Erzeugen eines Grundrisses mit ebener Ansicht gemäß einer Ausführungsform. Die Kamera erfasst zunächst eine Reihe bzw. Serie von Bildern des Bodens bzw. nimmt diese auf (Schritt 1602). Der Standort bzw. die Position des Roboters wird für jede Position (1604) bestimmt, z.B. durch LIDAR, VSLAM, GPS oder anderweitig. Für jedes der Serie von Bildern ist eine Markierung mit einer Position des Roboters zum Zeitpunkt der Bilderfassung (1606) vorgesehen. Die Bilder werden zugeschnitten, um mindestens ein Segment in jedem der Bilder (1608) zu identifizieren. Eine Transformation des Segments von einer Roboterkameraansicht in eine planare Ansicht wird durchgeführt (1610). Der Grundriss wird mit jedem der Segmente an der Roboterposition in der ebenen Ansicht befüllt, wobei ein Offset einer Differenz zwischen der Roboterposition und der Position des Segments auf dem Boden (1612) entspricht. Der Grundriss wird einem Benutzer (1614) angezeigt. Eine Benutzereingabe wird akzeptiert, um eine Betriebseigenschaft des Roboters (1616) zu ändern.
-
Es können verschiedene andere Ausführungsformen verwendet werden. Die Kamera kann für sichtbares Licht, Infrarotlicht, ultraviolettes Licht, 3D-Punktwolke oder andere Bilder verwendet werden. Die Bilder der Kamera können lokal im Reinigungsroboter, in einer Dockingstation oder ferngesteuert an einem Computer gespeichert und verarbeitet werden, der/die über WiFi, Bluetooth oder eine andere drahtlose Verbindung mit dem Roboter verbunden ist oder entweder drahtlos oder über eine drahtgebundene Verbindung mit der Dockingstation verbunden ist. Ein über das Internet oder ein anderes Netzwerk verbundener Remote-Server kann Bilder speichern und/oder verarbeiten. Das Hochladen von Bildern auf einen Dockingstationsprozessor, einen entfernten Computer oder Server kann asynchron erfolgen, nachdem der Reinigungsroboter einen Lauf abgeschlossen hat, oder in Echtzeit. Die Verarbeitung kann auf verschiedene Prozessoren aufgeteilt werden. So können beispielsweise eines oder mehrere aus dem Anfangszuschnitt, der Korrektur der Linsenverzerrung und der Umwandlung in ein planares Format (Vogelperspektive) im Reinigungsroboter durchgeführt werden, wobei das Zusammenfügen und andere Operationen aus der Ferne erfolgen.
-
Obwohl die Erfindung in Bezug auf bestimmte Ausführungsformen beschrieben worden ist, erkennt ein Fachmann, dass zahlreiche Änderungen möglich sind. Ausführungsformen der Erfindung können mit einer Vielzahl von Computersystemen und Kommunikationstechnologien realisiert werden, einschließlich, aber nicht beschränkt auf die hierin beschriebenen spezifischen Beispiele.
-
Ausführungsformen der vorliegenden Erfindung können mit einer beliebigen Kombination von speziellen Komponenten und/oder programmierbaren Prozessoren und/oder anderen programmierbaren Vorrichtungen realisiert werden. Die verschiedenen hierin beschriebenen Verfahren können auf demselben Prozessor oder verschiedenen Prozessoren in beliebiger Kombination implementiert werden. Sind Komponenten als konfiguriert beschrieben, um bestimmte Operationen durchzuführen, kann diese Konfiguration durchgeführt werden, z.B. durch das Entwerfen von elektronischen Schaltungen zur Durchführung der Operation, durch das Programmieren von programmierbaren elektronischen Schaltungen (wie Mikroprozessoren) zur Durchführung der Operation oder einer beliebigen Kombination davon. Auch wenn sich die oben beschriebenen Ausführungsformen auf bestimmte Hard- und Softwarekomponenten beziehen können, ist es dem Fachmann bekannt, dass auch verschiedene Kombinationen von Hard- und/oder Softwarekomponenten verwendet werden können und dass bestimmte, als in Hardware implementiert beschriebene Vorgänge auch in Software implementiert werden können oder umgekehrt.
-
Computerprogramme, die verschiedene Merkmale der vorliegenden Erfindung beinhalten, können kodiert und auf verschiedenen computerlesbaren Speichermedien gespeichert werden; geeignete Medien sind eine Magnetplatte oder ein Magnetband, optische Speichermedien wie eine Compact Disk (CD) oder eine DVD (digitale vielseitige Festplatte), ein Flash-Speicher und andere nichtflüchtige Medien. Computerlesbare Medien, die mit dem Programmcode codiert sind, können mit einer kompatiblen elektronischen Vorrichtung verpackt werden, oder der Programmcode kann separat von elektronischen Geräten bereitgestellt werden (z.B. per Internet-Download oder als separat verpacktes, computerlesbares Speichermedium).
-
Obwohl die Erfindung in Bezug auf bestimmte Ausführungsformen beschrieben worden ist, ist daher zu beachten, dass die Erfindung alle Änderungen und Äquivalente im Rahmen des Schutzbereichs der folgenden Ansprüche abdecken soll.