(57)【要約】      （修正有）【課題】ユーザーがロボット掃除エリアの地図上に線を引いてロボットが横断しない線を指示することを可能にすることによって仮想境界線を生成する、改善された仮想境界線システムを提供する。【解決手段】エリア地図のグローバル座標で仮想境界線が提供され、複数の部分地図に対応する複数の線分に変換される。トレーニング／地図作成運転のときに物理的境界標識が使われ、エリア地図に位置が追加され、物理的境界標識は後ほど移動される。仮想境界線は、掃除エリアを変更したり、ゲートとして機能したり、関連掃除モードを変更したりするために、時間の経過にともない変化する。境界線を有する仮想エリアがユーザーによって選択される。【選択図】図１
2019071046.tif 000002
【特許請求の範囲】
【請求項１】
ロボットを操作する方法であって、
前記ロボット上のセンサーを用いて物理的境界標識を検出するステップと、
前記ロボットのためのエリア地図上で前記物理的境界標識の位置に対応する仮想境界線を指示するステップと、
前記物理的境界標識が後ほど除去される場合に前記仮想境界線を維持するステップと、
前記ロボットにより、前記仮想境界線を越えたエリアを回避するステップとを含む、方法。
【請求項２】
物理的境界線または仮想境界線と近接する壁との間の隙間を検出するステップと、
前記仮想境界線を前記近接する壁まで延長するステップとをさらに含む、
請求項１に記載の方法。
【請求項３】
前記ロボットが、仮想境界線の後ろにある物体からの前記仮想境界線とは異なる距離を移動できると判断するステップと、
前記物体からの異なる距離になるように前記仮想境界線を調節するステップとをさらに含む、
請求項１に記載の方法。
【請求項４】
ユーザーから前記エリア地図上の仮想境界線についての指示を受け取るステップをさらに含む、
請求項１に記載の方法。
【請求項５】
前記ロボットのトレーニング運転のときに前記エリア地図を作成するステップと、仮想境界線についての前記指示を受け取る前に前記エリア地図をユーザーに提供するステップとをさらに含む、
請求項４に記載の方法。
【請求項６】
前記トレーニング運転のときに、前記エリア地図上に指示された前記エリアの掃除に必要な全距離およびパターンを移動せず、前記エリア地図を生成するにあたって十分な距離およびパターンを移動するステップをさらに含む、
請求項５に記載の方法。
【請求項７】
前記仮想境界線を前記エリア地図のグローバル座標でリモートサーバーに提供するステップと、
前記ロボットへ前記仮想境界線をダウンロードするステップと、
前記ロボットにより、前記仮想境界線を複数の部分地図に対応する複数の線分に分割することによって、前記グローバル座標における前記仮想境界線を線分に変換するステップと、
現在の部分地図のための前記仮想境界線を決定するため、前記ロボットにより、前記線分を前記現在の部分地図と比較するステップとをさらに含む、
請求項１に記載の方法。
【請求項８】
前記物理的境界標識は、磁気ストリップ、ＩＲビーム、バーコード、ＱＲコード（登録商標）、カラーストリップ、ＩＲ検出可能ラベル、または視覚的パターンのいずれか１つである、請求項１に記載の方法。
【請求項９】
ロボットのエリア地図上の仮想境界線の指示を受け取るステップと、
物体からの距離を変更するため、または前記仮想境界線を近接する壁まで延長するため、前記仮想境界線を調節するステップと、
前記ロボットにより、前記仮想境界線を越えたエリアを回避するステップとを含む、方法。
【請求項１０】
前記ロボット上のセンサーを用いて物理的境界標識を検出するステップと、
前記ロボットのためのエリア地図上で前記物理的境界標識の位置に対応する仮想境界線を指示するステップと、
前記物理的境界標識が後ほど除去される場合に前記仮想境界線を維持するステップと、
前記ロボットにより、前記仮想境界線を越えたエリアを回避するステップとを含む、
請求項９に記載の方法。
【請求項１１】
前記ロボットのトレーニング運転のときに前記エリア地図を作成するステップと、前記エリア地図をユーザーに提供するステップと、
前記ユーザーから前記エリア地図上の仮想境界線についての指示を受け取るステップとをさらに含む、
請求項９に記載の方法。
【請求項１２】
命令を含み、ロボットに取り付けられる、非一時的コンピュータ可読媒体であって、前記命令がコンピュータによって実行されると、前記コンピュータは、
前記ロボット上のセンサーを用いて物理的境界標識を検出し、
前記ロボットのためのエリア地図上で前記物理的境界標識の位置に対応する仮想境界線を指示し、
前記物理的境界標識が後ほど除去される場合に前記仮想境界線を維持し、なおかつ
前記ロボットにより、前記仮想境界線を越えたエリアを回避する、非一時的コンピュータ可読媒体。
【請求項１３】
物理的境界線または仮想境界線と近接する壁との間の隙間を検出し、なおかつ
前記仮想境界線を前記近接する壁まで延長する命令をさらに含む、
請求項１２に記載の非一時的コンピュータ可読媒体。
【請求項１４】
前記ロボットが、仮想境界線の後ろにある物体からの前記仮想境界線とは異なる距離を移動できると判断し、なおかつ
前記物体からの異なる距離になるように前記仮想境界線を調節する命令をさらに含む、
請求項１２に記載の非一時的コンピュータ可読媒体。
【請求項１５】
前記ロボットのトレーニング運転のときに前記エリア地図を作成し、前記エリア地図をユーザーに提供し、なおかつ
前記ユーザーから前記エリア地図上の仮想境界線についての指示を受け取る命令をさらに含む、
請求項１２に記載の非一時的コンピュータ可読媒体。
【請求項１６】
床横断ロボットと、
前記床横断ロボットのロボットハウジングと、
前記ハウジング内に取り付けられて前記床横断ロボットを動かすモーターと、
前記モーターに電力を提供するために接続されるバッテリと、
前記ロボット内に取り付けられて周囲のものを検出するセンサーと、
前記ロボット内に取り付けられるプロセッサと、
前記ロボット内のメモリーと、
前記ロボット内の位置特定モジュールと、
命令を有する前記メモリー内の非一時的コンピュータ可読コードとを含み、前記命令は、
前記ロボット上のセンサーを用いて物理的境界標識を検出し、
前記ロボットのためのエリア地図上で前記物理的境界標識の位置に対応する仮想境界線を指示し、
前記物理的境界標識が後ほど除去される場合に前記仮想境界線を維持し、なおかつ
前記ロボットにより、前記仮想境界線を越えたエリアを回避する、掃除ロボット。
【請求項１７】
前記メモリー内の前記非一時的コンピュータ可読コードは、
物理的境界線または仮想境界線と近接する壁との間の隙間を検出し、なおかつ
前記仮想境界線を前記近接する壁まで延長するさらなる命令を有する、請求項１６に記載の掃除ロボット。
【請求項１８】
前記メモリー内の前記非一時的コンピュータ可読コードは、
前記仮想境界線を前記エリア地図のグローバル座標でリモートサーバーに提供し、
前記ロボットへ前記仮想境界線をダウンロードし、
前記ロボットにより、前記仮想境界線を複数の部分地図に対応する複数の線分に分割することによって、前記グローバル座標の前記仮想境界線を線分に変換し、なおかつ
現在の部分地図のための前記仮想境界線を決定するため、前記ロボットにより、前記線分を前記現在の部分地図と比較するさらなる命令を有する、請求項１６に記載の掃除ロボット。
【請求項１９】
前記メモリー内の前記非一時的コンピュータ可読コードは、
前記ロボットのトレーニング運転のときに前記エリア地図を作成し、前記エリア地図をユーザーに提供し、なおかつ
前記ユーザーから前記エリア地図上の仮想境界線についての指示を受け取るさらなる命令を有する、請求項１６に記載の掃除ロボット。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
[0001]本願は２０１７年８月３１日に提出された通し番号６２／５５２，７９０表題「ロボット仮想境界線」の非仮特許出願であり、その開示はその全体が本明細書に組み込まれる。
【０００２】
[0002]本発明は、ロボットが行ける場所を制限する境界線を設定することに関し、特に、仮想境界線を有する掃除ロボットに関する。
【背景技術】
【０００３】
[0003]Ｎｅａｔｏロボットには磁場を検出してロボットが行動決定を下すことを可能にできる磁気センサーが装備されている。ユーザーは床に沿って磁気ストリップを配置して、ロボットが磁気ストリップを横断するのを防ぐことができる。ｉＲｏｂｏｔはそのＲｏｏｍｂａロボット掃除機のためのＬｉｇｈｔｈｏｕｓｅを提供しており、Ｌｉｇｈｔｈｏｕｓｅは、ユーザーによるＬｉｇｈｔｈｏｕｓｅの配置に応じて出入口やその他の場所で円錐形の赤外線（ＩＲ）ビームを放射することによってＶｉｒｔｕａｌ  Ｗａｌｌ（登録商標）境界線を提供する。Ｌｉｇｈｔｈｏｕｓｅは、境界線の片側のエリアが掃除された後にロボットの通過を許すゲートとして働くこともできる。Ｅｃｏｖａｃｓ  Ｄｅｅｂｏｔ  Ｒ９５は、ユーザーがロボット掃除エリアの地図上に線を引いてロボットが横断しない線を指示することを可能にすることによって仮想境界線を提供する。改善された仮想境界線システムを提供することが望まれる。
【発明の概要】
【課題を解決するための手段】
【０００４】
[0004]一実施形態において、ユーザーは、ロボットの地図生成運転のときに、１つ以上の場所に、磁気ストリップ、ＩＲトランスポンダ、または他の境界標識を置く。ロボットは、エリア内の場所が地図化されるときに、地図と併せて境界情報を記録する。ユーザーは同じ地図生成運転のときに境界標識を除去でき、あるいはこれを別の場所に移すことができる。その後、ロボットは記録された境界位置に対応する仮想境界線を特定でき、物理的な境界標識を残す必要はない。あるいは、ユーザーは部屋の側柱にラベルを置いて仮想境界線を指示できる。ラベルは、バーコード、ＱＲコード（登録商標）、ＩＲによって検出可能なブラックラベル、カラーストリップ、パターン、または他の何らかのラベルであってよい。ラベルは、エリアを回避すること、エリアを掃除するだけで地図化しないこと、特別な掃除モードを使用することなどを、ロボットに指示できる。
【０００５】
[0005]一実施形態において、仮想境界線は時間の経過にともない変化する。例えば、仮想境界線は１回おきの掃除作業のときに人通りの多いエリアにロボットを閉じ込めるように設定できる。別の一例において、仮想境界線はゲートとして機能でき、あるエリアが掃除されるまでロボットを当該エリアに閉じ込め、その後境界線を開放することによってロボットは別のエリアを掃除するか、またはホームベースへ戻る。別の一例において、境界線によって指示されたエリアについて特定の掃除モードに異なる時間を結び付けることができ、例えばスケジュール上のある時には経度方向に掃除し、別の時には緯度方向に掃除する。
【０００６】
[0006]一実施形態において、ユーザーは特定のロボットのためにエリア地図上で仮想境界線を指示する。その後ロボットは境界線を自動的に訂正し、ディスプレイで訂正案をユーザーに提示できる。一例において、ロボットは、仮想境界線が壁に届いておらず、ロボットが線の周りを進む余地があるため実際には境界線になっていないと判断する。ロボットは境界線を最寄りの壁まで延長することを提案できる。別の一例において、ロボットは障害物の周りに境界線があること、また、ロボットが境界線より障害物に接近できることを、検出できる。そこでロボットは境界線を調節して障害物に近づける。あるいは、ロボットは、仮想境界線が物体に近すぎ、ロボットが物体に衝突するか物体に絡まると判断できる。そこでロボットは仮想境界線を物体から遠ざけて問題を回避できる。
【０００７】
[0007]一実施形態において、ロボットは独自の仮想境界線を生成し、あるいはユーザーに仮想境界線を提案する。ロボットは、落差（例えば階段）を検出する場合、絡まりが生じる可能性のある障害物（例えば配線）を検出する場合、あるいは立ち往生した場合に、境界線を提案できる。ロボットは、例えば障害物が沢山あって進むのに長い時間を要するエリアを回避するために、独自の仮想境界線を設定でき、そのエリアを掃除するにあたって十分なバッテリ寿命を有する場合は仮想境界線を解除する。
【０００８】
[0008]一実施形態において、ロボットはユーザーが所望の仮想境界線をマークできるようになる前に地図を生成する必要がある。ロボットがエリアを地図化して地図をユーザーに提示するにはトレーニングセッションが必要となり得る。長い遅延を回避するため、ロボットは幅広のレーンを使ってエリアを地図化できる。ロボットは、通常の掃除モードのように床の隅から隅までカバーする代わりに、そのＬＩＤＡＲまたはその他マッピングセンサーの範囲内にあるエリアをカバーする。例えば、これはＬＩＤＡＲの場合は６フィートのレーンと、任意に壁沿いに動くことを意味し得る。画像ベースのＳＬＡＭアルゴリズムの場合は１回の部屋通過で十分な場合がある。
【０００９】
[0009]一実施形態において、ユーザーは特定のロボットのためにエリア地図上で仮想境界線を指示する。仮想境界線はエリア地図のグローバル座標でリモートサーバーに提供される。仮想境界線はその後ロボットにダウンロードされる。ロボットは、仮想境界線を複数の部分地図に対応する複数の線分に分割することによってグローバル座標の仮想境界線を変換する。線分は部分地図のローカル座標に変換される。部分地図エリアに入ったロボットは、線分を部分地図に比較して部分地図の仮想境界線を判断する。
【００１０】
[0010]一実施形態において、仮想境界線を含む地図にはエリアを追加できる。当初の座標エリアの外にある新たなエリアを計上するため（例えば０、０座標の左）、地図の座標は調節される。新たな座標系を反映するため、仮想境界線の座標もその後調節される。
【００１１】
[0011]一実施形態において、仮想境界線は、回避すべきエリアや掃除すべきエリアなど、エリアを指示する。ユーザーはロボットの広域地図上で複数のマークされたエリアのいずれか１つを指示することによって境界エリアを選択できる。
【図面の簡単な説明】
【００１２】
【図１】一実施形態によるＬＩＤＡＲタレットを有する掃除ロボットの図である。
【図２】一実施形態による掃除ロボットと充電器の図である。
【図３】一実施形態による掃除ロボットの下面の図である。
【図４】一実施形態による掃除ロボットのためのスマートフォン制御アプリケーション表示の図である。
【図５】一実施形態による掃除ロボットのためのスマートウォッチ制御アプリケーション表示の図である。
【図６】一実施形態による掃除ロボットのための電子システムの図である。
【図７】本発明のいくつかの実施形態の実装に使える代表的なコンピューティングシステムとクライアントコンピューティングシステムの簡略化されたブロック図である。
【図８】一実施形態による掃除ロボットのためにユーザーが描いた仮想境界線を含むロボットの広域地図の図である。
【図９】一実施形態による部分地図の仮想境界線分を生成するプロセスの流れ図である。
【図１０】地図座標系を更新する一実施形態を示す図である。
【発明を実施するための形態】
【００１３】
[0022]全体的なアーキテクチャ
図１は一実施形態によるＬＩＤＡＲタレットを有する掃除ロボットの図である。掃除ロボット１０２は回転レーザービーム１０６を放射するＬＩＤＡＲ（光検出・測距）タレット１０４を有する。物体からのレーザービームの検出された反射は、物体までの距離と掃除ロボットの位置を計算するために使われる。距離計算の一実施形態は米国特許第８，９９６，１７２号「距離センサーシステムおよび方法」に記載されており、その開示は参照により本明細書に組み込まれる。あるいは、ＶＳＬＡＭ（画像センサーを使用するビジュアルＳＬＡＭ）または他の位置特定方法を使用できる。収集されたデータはＳＬＡＭ（同時位置特定・地図作成）アルゴリズムを使った地図作成にも使われる。ＳＬＡＭアルゴリズムの一実施形態は米国特許第８，９０３，５８９号「移動ロボット環境の同時位置特定および地図作成のための方法および装置」に記載されており、その開示は参照により本明細書に組み込まれる。
【００１４】
[0023]図２は一実施形態による掃除ロボットと充電器の図である。タレット１０４を有する掃除ロボット１０２が示されている。カバー２０４も示されており、カバー２０４はごみ回収袋とブラシ上面にアクセスするため開けることができる。ボタン２０２は、掃除作業開始など、ロボット掃除機の基本的作業を可能にする。ディスプレイ２０５はユーザーに情報を提供する。掃除ロボット１０２は充電器２０６とドッキングでき、充電接点２０８を通じて電気を受け取ることができる。
【００１５】
[0024]図３は一実施形態による掃除ロボットの下面の図である。ホイール３０２は掃除ロボットを動かし、ブラシ３０４はごみをごみ袋に吸い込むのを助ける。
【００１６】
[0025]図４は一実施形態による掃除ロボットのためのスマートフォン制御アプリケーション表示の図である。スマートフォン４０２は掃除ロボットを制御するためにダウンロードされるアプリケーションを有する。使いやすいインターフェースは掃除を開始する開始ボタン４０４を有する。
【００１７】
[0026]図５は一実施形態による掃除ロボットのためのスマートウォッチ制御アプリケーション表示の図である。表示例が示されている。表示５０２は使いやすい開始ボタンを提供する。表示５０４は複数の掃除ロボットを制御する能力を提供する。表示５０６は、掃除ロボットが終了したことを伝えるメッセージなど、ユーザーにフィードバックを提供する。
【００１８】
[0027]図６は一実施形態による掃除ロボットのための電子システムの高水準図である。掃除ロボット６０２はメモリー６０６にダウンロードされたプログラムを操作するプロセッサ６０４を含む。プロセッサはバス６３４や他の電気接続を用いて他のコンポーネントと通信する。掃除モードでホイールモーター６０８は、ロボットを動かし操縦するため、ホイールを独立制御する。ブラシ・真空モーター６１０は床を掃除し、ハイパワー集中掃除モードやノーマルパワーモードなど、様々なモードで作動できる。
【００１９】
[0028]ＬＩＤＡＲモジュール６１６はレーザー６２０とフォトテクタ６１８とを含む。あるいは、ＶＳＬＡＭ操作に画像センサーを使用できる。タレットモーター６２２はレーザーと検出器を動かし、掃除ロボットの周囲３６０度まで物体を検出する。毎秒約５回転など、１秒当たりに複数の回転数がある。物体との接触を指示する衝突センサー６２４、物体への接近を指示する近接センサー６２６、掃除ロボットの落下（例えば階段）や（例えば障害物を乗り越えるときの）傾きを指示する加速度計・傾斜センサー６２８など、様々なセンサーがプロセッサ６０４に入力を提供する。掃除ロボットのナビゲーションやその他制御のためのかかるセンサーの使用例は米国特許第８，８５５，９１４号「ロボット表面処理装置により床張りエリアのコーナーを横断する方法および装置」に記載されており、その開示は参照により本明細書に組み込まれる。吸い込まれるごみの量を検出するごみセンサー、何かに絡まって過負荷になったモーターを検出するモーター電流センサー、床のタイプを検出する床センサー、環境や物体の画像を提供する画像センサー（カメラ）など、他の実施形態には他のセンサーを含めてよい。
【００２０】
[0029]バッテリ６１４は電力接続（図示せず）を通じて残りの電子機器に電力を提供する。バッテリ充電回路６１２は掃除ロボットが図２の充電器２０６とドッキングされているときにバッテリ６１４に充電電流を提供する。入力ボタン６２３は、ディスプレイ６３０とともにロボット掃除機６０２の制御を直接的に可能にする。あるいは、掃除ロボット６０２は遠隔的に制御することもでき、トランシーバ６３２を通じて遠隔地へデータを送信できる。
【００２１】
[0030]掃除ロボットはインターネット６３６および／または他のネットワークを通じて制御でき、遠隔地のユーザーに情報を送り返すことができる。リモートサーバー６３８はコマンドを提供でき、掃除ロボットからアップロードされたデータを処理できる。ハンドヘルドスマートフォンまたはウォッチ６４０はユーザーによって操作されて（Ｂｌｕｅｔｏｏｔｈ（登録商標）、ダイレクトＲＦ、ＷｉＦｉ  ＬＡＮなどを通じて）コマンドを掃除ロボット６０２へ直接送信でき、あるいは接続を通じてインターネット６３６へコマンドを送信できる。コマンドはさらなる処理のためサーバー６３８へ送信でき、その後改変された形でインターネット６３６を介して掃除ロボット６０２へ転送できる。
【００２２】
[0031]メディアプラットフォームとクライアントシステムのためのコンピュータシステム
ここで説明する様々な操作はコンピュータシステムで実装できる。図７は、本発明のいくつかの実施形態の実装に使える代表的なコンピューティングシステム７０２とクライアントコンピューティングシステム７０４の簡略化されたブロック図を示している。様々な実施形態において、コンピューティングシステム７０２または同様のシステムは、掃除ロボットプロセッサシステム、リモートサーバー、またはここで説明する他の何らかのコンピューティングシステムまたはその部分を実装してよい。クライアントコンピューティングシステム７０４または同様のシステムは、ロボット掃除機アプリケーションを有するスマートフォンまたはウォッチなどのユーザーデバイスを実装してよい。
【００２３】
[0032]コンピューティングシステム７０２は、プロセッサおよびメモリー、ハンドヘルドポータブルデバイス（例えばｉＰｈｏｎｅ（登録商標）携帯電話機、ｉＰａｄ（登録商標）コンピューティングタブレット、ＰＤＡ）、ウェアラブルデバイス（例えばＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）ヘッドマウントディスプレイ）、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバーラック、または他の何らかのデータ処理システムを含む、様々なタイプのいずれか１つであってよい。
【００２４】
[0033]コンピューティングシステム７０２は処理サブシステム７１０を含んでよい。処理サブシステム７１０はバスサブシステム７７０を通じていくつかの周辺システムと通信できる。これらの周辺システムは、Ｉ／Ｏサブシステム７３０と、ストレージサブシステム７６８と、通信サブシステム７４０とを含んでよい。
【００２５】
[0034]バスサブシステム７７０はサーバーコンピューティングシステム７０２の様々なコンポーネントやサブシステムが互いに意図したとおりに通信するためのメカニズムを提供する。バスサブシステム７７０は１本のバスとして概略的に図示されているが、バスサブシステムの代替実施形態では複数のバスを利用してよい。バスサブシステム７７０は、サーバーコンピューティングシステム７０２の処理サブシステム７１０と他のコンポーネントの通信をサポートするローカルエリアネットワークを形成してよい。バスサブシステム７７０は、サーバーラック、ハブ、ルーターなどを含む様々な技術を用いて実装されてよい。バスサブシステム７７０は、メモリーバスまたはメモリーコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用するローカルバスを含む、数種類のバス構造のいずれかであってよい。例えば、かかるアーキテクチャは、インダストリースタンダードアーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、エンハンストＩＳＡ（ＥＩＳＡ）バス、ビデオエレクトロニクススタンダーズアソシエーション（ＶＥＳＡ）ローカルバス、およびＩＥＥＥ  Ｐ１３８６．１規格に従って製造されるメザニンバスとして実装されてよいペリフェラルコンポーネントインターコネクト（ＰＣＩ）バスなどを含み得る。
【００２６】
[0035]Ｉ／Ｏサブシステム７３０は、コンピューティングシステム７０２に情報を入力するための、および／またはコンピューティングシステム７０２から、またはコンピューティングシステム７０２を経由して、情報を出力するための、デバイスおよびメカニズムを含んでよい。通常、用語「入力デバイス」の使用は、コンピューティングシステム７０２に情報を入力するあらゆるタイプのデバイスおよびメカニズムを含むことを意図する。ユーザーインターフェース入力デバイスは、例えばキーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを有するオーディオ入力デバイス、マイクロフォン、および他種入力デバイスを含み得る。ユーザーが入力デバイスを操作し入力デバイスとやり取りすることを可能にするＭｉｃｒｏｓｏｆｔ  Ｋｉｎｅｃｔ（登録商標）モーションセンサー、Ｍｉｃｒｏｓｏｆｔ  Ｘｂｏｘ（登録商標）３６０ゲームコントローラ、ジェスチャと音声コマンドを使って入力を受け取るインターフェースを提供するデバイスなど、ユーザーインターフェース入力デバイスはモーション感知および／またはジェスチャ認識デバイスをも含み得る。ユーザーインターフェース入力デバイスはＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）ブリンク検出器などの眼ジェスチャ認識デバイスをも含み得て、Ｇｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）ブリンク検出器はユーザーの眼の活動（例えば写真を撮影しているとき、および／またはメニューを選択しているときの「瞬き」）を検出し、眼ジェスチャを入力デバイス（例えばＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標））への入力として変換する。加えて、ユーザーインターフェース入力デバイスは、ユーザーが音声コマンドを通じて音声認識システム（例えばＳｉｒｉ（登録商標）ナビゲータ）とやり取りすることを可能にする音声認識感知デバイスを含み得る。
【００２７】
[0036]ユーザーインターフェース入力デバイスの他の例は、三次元（３Ｄ）マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカー、デジタルカメラ、デジタルカムコーダー、ポータブルメディアプレイヤー、ウェブカメラ、画像スキャナ、指紋スキャナ、バーコードリーダー３Ｄスキャナ、３Ｄプリンタ、レーザーレンジファインダー、および視線検出デバイスなどのオーディオ／ビジュアルデバイスを含み、ただしこれらに限定されない。加えて、ユーザーインターフェース入力デバイスは、例えばコンピュータ断層撮影法、磁気共鳴映像法、ポジトロン断層撮影法、医用超音波検査デバイスなどの医用画像入力デバイスを含み得る。ユーザーインターフェース入力デバイスは、例えばＭＩＤＩキーボード、デジタル楽器などのオーディオ入力デバイスをも含み得る。
【００２８】
[0037]ユーザーインターフェース出力デバイスは、ディスプレイサブシステム、表示灯、またはオーディオ出力デバイスなどの非視覚的デバイスを含み得る。ディスプレイサブシステムは、ブラウン管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）またはプラズマディスプレイを使用するフラットパネルデバイス、投影デバイス、タッチスクリーンなどであってよい。通常、用語「出力デバイス」の使用は、コンピューティングシステム７０２からユーザーまたは他のコンピュータへ情報を出力するあらゆるタイプのデバイスおよびメカニズムを含むことを意図する。例えば、ユーザーインターフェース出力デバイスは、モニター、プリンタ、スピーカー、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイス、およびモデムなど、テキスト、グラフィック、および／またはオーディオ／ビデオ情報を伝える様々なデバイスを含み得て、ただしこれらに限定されない。
【００２９】
[0038]処理サブシステム７１０はコンピューティングシステム７０２の動作を制御し、１つ以上の処理ユニット７１２、７１４などを備えてよい。処理ユニットは、シングルコアプロセッサまたはマルチコアプロセッサを含む、１つ以上のプロセッサ、プロセッサの１つ以上のコア、またはこれらの組み合わせを含んでよい。いくつかの実施形態において、処理サブシステム７１０は、グラフィックプロセッサ、デジタル信号プロセッサ（ＤＳＰ）など、１つ以上の専用コプロセッサを含んでよい。いくつかの実施形態において、処理サブシステム７１０の処理ユニットの一部または全部は、特定用途向け集積回路（ＡＳＩＣ）またはフィールドプログラマブルゲートアレー（ＦＰＧＡ）などのカスタム回路を用いて実装されてよい。いくつかの実施形態において、かかる集積回路は回路そのものに格納された命令を実行する。他の実施形態において、処理ユニットは、ローカルストレージに格納された、例えばローカルストレージ７２２、７２４に格納された、命令を実行してよい。処理ユニット７１２、７１４には、あらゆるタイプのプロセッサを任意に組み合わせて含めてよい。
【００３０】
[0039]いくつかの実施形態において、処理サブシステム７１０は、いくつものモジュール（例えばブレードサーバー実装のブレード）を組み込むモジュール設計で実装されてよい。それぞれのモジュールは処理ユニットとローカルストレージを含んでよい。例えば、処理サブシステム７１０は、処理ユニット７１２と対応するローカルストレージ７２２、ならびに処理ユニット７１４と対応するローカルストレージ７２４を含んでよい。
【００３１】
[0040]ローカルストレージ７２２、７２４は、揮発性ストレージ媒体（例えば従来のＤＲＡＭ、ＳＲＡＭ、ＳＤＲＡＭなど）、および／または不揮発性ストレージ媒体（例えば磁気または光ディスク、フラッシュメモリーなど）を含み得る。ローカルストレージ７２２、７２４に組み込まれるストレージ媒体は、固定、取り外し可能、または必要に応じアップグレード可能であってよい。ローカルストレージ７２２、７２４は、システムメモリー、ＲＯＭ、およびパーマネントストレージデバイスなど、様々なサブユニットに物理的にか論理的に分割されてよい。システムメモリーは読み取り書き込みメモリーデバイスであってよく、あるいはダイナミックランダムアクセスメモリーなどの揮発性読み取り書き込みメモリーであってもよい。システムメモリーは処理ユニット７１２、７１４が実行時に必要とする命令およびデータの一部または全部を格納してよい。ＲＯＭは処理ユニット７１２、７１４が必要とする静的データと命令を格納してよい。パーマネントストレージデバイスは、１つ以上の処理ユニット７１２、７１４とローカルストレージ７２２、７２４とを含むモジュールの電源が切れているときでも命令とデータを格納できる不揮発性読み取り書き込みメモリーデバイスであってよい。ここで使われる用語「ストレージ媒体」はデータを無制限に格納できる媒体を含み（上書き、電気妨害、停電などによる）、無線または有線接続で伝播する搬送波や一時的な電気信号は含まない。
【００３２】
[0041]いくつかの実施形態において、ＵＰＰシステム１０２の機能などの様々なサーバー機能を、またはＵＰＰシステム１０２に関連する他の何らかのサーバーを、実装するオペレーティングシステムおよび／またはプログラムなど、ローカルストレージ７２２、７２４は処理ユニット７１２、７１４によって実行される１つ以上のソフトウェアプログラムを格納してよい。「ソフトウェア」は一連の命令を通常指し、これが処理ユニット７１２、７１４によって実行されるとコンピューティングシステム７０２（またはその部分）が様々な操作を遂行し、ソフトウェアプログラムの操作を実行し遂行する１つ以上の具体的なマシン実装を規定する。命令は、読み取り専用メモリーに存在するファームウェアとして格納されてよく、および／または不揮発性ストレージ媒体に格納されるプログラムコードであってよく、プログラムコードは揮発性作業メモリーに読み込まれて処理ユニット７１２、７１４によって実行される。いくつかの実施形態において、命令はストレージサブシステム７６８（例えばコンピュータ可読ストレージ媒体）によって格納されてよい。様々な実施形態において、処理ユニットは様々なプログラムまたはコード命令を実行でき、複数の同時実行プログラムまたはプロセスを維持できる。任意の所与の時間において、実行されるべきプログラムコードの一部または全部は、ローカルストレージ７２２、７２４に存在してよく、および／または１つ以上のストレージデバイスを潜在的に含むストレージサブシステムに存在してよい。ソフトウェアは、単一のプログラムとして、または独立したプログラムからなる集まりとして、または必要に応じて相互に作用するプログラムモジュールとして、実装されてよい。処理ユニット７１２、７１４は、上述した様々な操作を実行するため、実行するプログラム命令と処理するデータとをローカルストレージ７２２、７２４（または後述する非ローカルストレージ）から引き出す。
【００３３】
[0042]ストレージサブシステム７６８は、コンピューティングシステム７０２によって使用される情報を格納するレポジトリまたはデータストアを提供する。ストレージサブシステム７６８は、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を格納する有形で非一時的なコンピュータ可読ストレージ媒体を提供する。処理サブシステム７１０によって実行されたときに上述した機能を提供するソフトウェア（プログラム、コードモジュール、命令）は、ストレージサブシステム７６８に格納されてよい。ソフトウェアは処理サブシステム７１０の１つ以上の処理ユニットによって実行されてよい。ストレージサブシステム７６８はまた、本発明に従って使用されるデータを格納するレポジトリを提供してよい。
【００３４】
[0043]ストレージサブシステム７６８は、揮発性および不揮発性メモリーデバイスを含む、１つ以上の非一時的メモリーデバイスを含んでよい。図７に示されているように、ストレージサブシステム７６８はシステムメモリー７６０とコンピュータ可読ストレージ媒体７５２とを含む。システムメモリー７６０は、プログラムの実行中に命令とデータを格納する揮発性メインＲＡＭと、固定命令が格納される不揮発性ＲＯＭまたはフラッシュメモリーとを含む、いくつかのメモリーを含んでよい。いくつかの実施形態において、起動時などにコンピューティングシステム７０２内のエレメント間で情報を伝送するのに役立つ基本的ルーチンを含む基本入出力システム（ＢＩＯＳ）は通常、ＲＯＭに格納されてよい。ＲＡＭは通常、処理サブシステム７１０によって現在操作され実行されているデータおよび／またはプログラムモジュールを収容する。いくつかの実装において、システムメモリー７６０は、スタティックランダムアクセスメモリー（ＳＲＡＭ）やダイナミックランダムアクセスメモリー（ＤＲＡＭ）など、複数タイプのメモリーを含んでよい。ストレージサブシステム７６８は、磁気、光、半導体、または他のデータストレージ媒体に基づいてよい。ダイレクトアタッチドストレージ、ストレージエリアネットワーク、ネットワークアタッチドストレージなどを使用してよい。サービスまたはサーバーによって生成、消費、または維持されるものとしてここで説明されるデータストアまたは他のデータ集合は、ストレージサブシステム７６８に格納されてよい。
【００３５】
[0044]制限ではなく一例として、図７に描かれているように、システムメモリー７６０は、クライアントアプリケーション、ウェブブラウザ、ミッドティアアプリケーション、リレーショナルデータベース管理システム（ＲＤＢＭＳ）などを含み得るアプリケーションプログラム７６２と、プログラムデータ７６４と、１つ以上のオペレーティングシステム７６６とを格納してよい。一例として、オペレーティングシステムの例は、種々バージョンのＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）、および／またはＬｉｎｕｘ（登録商標）オペレーティングシステム、様々な市販ＵＮＩＸ（登録商標）またはＵＮＩＸ（登録商標）系オペレーティングシステム（様々なＧＮＵ／Ｌｉｎｕｘ（登録商標）オペレーティングシステム、Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ（登録商標）ＯＳなどを含み、ただしこれらに限定されない）、および／またはｉＯＳ、Ｗｉｎｄｏｗｓ（登録商標）Ｐｈｏｎｅ、Ａｎｄｒｏｉｄ（登録商標）ＯＳ、ＢｌａｃｋＢｅｒｒｙ（登録商標）１０  ＯＳ、Ｐａｌｍ（登録商標）ＯＳオペレーティングシステムなどのモバイルオペレーティングシステムを含み得る。
【００３６】
[0045]コンピュータ可読ストレージ媒体７５２はいくつかの実施形態の機能を提供するプログラミングおよびデータ構造を格納してよい。処理サブシステム７１０のプロセッサによって実行されたときに上述した機能を提供するソフトウェア（プログラム、コードモジュール、命令）は、ストレージサブシステム７６８に格納されてよい。一例として、コンピュータ可読ストレージ媒体７５２は、ハードディスクドライブ、磁気ディスクドライブ、ＣＤ  ＲＯＭ、ＤＶＤ、Ｂｌｕ−Ｒａｙ（登録商標）ディスク、または他の光学式媒体などの光ディスクドライブなど、不揮発性メモリーを含み得る。コンピュータ可読ストレージ媒体７５２は、Ｚｉｐ（登録商標）ドライブ、フラッシュメモリーカード、ユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブ、セキュアデジタル（ＳＤ）カード、ＤＶＤディスク、デジタルビデオテープなどを含み得て、ただしこれらに限定されない。コンピュータ可読ストレージ媒体７５２はまた、フラッシュメモリーベースのＳＳＤ、エンタープライズフラッシュドライブ、ソリッドステートＲＯＭなどの不揮発性メモリーに基づくソリッドステートドライブ（ＳＳＤ）、ソリッドステートＲＡＭ、ダイナミックＲＡＭ、スタティックＲＡＭ、ＤＲＡＭベースのＳＳＤ、磁気抵抗ＲＡＭ（ＭＲＡＭ）ＳＳＤ、およびＤＲＡＭとフラッシュメモリーベースのＳＳＤとの組み合わせを使用するハイブリッドＳＳＤなどの揮発性メモリーに基づくＳＳＤを含み得る。コンピュータ可読媒体７５２は、コンピュータ可読命令、データ構造、プログラムモジュール、ならびにコンピューティングシステム７０２のためのその他データのストレージを提供してよい。
【００３７】
[0046]いくつかの実施形態において、ストレージサブシステム７６８はまたコンピュータ可読ストレージ媒体リーダー７５０を含んでよく、コンピュータ可読ストレージ媒体リーダー７５０はコンピュータ可読ストレージ媒体７５２にさらに接続されてよい。ともに、そして任意に、システムメモリー７６０との組み合わせで、コンピュータ可読ストレージ媒体７５２は総合的に、リモート、ローカル、固定、および／または取り外し可能ストレージデバイスに、ならびにコンピュータ可読情報を格納するストレージ媒体に、相当し得る。
【００３８】
[0047]いくつかの実施形態において、コンピューティングシステム７０２は１つ以上の仮想マシンを実行するためのサポートを提供してよい。コンピューティングシステム７０２は、仮想マシンの構成と管理を促進するハイパーバイザなどのプログラムを実行してよい。それぞれの仮想マシンには、メモリー、計算（例えばプロセッサ、コア）、Ｉ／Ｏ、およびネットワーキングリソースが割り当てられてよい。それぞれの仮想マシンは自身のオペレーティングシステムを通常実行し、このオペレーティングシステムは、コンピューティングシステム７０２によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同じである場合と異なる場合とがある。したがって、コンピューティングシステム７０２によって複数のオペレーティングシステムが同時に実行される可能性がある。それぞれの仮想マシンは通常、他の仮想マシンから独立して実行する。
【００３９】
[0048]通信サブシステム７４０は他のコンピュータシステムおよびネットワークへ至るインターフェースを提供する。通信サブシステム７４０はインターフェースとして機能し、他のシステムからデータを受信し、コンピューティングシステム７０２から他のシステムへデータを送信する。例えば、通信サブシステム７４０は、クライアントコンピューティングデバイスへ情報を送信しクライアントコンピューティングデバイスから情報を受信するため、コンピューティングシステム７０２がインターネットを経由して１つ以上のクライアントコンピューティングデバイスへ至る通信チャネルを確立することを可能にしてよい。
【００４０】
[0049]通信サブシステム７４０は有線および／または無線通信プロトコルをサポートしてよい。例えば、いくつかの実施形態において、通信サブシステム７４０は、無線音声および／またはデータネットワーク（例えば携帯電話技術、３Ｇ、４Ｇ、またはＥＤＧＥ（グローバルエボリューションのための改良データ転送速度）などの先進データネットワーク技術を使用）、ＷｉＦｉ（ＩＥＥＥ  ８０２．１１系規格、または他の移動通信技術、またはこれらの組み合わせ）、全地球測位システム（ＧＰＳ）受信コンポーネント、および／または他のコンポーネントにアクセスする無線周波（ＲＦ）トランシーバコンポーネントを含んでよい。いくつかの実施形態において、通信サブシステム７４０は、無線インターフェースに加えて、あるいは無線インターフェースの代わりに、有線ネットワーク接続（例えばＥｔｈｅｒｎｅｔ）を提供してよい。
【００４１】
[0050]通信サブシステム７４０は様々な形でデータを送受してよい。例えば、いくつかの実施形態において、通信サブシステム７４０は構造化および／または非構造化データフィード、イベントストリーム、イベントアップデートなどの形で入力通信を受信してよい。例えば、通信サブシステム７４０は、Ｔｗｉｔｔｅｒ（登録商標）フィード、Ｆａｃｅｂｏｏｋ（登録商標）アップデート、Ｒｉｃｈ  Ｓｉｔｅ  Ｓｕｍｍａｒｙ（ＲＳＳ）フィードなどのウェブフィード、および／または１つ以上のサードパーティ情報源からのリアルタイムアップデートなど、ソーシャルメディアネットワークおよび／または他の通信サービスのユーザーからデータフィードをリアルタイムで受信（または送信）するように構成されてよい。
【００４２】
[0051]いくつかの実施形態において、通信サブシステム７４０は連続データストリームの形でデータを受信するよう構成されてよく、連続データストリームは、途切れなく、または際限なく、明確な終わりがなくてよい、リアルタイムイベントおよび／またはイベントアップデートのイベントストリームを含み得る。連続データを生成するアプリケーションの例は、例えばセンサーデータアプリケーション、フィナンシャルティッカー、ネットワーク性能測定ツール（例えばネットワーク監視およびトラフィック管理アプリケーション）、クリックストリーム解析ツール、自動車交通監視などを含み得る。
【００４３】
[0052]通信サブシステム７４０はまた、コンピューティングシステム７０２に結合された１つ以上のストリーミングデータソースコンピュータと通信できる１つ以上のデータベースに構造化および／または非構造化データフィード、イベントストリーム、イベントアップデートなどを出力するように構成されてよい。
【００４４】
[0053]通信サブシステム７４０は通信インターフェース７４２を提供してよく、例えばローカルエリアネットワーク（バスサブシステム７７０）とインターネットなどのより大きいネットワークとの間でデータ通信能力を提供できるＷＡＮインターフェースを提供してよい。有線（例えばＥｔｈｅｒｎｅｔ、ＩＥＥＥ  ８０２．３規格）および／または無線技術（例えばＷｉ−Ｆｉ、ＩＥＥＥ  ８０２．１１規格）を含む、従来の通信技術やその他の通信技術を使用してよい。
【００４５】
[0054]コンピューティングシステム７０２は通信インターフェース７４２を通じて受信した要求に応じて作動してよい。さらに、いくつかの実施形態において、通信インターフェース７４２はコンピューティングシステム７０２を互いに接続してよく、大量のアクティビティを管理できるスケーラブルなシステムを提供する。動的リソース割り当ておよび再割り当てを含む、サーバーシステムとサーバーファーム（協働するサーバーシステムの集合）を管理する従来の手法や他の手法を使用してよい。
【００４６】
[0055]コンピューティングシステム７０２は、インターネットなどのワイドエリアネットワークを通じて、ユーザーが所有する、またはユーザーが操作する、様々なデバイスとやり取りできる。図７ではユーザーが操作するデバイスの一例がクライアントコンピューティングシステム７０４として示されている。クライアントコンピューティングシステム７０４は、例えばスマートフォン、他の携帯電話機、タブレットコンピュータ、ウェアラブルコンピューティングデバイス（例えばスマートウォッチ、アイグラス）、デスクトップコンピュータ、ラップトップコンピュータなどのコンシューマデバイスとして実装されてよい。
【００４７】
[0056]例えば、クライアントコンピューティングシステム７０４は通信インターフェース７４２を通じてコンピューティングシステム７０２と通信できる。クライアントコンピューティングシステム７０４は、処理ユニット７８２、ストレージデバイス７８４、ネットワークインターフェース７８０、ユーザー入力デバイス７８６、およびユーザー出力デバイス７８８など、従来のコンピュータコンポーネントを含んでよい。クライアントコンピューティングシステム７０４は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、他のモバイルコンピューティングデバイス、ウェアラブルコンピューティングデバイスなど、様々なフォームファクタで実装されるコンピューティングデバイスであってよい。
【００４８】
[0057]処理ユニット７８２とストレージデバイス７８４は上述した処理ユニット７１２、７１４およびローカルストレージ７２２、７２４と同様であってよい。クライアントコンピューティングシステム７０４に課せられる要求に応じて適切なデバイスを選択してよく、例えばクライアントコンピューティングシステム７０４は処理能力に限りがある「シン」クライアントとして実装されてよく、あるいはハイパワーコンピューティングデバイスとして実装されてもよい。メッセージへのアクセス、メッセージに対する操作の遂行、ならびに上述した他の相互作用など、コンピューティングシステム７０２との間でメッセージ管理サービスの様々な相互作用を可能にするため、クライアントコンピューティングシステム７０４には処理ユニット７８２によって実行されるプログラムコードを用意してよい。一部のクライアントコンピューティングシステム７０４はメッセージ管理サービスから独立してメッセージングサービスと相互作用してもよい。
【００４９】
[0058]ネットワークインターフェース７８０はワイドエリアネットワーク（例えばインターネット）へ至る接続を提供でき、ワイドエリアネットワークにはコンピューティングシステム７０２の通信インターフェース７４２も接続される。様々な実施形態において、ネットワークインターフェース７８０は有線インターフェース（例えばＥｔｈｅｒｎｅｔ）を含んでよく、および／またはＷｉ−Ｆｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、またはセルラーデータネットワーク規格（例えば３Ｇ、４Ｇ、ＬＴＥなど）などの様々なＲＦデータ通信規格を実装する無線インターフェースを含んでよい。
【００５０】
[0059]ユーザー入力デバイス７８６はユーザーがクライアントコンピューティングシステム７０４に信号を提供するための何らかのデバイス（または複数のデバイス）を含み得て、クライアントコンピューティングシステム７０４は、特定のユーザー要求または情報を意味するものとして信号を解釈してよい。様々な実施形態において、ユーザー入力デバイス７８６は、キーボード、タッチパッド、タッチスクリーン、マウスまたはその他ポインティングデバイス、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、マイクロフォンなどのいずれかまたは全てを含み得る。
【００５１】
[0060]ユーザー出力デバイス７８８はクライアントコンピューティングシステム７０４がユーザーに情報を提供できる何らかのデバイスを含み得る。例えば、ユーザー出力デバイス７８８は、クライアントコンピューティングシステム７０４によって生成された画像を、またはクライアントコンピューティングシステム７０４へ引き渡された画像を、表示するディスプレイを含み得る。ディスプレイには、様々な画像生成技術を、例えば液晶ディスプレイ（ＬＣＤ）、有機発光ダイオード（ＯＬＥＤ）を含む発光ダイオード（ＬＥＤ）、投影システム、ブラウン管（ＣＲＴ）などと、支援電子機器（例えばデジタル・アナログまたはアナログ・デジタル変換器、信号処理器など）を、採用できる。いくつかの実施形態は、入力デバイスと出力デバイスの両方として機能するタッチスクリーンなどのデバイスを含み得る。いくつかの実施形態では、ディスプレイに加えて、またはディスプレイの代わりに、他のユーザー出力デバイス７８８が提供されてよい。例は、表示灯、スピーカー、触覚「ディスプレイ」デバイス、プリンタなどを含む。
【００５２】
[0061]いくつかの実施形態は、マイクロプロセッサなどの電子コンポーネント、コンピュータ可読ストレージ媒体にコンピュータプログラム命令を格納するストレージおよびメモリーを含む。本明細書に記載された特徴の多くは、コンピュータ可読ストレージ媒体で符号化された１組のプログラム命令として指定されるプロセスとして実装されてよい。これらのプログラム命令が１つ以上の処理ユニットによって実行されると、処理ユニットはプログラム命令の中で指示される様々な操作を遂行する。プログラム命令またはコンピュータコードの例は、例えばコンパイラによって生成されるマシンコード、ならびにインタープリタを用いてコンピュータ、電子コンポーネント、またはマイクロプロセッサによって実行される高水準コードを含むファイルを含む。適切なプログラミングにより、処理ユニット７１２、７１４、および７８２は、本明細書でサーバーまたはクライアントによって遂行されると説明されている機能のいずれか、またはメッセージ管理サービスに関連する他の機能を含む様々な機能を、コンピューティングシステム７０２とクライアントコンピューティングシステム７０４に提供できる。
【００５３】
[0062]コンピューティングシステム７０２とクライアントコンピューティングシステム７０４が説明のためのものであり、変更や修正が可能であることは理解されよう。本発明の実施形態との関係で使われるコンピュータシステムは、本明細書で具体的に説明されていない他の能力を有する場合がある。さらに、コンピューティングシステム７０２とクライアントコンピューティングシステム７０４は特定のブロックを参照して説明されているが、これらのブロックが説明を簡便にするためのものであり、構成品の特定の物理的配置を示唆するものではないことを理解されたい。例えば、様々なブロックが同じ施設内、同じサーバーラック内、または同じマザーボード上に配置されてもよいが、必ずしもそうである必要はない。さらに、ブロックは必ずしも物理的に別個のコンポーネントに相当しない。ブロックは、例えばプロセッサをプログラムすることにより、あるいは適当な制御回路を設けることにより、様々な操作を遂行するように構成されてよく、様々なブロックは、最初の構成がどのように得られるかに応じて、再構成可能であり得るか、または再構成可能であり得ない。本発明の実施形態は、回路とソフトウェアとの組み合わせを用いて実装される電子デバイスを含む様々な装置で実現できる。
【００５４】
[0063]仮想境界線
一実施形態において、ユーザーは最初にロボットを「トレーニング」モードで始動する。ロボットはこのモードで間取りをたどって探査し、地図を作る。ユーザーはユーザーデバイスのロボットアプリケーションでトレーニングのアイコンかソフトキーを選択できる。ユーザーは扉を開け、ロボットが全ての所望のエリアにアクセスできるようにする。この手順が完了した後に、ロボットは探査したエリアを示す有効範囲地図を生成し、これをリモートサーバーへアップロードする。その後サーバーは、モバイルアプリなどのユーザーデバイスのユーザーアプリケーションへ有効範囲地図をダウンロードする。ユーザーはここで、この地図を保存して仮想境界線に使用するか、あるいはキャンセルして探査をやり直すかを選ぶ。探査地図に満足したユーザーはモバイルアプリを使って仮想境界線を引く。アプリは境界線の挿入と削除をサポートする。望ましい境界線が保存された後にユーザーは掃除運転を開始でき、ロボットは掃除運転でこれらの仮想境界線を順守する。掃除中の仮想境界線順守は前の掃除／トレーニング運転で生成された有効範囲地図におけるロボットの位置に左右される。
【００５５】
[0064]一実施形態において、ユーザーはタッチスクリーンで指を使って地図上に仮想境界線を引く。あるいは、スタイラスや、マウスやサムホイールといった他の線引きエレメントを使用できる。あるいは、地図の部分にラベルを付けることができ、ユーザーはロボットによって回避されるべき部分を指示でき、アプリケーションは、ロボットに対してかかるエリアを閉ざすため、仮想境界線をどこに引くべきかを判断する。ユーザーはドロップダウンリストで部分を選択でき、電話で部分にタッチして部分を選択でき、ラベルをタイピングして部分を選択でき、ラベルを言って部分を選択できる（音声認識使用）。一例において、ユーザーは、エリアをタップすることにより、指定エリアの掃除と指定エリアの立入禁止を切り替えることができる。タップのたびに立入可能と立入禁止の設定が切り替わる。地図上では様々な部屋を色分けして表示でき、色やその他の視覚的標識で掃除するべきエリアと回避するべきエリアを指示できる。例えば、地図上の回避すべきエリアには網掛けを重ねることができる。ユーザーは任意のデバイスで仮想境界線を指示でき、仮想境界線を別のデバイスへ転送できる。例えば、ユーザーは大型のデスクトップコンピュータディスプレイで境界線を指定でき、その後マークされた地図をロボットとのさらなるやり取りのためスマートフォンに転送できる。
【００５６】
[0065]図８は、一実施形態による掃除ロボットのためにユーザーが引いた仮想境界線８０４および８０６を含むロボットの広域地図８００の図である。ベースステーション８０２にあるロボットの位置が示されている。見てとれるように、仮想境界線８０４および８０６はロボットがいる部屋の部分８０８にロボットを制限し、ロボットが部分８１０や他の部屋へ行くことを阻止する。ユーザーは境界線アイコン８０８にタッチし、ユーザーの指で線８０４および８０６を引くことによって境界線引きを開始できる。あるいは、アイコン８０８は所望のスポットまでドラッグでき、拡張、縮小、および回転して所望の場所に置くことができる。
【００５７】
[0066]境界線延長
一実施形態において、ユーザーは地図８００上で仮想境界線８１２を指示する。ロボットは境界線の末端と壁８１４との間に隙間があることに気づき、この隙間によってロボットは通過でき、境界線は無意味になる。ロボットは境界線を自動的に訂正でき、仮想境界線を最寄りの壁８１４まで延長する点線８１６の訂正案をディスプレイでユーザーに提示できる。ユーザーが訂正を承諾すると境界線が延長される。一実施形態では、ユーザーに訂正を提示せずに、またはユーザーが応答しない状況で、境界線をおかまいなしに延長できる。
【００５８】
[0067]境界線修正
一実施形態において、ロボットは障害物の周りに境界線があり、ロボットが境界線より障害物に接近できることを検出できる。そこでロボットは境界線を調節して障害物に近づける。例えば、障害物８２０の周りに仮想境界線８１８を引くことができる。ロボットは障害物に問題なく接近できると判断でき、新たな仮想境界線８２２を提案する。上述した境界線延長の例のように、ユーザーが訂正を承諾すると境界線が調節される。一実施形態では、ユーザーに訂正を提示せずに、またはユーザーが応答しない状況で、境界線をおかまいなしに調節できる。あるいは、ロボットは、仮想境界線が物体に近すぎ、ロボットが物体に衝突するか物体に絡まると判断できる。そこでロボットは仮想境界線を物体から遠ざけて問題を回避できる。
【００５９】
[0068]一実施形態において、ロボットは独自の仮想境界線を生成し、あるいはユーザーに仮想境界線を提案する。ロボットは、落差（例えば階段）を検出する場合、絡まりが生じる可能性のある障害物（例えば配線）を検出する場合、あるいは立ち往生した場合に、境界線を提案できる。ロボットは、例えば障害物が沢山あって進むのに長い時間を要するエリアを回避するために、独自の仮想境界線を設定でき、そのエリアを掃除するにあたって十分なバッテリ寿命を有する場合は仮想境界線を解除する。ロボットは仮想境界線の後ろにある物体の写真を撮影でき、これを仮想境界線の確認に役立てるためユーザーに送ることができ、あるいは単にユーザーに物体を動かすことを促すことができる。
【００６０】
[0069]一実施形態において、ロボットは物体を感知し、リモートサーバーかロボットによって物体認識が遂行される。物体は、カメラ撮影、ＩＲ、超音波、またはその他センサーにより、あるいは衝突または接触センサーとの物理的接触により、感知できる。テレビの配線の絡みや床に置かれた水が入ったペットのお椀といった危険なエリアを回避するため、ロボットアプリは仮想境界線を自動的に引くことができる。その後ユーザーは境界線を承諾でき、あるいは危険物を動かすよう促されることができる。
【００６１】
[0070]一実施形態において、ロボットは、回避すべきエリアばかりでなく、様々なタイプの掃除エリアを指定するために仮想境界線を使用できる。例えば、木の床やタイルの床のエリアは、異なるブラシ高さ、アタッチメント、または異なるロボットが必要なエリアとして指示できる。落差は速度を落として用心して進むエリアとして指示できる。
【００６２】
[0071]バッテリ最適化境界線
一実施形態において、ロボットは、厳しい操縦が要求されるため掃除に長い時間がかかる物体やエリアの周りに一時的な仮想境界線を引くことができる。その後ロボットは簡単なエリアを掃除でき、時間がかかるエリアに対処するにあたって十分なバッテリ充電が残っている場合は仮想境界線を解除できる。
【００６３】
[0072]一実施形態において、ロボットは、バッテリ寿命を最適化するため、一時的な仮想境界線を引くことができる。例えば、ロボットは大きい間取りを掃除するために数回の充電サイクルを要する場合がある。通常のロボット充電サイクルではバッテリが１０％未満まで低下した後に約８０％まで再充電する。充電は８０％より上でより長い時間を要するため、これは合計掃除時間（掃除＋充電時間）を最適化する。ロボットは、例えば、間取りの最後の部分（例えば２０％）を遮る仮想境界線を引くことにより、その後６０％までしか再充電しないことにより、またはその最後の部分の掃除に必要な量を再充電することにより、より速い合計掃除時間を達成すると判断できる。これは、最後の５％と仮想境界線の後ろの追加量に少ない充電で十分である場合に、５％以外の全てを掃除した後に８０％まで再び充電するまで待つより効率的であり得る。
【００６４】
[0073]トレーニング運転
一実施形態において、ロボットはユーザーが所望の仮想境界線をマークできるようになる前に地図を生成する必要がある。ロボットがエリアを地図化して地図をユーザーに提示するにはトレーニングセッションが必要となり得る。長い遅延を回避するため、ロボットは幅広のレーンを使ってエリアを地図化できる。ロボットは、床の隅から隅までカバーする代わりに、そのＬＩＤＡＲまたはその他マッピングセンサーの範囲内にあるエリアをカバーする。例えば、これはＬＩＤＡＲの場合は６フィートのレーンと、任意に壁沿いに動くことを意味し得る。画像ベースのＳＬＡＭアルゴリズムの場合は１回の部屋通過で十分な場合がある。あるいは、ユーザーはリモコンを使って掃除すべきエリアの境界の周りでロボットを手作業で誘導できる。それらの境界の外にある物は検出でき、地図化でき、仮想境界線でマークできる。
【００６５】
[0074]一実施形態において、プロセスはユーザーにとって可能な限りシームレスになる。ユーザーはただロボットを置いて「掃除開始」ボタンをクリックするだけでよい。一実施形態において、ディスプレイはその後、何もかも掃除するか、あるいはトレーニング運転を行ってエリアを地図化し、仮想境界線をマークするため地図をユーザーに提示するかを、ユーザーに促すことができる。あるいは、ロボットはただトレーニング運転を開始し、準備ができたら地図と境界線案をユーザーに提示し、その一方で、ユーザーによって境界線案が却下されるか追加されるまで、仮想境界線案を使って完全掃除運転を開始する。地図は、例えばスマートフォン、タブレット、またはコンピュータなどのユーザーデバイスへ伝送するローカルＷｉＦｉネットワーク、Ｂｌｕｅｔｏｏｔｈ（登録商標）、または他の何らかの伝送技術を用いて、ユーザーに直接提供できる。あるいは、地図はリモートサーバーへ送信でき、その後ユーザーデバイスにダウンロードできる。
【００６６】
[0075]部分地図から広域地図
図９は一実施形態による部分地図の仮想境界線分を生成するプロセスの流れ図である。ロボットはトレーニング運転のときに自身の環境を地図化する（９０２）。任意に選べることとして、ロボットはトレーニング運転のときに掃除することもできる。ロボットはそのセンサーとＳＬＡＭ（同時位置特定・地図作成）アルゴリズムを使ってエリアを地図化し、地図上の物体（壁、障害物、その他）の座標を生成する（９０４）。ロボットは格納された座標から地図のポータブルネットワークグラフィックス（ＰＮＧ）画像を生成する（９０６）。ＰＮＧ地図はその後リモートサーバーへアップロードされる（９０８）。デバッグの目的で地図のポータブルグレーマップフォーマット（ＰＧＭ）画像も生成される。
【００６７】
[0076]サーバーは、インターネットまたはその他ネットワークまたは通信チャネルを通じて、ユーザーデバイスで実行しているアプリケーションにＰＮＧ地図を提供する（９１０）。ユーザーは、先に図８に関して示したように、地図上で仮想境界線を指示する（９１２）。ユーザーアプリは、地図の外にある境界線部分を削除する（９１４）。線が壁に届いていない場合、またはエリアの障壁として機能していない場合、アプリは線を延長することをユーザーに促すことができ、あるいは線を自動的に延長できる。ユーザーアプリは仮想境界線のグローバル座標を計算し、それらをサーバーへ送信する（９１６）。サーバーは仮想境界線のグローバル座標をロボットに提供する（９１８）。ロボットは仮想境界線をロボットのメモリーに格納された部分地図に対応する線分に分割し、グローバル座標を部分地図のローカル座標に変換する。部分地図はＬＩＤＡＲまたはロボット上の他の位置特定システムの所望範囲に対応し得る。ある１つの部分地図から別の部分地図へ移動するときの位置追跡能力と完全なカバレッジを確保するため、部分地図は重なり合うことができる。一実施形態において、部分地図は５ｘ５メートルのエリアであり、あるいは断面１０メートル未満の別の寸法である。
【００６８】
[0077]ロボットは掃除運転を実行しているときに、必要に応じてそれぞれの部分地図にアクセスし、その部分地図の仮想境界線分のローカル座標にもアクセスする。ロボットプロセッサはＬＩＤＡＲまたは他のメカニズムを用いて自身の現在位置を絶えず検出し、その座標を仮想境界線分の座標に比較する。境界線分に達するとロボットは方向を変える。ロボットは、ロボットがターンし、掃除されていない近接部分まで移動し、その後方向を反転して掃除を継続できるようにするため、ロボットの先端が境界線に十分近づいていることを検出する。
【００６９】
[0078]座標訂正
図１０は座標系を更新する一実施形態を示している。図示されているように、ロボットは部屋１００２、１００４、および１００６を含む最初の地図を描いた。座標系は点１００８にて０、０で始まるよう設定された。その後ユーザーは地図上で仮想境界線１０１０を引いた。エリア１０１２は以前、閉じた扉、仮想境界線、または物理的境界線、またはその他によって遮断されていた。エリア１０１２がその後開放される場合は、これを地図に加える必要があり、０、０点を点１０１４に変更して座標は変更される。これは、仮想境界線１０１０を構成する点を含む、地図上の他の点の座標の変更を要する。新しい座標空間のため、点１００８および１０１４間の差を地図上の各点に加えることができる。
【００７０】
[0079]除去可能な物理的境界標識
一実施形態において、ユーザーは、ロボットの地図生成運転のときに、１つ以上の場所に、磁気ストリップ、ＩＲトランスポンダ、または他の境界標識を置く。ロボットは、エリア内の場所が地図化されるときに、地図と併せて境界情報を記録する。ユーザーは同じ地図生成運転のときに境界標識を除去でき、あるいはこれを別の場所に移すことができる。例えば、ユーザーはロボットが遭遇する次の扉や玄関入口へ境界標識を移すことができる。その後、ロボットは記録された境界位置に対応する仮想境界線を特定でき、物理的な境界標識を残す必要はない。したがって、ユーザーが地図上で境界線を作る代わりに、ロボットは地図とそれぞれの部分地図を生成しているときに境界線を生成する。上述したように、ロボットは壁に届いていない境界線を延長でき、あるいは境界線を物体に近づけることができる。部分地図ごとにロボットのローカルメモリーに境界線分が格納される。地図化が完了すると、ロボットは地図上に描かれた仮想境界線を含む地図のＰＮＧ画像を生成する。仮想境界線を含むＰＮＧ画像はその後サーバーへアップロードされ、その後ユーザーデバイスのアプリにダウンロードされる。
【００７１】
[0080]一実施形態において、その後ユーザーは境界線と地図を確認でき、あるいはこれを修正できる。例えば、ユーザーは境界線が正しい位置にないことに気づく場合があり、そのためロボットは、例えば扉から１インチまでは掃除するが、扉の縁までのエリアや扉の下は掃除しない。
【００７２】
[0081]一実施形態において、仮想境界線は時間の経過にともない変化する。例えば、仮想境界線は１回おきの掃除作業のときに人通りの多いエリアにロボットを閉じ込めるように設定できる。ユーザーは上述したメカニズムのいずれかにより、または他の何らかのメカニズムにより、地図上で仮想境界線を指示できる。次にユーザーは、例えば毎週火曜日の午後といったスケジュールを地図に結び付けることができる。次にユーザーはマークされていない地図の別のコピーを引き出し、別個の１組の仮想境界線を指示し、あるいは仮想境界線を指示しない。次にユーザーは、例えば隔週土曜日の午後５時といったスケジュール上の別の時間を、マークされた地図に結び付けることができる。次にアプリはスケジュールとグローバル座標の複数の線分をサーバーへアップロードする。次にサーバーはスケジュールと仮想境界線をロボットへダウンロードする。ロボットは上述したように第１のスケジュールの仮想境界線を部分地図の線分に変換する。境界線とスケジュール時間は適切な部分地図を参照して格納される。２番目以降の仮想境界線分とスケジュール時間にもメモリー内の同じ部分地図が使われる。より遅いロボット掃除機速度および／または高真空力、またはロボット掃除機作業の他の動作修正など、スケジュールはある特定のエリアを集中的に掃除することを指示できる。集中的掃除または他の動作修正は非スケジュールモードであってもよい。例えば、ユーザーはアプリの地図上でターボまたはジェントルモードで掃除するセクションを描くことができ、その後直ちにロボットをそのセクションへ行かせることができる。したがって、ユーザーは、スケジュールされた作業で、またはスケジュールされてない作業で、仮想境界線を、または異なる処置が行われるエリアの指示を、指示できる。緊急作業の場合、ユーザー指示は作業後に破棄でき、あるいは作業を保存することを、または仮想境界線により作業をスケジュールすることを、ユーザーに促すことができる。
【００７３】
[0082]別の一例において、仮想境界線はゲートとして機能でき、あるエリアが掃除されるまでロボットを当該エリアに閉じ込め、その後境界線を開放することによってロボットは別のエリアを掃除するか、またはホームベースへ戻る。ロボットのメモリーに格納されたプログラムは、壁、障害物、および仮想境界線で完全に囲まれた全てのエリアが掃除されたことを認識する。その後ロボットは仮想境界線へ進むよう命令されるが、座標が仮想境界線に一致したときに停止するコマンドは阻止される。その後ロボットは次の囲まれたエリアを掃除し、あるいは既にきれいなら、ホームへ進むことができる。
【００７４】
[0083]別の一例において、境界線によって指示されたエリアについて特定の掃除モードに異なる時間を結び付けることができ、例えばスケジュール上のある時には経度方向に掃除し、別の時には緯度方向に掃除する。これは時間の経過にともなうより周到な掃除を提供でき、１回の掃除運転で複数方向での複数通行は不要であるため、１回の掃除運転の時間を制限する。
【００７５】
[0084]一実施形態においては、仮想境界線を含む地図のプレビューが承諾を得るためユーザーに提供される。掃除時間を最適化するため、仮想境界線を踏まえたベースステーションの移動案など、ロボットアプリは仮想境界線とスケジュールとに基づいて提案を行うことができる。
【００７６】
[0085]一実施形態においては、ロボットが異なるフロアへ動かされる場合などに、複数の広域地図が提供される。それぞれのフロアは独自の地図と独自の仮想境界線およびスケジュールを有する。
【００７７】
[0086]一実施形態において、ロボットはロボットが仮想境界線に遭遇したことをユーザーに示す１つ以上のインジケータを有する。インジケータは境界線に達したときに赤く点滅する照明であってよい。これはロボットが向きを変える理由が仮想境界線であることをユーザーに知らせる。インジケータはロボットから両方の方向に投射されて仮想境界線の範囲を示す可視光線であってもよい。光は点滅してよく、異なる色であってよく、あるいはこのスケジュール時間のためだけの仮想境界線に対して永続的な仮想境界線を指示してよい。これは、例えば滅多に使わない部屋でユーザーがパーティを行った場合など、状況が変化した場合に、仮想境界線をリセットすることをユーザーに促すことができる。フィードバックは可聴であってもよく、ロボットから直接到来してよく、あるいはユーザーデバイス上のアプリによって指示されてよい。一実施形態において、ユーザーデバイスでアプリが開いている場合は、ユーザーデバイスでフィードバックが提供される。アプリが閉じている場合は、ロボットそのものからフィードバックが提供される。
【００７８】
[0087]一実施形態において、ユーザーはリモコンなどのモバイルデバイス上のロボットアプリを使って仮想境界線を設定できる。ユーザーは立入禁止の部屋に接近するロボットを見たときに、アプリの仮想境界線ボタンを押すことができる。すると直接的に（ＩＲ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ローカルＷｉＦｉなどを使用）、またはサーバーを通じて（その後インターネットを介し、その後ローカルエリアネットワークを介し、ロボットへ）、ロボットへ信号が送信される。ロボットは、出入口を認識する場合に、線の一部として点を認識し、点の両側の壁に点を自動的に外挿する。
【００７９】
[0088]複数のロボット
一実施形態においては、複数の掃除ロボットが使用される。これは様々な利点を提供する。最初の使用では、ある１台のロボットを、エリアを地図化して仮想境界線を提案するトレーニングロボットに指定できる。第２（第３、第４など）のロボットは後ろに続くことができ、通常の掃除を行い、それぞれの部屋またはスペースでより多くの時間を費やす。トレーニングロボットは生成された各部屋の地図を第２のロボットへ送信できるため、第２のロボットは地図を作成する必要がなく、地図作成に必要な処理を含める必要はない。この送信はユーザーデバイスによって直接行われてよく、あるいはリモートサーバーへアップロードし、リモートサーバーが第２のロボットへダウンロードすることによって行われてもよい。一実施形態において、新しいロボットは代替ロボットであってよい。複数のフロアの、または間取りの、複数の地図を共有できる。例えば、通常２階にいる第２のロボットは、１階に移されたことを検出し、１階の地図に切り替えることができる。
【００８０】
[0089]仮想線は、ロボットのタイプに基づいて、あるいは単に任務の区分に基づいて、引くことができる。複数のロボットがある場合は、それぞれのロボットに掃除すべきエリアの部分を割り当てることができ、他のロボットによって処理されるエリアは仮想境界線で遮断される。したがって、それぞれのロボットに異なる仮想境界線が提供される。堅木張りの床など、掃除が簡単なエリアには廉価なロボットを使用できる。あるいは、異なるロボットは異なる最適化されたバッテリストレージを有することができる。例えば、トレーニングまたは地図作成用ロボットは地図作成および画像撮影能力のみを有してよく、掃除装置は有さず、短いトレーニング運転のため限られたバッテリ電力を有する。したがって、トレーニングロボットはかなり小型で廉価であってよい。掃除ロボットは長時間の掃除運転のためかなり多くのバッテリ電力を有する。
【００８１】
[0090]ユーザーインタラクション
一実施形態において、ロボットはカメラを有し、仮想境界線エリアを示すため、ユーザーに画像またはビデオを提供できる。ユーザーは、より良いエリアの視野を得るため、リモコンを使ってカメラの視点を誘導できる。また、仮想境界線を生成するユーザーコマンドは、表示された地図上で指やスタイラスを使ってただ線を引くだけでなく、何らかの方法によるものであってよい。例えば、画像認識により（食器洗い機はそれがキッチンであることを意味する）、あるいは地図および／または画像からエリアに印を付けることをユーザーに促すことにより、ロボットはエリアを地図化し、それらを特定できる。そしてユーザーは、例えば「キッチンは掃除するな」と言うだけでよく、ロボットはキッチンの入口に仮想境界線を引く。あるいは、地図上で物体またはエリアを特定でき、ユーザーはそれらをタップして立入禁止を設定でき、ダブルタップして仮想境界線を除去できる（あるいは逆も可能）。ロボットはその後、指示された物体またはエリアの周りに仮想境界線を引く。あるいは、タップの後に、ドロップダウンメニューを、または他の何らかのＧＵＩインターフェースを、使用できる。
【００８２】
[0091]一実施形態において、ユーザーは回避すべきエリアまたは物体の写真を撮影でき、ロボット上のプログラム（またはユーザーデバイスまたはリモートサーバー内のプログラム）は、ビジュアルＳＬＡＭマッピング内の画像に、またはＬＩＤＡＲ  ＳＬＡＭマッピング、または他の何らかの方法にリンクされた画像に、それらを照合できる。その後、画像内の物体またはエリアの周りに仮想境界線を引くことができる。ロボットが物体に難なく接近できることに気づいたときに、ロボットが引かれた仮想境界線を当該物体に近づけることができる場合のように、人工知能を使って画像を自動的に切り取ることができる。
【００８３】
[0092]特定の実施形態に関して本発明を説明してきたが、当業者なら多数の修正が可能であることを認識するであろう。本発明の実施形態は、本明細書で説明されている具体例を含みただしこれらに限定されない様々なコンピュータシステムおよび通信技術を用いて実現できる。例えば、本発明の実施形態は掃除ロボットに応用できるばかりでなく、他のロボットにも、例えば芝刈りロボットにも、応用できる（ある種のエリアはより頻繁に刈る必要があり得て、あるいは花は仮想境界線で回避する必要があり得る）。仮想境界線は、セキュリティロボットによって監視する必要がないエリアを、あるいは頻繁にチェックする必要がないエリアを、指示できる。温度、空気の質、その他機能を測定するロボットは仮想境界線を同様に使用できる。
【００８４】
[0093]本発明の実施形態は、専用コンポーネントおよび／またはプログラム可能プロセッサおよび／またはその他プログラム可能デバイスの任意の組み合わせを用いて実現できる。本明細書で説明されている様々なプロセスは、同じプロセッサで、または任意の組み合わせによる異なるプロセッサで、実装できる。コンポーネントが何らかの操作を遂行するように構成されると説明されている場合、かかる構成は、例えば操作を遂行する電子回路を設計することにより、操作を遂行するプログラム可能電子回路（マイクロプロセッサなど）をプログラムすることにより、またはこれらの組み合わせにより、達成できる。さらに、上述した実施形態は特定のハードウェアおよびソフトウェアの組み合わせを参照し得るが、当業者なら、ハードウェアおよび／またはソフトウェアコンポーネントの異なる組み合わせを使用することもできること、また、ハードウェアで実装されると説明されている特定の操作をソフトウェアでも実装できること、あるはその逆も可能であることを、理解するであろう。
【００８５】
[0094]本発明の様々な特徴を取り入れたコンピュータプログラムは符号化でき、様々なコンピュータ可読ストレージ媒体に格納でき、適当な媒体は、磁気ディスクまたはテープ、コンパクトディスク（ＣＤ）やＤＶＤ（デジタル多用途ディスク）などの光ストレージ媒体、フラッシュメモリー、および他の非一時的媒体を含む。プログラムコードにより符号化されたコンピュータ可読媒体は適合電子デバイスとともにパッケージされてよく、あるいはプログラムコードは電子デバイスとは別に提供されてよい（例えばインターネットダウンロードにより、または別々にパッケージされたコンピュータ可読ストレージ媒体として）。
【００８６】
[0095]したがって、特定の実施形態に関して本発明を説明してきたが、本発明が以降の請求項の範囲内にある全ての修正および同等のものをカバーすることは理解されるであろう。
【図１】
2019071046.tif 000003
【図２】
2019071046.tif 000004
【図３】
2019071046.tif 000005
【図４】
2019071046.tif 000006
【図５】
2019071046.tif 000007
【図６】
2019071046.tif 000008
【図７】
2019071046.tif 000009
【図８】
2019071046.tif 000010
【図９】
2019071046.tif 000011
【図１０】
2019071046.tif 000012
【外国語明細書】
2019071046000001.pdf