(57)【要約】【課題】断不可のエリアへの移動を防止する為の仮想バリヤを生成することができるロボットを提供する。【解決手段】ロボットは、表面に対して移動可能な本体と、本体内にあり、表面上での初期位置での本体の方向に基づく情報を出力する為の１以上の測定デバイスと、本体内にあり、情報に基づいて本体の方向を決定し、本体の方向及び初期位置に基づくバリヤを超える本体の移動を防止することによって、本体の移動をエリアに制限する為のコントローラと、を備える。【選択図】図１
2020126691.tif 000002
【特許請求の範囲】
【請求項１】
本願明細書及び図面に記載されるロボット。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、概して、移動ロボットの移動を制限することに関する。
【背景技術】
【０００２】
移動ロボットは、周辺にある物、障害物、壁及びその他の構造物によって規定される表面の周囲を移動することができる。いくつかの場合には、ロボットの移動を周辺の特定の領域に制限することが望ましいであろう。これを行う為に、ロボットが制限された領域に移ることを防止するようにバリヤを立てることができる。例えば、ロボットが検出することができるビーコンは、制限された領域にロボットが入ることを制限する為に環境に置くことができる。
【発明の概要】
【０００３】
例示的なロボットは、壁、障害物又は他の表面といった進入を防ぐ為の構造的な境界はたとえ存在しなくても、環境の横断不可のエリアを識別することができる。ロボットは、これらエリアへの移動を防止する為の仮想バリヤを生成することができる。このような仮想バリヤを生成する為の様々な技術が本明細書に記載される。
【０００４】
例示的なロボットは、表面に対して移動可能な本体と、本体内にあり、表面上の初期位置での本体の方向に基づく情報を出力する為の１以上の測定デバイスと、本体内にあり、情報に基づいて本体の方向を決定し、本体の方向及び初期位置に基づくバリヤを超える本体の移動を防止することによって、本体の移動をエリアに制限する為のコントローラと、を備える。例示的なロボットは、以下の特徴の１以上を、単独で又は組合せで備えていても良い。
【０００５】
バリヤは出入口を通過して伸び、ロボットの初期位置は出入口内に存在し得る。ロボットは、前方部と後方部とを備え得る。バリヤは、ロボットの後方部に平行なラインに沿って伸び得る。ラインは、ロボットの後方部に接し得る。ラインは、ロボットの視認性の表示器によって示される位置でロボットの本体と交差し得る。バリヤは、ロボットの後方部と平行に伸びる第１のラインと、ロボットの後方部に垂直に伸びる第２のラインとを有することができる。ロボットの初期位置は、ロボットの後方部を第１のラインに隣接して位置付け、ロボットの側部を第２のラインに隣接して位置付け得る。コントローラは、初期方向に対してある角度で回転すること；及びバリヤに実質的に平行な経路に沿って表面のエリアを横断すること、を含む動作を実行するように本体を制御することによって、本体の移動を制限するようにプログラムされ得る。
【０００６】
コントローラは、清掃すべきエリアを表すマップを生成すること；及び、ロボットが横切ることを禁止される位置を示す仮想バリヤをマップ上で指定すること、を含む動作を実行することによって本体の移動を制限するようにプログラムされ得る。バリヤは、バリヤに対応する座標を横断不可として指定することによって指定され得る。
【０００７】
方向を決定する動作及び移動を制限する動作は、ハンドシェイクモードに入ると実行されても良い。コントローラは、ロボット上でユーザによって起動される１以上の動作に応答してハンドシェイクモードを認識するようにプログラムされ得る。
【０００８】
他の例示的なロボットは、下方の表面に沿って移動可能な本体と、構造物に固定されたマーカの１以上の画像を撮像するように構成されたカメラであって、表面に対して上方に向くカメラと、１以上の画像に基づいてマーカの位置を識別し、少なくとも１以上の条件が満たされるまで、マーカの位置によって定義されるバリヤを越える表面のエリアへの本体の移動を防止する、本体内にあるコントローラと、を備える。例示的なロボットは、以下の特徴の１以上を、単独で又は組合せで備えていても良い。
【０００９】
マーカは赤外線画像マーカを含み、カメラは赤外線カメラであり得る。マーカは、構造物に対応する位置の名称、構造物の名称、又は、構造物に対応する位置の名称及び構造物の名称の両方を表す機械読取り可能な情報を含み得る。位置の名称と構造物の名称の少なくとも１つは、移動式デバイスに送信され該移動式デバイス上で表示され得る。
【００１０】
コントローラは、少なくとも表面の部分を表すマップを生成すること；マーカの位置に基づいてマップ上でマーカを識別すること；マップをコンピュータメモリに保存すること；及び、マップ上のマーカの位置を越える表面上のエリアへの本体の移動を禁止するように示すデータを、コンピュータメモリに保存すること、を含む動作を実行するようにプログラムされ得る。コントローラは、マーカの１以上の画像に基づいて、マーカの位置を識別し、１以上の画像に基づいて識別されたマーカの位置を越える、表面上のエリアへの本体の移動を防止するようにプログラムされ得る。コントローラは、１以上の条件が満足されると、画像のマーカの位置によって規定されるバリヤを越える表面上のエリアへの本体の移動を許可し、少なくとも１以上の条件が満たされるまでバリヤを横切って戻る本体の移動を防止するようにプリグラムされ得る。
【００１１】
ロボットは、１以上の遠隔のコンピュータデバイスにコンピュータネットワーク経由でマップを送信する為に、コンピュータネットワークと無線で通信する為の送信器を更に備え得る。１以上の条件は、ロボットがバリヤの範囲内にある表面の面積の少なくともある割合を横断することを含み得る。１以上の条件は、ロボットが、バリヤの範囲内にある表面の面積の少なくともある割合を２回以上横断することを含み得る。
【００１２】
ロボットにより横断可能な環境の少なくとも一部の占有グリッドを生成する例示的な方法は、ロボット内のコントローラによって、環境内のロボットの位置及び方向を決定すること；及び、コントローラによって、占有グリッドに横断不可のセルのバリヤを含ませること、を含む。横断不可のセルのバリヤは、少なくともロボットの位置及び方向に基づいている。
【００１３】
環境内でのロボットの為の占有グリッドを生成する例示的な方法は、ロボットのカメラによって、環境内の１以上の構造物上の１以上の取り外し可能なマーカの１以上の特徴を検出すること；及び、ロボットのコントローラによって、１以上の特徴に基づいて、占有グリッド上に、セルのラインが横断不可であることを表示すること、を含む。例示的な方法は、以下の特徴の１以上を、単独で又は組合せで備えていても良い。
【００１４】
方法は、１以上の特徴の１以上の画像を生成すること；１以上の画像にアフィン変換を適用し、１以上の変換された画像を生成すること；及び、変換された１以上の画像が、保存された１以上の画像に十分にマッチすることを確認すること、を更に含み得る。表示することは、変換された１以上の画像が、保存された１以上の画像に十分マッチすることを確認することに応答して実行され得る。
【００１５】
上記についての有利な点は、以下の内容を非限定的に含む。ユーザは、ロボット及びロボットが移動するエリアを制御することができる。ロボットは、エリア内で物にダメージを与えるリスクを減少させつつロボットが移動することができるエリアに制限され得る。いくつかの実施において、ロボットは、自律的に機能し、ユーザは、ロボットを部屋の特定の領域の外に保つために、ロボットが部屋をカバーする際にロボットを監視する必要はない。
【００１６】
本明細書で説明する、発明の概要に記載されている特徴を含む二つ以上の特徴を組み合わせることで、本明細書に具体的に記載されていない実施形態を形成することができる。
【００１７】
本明細書で説明するロボット及び技術又はその一部は、一つ以上の非一時的機械可読記憶媒体に保存された指示を含み、且つ本明細書で説明する動作を制御する（例えば、調整する）ために一つ以上の処理装置で実行可能である、コンピュータプログラム製品による制御が可能である。本明細書で説明するロボット又はその一部は、様々な動作を実装するための一つ以上の処理装置及び実行可能な指示を保存するためのメモリを含むことができる装置又は電子システムの一部又は全てとして実施することができる。
【００１８】
一つ以上の実施の詳細が、添付図面及び以下の説明に記載されている。その他の特徴及び長所は、明細書、図面、及び特許請求の範囲から明確になるであろう。
【図面の簡単な説明】
【００１９】
【図１】図１は、部屋内にあるロボットを示す図である。
【図２Ａ】図２Ａは、ロボットの斜視図である。
【図２Ｂ】図２Ｂは、図２Ａのロボットの側面断面図である。
【図３Ａ】図３Ａは、他のロボットの斜視図である。
【図３Ｂ】図３Ｂは、図３Ａのロボットの側面図である。
【図４】図４は、移動ロボットと共に用いられる例示的な制御システムを示す。
【図５Ａ】図５Ａは、移動ロボットがロボットの不可視又は仮想のバリヤを生成する過程を示す模式図である。
【図５Ｂ】図５Ｂは、移動ロボットがロボットの不可視又は仮想のバリヤを生成する過程を示す模式図である。
【図５Ｃ】図５Ｃは、移動ロボットがロボットの不可視又は仮想のバリヤを生成する過程を示すフローチャートである。
【図６Ａ】図６Ａは、移動ロボットがロボットの不可視又は仮想のバリヤを生成する別の過程を示す模式図である。
【図６Ｂ】図６Ｂは、移動ロボットがロボットの不可視又は仮想のバリヤを生成する別の過程を示す模式図である。
【図６Ｃ】図６Ｃは、移動ロボットがロボットの不可視又は仮想のバリヤを生成する別の過程を示すフローチャートである。
【図７Ａ】図７Ａは、移動ロボットがロボットの不可視又は仮想のバリヤを生成する別の過程を示す模式図である。
【図７Ｂ】図７Ｂは、移動ロボットがロボットの不可視又は仮想のバリヤを生成する別の過程を示す模式図である。
【図７Ｃ】図７Ｃは、移動ロボットがロボットの不可視又は仮想のバリヤを生成する別の過程を示すフローチャートである。
【図８Ａ】図８Ａは、移動ロボットがロボットの不可視又は仮想のバリヤを生成する更に別の過程を示す模式図である。
【図８Ｂ】図８Ｂは、移動ロボットがロボットの不可視又は仮想のバリヤを生成する更に別の過程を示す模式図である。
【図８Ｃ】図８Ｃは、移動ロボットがロボットの不可視又は仮想のバリヤを生成する更に別の過程を示すフローチャートである。   異なる図面中の類似の参照符号は類似の要素を表す。
【発明を実施するための形態】
【００２０】
本明細書に記載されるのは、床、カーペット、芝、又は他の材質等の表面を横断して、吸引、湿式又は乾式清掃、研磨等を非限定的に含む様々な動作を実行するように構成され
た例示的なロボットである。本明細書に記載される例示的なロボットの動きは、制限されても良い。例えば、ロボットは、ロボットが横断することのできない境界を規定する仮想バリヤを立てても良い。例えば、ユーザは、ロボットが特定の空間に入ることを防止する為の仮想バリヤの位置を選択することができる。図１に示されるように、ロボットは浴室に配置され、（網掛の四角で示された）仮想バリヤが、ロボットが寝室に進入することを防止するように生成される。本明細書に記載されるように、仮想バリヤは、（例えば、ロボットの方向及び位置に基づいて）ロボット自身によって生成されても良く、又は、ロボットが横断することができない仮想バリヤを規定するとロボットに認識可能なマーカなどの１以上の要素との併用で、ロボットによって生成されても良い。マーカは、最初の使用中にロボットが最初にマーカを検出した後に取り除くことができる。その結果、マーカは、ロボットの後の使用の為に環境内に留まる必要な無い。
【００２１】
ロボットは、仮想バリヤを生成する為の他の処理を実施しても良い。いくつかの実施において、ロボットは、ロボットの環境のマップとしての役割を果たす占有グリッド上に仮想バリヤの位置を記録することができ、それにより、移動中に及び／又はミッション間に仮想バリヤの位置をメモリに保持することができる。占有グリッドは、各セルが確率値（例えば、セルが占有される確率）又はセルの状態を示す他の情報を持つ、５ｃｍ〜５０ｃｍサイズのセルの配列としての環境のマップで有り得る。占有グリッドは、環境のマップを、それぞれが環境内でのその位置での障害物の存在を表す２値ランダム変数の均一に間隔をおかれたフィールドとして表すことができる。本明細書に記載される例のいくつかは、ロボットに環境のマップを提供する為に占有グリッドを用いるけれども、他のマッピング技術を用いることもできる。例えば、仮想バリヤが２以上の座標からなる線分、３以上の座標からなる仮想多角形、他の幾何学的形状、又は「投げ縄」形状で表されたグラフのような異なるマップ表現を、本明細書に記載される方法及びシステムと共に用いることができる。
【００２２】
仮想バリヤは、ロボットが特定のエリアから出て行ったり特定のエリアに入ったりしないようにすること、例えば、清掃ロボットが浴室から居間に移動することを防止すること、ができる。例えば、ロボットが部屋全体を掃除し終えたと判定した場合、ロボットは、その部屋の出口にまたがって配置された仮想バリヤを横切ることが許可されても良い。この例では、ロボットは、（例えば、ロボットの充電ベースがその部屋に配置されていない限り）仮想バリヤにより、以前に掃除した部屋に戻ることが禁止されても良い。
【００２３】
本明細書に記載される技術は、部屋を移動することによって部屋の床面を清掃することができる自律型移動ロボットを含む、あらゆる適切なタイプのロボット又は他の装置の動きを制限する為に用いることができる。このようなロボットの例は、図２Ａに示される床清掃ロボット１００である。ロッボト１００は、本体１０２、前方部１０４、及び後方部１０６を備える。ロボット１００は、本体１０２によって規定される３つの相互に垂直な軸である横軸Ｘ、縦軸Ｙ及び中心鉛直軸Ｚに対する様々な動きの組合せを通じて、物理的な環境の床面上を移動する。縦軸Ｙに沿った前方駆動方向は、Ｆで示されており（以下、前方と記す）、縦軸Ｙに沿った後方駆動方向はＡで示されている（以下、後方と記す）。
横軸Ｘは、ロボット１００の右側Ｒ及び左側Ｌ間で伸びている。
【００２４】
ユーザインタフェース１１０は、本体１０２の上部に配置され、１以上のユーザコマンドを受け付け及び／又はロボットの状態を表示する。本体１０２の上部は、ロボット１００が環境の画像を撮像する為に用いることができるカメラ１０９を備えていても良い。ロボットは、カメラ１０９で撮像した画像に基づいて環境中の特徴を検出することができる。カメラ１０９は、カメラ１０９が環境内の壁面の画像を撮像することができるように、ロボット１０９を支持する表面（例えば、床）に対して上方に角度づけることができる。本明細書に記載されるように、いくつかの実施において、カメラ１０９は、環境の壁（又は他の）面上のステッカーや他の視覚的な識別装置といった、ユーザが置くことができ且つ取り外し可能なバリヤ識別マーカを検出することができ、これらのバリヤ識別マーカに基づいて、ロボット１００がそれを超えないように命令される仮想境界を生成することができる。
【００２５】
ロボット１００の右側の壁追従センサ１１３は、ロボット１００がいつ壁に追従しているかを判定するのに用いられる信号を出力することができるＩＲセンサを備えていても良い。ロボット１００の左側Ｌも、このタイプの壁追従センサを有する。本体１０２の前方部１０４は、ロボット１００の走行経路中の障害物を検出するのに用いられるバンパ１１５を備える。バンパ１１５及び／又はロボット本体１０２は、障害物との接触に基づく圧迫等の、ロボット本体１０２に対するバンパ１１５の圧迫を検出するセンサを備えることができる。いくつかの実施において、ロボット１００の上部は、環境内の物体から放射される赤外線放射を検出することができる全方位赤外線（ＩＲ）トランシーバ１１８を備える。これらのセンサは、ロボット１００に対して環境内の境界又は障害物に関する命令を提供する為に、他のユーザ入力と協働することができる。
【００２６】
図２Ｂを参照すると、前方ローラ１２２ａ及び後方ローラ１２２ｂは、清掃面からごみを回収する為に協働する。より詳細には、後方ローラ１２２ｂは反時計回り方向ＣＣに回転し、前方ローラ１２２ａは時計回り奉納Ｃに回転する。ロボット１００は、更に、ロボット本体１０２の後方部１０６を支持するように配置されるキャスタ車輪１３０を備える。ロボット本体１０２の底部は、ロボット１００が床面１０を移動するときにロボット本体１０２を支持する車輪１２４を備える。車輪１２４が駆動されるとき、ロータリエンコーダ１１２は車輪を駆動するモータ軸の位置を測定し、その位置は、ロボット１００が走行した距離を推定するのに用いることができる。
【００２７】
ロボット本体１０２の底部は、光源と低解像度カメラを有する光学マウスセンサ１３３を備える。ロボット１００は、ロボット１００が環境内を移動するときに、ｘ及びｙ方向のドリフトを推定する為に光学マウスセンサ１３３を用いることができる。
【００２８】
ロボット本体１０２は、更に、例えば、（ｉ）ｘ，ｙ，ｚ加速度、及び（ｉｉ）ｘ−軸、ｙ−軸、ｚ−軸（例えば、ピッチ、ロール、ヨー）それぞれの周りの回転を測定する為の３軸加速度センサ及び３軸ジャイロスコープである、内部測定部（ＩＭＵ）１３４を収容する。ＩＭＵ１３４の加速度センサは、ｘ及びｙ方向におけるドリフトを推定する為に用いることができ、ＩＭＵ１３４のジャイロスコープは、ロボットの方向θにおけるドリフトを推定する為に用いることができる。これらの測定デバイス、例えばＩＭＵ１３４、光学マウスセンサ１３３及びロータリエンコーダ１１２は、環境内でのロボット１００のおおよその位置及び方向を決定する為にコントローラが使用する、ロボットの位置及び方向についての情報（例えば、信号として表される測定値）をコントローラに提供する為に協働する。いくつかの実施において、これらの測定デバイスは、単一のデバイス又は２つのデバイスに組み込まれても良い。
【００２９】
図３Ａ及び図３Ｂは、本明細書に記載される例示的な技術により仮想バリヤを生成することができる移動ロボットの他の例を示している。図３Ａを参照すると、いくつかの実施において、移動ロボット２００は、５ポンド未満の重さ（例えば、２．２６ｋｇ未満）である。ロボット２００は、床面を移動して清掃するように構成されている。ロボット２００は、例えばｘ、ｙ、θ成分を有する駆動コマンドに基づいて床面上を移動することができる駆動装置（不図示）によって支持される本体２０２を備える。図示されるように、ロボット本体２０２は、四角形の形状を有し、Ｘ軸及びＹ軸を規定する。Ｘ軸は、右方向Ｒ及び左方向Ｌを有する。Ｙ軸は、ロボット２００の後方向Ａ及び前方向Ｆを規定する。図３Ｂを参照すると、ロボット本体２０２の底部２０７は、ロボット２００の前方部２０４を支持する、取り付けられた清掃パッド２２０を保持する。底部２０７は、ロボット２００が床面を移動するときに、ロボット本体２０２の後方部２０６を回転可能に支持する車輪２２１を備える。移動ロボット２００は、また、コントローラにロボットの現在の方向及び位置を表す情報を出力する為の、本明細書に記載されるような、ＩＭＵ、光学マウスセンサ、及びロータリエンコーダを備えていても良い。
【００３０】
本体２０２は、縦方向（Ａ，Ｆ）又は横（Ｌ，Ｒ）方向における衝突を検出する為の移動式バンパ２１０を備える。つまり、バンパ２１０は、ロボットの本体２０２に対して移動可能であり、この移動は、バンパ２１０がいつ圧迫されたかを検出することにより衝突を検出する為に用いられても良い。
【００３１】
ロボット２００の上部２０８は、ユーザがロボット２００を持ち運ぶのに用いるハンドル２３５を備える。ユーザは、ロボット２００をオン又はオフし、清掃動作を開始し又はその占有グリッドにおける仮想バリヤをマークするように命令する為の清掃ボタン２４０を押下することができる。いくつかの実施において、上部２０８は、また、ライト２４２ａ及び２４２ｂ、又は、ロボット本体２０２の後側２０２Ａに平行なラインに沿って並べられた他の視認性表示器を備える。ライト２４２ａ及び２４２ｂは、発光ダイオード（ＬＥＤ）であっても良い。本明細書に記載されるように、ライト２４２ａ及び２４２ｂは、ロボット２００の占有グリッドにおける仮想バリヤの配置をユーザが決定する為に用いられる基準ラインとしての役割を果たすことができる。
【００３２】
図４を参照すると、ロボット（例えば、ロボット１００、ロボット２００、及び本明細書に記載されるものを含む他の好適な移動ロボット）は、電力システム３５０、駆動装置３６０、ナビゲーションシステム３７０、センサシステム３８０、通信システム３８５、制御回路３９０（以下、コントローラと記す）、及びメモリ記憶素子３９５を備える例示的な制御システム３００を備える。
【００３３】
駆動装置３６０は、床面上でロボットを動かすことができる。駆動装置３６０は、車輪が床面に沿ってあらゆる方向にロボットを進ませるように、車輪（例えば、車輪１２４、２２１）を駆動する為にモータを制御することができる。車輪は、各車輪に供給される駆動レベルに基づいてロボットが方向転換することができるように差動的に動作させられても良い。
【００３４】
コントローラ３９０上で実行される挙動ベースのシステムであっても良いナビゲーションシステム３７０は、ロボットが環境内で移動する為に駆動装置３６０を使用することができるように、駆動システム３６０に命令を送ることができる。ナビゲーションシステム３７０は、駆動装置３６０に駆動命令を発行する為にセンサシステム３８０と通信する。
【００３５】
いくつかの実施において、センサシステム３８０は、環境内での構造的な要素の特徴に関連するデータを示す信号を生成し、それによりナビゲーションシステム３７０が、部屋又はセルの完全なカバレッジを可能にするように環境内を移動する為に用いるべきモード又は挙動を決定することを可能にする、ロボット上に配置されたセンサ（例えば、障害物検出センサ、車輪エンコーダ１１２、光学マウスセンサ、ＩＭＵ１３４）を備える。モード又は挙動は、壁面、障害物面、低い張り出し、棚、及び不均一な床面を含む、環境内での可能性のある障害物を避ける為に用いることができる。センサシステム３８０は、ロボットが環境内の占有グリッドを生成することができるようにデータを集める。
【００３６】
いくつかの実施において、センサシステム３８０は、障害物検出障害物回避（ＯＤＯＡ）センサ、標定ソナーセンサ、近接センサ、レーダセンサ、ＬＩＤＡＲ（遠隔の対象物の距離及び／又は他の情報を見出す為に拡散された光の特性を測定することができる光学遠隔感知を伴う光検出測距）センサ、カメラ（例えば、カメラ１０９、ボリューメトリックポイントクラウドイメージング（volumetric point cloud imaging）、３次元（３Ｄ）画像化又は奥行きマップセンサ、可視光カメラ及び／又は赤外線カメラ）、及びキャスタ車輪（例えば、キャスタ車輪１３０）と共に動作することができる車輪落下センサを含むことができる。センサシステム３８０は、通信センサ、ナビゲーションセンサ、接触センサ、レーザセンサ、及び／又はナビゲーション、障害物の検出、及びロボットの他のタスクを容易化することができる他のセンサを備えることもできる。近接センサは、接触センサ（例えば、容量センサ又は機械式スイッチセンサ等の、物理的なバリヤを持つロボット上のバンパのインパクトを検出することができるセンサ）及び／又はロボットが近くの対象物に接近している場合を検出することができる近接センサの形式をとることもできる。
【００３７】
コントローラ３９０は、入力及び出力パラメータを提供し及び受信する為に各システムと通信することによりロボットの他のシステムと共に動作する。コントローラ３９０は、電力システム３５０、駆動システム３６０、ナビゲーションシステム３７０、センサシステム３８０、通信システム３８５、及びメモリ記憶素子３９５間での通信を容易化することができる。例えば、コントローラ３９０は、ロボットを前方駆動方向Ｆに移動させ、電力充電モードに入らせ、及び／又は個別のシステムに特定の電力レベル（例えば、フル電力に対する割合）を供給する為に、駆動システム３６０のモータに電力を供給するように電力システム３５０に命令することができる。コントローラ３９０は、移動デバイス又は中央コンピュータネットワークと通信することができる送信機を有するワイヤレストランシーバを備えることができる通信システム３８５を動作させることもできる。本明細書に記載されるように、コントローラ３９０は、ロボットの清掃動作中に生成された占有グリッドを、中央コンピュータネットワーク又は個別に移動デバイスにアップロードすることができる。通信システム３８５は、ユーザからの命令を受信することもできる。
【００３８】
コントローラ３９０は、環境をマップ化し、ロボットが環境のマップに定期的に再位置付けされるように命令を実行することができる。挙動は、壁追従動作及びカバレッジ動作を含む。
【００３９】
一般に、壁追従動作の間、ロボットは、壁、障害物（例えば、家具、朝食バー、キャビネットトーキック等）又は環境内の他の構造物（例えば、暖炉、炉辺、階段のへり等）を、（例えばバンパ１１５を用いて）検出し、壁、障害物又は他の構造物の輪郭に追従する。
【００４０】
カバレッジ動作の間、コントローラは、ロボットに、環境の床面をカバーし（例えば、床面の範囲を横断し又は移動し）、清掃するように命令する。ロボットは、牛耕式又はコーンロー型のパターン、らせんパターン、又は擬似乱数バウンスパターン等のカバレッジ経路技術を用いて環境の床面をカバーすることができる。ロボットが床をカバーする際に、コントローラ３９０は、占有グリッドを生成することができる。
【００４１】
いくつかの実施において、コントローラ３９０は、例えば、エンコーダ１１２、光学マウスセンサ１３３、及びＩＭＵ１３４からの情報（例えば、信号）を、ロボットの位置及び方向（姿勢）を決定する（例えば、推定する）為に用いることのできるオドメトリデータを生成する為に用いても良い。例えば、コントローラは、ＩＭＵ１３４の３軸ジャイロスコープからのジャイロスコープ信号を受信することができる。ジャイロスコープ信号は、ロボットが床面上を移動する際のロボットの本体の方向と位置に基づき得る。コントローラは、ロボットが走行した距離に基づくエンコーダ信号を伝えるエンコーダ１１２からの信号を用いて推定を改善することもできる。同様に、光学マウスセンサ１３３は、ロボットが床面を移動する際のロボットのドリフト量を決定する為に用いることができる。
【００４２】
メモリ記憶素子３９５は、ロボットが移動する一つ又は複数の部屋の占有グリッドを保存するマッピングモジュール３９７を備え得る。占有グリッドは、清掃動作の後に通信システム３８５を用いて遠隔のコンピュータデバイスにアップロードされ得る。いくつかの実施において、占有グリッドは、所定の境界、物理的境界、及び他の境界（例えば、仮想の又は使用で確立されたバリヤ又は境界）の範囲内でロボットを移動させるようにロボット１００に命令する為に、コントローラ３９０によって生成され使用される仮想マップを含むことができる。占有グリッドは、環境の物理的レイアウトを含んでいても良い。例えば、占有グリッドは、エリアの物理的なレイアウトを示すデータを含み、エリアと障害物の両方を表しても良い。占有グリッドは、環境の境界、その中の障害物の境界、環境内の物理的障害物に相当し或いは相当しないかもしれない、清掃動作を開始する前に生成される境界、及び／又はロボットが横断する内部床空間を含むことができる。
【００４３】
占有グリッドは、データベース技術を用いること、様々な連想型データ構造を用いること、又は他のあらゆるデータ編制方法を非限定的に含む、あらゆる好適なやり方で、特性の位置のマップとして、実施されても良い。したがって、結果として得られるマップは、目に見えるマップである必要はなく、非一時的なコンピュータ読取り可能なメモリ内に保存されるデータを通じて定義されても良い。マップは、異なる精密度と正確さを持つ実際の面に相当していても良い。精密度は、例えば表面の部分に対応する個別のマップセルの使用により影響されるであろう。表面の１０ｃｍ×１０ｃｍ部分又は表面の５ｃｍ×５ｃｍの部分（例えば、それらの四角であることや、全て同じサイズである必要は無い）であるそれらのセルのサイズは、観察された特性の細分性に制限を課すことによって精密度に影響を与えるであろう。正確さは、センサ品質及び本明細書に記載される様々な他の要因を含むその他の事項により影響されるであろう。
【００４４】
いくつかの実施において、占有グリッドは、各セルが横断又は清掃の為のエリアの状態を示す関連の変数を有する、セルの２次元グリッドを含む占有グリッドである。占有グリッド内の各セルは、セルが横断可能か又は横断不可かを示す値を割り当てられることができる。グリッドの各セルには、環境内の選択された原点（０，０）セルに基づく座標（ｘ、ｙ）を割り当てることができる。選択された原点は、例えば、ロボットの充電ドック、又は、部屋内の特定の位置である。各セルは、その４つの辺が他のセルの辺と一致する四角いエリアを表すことができる。いくつかの実施において、セルは、１〜１００ｃｍの辺の長さを有することができる。例えば、グリッドは、各セルが１０ｃｍ×１０ｃｍのセルのグリッドであり得る。占有グリッドのセルは、清掃動作の開始前に又は清掃動作中に集合させることができる。いくつかの場合には、１つの清掃動作から集合させられたセルは、保存され、その次の清掃動作に使用することができる。清掃動作の前に、占有グリッドのセルのサブセットは、横断不可であるとしてマークすることができる。いくつかの場合には、セルは、ロボットにとって横断不可の境界であることを表す、ユーザが確立した仮想バリヤ（例えば、仮想バリヤは占有グリッド内の横断不可のセルのラインによって定義されても良い）を形成する。本明細書に記載されるように、セルは、以前の清掃動作の一部としてマークすることができ、又は、ロボットは、占有グリッドのいくつかのセルを横断不可のセルとして予め集合させる為の命令を受信することができる。別の実施において、占有グリッドは、仮想バリヤが２以上の座標によって定義される線分、３以上の座標によって定義される仮想多角形、又は、複数の座標で定義される他の幾何学的形状又は「投げ縄」形状として表される占有グラフであり得る。
【００４５】
清掃動作の間、コントローラ３９０は、ロボットが横断した各セルの座標（ｘ，ｙ）を保存する。壁追従挙動の間、例えば、コントローラ３９０は、ロボットの足跡の下の全てのセルを横断可能なセルとしてマークし、ロボットが壁を通過することができないことを示す為に、追従している壁に対応するセルを横断不可としてマークする。本明細書に記載されるように、コントローラ３９０は、環境内での構造的な要素（例えば、壁、障害物等）の特徴を表す、セルの特定のシーケンス、組合せ、グループ等を認識するように構成されていても良い。いくつかの実施において、マップ内のセルの値を決定する前に、コントローラ３９０は、セルの値を未知に設定する。次に、ロボットが壁追従挙動又はカバレッジ挙動中に移動する際に、その経路に沿ったセルの値が横断可に設定され、セルの位置は、原点からの距離によって決定される。清掃動作中、いくつかの場合には、センサシステム３８０は、追加として又は代替として部屋内に配置された特徴（例えば、マーカ）に応答し、コントローラ３９０は、特徴の感知に基づいて占有グリッド内に仮想バリヤを示しても良い。
【００４６】
本明細書に記載されるようなセルを横断不可とマークすることに加えて、仮想バリヤ及び横断不可のセルを生成する為のいくつかの方法もまた本明細書に記載される。清掃動作の間、コントローラは、ロボットに、占有グリッド内で横断不可と指定されたエリアを回避するように命令することができる。占有グリッドがたびたびロボット内（例えば、メモリ記憶素子３９５）に保存される間、占有グリッドは、通信システム３８５を通して、ネットワークサーバ、移動式デバイス、又は他の遠隔のコンピュータデバイスに送信されても良い。
【００４７】
ここに示される例は、環境、及び、環境の為の対応の占有グリッドについて記載する。図５Ａ、図５Ｂ、図６Ａ、図６Ｂ、図７Ａ、図８Ａ及び図８Ｂにおける占有グリッドは、横断不可のエリアを識別する為の網掛のセル、横断可のエリアを識別する為のブランクセル、及び未知のセルを識別する為のマークを付されていないエリアを使用する。対応の占有グリッドに示されたロボットは、環境内でのロボットの現在の位置についてのコントローラの推定値を識別する。
【００４８】
図５Ａ、図５Ｂ、図６Ａ、図６Ｂ、図７Ａ、図８Ａ及び図８Ｂに記載された占有グリッドは、環境の横断可及び横断不可のエリアを示す為のセルを含む占有グリッドの例を示すけれども、他に実施において、コントローラは、環境の範囲内での位置に対応する座標値に依存する占有グリッドを生成することができる。例えば、仮想バリヤは、ロボットが横断することのできるライン又は領域の頂点を示す２以上の２次元座標のセットであり得る。
【００４９】
いくつかの実施において、ロボットは、環境内で複数の部屋を清掃する為の複数の清掃動作を実行しても良い。図５Ａを参照すると、ロボット４００が（図５Ａの部分４２１に示される）第１の部屋４１２及び第２の部屋４１４を含む環境４１０の床面１０を移動する際に、ロボット４００のコントローラ３９０は、環境４１０についての対応の占有グリッド４２０（例えば、図５Ａの部分４２３に示されるような、メモリ記憶素子３９５に保存された占有グリッド）を生成する。出入口４１５は、第１の部屋４１２と第２の部屋４１４を分離する。本明細書により詳細に記載されるように、ロボット４００は、第１の部屋４１２を最初に清掃し、次に、第１の部屋４１２に戻ることなしに第２の部屋４１４を清掃する為に進行する。
【００５０】
ロボット４００は、経路４２５に沿ってコーンロー型のパターンを実行する。経路４２５は、第１領域４３０ａに概ね制限される。領域４３０ａ及び４３０ｂは、ロボット４００が環境を分割する為に設定する等しい幅の領域であっても良い。この領域は、任意に選択されても良く、またそれゆえ、物理的な境界、障害物、又は環境内の構造物に相当しないものであっても良い。
【００５１】
ロボット４００が経路４２５に沿ってコーンロー型のパターンを実行することによってカバレッジ挙動に従っているとき、領域４３０ａにロボット自身を制限する為に、ロボット４００は、環境の領域４３０ｂにロボット自身が入るのをやめても良い。コントローラ３９０は、ロボット４００に、領域４３０ｂに入るのを避けるように及びコーンロー型のパターンの列を実行する間旋回するように命令することができる。占有グリッド４２０において、コントローラ３９０は、環境の壁に相当する横断不可セルを表示し、及び、横断可のセルを、カバレッジ挙動中にロボット４００がカバーすることができたエリアとして示す。
【００５２】
コントローラ３９０がロボット４００が領域４３０ａの横断可のエリアをカバーすることができていたと判定する場合、ロボット４００は、環境４１０の他の領域（例えば領域４３０ｂ）に進む為に壁追従挙動を実行することができる。コントローラ３９０は、ロボット４００が１以上の条件に適合したと判定することによって、ロボット４００が第１の領域４３０ａをカバーすることを完了したと判定することができる。図５Ｂを参照すると、部分４２１に示されるように、ロボット４００は、壁追従を実行する為に経路４４０を追従することができる。ロボット４００は、ロボット４００がカバレッジ挙動を完了したときの位置に対応する初期位置４４０ａで動き始める。経路４４０上の位置４４０ｂにて、ロボット４００は、第１の領域４３０ａから第２の領域４３０ｂに横断する。この時点で、コントローラ３９０は、ロボット４００が新たな領域に入ったと判定する。コントローラ３９０は、例えば、ロボット４００が横断可のセルから未知のセルに移動したと判定することによって、この判定を成すことができる。コントローラ３９０は、ロボット４００が第１の領域４３０ａを出て第２の領域３４３０ｂに入ったと判定することもできる。
【００５３】
ロボット４００が清掃動作が既に実行された領域４３０ａに戻ることを防止する為に、コントローラ３９０は、部分４２３に示されるようにロボット４００が既に清掃を行った領域をマークする仮想バリヤを設けることができる。例えば、コントローラ３９０は、以前に清掃されたエリアの位置又は境界を識別し、そのエリアにロボットが戻ることを禁止する為に、占有グリッド４２０を更新することができる。（例えば、ドック入れを行わない）清掃動作中、コントローラ３９０は、ロボット４００が清掃動作中にそれらのセルを再度清掃することを禁止する為に占有グリッド４２０中の清掃された全てのセルをマークすることができる。いくつかの例では、コントローラ３９０は、部屋４１２の周囲を構成する周辺セルを、占有グリッド４２内において横断不可とマークすることができる。いくつかの場合には、コントローラ３９０は、ロボット４００が既に清掃した領域にロボットが戻ることをやめさせる為に、領域４３０ａの横断可のセルを取り囲むセルを、横断不可であるとしてマークすることができる。他の場合には、コントローラ３９０は、領域４３０ａ内の全てのセルを横断不可であるとして示すことができる。
【００５４】
図５Ｃを参照すると、フローチャート４６０は、ロボットが第１のエリア及び第２のエリアを清掃する為の方法を図示している。動作４６２において、ロボットは、第１のエリア内で第１の清掃動作を実行する。ロボットは、ロボットのコントローラによって発行される命令に応答して第１の清掃動作を実行することができる。ロボットは、第１のエリアをカバーする為のコーンロー型のパターン又は他のパターンに追従することを含み得る、本明細書に記載されるカバレッジ挙動を実行することができる。ロボットがカバレッジ挙動を実行する際に、コントローラは、ロボットが横断した第１のエリアの部分に対応する、ロボット（例えば、コントローラにより操作することのできるメモリ記憶素子）に保存された占有グリッド内のセルを横断可であるとしてマークすることができる。清掃動作は、ロボット１００のような乾式清掃ロボット、ロボット２００のような湿式清掃ロボット、或いは環境上を移動するよう構成された他の移動式ロボットによって実行されても良い。
【００５５】
動作４６４において、ロボットは、コントローラ経由で、第１の清掃動作が完了したと判定する。コントローラは、本明細書に記載される１以上の条件に基づいて完了を判定することができる。
【００５６】
動作４６６において、ロボットは第２のエリアを移動する。いくつかの例において、ロボットは、第２のエリアを識別する為に第１のエリアの周囲を横断することができる。他の例において、第１のエリアは、（例えば、最大幅となるよう）人為的に境界を限られても良く、第２のエリアは第１のエリアに隣接したものとすることができる。コントローラは、ロボットが移動を実行するように命令することができる。概して、コントローラは、ロボットが既に清掃を行ったエリアを出て、まだ清掃を行っていないエリアに入ったと判定しようと動作することができる。コントローラは、ロボットが第１のエリアの清掃動作を完了した後で、周囲を横断するように命令することができる。コントローラは、ロボットが１以上の条件を満たすことを検出することに基づいて、清掃動作が完了したと判定することができる。いくつかの場合には、ロボットは、ロボットが第１の部屋の面積の、例えば、５０％〜７５％、７５％〜１００％、１００％〜１５０％、１５０％〜２００％、２５０％〜３００％の割合をカバーするまで、清掃動作を継続しても良い。所望の割合を完了すると、コントローラは、ロボットに仮想バリヤを横断するように命令し、第２の部屋内での第２の清掃動作を開始しても良い。
【００５７】
いくつかの実施において、ロボットは、ロボットがある下限の充電割合、例えば１０％、５％、又はそれ未満に到達するまで清掃動作を継続しても良い。下限の充電割合に達すると、コントローラは、ロボットのバッテリを再充電する為に充電ドック又は充電ステーションに戻るように、ロボットに命令することができる。いくつかの実施において、ロボットは、充電ドックに戻る為に、占有グリッド内に保存された仮想バリヤを横断することができても良い。
【００５８】
いくつかの場合には、第１のエリアは部屋であり、したがって、第１のエリアの周囲は部屋の壁である。他の実施において、第１のエリアは（本明細書に記載されるように）領域であり、第１の領域の周囲は、第１の領域の広がりの縁に対応するであろう。図５Ａから図５Ｂを参照して記載したように、ロボット４００が壁追従挙動を実行するとき、コントローラ３９０は、例えば、（ｉ）ロボット４００が第１の領域４３０ａを出たことを検出することによって、又は（ｉｉ）ロボット４００が横断可のセルから未知のセルに移動したことを検出することによって、第１の部屋４１２又は第１の領域４３０ａの周囲を横断したと判定することができる。ロボットは、コントローラからの命令に応答して第１のエリアの周囲を横断することができる。
【００５９】
動作４６８において、コントローラは、例えば、第１のエリアと第２のエリアを分離する仮想バリヤを設けることができる。コントローラは、コントローラが操作することのできるメモリ記憶素子上に保存された占有グリッド上に仮想バリヤを表示することができる。例えば、いくつかの実施において、コントローラは、第１のエリアにおける横断可のセル（例えば、横断可のセルの行又は列、セルの行又は列を形成する２以上の横断可のセル）に隣接する未知のセルが横断不可（例えば、横断不可のセルが仮想バリヤを定義する）であることを、占有グリッド上で示す表示することができる。結果として、横断不可のセルは、横断不可のセルの行又は列を形成することができる。占有グリッドに依存しない境界を定義する他の方法を用いることもできる。いくつかの場合には、コントローラは、未知のセルに隣接する第１のエリアの横断可のセルが、現在、横断不可であることを表示することができる。
【００６０】
動作４７０において、ロボットは、仮想バリヤを横断することなく、第２のエリアを清掃する為に第２の清掃動作を実行する。例えば、ロボットは、第１のエリアの周囲をマーキングする仮想バリヤを横断することなしに、第２のエリアを清掃する。コントローラは、ロボットに第２の清掃動作を実行する為の命令を発行することができる。第２の清掃動作は、カバレッジ動作の実行であり得る。ロボット自身が第１の領域に入ることを防止する為に、コントローラは、ロボットが、動作４６８で設けられた仮想バリヤを横断することを防止することができる。
【００６１】
いくつかの例では、ユーザは、ロボットの為の仮想境界を設定することを望むであろう。例えば、ユーザは、ロボットが特定の部屋又はエリアから出ないことを望むであろう。ユーザに仮想境界の位置を設けることを可能とすることは、ロボットが清掃を行う場所についての追加の制御をユーザに与えるという有利さを提供する。いくつかの実施において、コントローラは、ロボットの移動を環境内のエリアに制限する為の命令をユーザから受信することができる。ユーザは、ロボット上でセンサを作動させること（例えば、１以上のボタンを押すこと）によって命令を伝達する。いくつかの場合には、ユーザは、仮想バリヤの位置を設ける為に無線接続を用いてコントローラに命令を送る為に、スマートフォン、タブレット又は他のコンピュータデバイスといった移動式デバイスを用いることができる。ユーザは、ロボットが出入口を通して部屋から出ないようにすることができ、したがって、ロボットが出入口を通して出て行くことを防止する、出入口に配置された仮想バリヤを生成するように、コントローラに命令することができる。いくつかの実施において、ユーザは、ロボットユーザインタフェースを介してロボットの動きを制限する情報を入力する。
【００６２】
図６Ａ〜図６Ｃに図示された例では、ユーザは、ロボット２００が環境５０２の床面１０を清掃する為の清掃動作を実行する前に、環境５０２内にロボット（例えば、図３Ａ〜３Ｂを参照して説明したロボット２００）を置く。ロボット２００のコントローラは、環境５０２に対応する占有グリッド５１８を生成する。この例では、ユーザは、第１の清掃動作中に第１の部屋５０４を清掃し、第２の清掃動作中に第２の部屋５０６を清掃することを望むこともできる。ユーザは、一つの清掃動作において、ロボット２００に、環境５０２内の第２の部屋５０６を清掃することなしに第１の部屋５０４を清掃させても良い。
【００６３】
図６Ａを参照すると、部分５２１に示されるように、ユーザは、ロボット２００の本体２０２の後側２０２Ａが環境５０２における壁５１２及び出入口５１７に平行になるように、ロボット２００を環境５０２内に位置づける。ユーザは、次に、部分５２３に示されるように、占有グリッド５１８内に仮想バリヤ５１６を生成するようにコントローラ３９０に命令する。いくつかの例において、仮想バリヤ５１６は、占有グリッド５１８において、環境５０２内のロボット２００の初期位置及び方向に基礎をおく横断不可のセルのライン（例えば、行又は列）として現れる。仮想バリヤ５１６は、ロボット２００の後側２０２Ａに平行であり得る。
【００６４】
いくつかの例では、仮想バリヤ５１６は、ロボット２００の後ろ側２０２Ａを通過する。他の場合には、仮想バリヤ５１６はロボット本体と交わる（例えば、仮想バリヤは、ライト２４２ａ及び２４２ｂを通過し、ユーザがライトを仮想バリヤの位置と一直線に合わせることを可能にする）。したがって、ライト２４２ａ及び２４２ｂは、仮想バリヤ５１６の位置の視認できる標識となる。仮想バリヤ５１６は、ロボット２００が第１の部屋５０４から環境５０２の部屋５０６へと出入口５１７を通過することを防ぐことができる。いくつかの実施において、ロボット２００が出入口５１７６を通過することを防ぐ仮想バリヤ５１６をコントローラが生成するように、ロボットが出入口５１７に配置される。
【００６５】
ユーザが仮想バリヤ５１６を生成するようにコントローラに命令することを完了した後、ユーザは、ロボットを再度配置することなく、部屋５０４内の清掃動作を開始することができる。ここで図６Ｂを参照すると、ロボット２００が清掃動作を開始するとき、ロボット２００は、（例えば、図６Ｂの部分５２３に示されるように）ロボット２００の前方駆動方向Ｆが仮想バリヤ５１６と平行になるように９０度回転することができる。９０度の回転は、カバレッジ挙動においてロボット２００が仮想バリヤ５１６に隣接するコーンロー型のパターンの第１の行を実行することを確実にする。いくつかの場合には、ドリフトによる、コーンロー型のパターンの第１の行への影響は最小限である。よって、ロボット２００は仮想バリヤを横断することはなさそうであるから、ロボット２００に仮想バリヤ５１６に平行な第１の行を実行させることは有利である。また、９０度の回転は、コーンロー型パターンにおいて仮想バリヤ５１６で１８０度の回転が生じることを防ぐことができる。ロボット２００が回転した後、ロボット２００は、次に、カバレッジ挙動（例えば、コーンロー型パターン）を実行する。いくつかの場合には、ロボット２００は、前方駆動方向に短い距離（例えば、２〜５ｃｍ、５〜１０ｃｍ、１０〜１５ｃｍ）移動し、次に、ロボット２００の横側が仮想バリヤ５１６と平行となるように９０度回転しても良い。例えば、ロボットは、視認できる標識（例えば、ライト２４２ａ、２４２ｂ）とロボット２００の後方側との間の距離だけ前方に移動しても良い。
【００６６】
ユーザは、多数の方法及びメカニズムを通じて、ロボット２００に命令を提供することができる。コントローラは、ロボットを、コントローラが占有グリッドに仮想バリヤを配置させるよう準備するハンドシェイク又は仮想バリヤモードに位置付けるトリガに応答することができる。ロボット２００が、ハンドシェイクモードにあるとき、コントローラは仮想バリヤ５１６を配置する。トリガは、例えば、（例えば、本明細書に記載されるように適切なセンサを用いて地面を検知することによって決定されるように）ロボットが地面上に又はそれから離れている間に、ユーザがロボット２００のバンパ２１０の圧迫とロボット２００の清掃ボタン２４０の押下を同時に行うことである。ユーザは、トリガを切り換え、ハンドシェイクモードを開始する為に、他のやり方でロボット２００を操作しても良い。たとえば、ユーザは、ロボット２００を振ることによって、ロボット２００の加速度センサ又はジャイロスコープを起動させても良く、振れが検出されると、ロボット２００は仮想バリヤの一つ又は両方を置く為にハンドシェイクモードに入る。いくつかの場合には、ユーザは、移動式デバイスを用いてロボット２００に命令しても良い。ユーザは、ロボット２００を環境内に位置付け、移動式デバイスに読み込まれたアプリケーションを用いることにより、ロボット２００に命令を行っても良い。いくつかの実施においては、ロボットをハンドシェイクモードに位置付けると、コントローラは、仮想バリヤを生成する為にユーザからの更なる命令を待つ。ロボットにハンドシェイクモードに入るように命令した後、ユーザは、仮想バリヤ５１６を占有グリッド内に配置するように他の命令を発行することができる。
【００６７】
いくつかの実施において、コントローラは、第１の仮想バリヤ５１６に対して、垂直であるか又はそうでなければ角度をつけた第２の仮想バリヤを生成することもできる。第２の仮想バリヤは、清掃が困難なエリア又は壊れやすい家具や家庭のアイテムがあるエリアであろう領域に対しロボットを制限することができる。第２の仮想バリヤは、占有グリッド５１８内の横断不可セルの仮想バリヤであっても良い。仮想バリヤは、ロボット２００の初期位置及び／又は方向に基づいて生成することができる。いくつかの例では、第１及び第２の仮想バリヤは、Ｌ字型の横断不可セルを形成することができる。いくつかの場合には、第２の仮想バリヤは、ロボット本体２０２の右側２０２Ｒ又は左側２０２Ｌと一致しても良い。他の例では、コントローラは、第２の仮想バリヤがライト２４２ａ及び２４２ｂを通過するように、第２の仮想バリヤを生成しても良い。コントローラは、第１の仮想バリヤを生成する為の命令に応答して第２の仮想バリヤを生成しても良い。他の実施において、コントローラは、ユーザからの仮想バリヤを生成する為の第２の命令に応答して第２の仮想バリヤを生成する。いくつかの場合には、コントローラは、ユーザが最初に又は２回目にロボットをハンドシェイクモードに位置付けるときに、第２の仮想バリヤを配置する。コントローラが２つの仮想バリヤを生成する場合には、ロボット２００は、仮想バリヤ５１６と平行になるように方向転換することなしに、清掃動作を開始しても良い。いくつかの場合には、ロボット２００は、ロボット２００が生成された仮想バリヤと平行になるように方向転換することによって、清掃動作を開始しても良い。
【００６８】
図６Ｃを参照すると、フローチャート５６０は、ロボットがユーザからの命令に基づいて仮想バリヤを生成する為の方法が図示されている。このフローチャートは、ユーザによって実行される動作に対応するユーザ動作５６５と、ロボットによって実行される動作に対応するロボット動作５７０とを含んでいる。
【００６９】
動作５７２において、ユーザは、ロボットを環境の範囲内に位置付ける。ロボットの位置は、ロボットの開始位置及び仮想バリヤの位置の両方としての役割を果たすであろう。このように、ユーザは、ロボットの特徴が、ロボットが横切って欲しくないとユーザが望む環境内の縁端（それにまたがって仮想バリヤが設けられる）と一直線に合う（例えば、平行となる）ように、ロボットを位置付けることができる。例えば、本明細書に記載されるように、特徴は、ロボット上のライト又はロボット本体の表面であり得る。いくつかの場合には、ユーザは、ロボットが環境内で二つの縁端を横切らないように２つの（例えば、直交する）仮想バリヤを生成することを望むことができ、このような場合、ロボットは、それぞれが仮想バリヤの位置及び方向を示す２つの特徴を有することができる。
【００７０】
動作５７４において、ユーザは、ロボットが仮想バリヤモードに入るように命令することができる。ユーザは、ロボットがハンドシェイクモードに入ることを引き起こす、本明細書に記載されるいずれかの方法、又は他の適切な方法を用いてこの命令を発行することができる。動作５７６において、ロボットのコントローラは、命令を受け、ロボットを仮想バリヤモードに位置付ける。
【００７１】
動作５７８において、ユーザは、ロボットに仮想バリヤを生成するように命令する。仮想バリヤを生成する為の命令は、ロボットを仮想バリヤモードに位置付ける為の（例えば、ロボットをハンドシェイクモードに位置づける為の）命令であり得る。いくつかの場合には、ユーザは、ロボットを仮想バリヤモードに位置付ける為の命令のほかに、仮想バリヤを生成する為の引き続いての命令を発行しても良い。例えば、ユーザは、更なるセンサに、仮想バリヤを生成する為の命令を送信させても良い。
【００７２】
動作５８０において、コントローラは、仮想バリヤを生成する為の命令を受信する。コントローラは、センサが本明細書に記載されるやり方で作動したことを検出することによって命令を受信しても良い。いくつかの場合には、ロボットは、コントローラがユーザから命令を受信する為に移動式デバイスと通信することを可能にする無線トランシーバを備えていても良い。
【００７３】
動作５８２において、コントローラは、仮想バリヤを生成する。例えば、コントローラは、仮想グリッド内のセルを仮想バリヤの一部であるとして定義することができる。例えば、仮想バリヤは、横断不可として指定されている１以上のセルに対応し得る。いくつかの実施において、仮想バリヤは、占有グリッド内のセルと関連して定義されなくても良い。代わりに、仮想バリヤは、占有グリッド上の座標、又は占有グリッドという側面の範囲内又は範囲外の他のいくつかの特徴に基づいて定義されても良い。例えば、仮想バリヤは、ロボットの初期方向及び位置に基づいて定義される。これらの方向の測定値は、例えば、ロボットの本体の範囲内に収容されたジャイロスコープから出力された信号に基づいて取得されても良い。コントローラは、ハンドシェイクに続いてすぐに、占有グリッド内でのロボットの又はその一部の初期位置を知ることができる。この情報、特に方向及び位置、を用いて、コントローラは、ロボットが越えることのできない占有グリッド（又はいずれかの場所）上の境界（例えば、直線）を定義することによって仮想バリヤを生成しても良い。いくつかの場合には、コントローラは、本明細書に記載されるように、２以上の仮想バリヤを生成しても良い。いくつかの例では、ユーザは、ロボット上でダイレクトに又は遠隔のインタフェースを経由して、コントローラに適切なパラメータを提供することによって仮想バリヤの長さを選択することができる。例えば、ユーザは、ロボットがドアを通過することを禁止する為にフィート（０．９〜１．６メートル）のバリヤ長さを選択することができる。いくつかの例では、ユーザは、空きのスペースを更に分割する為に完全な長さのセルのバリヤを行列の状態に位置付けるようにロボットに命令することができる。他の場合には、ユーザは、ロボットが越えるべきではない４つの仮想バリヤを形成する、ロボットを取り囲む四角い領域を選択することができる。
【００７４】
動作５８４において、コントローラは、仮想バリヤの生成の視認できる標識を提供しても良い。例えば、コントローラは、ロボット上のライトに、聞き取れる警告を発行するように命令することができる、
【００７５】
動作５８６において、ユーザは、ロボットに環境を清掃するように命ずる。ユーザは、ロボットの清掃ボタンを押下することによって、又は、ロボットを遠隔制御する為に移動式デバイスを用いることによって、ロボットに清掃を行うように命令することができる。仮想バリヤは、ユーザの移動式デバイス上に表示されたマップに表示され得る。
【００７６】
動作５８８において、コントローラは、仮想バリヤを横断することなく環境を清掃する為の命令を受信する。ロボットは、環境の床面をカバーする為のコーンロー型挙動又は他の移動パターンを実行することによって環境を清掃する為の命令を実行することができる。コントローラは、ロボットの前方駆動方向が仮想バリヤと平行になるように、ロボットに方向転換するように命令しても良い。いくつかの実施において、コントローラは、ロボットを仮想バリヤに平行になるよう方向づける為に、ロボットに実質的に９０度回転するように命令する。
【００７７】
図６Ａ〜図６Ｃに図示された例は、図３Ａ〜図３Ｂに記載されたロボット２００を使用すると記載されてきたけれども、他の構成を有するロボット１００及び他の移動式ロボットが、本明細書に記載される方法を容易に実施することができる。図６Ａ〜図６Ｃの方法を実施する為に用いられるロボットは、ユーザが仮想バリヤの配置の参照として用いることができる、他の特色のある表面又は特徴を有することができる。ロボット２００は四角いロボットであるとして記載されてきたけれども、いくつかの場合には、本明細書に記載された方法を実施するロボットは、円形又は三角形のロボットであっても良い。その結果、生成された仮想バリヤは、ロボットの背後の表面に接しても良い。ロボットは、ユーザがコントローラに仮想バイヤを生成するように命令する為に作動させることができる追加の又は代替のセンサを有することもできる。
【００７８】
仮想バリヤを生成する為の本明細書に記載される方法は、ロボットが清掃動作を開始する前に生じ得る。いくつかの実施において、ロボットは、ロボットが仮想バリヤを生成し、又は、追加の仮想バリヤが清掃中に生成される前に、清掃動作を開始し、環境を移動する。例えば、ロボットは、環境内に配置された特徴、マーカ、又は他の視認できる印を検出することができ、占有グリッドに仮想バリヤを位置させることによって、又はロボットが越えることのできない１以上の仮想バリヤを定義することによって、特徴に応答する。このような標識の例は、機械で識別することができ、環境内に位置付けることができるステッカー又はタグであり得る。
【００７９】
上述したように、ロボット１００は、環境の壁面を画像化するためのカメラ１０９を備える。一例として図７Ａを参照すると、ロボット１００は、（例えば、部分６２１に示されるように）清掃動作の一部として環境６０２の床面１０上でカバレッジ挙動を実行している。コーンロー型パターンを実行することで、ロボット１００は、経路６０４に追従し、（例えば、部分６２３に示されるように）占有グリッド６０６内のセルを横断可又は横断不可として指定する。環境６０２は、第１の部屋６０７及び第２の部屋６０８を有する。ロボット１００は、第１の部屋６０７を清掃する為の清掃動作を実行している。経路６０４に沿って、ロボット１００は、カメラ１０９を用いて環境６０２の壁面６０９を感知する（例えば、壁面６０９の画像を撮像する）。
【００８０】
経路６０４上の地点６０４ａにおいて、ロボット１００は、壁面６０９に配置されたマーカ６１０ａ、６１０ｂを検出する。ユーザは、ロボット１００が、環境の、ある領域に入ることを制限する為に、壁面６０９上にマーカ６１０ａ、６１０ｂを配置しても良い。例えば、マーカ６１０ａ、６１０ｂは、ロボット１００が横断可のエリアは、ロボット１００の占有グリッド６０６内では横断不可としてマークされるべきであると示しても良い。マーカ６１０ａ、６１０ｂは、例えば接着剤又は静的な支持体を介して、壁面６０９に固定され得る。マーカ６１０ａ、６１０ｂは、環境６０２の表面にカップを固定する為の吸引力を生成することができる吸引カップを備えていても良い。いくつかの実施において、マーカ６１０ａ、６１０ｂは、通常の状態でヒトが感知できるものではない、ロボット１００の赤外線トランシーバによって検出することができる赤外線ドット又はインクを含む。
【００８１】
図７Ａ〜図７Ｂに示された例において、特徴は、第１の部屋６０７を第２の部屋６０８に接続する出入口６１１である。ユーザは、ロボット１００が壁面６０９に向けて上方に傾けられたカメラ６０９を用いてマーカ６１０ａ、６１０ｂを検出することができるように、マーカ６１０ａ、６１０ｂを壁面６０９の床面の上の約１ｍ〜２ｍに配置する。いくつかの例では、マーカ６１０ａ、６１０ｂは、出入口の上方に又は出入口の内部にあっても良い。例えば、ユーザは、上方に傾けられたカメラ１０９がマーカ６１０ａ、６１０ｂを検出することができるように、出入口の上方にあって床面に向かって下方に向いた水平面上に、マーカ６１０ａ、６１０ｂを配置しても良い。出入口６１１隣接したマーカ６１０ａ、６１０ｂの配置は、仮想バリヤの位置を設定し、ロボット１００が第１の部屋のみを清掃し、第２の部屋６０８には入らないことを確実にする。
【００８２】
ここで図７Ｂも参照すると、経路６０４の地点６０４ａにおいて、ロボット１００は、カメラ１０９を用いて壁面６０９上のマーカ６１０ａ、６１０ｂを検出する。マーカ６１０ａ、６１０ｂは、カメラ１０９で検出することができる、特色のある特徴又は機械で読み取ることができる情報を含む。したがって、いくつかのマーカ６１０ａ、６１０ｂは、仮想バリヤの位置を示すことができ、他方、他のマーカは、他のタイプの情報をロボット１００に中継する為に用いることができる。機械で読み取ることができる情報又は特徴は、環境内の構造物又は障害物に対応する位置の名前を表すことができる。いくつかの場合には、特徴又は機械で読み取ることができる情報は、色、画像、又はカメラ１０９で検出することができる他の情報である。いくつかの実施において、カメラ１０９は、可視光帯域の外側の放射に応答できても良く、したがって、例えば、マーカ６１０ａ、６１０ｂの赤外線特性を検出することができるようになっていても良い。カメラ１０９は、マーカ６１０ａ、６１０ｂを検出する為のセンサであるとして記載されてきたけれども、いくつかの実施において、ロボット１００は、超音波、赤外線、及び他の方位ビームセンサのような、マーカ６１０ａ、６１０ｂを検出する為の他のセンサを用いても良い。
【００８３】
特色のある特徴は、環境６０２の属性及び／又は壁面６０９を示すものであっても良い。これらの特徴は、仮想バリヤを設定すること加えて、又はその代替として、識別の目的のための用いられても良い。メモリ記憶素子３９５は、コントローラ３９０が画像化されたマーカ６１０ａ、６１０ｂと比較することのできる参照の特徴のライブラリを含むことができる。次に、コントローラ３０９は、マーカ６１０ａ、６１０ｂが、参照の特徴のライブラリ内にある特徴を含むか否かを判定することができる。
【００８４】
いくつかの例では、マーカ６１０ａ、６１０ｂの特徴は、ロボット１００が移動する環境６０２は、キッチン、浴室、居間等の特別な部屋であることを示しても良い。例えば、マーカ６１０ａ、６１０ｂは、第１の部屋６０７がキッチンであることを示す冷蔵庫のアイコンと第２の部屋が居間であることを示すテレビのアイコンを含んでいても良い。いくつかの場合には、マーカ６１０ａ、６１０ｂは、マーカ６１０ａ、６１０ｂの間に有る構造物のタイプを示しても良い。例えば、いくつかの場合には、マーカ６１０ａ、６１０ｂは、マーカ６１０ａ、６１０ｂ間に出入口６１１があることを示しても良い。他の場合には、マーカ６１０ａ、６１０ｂは、ロボットが清掃が難しいエリア又は壊れやすい家具や家庭のアイテムがあるエリアに入らないように、環境６０２内に配置されても良い。マーカ６１０ａ、６１０ｂは、カメラ１０９で画像化可能な、ランプ、家具、又は他の家庭内の物の上に配置されても良い。例えば、一つのタイプのマーカは、マーカから所定の距離（例えば、０．２５ｍ〜０．５ｍ、０．５ｍ〜１ｍ、１ｍ〜１．５ｍ）の立ち入り禁止区域を設けることができる。マーカ６１０ａ、６１０ｂは、特定の属性についての特定の色、又は特別な部屋についての特別な画像を有することができる。いくつかの実施において、マーカ６１０ａ、６１０ｂは、マーカ６１０ａ、６１０ｂの特色のある特徴としての役割を果たす特色のある画像を含んでいても良い。
【００８５】
特色のある特徴は、マーカ６１０ａ、６１０ｂがしるす部屋の名前、マーカ６１０ａ、６１０ｂがしるす障害物の名前、又はマーカ６１０ａ、６１０ｂがしるす位置の名前であっても良い。例えば、ロボット１００が以前の清掃動作から生成されたマップを有する実施においては、マーカ６１０ａ、６１０ｂは、ロボット１００がキッチンにいることを示し、また、次に、ロボット１００は、以前に生成されたキッチンに対応するマップを使用しても良い。いくつかの場合には、ロボット１００は、マーカ６１０ａ、６１０ｂを検出するまで、清掃動作を行わなくて良い。ロボット１００がマーカ６１０ａ、６１０ｂを検出すると、ロボット１００は、マーカ６１０ａ、６１０ｂからの情報に基づいて清掃動作を開始することができる。特色のある特徴によって提供される情報は、ユーザが情報を理解して、この情報に基づいてロボット１００の動作を選択することができるように、移動式デバイスに送信されても良い。
【００８６】
コントローラは、マーカ６１０ａ、６１０ｂを識別する前に、生成されたマーカ６１０ａ、６１０ｂの画像を後処理することができる。例えば、コントローラは、アフィン変換又は画像修正の為の他のいくつかのコンピュータ視覚処理を用いることによって画像を修正しても良い。マーカ６１０ａ、６１０ｂの画像の変換を行った後、コントローラは、コントローラがマーカ６１０ａ、６１０ｂを検出したことを確認する為に、画像を、保存された参照画像、例えば、ロボット１００のメモリ記憶素子３９５上の参照画像のライブラリと比較することができる。比較は、コントローラ３９０が、マーカ６１０ａ、６１０ｂにより提供された情報のタイプ（例えば、環境６０２及び壁面６０９の属性）を決定することを可能にすることもできる。いくつかの実施において、マーカ６１０ａ、６１０ｂは、それぞれ、異なるタイプの情報を伝える複数の部分を有することができる。マーカ６１０ａ、６１０ｂのそれぞれの一つの部分は、ロボット１００が現在入っている第１の部屋６０７のタイプを示し、マーカ６１０ａ、６１０ｂの他の部分は、出入口６１１に接続された第２の部屋６０８のタイプを示すことができる。
【００８７】
マーカ６１０ａ、６１０ｂが仮想バリヤを設定する為に用いられる例において、マーカ６１０ａ、６１０ｂが検出され、ロボットがマーカ６１０ａ、６１０ｂを検出したことが確認されると、ロボット１００は、マーカ６１０ａ、６１０ｂの位置に基づいて占有グリッド６１２（例えば、横断不可のセルのセット）を指定することができる。例えば、コントローラは、マーカ６１０ａとマーカ６１０ｂの両方を通過するライン６１４を計算することができる。ライン６１４は、コントローラが占有グリッド６０６内で指定することができる仮想バリヤ６１２に平行である。占有グリッド６０６内の仮想バリヤ６１２は、マーカ６１０ａ、６１０ｂの間にあると示されているけれども、いくつかの実施において、マーカ６１０ａ、６１０ｂを検知することにより生成される仮想バリヤ６１２は、マーカ６１０ａ、６１０ｂを接続するライン６１４よりも大きな長さに広がっていても良い。
【００８８】
マーカ６１０ａ、６１０ｂは、ロボット１００に、出入口６１１がマーカ６１０ａ、６１０ｂ間に存在することを示すことができる。このような場合には、第１の部屋６０７の清掃動作が終了したときに、ロボット１００は、続く清掃動作において仮想バリヤ６１２に移動し、第２の部屋６０８を清掃する為に、続く清掃動作を開始する。仮想バリヤ６１２は、存在し続けても良いが、仮想バリヤ６１２の右側の第１の部屋６０７を清掃する代わりに、ロボット１００は、第２の部屋６０８を清掃する。
【００８９】
ロボット１００は、１以上の条件が満たされるまで、仮想バリヤ６１２の境界及び物理的な壁面６０９の範囲内で第１の部屋６０７を清掃し続けることができる。１以上の条件は、例えば、規定された面積の、ある割合をカバーすること及び／又は本明細書に記載される他の条件である。
【００９０】
いくつかの実施において、ロボット１００は、続く清掃動作において（例えば、持続性の占有グリッド内において）仮想バリヤ６１２を覚えておいても良い。ユーザは、ロボット１００がマーカ６１０ａ、６１０ｂを検出した場合、第１の清掃動作の後にマーカ６１０ａ、６１０ｂを取り外しても良く、仮想バリヤ６１２は、第１の清掃動作の一部として存在し続ける。ロボット１００は、例えば、仮想バリヤ６１２を保存し、続く清掃動作の為にそれを使用する。第１の部屋６０７において続く清掃動作を開始すると、ロボット１００は、第１の部屋６０７に留まり、出入口６１１を通って第２の部屋６０８に進むことはない。
【００９１】
図７Ｃを参照すると、フローチャート６６０は、ロボット内に保存された占有グリッド内の仮想バリヤを生成するようにロボットに命令する為に、環境内のマーカを用いる方法を図示している。フローチャート６６０は、ユーザによって実行される動作に対応するユーザ動作６６５と、ロボットによって実行される動作に対応するロボット動作６７０とを含む。
【００９２】
動作６７２において、ユーザは、環境内にマーカを配置する。ユーザは、出入口、敷居、又は他の開口部などのユーザが横断を望まない環境内の特定の特徴の側面にマーカが置かれるように、マーカを配置することができる。マーカは、部屋のアイテムを識別する為に環境内の表面に置くことができる。表面は、壁、障害物、又は環境内の他の物の表面であっても良い。
【００９３】
動作６７４において、ユーザは、ロボットに第１の清掃動作を開始するように命令する。ユーザは、移動式デバイスを用いても良く、又は、ロボットに第１の清掃動作を開始するように命令する為にロボット上のボタンを押下しても良い。
【００９４】
動作６７６において、ロボットのコントローラは、第１の清掃動作を開始する為の命令を受信する。動作６７８において、ロボットは、第１の清掃動作を実行する。いくつかの場合には、コントローラは、例えば、ロボットに清掃動作を開始するように命令することによって、第１の清掃動作を開始する。清掃動作中、ロボットは、本明細書に記載されるようなコーンロー型パターン、又は環境内の床面をカバーする為の他のいくつかのパターンを実行しても良い。
【００９５】
動作６８０において、ロボットは、環境内のマーカを検出する。コントローラは、カメラ、超音波センサ、又はマーカを検出する為のロボット上の他のいくつかのセンサを用いることができる。本明細書に記載されるように、いくつかの場合には、カメラは、マーカの色、画像、又は他の特色のある特徴を検出しても良い。コントローラは、マーカの検出に応じてカメラから画像データを受信することができる。
【００９６】
動作６８２において、コントローラは、検出されたマーカが仮想バリヤマーカであるか否かを判定する。コントローラは、検出されたマーカの画像データを後処理し、画像データが、コントローラがマーカの検出から予測することができる参照画像に対応するか否かの判定を行うことができる。コントローラは、画像データを、コントローラが操作することのできるメモリ記憶素子上に保存されたライブラリ内の参照画像と比較しても良い。コントローラは、検出されたマーカが仮想バリヤ、位置、又は環境についての他の情報を示すか否かを判定することができる。
【００９７】
コントローラが、検出されたマーカが仮想バリヤマーカであると決定すると、動作６８４において、コントローラは、例えば検出されたマーカの位置に対応する占有グリッド内に仮想バリヤを生成する。本明細書に記載されるように、仮想バリヤは、占有グリッド上でマークされるべき横断不可のセルのセットに対応し得る。いくつかの場合には、横断不可のセルの長さ又は幅は、マーカ上で検出された特色のある特徴に依存しても良い。コントローラが検出されたマーカが仮想バリヤマーカではないと判定すると、動作６８６において、コントローラは、検出されたマーカに関連するデータを占有グリッド内に保存する。データは、例えば、部屋の名称、検出されたマーカの位置の名称である。いくつかの実施において、コントローラは、コントローラが検出されたマーカを識別し誤ったと判定し、検出されたマーカが環境についての情報を示していないと判定しても良い。いくつかの例において、コントローラは、検出されたマーカが仮想バリヤと、部屋の名称又は検出されたマーカの位置に関連するデータの両方を示すと決定しても良い。
【００９８】
動作６８８において、コントローラは、第１の清掃動作が完了したか否かを判定する。コントローラは、ロボットが、本明細書に記載される１以上の条件を満たすか否かを評価することができる。コントローラが第１の清掃動作が完了したと判定すると、動作６９０において、ロボットは、第１の清掃動作を完了する。コントローラが、第１の清掃動作が完了していないと判定すると、動作６９２において、ロボットは第１の清掃動作を継続する。コントローラは、ロボットに第１の清掃動作を継続するように命令することができる。ロボットは、次に、環境内のマーカを検出し続けることができ、いくつかの場合には、ロボットは、第１の清掃動作を継続し、次に、追加のマーカを検出することなしに第１の清掃動作を完了し、動作６９０に進む。
【００９９】
いくつかの実施において、コントローラは、続く清掃動作において用いられる仮想バリヤを保存しても良い。その結果として、動作６９４において、ユーザは、環境からマーカを取り除いても良い。いくつかの実施において、ユーザは、環境内にマーカを維持しても良く、ロボットのカメラによる引き続いてのマーカの検出は、カメラがマーカを検出したという信頼を向上させることができる。
【０１００】
動作６９６において、ユーザは、ロボットに第２の清掃動作を開始するように命令することができる。いくつかの場合には、ユーザは、ロボットが第１の清掃動作中に清掃した、環境内で第２の清掃動作を開始するようにロボットに命令する。他の場合には、ユーザは、他の環境内で清掃動作を開始するようにロボットに命令する。動作６９８において、コントローラは、第１の清掃動作中に生成された占有グリッドを用いて第２の清掃動作を開始する為の命令を受信する。コントローラは、次に、ロボットに第２の清掃動作を開始するように命令する。ロボットが動作６７８及び動作６９２において清掃された環境内で第２の清掃動作を開始すると、ロボットは、同じエリアを清掃し、仮想バリヤを越えることはない。ロボットが他の環境内で第２の清掃動作を開始すると、ロボットは、第１の清掃動作中に清掃したエリアとは異なるエリアを清掃することができ、仮想バリヤは、ロボットが動作６７８及び動作６９２において清掃したエリアに戻ることを有効に防止する。
【０１０１】
図７Ａ〜図７Ｃに図示された例は図２Ａ〜図２Ｂに記載されたロボット１００に関して記載されてきたけれども、他の適切な構成を有する他の移動式ロボットが本明細書に記載される構成を有することもできる。例えば、ロボット２００は、本明細書に記載される機能を実行することができる。いくつかの実施において、カメラ１０９は、コントローラが出入口の幾何学的特徴の特性を識別する為に用いる画像を撮像することができる（例えば、床から壁の部分に延びる四角い開口）。コントローラは、次に、カメラ１０９で検出した出入口構造の位置に対応する仮想バリヤを配置することができる。
【０１０２】
本明細書に記載されるように、ロボット１００は、環境に放射される赤外線照射を検出する為の赤外線トランシーバ１１８を備える。図８Ａを参照すると、ゲートウェイビーコン７０１が、（例えば、図８Ａの部分７２１に示されるように）第１の部屋７０４と第２の部屋７０６を含む環境７０２の床面１０に配置されている。出入口７０７は、第１の部屋７０４を第２の部屋７０６から分離する。ゲートウェイ７０１は、赤外線トランシーバ１１８で検出することができる赤外線ゲートウェイビーコン７０８を放射する。ユーザは、ゲートウェイビーコン７０１を環境７０２に配置することができ、ゲートウェイビーム７０８が特定の位置を向くように、ゲートウェイビーコン７０１を方向付づけることができる。例えば、ゲートウェイビーム７０８は、出入口７０７の端から端までさしわたすように方向づけることができる。
【０１０３】
第１の部屋７０４を清掃する間、ロボット１００は、経路７０９の形状でコーンロー型パターンを実行しても良い。ロボット１００が経路７０９に沿って第１の部屋７０４を移動する際、ロボット１００は、ゲートウェイビーム７０８を通り過ぎるときに、例えば赤外線トランシーバ１１８を用いてゲートウェイビーム７０８を検出することができる。ロボット１００は、ゲートウェイビーム７０８を検出し、ロボット１００が、ロボット１００の（例えば、図８Ａの部分７２３に図示される）占有グリッド７１２内でゲートウェイビーコン７０８を仮想バリヤ７１０（例えば、横断不可のセルのセット）として検出した場所を解釈することができる。図８Ａは、経路７０９がゲートウェイ７０８の近くを通過すると図示しているけれども、他の実施において、経路７０９は、ゲートウェイビーム７０８を通過しても良い。このように、ゲートウェイビーコン７０１及びそのゲートウェイビーム７０８は、ロボット１００が出入口７０７を通過することを防止する。
【０１０４】
図８Ｂを参照すると、続く清掃動作において、ロボット１００は、（例えば、図８Ｂの部分７２３に記載されるように）仮想バリヤ７１０の位置を、例えば、メモリ又は遠隔のコンピュータデバイス中に、持続性マップの一部として保存することができる。その結果、図８Ａにおいて環境に配置されるゲートウェイビーコンが続く清掃動作の為に環境から取り除かれるときに、ロボット１００は、自身が仮想バリヤ７１０を越えることをなおも防止することができる。いくつかの場合には、ロボット１００は第１の部屋７０４に配置され、第２の部屋７０６内仮想バリヤ７１０を越えることなしに、第１の部屋７０４を再度清掃することができる。他の場合には、ロボット１００は、第２の部屋７０６内に配置することができ、第１の部屋を再び清掃することなしに第２の部屋７０６を清掃することができる。
【０１０５】
図８Ｃを参照すると、フローチャート７６０は、ロボット上に保存された占有グリッド内において仮想バリヤを生成するようにロボットに命令する為に、環境においてゲートウェイビーコンを使用する方法を図示している。フローチャート７６０は、ユーザによって実行される動作に対応するユーザ動作７６５と、ロボットによって実行される動作に対応するロボット動作７７０とを含む。
【０１０６】
動作７２２において、ユーザは、環境内にゲートウェイビーコンを配置する。ユーザは、ゲートウェイビームが特定の特徴、又は、出入口、敷居、又は他の開口などの、ユーザがロボットに横断して欲しくない環境内の位置をしるすように、環境内の床面上にゲートウェイビーコンを配置する。
【０１０７】
動作７７４において、ユーザは、ロボットに第１の清掃動作を開始するように命令する。ユーザは、ロボットに第１の清掃動作を開始するように命令する為に、移動式デバイスを用いるか、或いは、ロボット上のボタンを押下しても良い。
【０１０８】
動作７７６において、ロボットのコントローラは、第１の清掃動作を開始する為の命令を受信する。動作７７８において、コントローラは、第１の清掃動作を開始する。
【０１０９】
動作７８０において、ロボットのトランシーバは、環境内でゲートウェイビーコンを検出する。トランシーバは、赤外線レシーバであっても良い。
【０１１０】
動作７８２において、コントローラは、占有グリッド又は他の持続性のマップ内に仮想バリヤを生成する。本明細書に記載されるように、仮想バリヤは、占有グリッド上にマークされるべき横断不可のセルのラインに対応していても良い。いくつかの実施において、仮想バリヤは、占有グリッド内における線や曲線を定義する座標のセットであっても良い。いくつかの場合には、横断不可のバリヤの長さ又は幅は、ロボットが動作７８０においてゲートウェイビーコンを検出するときに、ロボットが感知する信号の長さに依存していても良い。
【０１１１】
動作７８４において、コントローラは、第１の清掃動作を完了する。コントローラは、ロボットが、例えば、規定された面積の、ある割合をカバーすること及び／又は本明細書に記載される他の条件を満たすことなどの、１以上の条件を満たすと決定することによって、第１の清掃動作を完了することができる。
【０１１２】
いくつかの実施において、ロボットは、続く清掃動作で用いられる持続性のマップ内に仮想バリヤを保存しても良い。その結果として、動作７８６において、ユーザは、環境内からゲートウェイビーコンを取り外しても良い。次に、動作７８８において、ユーザは、ロボットに、第２の清掃動作を開始するように命令することができる。いくつかの場合には、ユーザは、ロボットに、第１の清掃動作中にロボットが清掃した環境内において第２の清掃動作を開始するように命令することができる。他の場合には、ユーザは、ロボットに他の環境内で清掃動作を開始するように命令する。動作７９０において、ロボットは、第１の清掃動作中に生成した占有グリッドを用いて第２の清掃動作を開始する。ロボットが動作７８８中に清掃した環境内で第２の清掃動作を開始する場合には、ロボットは、広く同じエリアを清掃し、仮想バリヤを越えることはない。ロボットが第２の清掃動作を開始する場合、ロボットは、第１の清掃動作中に清掃されたエリアとは異なるエリアを清掃することができ、仮想バリヤは、ロボットが動作７８８中に清掃されたエリアに戻ることを効果的に防止する。
【０１１３】
図８Ａ〜図８Ｃに図示された例は、図２Ａ〜図２Ｂに記載されたロボット１００を用いると記載されてきたけれども、他の適切な構成を有する他のロボットが、本明細書に記載される方法を実施することができる。例えば、ロボット２００は、本明細書に記載される機能を実行することができる赤外線トランシーバを備えることができる。
【０１１４】
ここで生成される仮想バリヤは、まっすぐな壁であると記載されてきたけれども、いくつかの実施においては、仮想バリヤは、円形で合っても良い。例えば、図６Ａ〜図６Ｃを参照して記載したハンドシェイクモードにロボットを位置付けることは、ロボットを例えば円形エリアのじゅうたん内に制限することができる実質的に円形の仮想バリヤを、コントローラに生成させる。いくつかの場合には、ユーザは、ロボットの通信システムと通信することができる移動式のコンピュータデバイスを用いて円形の仮想バリヤを生成するように、コントローラに命令することができる。いくつかの場合には、ロボットは、規定された面積の、ある割合をカバーすること及び／又は本明細書に記載される他の条件を満たすことなどの、１以上の条件を満たすことをコントローラが決定するまで、円形のエリア内で清掃動作を続行しても良い。他の例では、仮想バリヤは、円形の立ち入り禁止区域を設けることができる。
【０１１５】
コントローラは、環境を別々にカバーされるべき２以上の領域に分割する為に仮想バリヤを用いても良い。例えば、仮想バリヤは環境を、一つの領域が、例えば、キッチン、浴室、カーペット等に対応し、第２の領域が寝室、居間、ハードウッドフロア等に対応する２つの領域に分割しても良い。コントローラは、ロボットに、一つの清掃動作において第１の領域を清掃し、次に、続く清掃動作において第２の領域を清掃するように命令することができる。いくつかの場合には、コントローラは、ロボットに、ロボットが領域で清掃動作を複数回繰り返す、より深い清掃モードで一つの領域を清掃するように命令することができる。いくつかの実施において、ユーザは、環境内の個別の領域を、キッチン、寝室、又は浴室といった、家の中の特定の部屋としてラベルを付すことができる。本明細書に記載されるように、コントローラは、コントローラが、環境内の領域にラベルを関連付けることを可能にすることができるマーカ６１０ａ、６１０ｂ内の特徴を検出することもできる。ユーザは、次に、ロボットにラベルを付された領域を清掃するよう命令する為に、移動式のコンピュータデバイスを用いることができる。ユーザは、ロボットが他のラベルを付された領域を清掃する間、ロボットをラベルを付された領域の外部にいるように命令することもできる。
【０１１６】
本明細書に記載される例の少なくともいくつかにおいて、仮想バリヤはロボットによって位置特定の為に用いられる占有グリッド内に保存されるけれども、仮想バリヤは、位置特定及びナビゲーションの為にロボットによって用いられる他のタイプのマップ内に保存することができる。
【０１１７】
システムは、例えば、少なくとも部分的には、１以上のデータ処理装置（例えば、プログラマブルプロセッサ、コンピュータ、複数のコンピュータ、及び／又はプログラマブルロジック部品）による実行の為の又はその動作を制御する為の１以上の非一時的な機械読取り可能な媒体といった、１以上の情報キャリア内に確実に組み込まれた１以上のコンピュータプログラム等の、１以上のコンピュータプログラムプロダクトを用いて制御され或いは実施される。
【０１１８】
コンピュータプログラムは、コンパイル或いは解釈された言語を含む、あらゆる形式のコンピュータプログラミング言語で書くことができ、スタンドアロンプログラム、又はモジュール、コンポーネント、サブルーチン、又はコンピューティング環境での使用に好適な他のユニットを含む、あらゆる形式で配置することができる。
【０１１９】
本明細書に記載されるコントロールメカニズムの一部又はその全てを実施することに関する動作は、本明細書に記載される機能を実施する為の１以上のコンピュータプログラムを実行する１以上のプログラマブルプロセッサによって実行され得る。本明細書に記載されるコントロールメカニズムの一部又は全てが、例えば、ＦＰＧＡ（Field Programmable Gate Array）及び／又はＡＳＩＣ（Application-specific Integration Circuit）といった特定用途の論理回路を用いて実施することができる。
【０１２０】
コンピュータプログラムの実行に好適なプロセッサは、例証として、汎用又は特定目的両方のマイクロプロセッサ、及びあらゆるタイプのデジタルコンピュータのあらゆる１以上のプロセッサを含む。一般には、プロセッサは、読み込み専用記憶エリア又はランダムアクセス記憶エリア又はその両方から命令及びデータを受信する。コンピュータの素子は、命令を実行する１以上のプロセッサ、又は命令及びデータを記憶する為の１以上の記憶エリアを含む。一般には、コンピュータは、データを受信し、又は送信し又はその両方の為に操作可能に取り付けられた、例えば、磁気ディスク、光磁気ディスク、又は光ディスク等のデータを記憶する為の大容量のＰＣＢといった、１以上の機械読取り可能な記憶メディアをも備えるであろう。コンピュータプログラム命令及びデータを具体化するのに好適な機械読取り可能な記憶メディアは、例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュ記憶エリアデバイス等の半導体記憶エリアデバイス、内蔵ハードディスク又はリムーバルディスク等の磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭを含む、あらゆる形式の不揮発性記憶エリアを含む。
【０１２１】
本明細書中に記載された異なる実施の要素が、詳細には上述されていない他の実施形態を構成する為に組み合わされても良い。要素は、それらの動作に不利に影響することなく、本明細書に記載された構造の外部に置かれても良い。さらに、様々な分かれた要素が、本明細書に記載される機能を実行する為に１以上の独立の要素に組み込まれても良い。
【図１】
2020126691.tif 000003
【図２Ａ】
2020126691.tif 000004
【図２Ｂ】
2020126691.tif 000005
【図３Ａ】
2020126691.tif 000006
【図３Ｂ】
2020126691.tif 000007
【図４】
2020126691.tif 000008
【図５Ａ】
2020126691.tif 000009
【図５Ｂ】
2020126691.tif 000010
【図５Ｃ】
2020126691.tif 000011
【図６Ａ】
2020126691.tif 000012
【図６Ｂ】
2020126691.tif 000013
【図６Ｃ】
2020126691.tif 000014
【図７Ａ】
2020126691.tif 000015
【図７Ｂ】
2020126691.tif 000016
【図７Ｃ】
2020126691.tif 000017
【図８Ａ】
2020126691.tif 000018
【図８Ｂ】
2020126691.tif 000019
【図８Ｃ】
2020126691.tif 000020
【手続補正書】
【提出日】令和2年6月15日(2020.6.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
自律移動ロボットであって、
前記自律移動ロボットを床面上で動かす駆動システム；
モバイルコンピュータデバイスと通信するように構成されたワイヤレストランシーバ；及び、
操作を実行するように構成されたコントローラであって、
前記ワイヤレストランシーバで、かつ、前記モバイルコンピュータデバイスから、仮想バリヤを規定するための１つまたは複数のユーザの命令を示すデータの受信に応じて仮想バリヤの規定を開始するステップと；
自律移動ロボットが床面上で操縦されると、前記仮想バリヤを越える前記自律移動ロボットの移動を制限するステップと；
を備えるコントローラ；
を備えることを特徴とする自律移動ロボット。
【請求項２】
前記１つまたは複数のユーザの命令を示すデータは、前記仮想バリヤの位置または方向のうちの少なくとも１つを示すデータを備える、請求項１に記載の自律移動ロボット。
【請求項３】
前記１つまたは複数のユーザの命令を示すデータは、前記仮想バリヤの面積または形状のうちの少なくとも１つを示すデータを備える、請求項１に記載の自律移動ロボット。
【請求項４】
前記操作が、前記仮想バリヤの規定に応じて視認できるまたは聞き取れる識別を提供することをさらに備える、請求項１に記載の自律移動ロボット。
【請求項５】
前記視認できるまたは聞き取れる識別は、前記仮想バリヤの位置または方向を示す、請求項４に記載の自律移動ロボット。
【請求項６】
前記操作は、
前記仮想バリヤを越える前記自律移動ロボットの移動を制限しながら、前記床面上で前記自律移動ロボットを操縦するステップと、
前記自律移動ロボットが前記床面上で操縦されると前記自律移動ロボットによって収集されるマッピングデータを前記モバイルコンピュータデバイスに送信して、前記モバイルコンピュータデバイスに前記床面のマップ表示を示すステップと、
をさらに備える、請求項１に記載の自律移動ロボット。
【請求項７】
前記仮想バリヤは、前記床面を第１の領域と第２の領域に分割し、前記操作は、
前記１つまたは複数のユーザの命令を示すデータに基づいて、第１の時間に前記第１の領域を清掃する第１の清掃動作を開始するステップ、及び
前記１つまたは複数のユーザの命令を示すデータに基づいて、第２の時間に前記第２の領域を清掃するための第２の清掃動作を開始するステップ、
をさらに備える、請求項１に記載の自律移動ロボット。
【請求項８】
前記仮想バリヤの規定を開始するステップは、前記仮想バリヤ全体の規定を開始するステップを含む、請求項１に記載の自律移動ロボット。
【請求項９】
前記自律移動ロボットの移動中に床面上を清掃するように構成された清掃システムをさらに備える、請求項１に記載の自律移動ロボット。
【請求項１０】
前記清掃システムは、前記自律移動ロボットの前方部分上の清掃パッドを支持するように構成された湿式清掃システムを備える、請求項９に記載の自律移動ロボット。
【請求項１１】
モバイルコンピュータデバイスであって、前記モバイルコンピュータデバイスが
床面上を移動可能な自律移動ロボットと通信するように構成されたワイヤレストランシーバ；
仮想バリヤを越える前記自律移動ロボットの移動が制限される仮想バリヤの規定を開始するための１つまたは複数のユーザの命令を提供するためにユーザによって操作可能なユーザ入力デバイス；及び、
１つまたは複数のプロセッサであって、
前記１つまたは複数のユーザの命令を受容して、前記仮想バリヤの前記規定を開始するステップ；及び
前記仮想バリヤを確立するために前記仮想バリヤを示すデータの、前記モバイルコンピュータデバイスの前記ワイヤレストランシーバから前記自律移動ロボットへの送達を開始するステップであって、これにより、前記自律移動ロボットの自律動作中に、前記仮想バリヤを越える前記自律移動ロボットの移動が制限される、ステップ；
を備える操作を実行するように構成された１つまたは複数のプロセッサ；
を備えることを特徴とするモバイルコンピュータデバイス。
【請求項１２】
前記１つまたは複数のユーザ命令を示すデータは、前記仮想バリヤの場所または方向のうちの少なくとも１つを示すデータを備える、請求項１１に記載のモバイルコンピュータデバイス。
【請求項１３】
前記１つまたは複数のユーザ命令を示すデータは、前記仮想バリヤの面積または形状のうちの少なくとも１つを示すデータを備える、請求項１１に記載のモバイルコンピュータデバイス。
【請求項１４】
ユーザインターフェースをさらに備え、前記操作は、
前記自律移動ロボットが床面上で操縦されると前記自律移動ロボットによって収集されたマッピングデータを受信するステップ；及び、
前記マッピングデータに基づいて前記ユーザインターフェース上に床面のマップ表示を示めすステップ；
を備える、請求項１１に記載のモバイルコンピュータデバイス。
【請求項１５】
前記仮想バリヤは、前記床面を第１の領域と第２の領域とに分割し、前記操作は、
第１の時間に前記第１の領域を清掃する第１の清掃動作を開始させる、かつ
第２の時間に前記第２の領域を清掃する第２の清掃動作を開始させる、
命令を前記自律移動ロボットに送信するステップを備える、請求項１１に記載のモバイルコンピュータデバイス。
【請求項１６】
仮想バリヤの規定を開始するように１つまたは複数のユーザの命令を示すデータをモバイルコンピュータデバイスで受信するステップ；及び、
前記モバイルコンピュータデバイスから床面上で移動可能な自律移動ロボットへ、前記仮想バリヤを確立するための前記仮想バリヤを示すデータを送信するステップであって、これにより、前記自律移動ロボットの自律動作中に、前記仮想バリヤを越える前記自律移動ロボットの移動が制限される、ステップ；
を備えることを特徴とする方法。
【請求項１７】
前記１つまたは複数のユーザの命令を示すデータが、前記仮想バリヤの場所または向きのうちの少なくとも１つを示すデータを含む、請求項１６に記載の方法。
【請求項１８】
前記１つまたは複数のユーザの命令を示すデータが、前記仮想バリヤの面積または形状のうちの少なくとも１つを示すデータを備える、請求項１６に記載の方法。
【請求項１９】
前記自律移動ロボットが床面上で操縦されると前記自律移動ロボットによって収集されたマッピングデータを受信するステップ、及び、
前記マッピングデータに基づいて前記床面のマップ表示を示すステップ、
をさらに備える、請求項１６に記載の方法。
【請求項２０】
前記仮想バリヤは、前記床面を第１の領域と第２の領域とに分割し、前記操作は、
第１の時間に前記第１の領域を清掃する第１の清掃動作を開始させる、かつ
第２の時間に前記第２の領域を清掃する第２の清掃動作を開始させる、
命令を前記自律移動ロボットに送信するステップを備える、請求項１１に記載のモバイルコンピュータデバイス。
【外国語明細書】
2020126691000001.pdf