本発明の一観点は、移動式ロボットであって、駆動システムと、駆動システムと通信状態にあるコントローラと、地面よりも約1フィート(30.5cm)以上、上方の高さ位置のところで駆動システムの上方に支持されると共に移動式ロボットの移動方向において床平面を含む空間ボリュームから点群を得ることができるよう差し向けられたボリューム形点群イメージング装置とを有する移動式ロボットを提供する。コントローラは、イメージング装置から点群信号を受け取り、そして少なくとも部分的に、受け取った点群信号に基づく駆動指令を駆動システムに送り出す。
本発明の具体化例は、次の特徴のうちの1つ又は2つ以上を含むのが良い。幾つかの具体化例では、コントローラは、1000MIPS(million instruction(s) per second)を超える命令を処理することができるコンピュータから成る。イメージング装置は、ロボットの周りのシーンに光を放出し、ロボットの駆動方向に沿ってシーンのイメージを捕捉し、イメージは、(a)三次元深度イメージ、(b)アクティブな照明イメージ及び(c)周囲照明イメージのうちの少なくとも1つを含む。コントローラは、イメージに基づいてシーン中の物体の存在場所を突き止め、そして物体の存在場所に基づいて駆動指令を駆動システムに送り出してロボットをシーン内で操縦する。幾つかの実施例では、イメージング装置は、光放出とシーンからの反射光の受光との間のタイムオブフライト(time-of-flight)を求め、コントローラは、物体の反射面までの距離を求めるためにタイムオブフライトを用いる。追加の実施例では、イメージング装置は、光をシーンに放出する光源及びシーンからの放出光の反射光を受け取るイメージャを有する。イメージャは、光検出ピクセルのアレイを有する。例えば、光源は、光パルスを第1の省電力周波数で放出し、センサ事象を受け取ると、光パルスを第2の能動周波数で放出する。センサ事象は、シーン内における物体の存在を表すセンサ信号を含むのが良い。
幾つかの具体化例では、イメージング装置は、第1の部分及び第2の部分を含む。第1の部分は、光を実質的に地面に放出し、地面からの放出光の反射光を受け取るよう構成されている。第2の部分は、光を地面の実質的に上方のシーンに放出し、ロボットの周りのシーンからの放出光の反射光を受け取るよう構成されている。
イメージング装置は、光のスペックルパターンをロボットの駆動方向に沿ってシーンに放出するスペックルエミッタと、シーン内の物体からのスペックルパターンの反射光を受け取るイメージャとを有するのが良い。コントローラは、シーン内の基準物体から反射されたスペックルパターンの基準イメージを記憶する。基準イメージは、基準物体から互いに異なる距離のところで捕捉されるのが良い。コントローラは、シーン内の標的物体から反射されたスペックルパターンの少なくとも1つの標的イメージを基準イメージと比較し、それにより、標的物体の反射面の距離を求める。コントローラは、標的物体上の一次スペックルパターンを求めるのが良く、一次スペックルパターンと基準イメージのスペックルパターンとの相互相関性及び非相関性のうちの少なくとも一方をコンピュータ計算する。
本発明の別の観点は、移動式ロボットであって、基部と、基部によって支持されたホロノミック駆動システムを有する移動式ロボットを提供する。駆動システムは、各々が垂直中心軸線回りに三辺形的に間隔を置いて位置した第1、第2及び第3の駆動輪を有する。各駆動輪は、垂直中心軸線に関して半径方向軸線に垂直な駆動方向を有する。ホロノミック駆動システムは、ロボットをシーンの作業面上で操縦する。ロボットは、駆動システムと通信状態にあるコントローラと、基部から上方に延びていて、可変高さを有する脚部と、脚部によって支持された胴部とを更に有する。胴部は、基部の上に張り出た底面を備えた肩を備える。イメージングセンサが駆動システムの前方駆動方向に沿って下方に向いた状態で胴部の底面に取り付けられている。イメージングセンサは、ロボットの周りのシーンの三次元イメージを捕捉する。
幾つかの具体化例では、イメージング装置は、光のスペックルパターンをシーンに放出するスペックルエミッタと、シーン内の物体からのスペックルパターンの反射光を受け取るイメージャとを有する。コントローラは、シーン内の基準物体から反射されたスペックルパターンの基準イメージを記憶する。基準イメージは、基準物体から互いに異なる距離のところで捕捉されるのが良い。コントローラは、シーン内の標的物体から反射されたスペックルパターンの少なくとも1つの標的イメージを基準イメージと比較し、それにより、標的物体の反射面の距離を求める。
イメージングセンサは、ロボットの駆動方向に沿ってシーンのイメージを捕捉し、イメージは、(a)三次元深度イメージ、(b)アクティブな照明イメージ及び(c)周囲照明イメージのうちの少なくとも1つを含む。幾つかの実施例では、コントローラは、イメージ比較に基づいてシーン内の物体の存在場所を突き止め、そして物体存在場所に基づいて駆動指令を駆動システムに送り出してロボットをシーン内で操縦する。コントローラは、標的物体上の一次スペックルパターンを求めるのが良く、一次スペックルパターンと基準イメージのスペックルパターンとの相互相関性及び非相関性のうちの少なくとも一方をコンピュータ計算する。
幾つかの具体化例では、イメージングセンサは、作業面よりも2フィート(61.0cm)以上、上方の高さ位置のところに位置決めされていて、ロボットの移動方向において床平面を含む空間ボリュームから点群を得ることができるよう差し向けられたボリューム形点群イメージング装置から成る。イメージングセンサは、駆動システムの駆動輪の前方の作業面を視認するよう好ましくは胴部の底面内に引っ込んだ状態で胴部に取り付けられるのが良い。さらに、イメージングセンサは、少なくとも45°の水平視野及び少なくとも40°及び/又は好ましくは約1メートル〜約5メートルの範囲の垂直視野を有するのが良い。イメージングセンサは、イメージングセンサの側方視野を広げるよう前方駆動方向に対して左右に走査するのが良い。
イメージングセンサは、約44ミリ秒の待ち時間を有するのが良い。イメージングセンサのイメージング出力は、待ち時間を補償するタイムスタンプを受け取るのが良い。幾つかの実施例では、イメージングセンサは、コントローラと通信するためのシリアル周辺インターフェースを有する。イメージングセンサは、その下向きの視野を維持した状態で胴部の本体内に引っ込められた状態で設けられるのが良い(例えば、物体に引っ掛かるのを最小限に抑えるために)。
幾つかの具体化例では、ロボットは、基部の周りに配置されていて、脚部及び胴部のうちの少なくとも一方に侵害する物体を検出するためにロボットの周りにソナー検出カーテンを提供するよう上方に向いたソナー近接センサのアレイを更に有する。ソナー近接センサのアレイは、胴部から遠ざかる方向(例えば、垂直に)に向いている。ロボットは、コントローラと通信状態にあるレーザスキャナを更に有するのが良く、レーザスキャナは、前方駆動方向に心出しされると共に作業面に実質的に平行な視野を有する。
各駆動輪は、駆動輪の周囲に沿って設けられた第1及び第2の列をなすローラを有する。各ローラは、駆動輪の転動方向に垂直な転動方向を有する。ローラは各々、弧状転動面を備える。ローラは一緒になって、駆動ホールの少なくとも実質的に円形の転動面を構成する。
さらに別の観点では、テレプレゼンス用途向きの自動推進式テレビ会議プラットホームが駆動システムを支持した駆動システムシャーシと、駆動システムシャーシの上方に設けられていて、1000MIPS(million instruction(s) per second)を超える命令を処理することができるコンピュータと、コンピュータの上方に支持されたディスプレイと、コンピュータの上方に支持されていて、ディスプレイとは別個に少なくとも1つの自由度で動くことができるカメラとを有する。カメラは、地面から3フィート(91.4cm)を超えるところに且つディスプレイのディスプレイ領域の頂縁からディスプレイ高さの10パーセント未満のところに位置決めされた対物レンズを有する。
幾つかの具体化例では、カメラは、ロボットに隣接した空間ボリュームから点群を得ることができるよう位置決めされたボリューム形点群イメージング装置を含み、ボリューム形点群イメージング装置は、地面よりも約1フィート(30.5cm)以上、上方の高さ位置のところに位置決めされると共にロボットの移動方向において床平面を含む空間ボリュームから点群を得ることができるよう差し向けられている。さらに、カメラは、プラットホームに隣接して位置する空間ボリュームから点群を得ることができるよう差し向けられたボリューム形点群イメージング装置を有するのが良い。幾つかの実施例では、ディスプレイは、少なくとも150平方インチ(967.7cm2)のディスプレイ面積を有し、少なくとも1つの自由度で動くことができる。カメラの対物レンズは、ズームレンズを有するのが良い。
自動推進式テレビ会議プラットホームは、少なくとも3時間にわたってコンピュータに電力供給するよう構成されたバッテリを有するのが良い。駆動システムは、電動全方向性駆動装置を有するのが良い。例えば、電動全方向性駆動装置は、第1、第2及び第3の駆動輪を含む電動全方向性駆動装置を有するのが良く、各駆動輪は、垂直中心軸線回りに三辺形的に間隔を置いて配置されると共に駆動システムシャーシによって支持される。各駆動輪は、垂直中心軸線に対して半径方向軸線に垂直な駆動方向を有する。
自動推進式テレビ会議プラットホームは、基部から上方に延びていて、可変高さを有する脚部及び脚部によって支持された胴部を有するのが良い。胴部は、基部の上に張り出た底面を備えた肩を備える。プラットホームは、胴部によって支持された頸部及び頸部によって支持された頭部を更に有するのが良い。頸部は、頭部を垂直中心軸線に関してパンしたり傾動させたりする。頭部は、ディスプレイとカメラの両方を支持している。プラットホームは、胴部の底面に取り付けられると共に駆動システムの前方駆動方向に沿って下方に向いた胴部イメージングセンサを有するのが良い。胴部イメージングセンサは、ロボットの周りのシーンの三次元イメージを捕捉する。幾つかの実施例では、プラットホームは、頭部に取り付けられると共にロボットの周りのシーンの三次元イメージを捕捉する頭部イメージングセンサを有する。
本発明の一観点は、移動式ロボットを作動させる方法を提供する。この方法は、三次元深度イメージデータを受け取るステップと、ロボットの周りの環境に対応した局所知覚空間を創成するステップと、地面の上方に且つロボットの高さ位置よりも下に位置する検出物体に対応する局所知覚空間の部分を障害物として分類するステップとを有する。この方法は、地面の下に位置する検出物体に対応する局所知覚空間の部分を障害物として分類するステップと、地面上の遮られていない領域に対応した局所知覚空間の部分を自由空間として分類するステップと、残りの全ての分類されなかった局所知覚空間を未知物として分類するステップとを更に有する。この方法は、駆動指令を実行して自由空間及び未知物のうちの少なくとも一方として分類された局所知覚空間に対応する環境自由内の場所まで動かすステップを有する。
本発明の具体化例は、次の特徴のうちの1つ又は2つ以上を含むのが良い。幾つかの具体化例では、分類は、アップデートされた三次元深度イメージデータで持続されなければ、経時的に崩れる。この方法は、障害物又は未知物として分類された対応の局所知覚空間を有する場所まで動くロボット経路を拒否することにより実行可能なロボット駆動指令に対応した予測ロボット経路を評価するステップを更に有する。幾つかの実施例では、この方法は、三次元深度イメージデータを用いて三次元ボクセル格子を創成するステップと、三次元ボクセル格子を二次元格子に変換するステップとを更に有する。二次元格子の各セルは、局所知覚空間の一部分に対応している。追加の実施例では、この方法は、局所知覚空間に対応した格子を創成するステップを有する。各格子セルは、対応の局所知覚空間の分類を有する。障害物又は未知物として分類された各格子セルに関し、この方法は、この格子セル内の格子点を検索するステップ及び衝突評価を実行するステップを有する。衝突評価は、ロボットの存在場所周りの衝突円内に位置する格子点を拒否するステップを含む良い。変形例として又は追加例として、衝突評価は、及び/又はロボットの存在場所に中心を持つ衝突三角形内に位置する格子点を拒否するステップを含むのが良い。
幾つかの具体化例では、この方法は、三次元深度イメージデータを提供するイメージングセンサの視野を未知物として分類された局所知覚空間に対応する環境内の領域の方へ差し向けるステップを有する。この方法は、ロボットを、三次元深度イメージデータを提供するイメージングセンサの視野を超えてロボット位置に動かす駆動指令を拒否するステップを有するのが良い。さらに、この方法は、ロボットがしきい期間の間、静止しているとき、ロボットの前方駆動方向に垂直にホロノミック的に動く駆動指令を拒否するステップを有する。三次元深度イメージデータを提供するイメージングセンサは、前方駆動方向と整列する。幾つかの実施例では、この方法は、ロボットが前方に駆動している間、ロボットの前方駆動方向に垂直にホロノミック的に動く駆動指令を受け入れるステップを有する。三次元深度イメージデータを提供するイメージングセンサは、前方駆動方向と整列すると共に少なくとも45°の視野角を有する。この方法は、ロボットが未知物として分類された対応の局所知覚空間を有する環境内の場所に達する前に三次元深度イメージデータを提供するイメージングセンサの視野が場所に及んでいることがロボットによって確認されると、未知物として分類された対応の局所知覚空間を有する環境内の場所まで動かす駆動指令を受け入れるステップを有するのが良い。
三次元深度イメージデータは、幾つかの具体化例では、ロボットに取り付けられていて、ロボットに隣接して位置する空間ボリュームから点群を得ることができるボリューム形点群イメージング装置によって提供される。例えば、三次元深度イメージデータは、地面よりも2フィート(61.0cm)以上、上方の高さ位置のところに位置決めされると共にロボットの移動方向において床平面を含む空間ボリュームから点群を得ることができるよう差し向けられたボリューム形点群イメージング装置によって得られるのが良い。
本発明の別の観点は、移動式ロボットを作動させて人について行くようにする方法を提供する。この方法は、ロボットに隣接して位置する空間ボリュームから点群を得ることができるよう位置決めされたボリューム形点群イメージング装置から三次元イメージデータを受け取るステップと、受け取った三次元イメージデータを物体にセグメント化するステップと、物体をフィルタ処理して第1のしきいサイズよりも大きく且つ第2のしきいサイズよりも小さい物体を除去するステップと、フィルタ処理された物体の少なくとも一部分に対応した人を識別するステップと、ロボットの少なくとも一部分を識別された人に対して動かすステップとを有する。
幾つかの具体化例では、三次元イメージデータは、ピクセルの二次元アレイを含む。各ピクセルは、深度情報を含む。この方法は、隣りのピクセルに対する各ピクセルの近接性に基づいてピクセルを物体にグループ化するステップを有するのが良い。幾つかの実施例では、この方法は、識別された人がロボットのしきい距離内に位置しているとき、ロボットを識別された人から遠ざけるステップを有する。この方法は、イメージング装置の視野を識別された人上に維持するステップを有するのが良い。さらに、この方法は、ロボットを駆動してロボットと識別された人との間の追従距離を維持するステップを有するのが良い。
幾つかの具体化例では、この方法は、ウェイポイント駆動指令を送り出してロボットを識別された人の追従距離内に駆動すると共に/或いはロボットを駆動してロボットと識別された人との間の追従距離を維持するステップを有する。この方法は、好ましくは対応の視野を少なくとも実質的に識別された人の方へ向けるようイメージング装置をパンすること及び傾動させることのうちの少なくとも一方によってイメージング装置の視野を識別された人に維持するステップを有するのが良い。
イメージング装置は、地面よりも少なくとも約1フィート(30.5cm)、上方の高さ位置のところに位置決めされると共にロボットの移動方向において床平面を含む空間ボリュームから点群を得ることができるよう差し向けられるのが良い。第1のしきいサイズは、約8フィート(243.8cm)の高さを含むと共に/或いは第2のしきいサイズは、約3フィート(91.4cm)の高さを含むのが良い。この方法は、フィルタ処理された物体に対応した多数の人を識別するステップを有するのが良い。カルマンフィルタを用いて各識別された人の運動軌跡を追跡すると共に反映させるのが良い。この方法は、少なくとも部分的に少なくとも1人の識別された人の運動軌跡に基づいて駆動指令を送り出すステップを有するのが良い。
さらに別の観点では、移動式ロボットのための物体検出方法がロボットを作業面の端から端まで操縦するステップと、ロボット周りのシーンに光を放出するステップと、ロボットの駆動方向に沿ってシーンのイメージを捕捉するステップとを有する。イメージは、(a)三次元深度イメージ、(b)アクティブな照明イメージ及び(c)周囲照明イメージのうちの少なくとも1つを含む。この方法は、イメージに基づいてシーン中の物体の存在場所を突き止めるステップと、物体存在場所について信頼水準を割り当てるステップと、物体存在場所及び対応の信頼水準に基づいてロボットをシーン内で操縦するステップとを更に有する。
幾つかの具体化例では、この方法は、シーンの物体占有マップを作成するステップを有する。この方法は、各物体存在場所の信頼水準を経時的に低下させ、ついには、それぞれの物体存在場所を新たに定められた物体存在場所でアップデートするステップを有するのが良い。幾つかの実施例では、この方法は、ロボットを操縦して、1)物体との接触及び2)物体の周囲に沿う追従のうちの少なくとも一方を行うステップを有する。追加の実施例では、この方法は、ロボットを操縦して物体を回避するステップを有する。
この方法は、光をシーンに間欠パルスの状態で放出するステップを有するのが良い。例えば、放出された光パルスの周波数を変更するのが良い。幾つかの具体化例では、この方法は、光パルスを第1の省電力周波数で放出するステップ及びセンサ事象を受け取ると、光パルスを第2の能動周波数で放出するステップを有するのが良い。センサ事象は、シーン内における物体の存在を表すセンサ信号を含むのが良い。
幾つかの具体化例では、この方法は、次のステップ、即ち、光のスペックルパターンをシーンに放出するステップ、シーン内の物体からのスペックルパターンの反射光を受け取るステップ、シーン内の基準物体から反射されたスペックルパターンの基準イメージを記憶するステップ、シーン内の標的物体から反射されたスペックルパターンの少なくとも1つの標的イメージを捕捉するステップ及び標的物体の反射面の距離を求めるために少なくとも1つの標的イメージを基準イメージと比較するステップによって、シーンの三次元深度イメージを作成するステップを有する。基準イメージは、基準物体から互いに異なる距離を置いたところで捕捉されるのが良い。この方法は、標的物体上の一次スペックルパターンを求めるステップ及び一次スペックルパターンと基準イメージのスペックルパターンとの相互相関性及び非相関性のうちの少なくとも一方をコンピュータ計算するステップを有するのが良い。
別の観点では、移動式ロボットのための物体検出方法がロボットを作業面の端から端まで操縦しながら光のスペックルパターンをロボットの周りのシーンに放出するステップと、シーン内の標的物体の表面から反射された放出スペックルパターンの反射光を受け取るステップと、標的物体の各反射面の距離を求めるステップと、標的物体の三次元深度マップを作成するステップと、標的物体を分類するステップとを有する。
幾つかの具体化例では、この方法は、シーン内の基準物体から反射されたスペックルパターンの基準イメージを記憶するステップを有する。基準イメージは、基準物体から互いに異なる距離を置いたところで捕捉されるのが良い。この方法は、標的物体上の一次スペックルパターンを求めるステップ及び一次スペックルパターンと基準イメージのスペックルパターンとの相互相関性及び非相関性のうちの少なくとも一方をコンピュータ計算するステップを有するのが良い。
幾つかの実施例では、この方法は、例えば、放出光パルスの周波数を変更することによって、光のスペクトルパターンを間欠パルスで放出するステップを有するのが良い。この方法は、標的物体の表面から反射された放出スペックルパターンの反射光のフレームを所与のフレーム率で捕捉するステップを有するのが良い。フレーム率は、約10Hz〜約90Hzであるのが良い。この方法は、標的物体の識別のために連続したフレームで捕捉されたスペックルパターン相互間の差を分析するステップを有するのが良い。
本発明の一観点は、移動式ロボット及び遠隔コンピュータ計算装置を有する移動式ロボットシステムを提供する。移動式ロボットは、駆動システムと、駆動システムと通信状態にあるコントローラと、コントローラと通信状態にあると共にロボットに隣接して位置するスペースボリュームから点群を得ることができるよう差し向けられたボリューム形点群イメージング装置とを有する。遠隔コンピュータ計算装置は、移動式ロボットと通信状態にあると共にソフトウェアプログラムを実行し、ソフトウェアプログラムは、イメージング装置により捕捉されたボリューム形点群に基づいて三次元シーンを表示すると共に三次元シーン内のロボットのレンダリングされたソリッドモデルを表示する。ソフトウェアプログラムは、ロボット指令を受け取ってこれをロボットコントローラに伝える。
幾つかの具体化例では、ボリューム形点群イメージング装置は、地面よりも約1フィート(30.5cm)以上、上方の高さ位置のところで駆動システムの上方に支持されると共に移動式ロボットの移動方向において床平面を含む空間ボリュームから点群を得ることができるよう差し向けられている。ソフトウェアアプリケーションは、ロボットモデルを第3のパースペクティブ、好ましくは、ロボットモデルの後ろの高くなった位置から、例えば、ロボットに隣接して位置する視認スペースボリュームに対するロボットの実際の向き及び/又は姿勢に対応した表示された三次元シーンに対する向き及び/又は姿勢で表示するのが良い。
コンピュータ計算装置は、タッチスクリーンを有するのが良く、タッチスクリーン上のタッチジェスチャを認識するよう構成されている。例えば、コンピュータ計算装置は、タブレット形コンピュータであるのが良い。ソフトウェアアプリケーションは、ロボットモデルに関してタッチスクリーンにより受け取られたタッチジェスチャに基づいてロボット指令を決定するのが良い。さらに、ソフトウェアアプリケーションは、ロボットモデルの位置及び/又は運動学的状態の変化を求めるのが良く、そしてロボット指令を決定してロボットを変更されたロボットモデルと同期させる。
幾つかの具体化例では、ソフトウェアアプリケーションは、受け取ったタッチジェスチャに基づいてロボットモデル及び/又は三次元シーンのビューを変更する。ソフトウェアアプリケーションは、ロボット指令を受け取る方向性パッドを表示するのが良い。
ソフトウェアアプリケーションは、駆動指令を求めるための事後衝突検出アルゴリズムを実行するのが良い。幾つかの実施例では、事後衝突検出アルゴリズムは、物体との衝突まで、駆動経路を第1の場所から第2の場所まで三次元シーン中に投影する。ソフトウェアアプリケーションは、ロボットにより衝突可能な物体の仮想表面として地面及び点群をモデル化するのが良い。
幾つかの具体化例では、イメージング装置は、ロボットの周りのシーンに光を放出し、ロボットの駆動方向に沿ってシーンのイメージを捕捉する。イメージは、(a)三次元深度イメージ、(b)アクティブな照明イメージ及び(c)周囲照明イメージのうちの少なくとも1つを含む。コントローラは、イメージに基づいてシーン内の物体の存在場所を突き止める。幾つかの実施例では、イメージング装置は、光をシーンに放出する光源及びシーンからの放出光の反射光を受け取るイメージャを有する。光源は、光を間欠パルスで放出するのが良い。例えば、光源は、光パルスを第1の省電力周波数で放出し、センサ事象を受け取ると、光パルスを第2の能動周波数で放出するのが良い。センサ事象は、オプションとして、シーン内における物体の存在を表すセンサ信号を含む。イメージャは、光検出ピクセルのアレイを有するのが良い。
追加の具体化例では、イメージング装置は、光のスペックルパターンをロボットの駆動方向に沿ってシーンに放出するスペックルエミッタと、シーン内の物体からのスペックルパターンの反射光を受け取るイメージャとを有する。コントローラは、シーン内の基準物体から反射されたスペックルパターンの基準イメージを記憶する。基準イメージは、基準物体から互いに異なる距離のところで捕捉されるのが良い。コントローラは、シーン内の標的物体から反射されたスペックルパターンの少なくとも1つの標的イメージを基準イメージと比較し、それにより、標的物体の反射面の距離を求める。コントローラは、標的物体上の一次スペックルパターンを求めるのが良く、一次スペックルパターンと基準イメージのスペックルパターンとの相互相関性及び非相関性のうちの少なくとも一方をコンピュータ計算する。幾つかの実施例では、イメージングセンサは、イメージングセンサの側方視野を広げるよう前方駆動方向に対して左右に走査する。
本発明の別の観点は、移動式ロボットを作動させる方法を提供する。この方法は、ロボットに隣接して位置する空間ボリュームからボリューム形点群の三次元深度イメージデータを受け取るステップと、受け取った三次元深度イメージデータに基づいて三次元シーンを遠隔コンピュータ計算装置上に表示するステップと、三次元シーン内のロボットに対応したロボットモデルを表示するステップと、遠隔コンピュータ計算装置からロボット指令を受け取るステップと、遠隔コンピュータ計算装置からのロボット指令をロボットに伝えるステップとを有する。
幾つかの具体化例では、この方法は、ロボットに隣接して位置する視認空間ボリュームに対するロボットの実際の向き及び姿勢に対応した表示されている三次元シーンに対するロボットモデルの向き及び姿勢を表示するステップを有する。この方法は、ロボットモデルに関して受け取ったタッチジェスチャに基づいてロボット指令を決定するステップを有するのが良い。幾つかの実施例では、この方法は、ロボットモデルの位置及び/又は運動学的状態の変化を求めるステップ及びロボット指令を決定してロボットを変更されたロボットモデルと同期させるステップを有する。
この方法は、受け取ったタッチジェスチャに基づいてロボットモデル及び/又は三次元シーンのビューを変更するステップを有するのが良い。幾つかの実施例では、この方法は、ロボット指令を受け取る方向性パッドを表示するステップを有する。この方法は、駆動指令を求めるための事後衝突検出アルゴリズムを実行するステップを有するのが良い。事後衝突検出アルゴリズムは、物体との衝突まで、駆動経路を第1の場所から第2の場所まで三次元シーン中に投影する。ロボットにより衝突可能な物体の仮想表面として地面及び点群をモデル化するのが良い。
この方法は、ロボットを、ボリューム形点群を提供するイメージングセンサの視野を超えてロボット位置に動かす駆動指令を拒否するステップを有するのが良い。三次元深度イメージデータは、ロボットに取り付けられていて、ロボットに隣接して位置する空間ボリュームから点群を得ることができるボリューム形点群イメージング装置によって提供されるのが良い。ボリューム形点群イメージング装置は、地面よりも約1フィート(30.5cm)以上、上方の高さ位置のところに位置決めされると共にロボットの移動方向において床平面を含む空間ボリュームから点群を得ることができるよう差し向けられるのが良い。
幾つかの具体化例では、この方法は、ロボット周りのシーンに光を放出するステップと、ロボットの駆動方向に沿ってシーンのイメージを捕捉するステップと、イメージに基づいてシーン中の物体の存在場所を突き止めるステップとを有する。イメージは、(a)三次元深度イメージ、(b)アクティブな照明イメージ及び(c)周囲照明イメージのうちの少なくとも1つを含む。この方法は、シーンの物体占有マップを作成するステップ並びにオプションとして各物体存在場所について信頼水準を割り当てるステップ及びオプションとして各物体存在場所の信頼水準を経時的に低下させ、ついには、それぞれの物体存在場所を新たに定められた物体存在場所でアップデートするステップを有するのが良い。
幾つかの具体化例では、この方法は、次のステップ、即ち、光のスペックルパターンをシーンに放出するステップ、シーン内の物体からのスペックルパターンの反射光を受け取るステップ、シーン内の基準物体から反射されたスペックルパターンの基準イメージを記憶するステップによって、シーンの三次元深度イメージを作成するステップを有する。基準イメージは、基準物体から互いに異なる距離を置いたところで捕捉されるのが良い。この方法は、シーン内の標的物体から反射されたスペックルパターンの少なくとも1つの標的イメージを捕捉するステップ及び標的物体の反射面の距離を求めるために少なくとも1つの標的イメージを基準イメージと比較するステップを更に有するのが良い。さらに、この方法は、標的物体上の一次スペックルパターンを求めるステップ及び一次スペックルパターンと基準イメージのスペックルパターンとの相互相関性及び非相関性のうちの少なくとも一方をコンピュータ計算するステップを有するのが良い。
幾つかの実施例では、この方法は、遠隔コンピュータ計算装置でタッチジェスチャを受け取るステップと、ロボットモデルに関するユーザ選択を判定するために三次元シーンとの交差場所に及び/又は三次元シーン中にタッチジェスチャのスクリーン存在場所を切頭体投影に沿って投影するステップとを有する。
この方法は、ボリューム形点群内の認識できない塊を識別するステップと、認識可能な塊、例えばロボットのカメラによって捕捉されたイメージを認識できない塊に被せて又はこれに代えて三次元シーン内に表示するステップとを有するのが良い。
本発明の1つ又は2つ以上の具体例の細部が添付の図面及び以下の説明に記載されている。他の観点、他の特徴及び他の利点は、明細書、図面及び特許請求の範囲の記載から明らかになろう。
種々の図において、同一の参照符号は、同一の要素を示している。
移動式ロボット(移動ロボットとも呼ばれる)は、ホームアシスタンス(在宅支援からコマーシャルアシスタンス(商業的支援)まで)の範囲にわたる多くのサービスを提供するよう人と対話し又はインターフェースすることができる。ホームアシスタンスの例では、移動式ロボットは、日常の仕事について年取った人を支援することができ、かかる仕事としては、薬物療法、移動支援、コミュニケーション支援(例えば、テレビ会議、電気通信、Internetアクセス等)、住宅又は現場監視(内側及び/又は外側)、人の監視及び/又は個人用緊急時対応システム(personal emergency response system:PERS)の提供が挙げられるが、これらには限定されない。コマーシャルアシスタントの場合、移動式ロボットは、テレビ会議(例えば、病院環境内における)、売場専用端末(POS端末)、対話式情報/マーケティング端末等を提供することができる。
図1及び図2を参照すると、幾つかの具体例では、移動式ロボット100が前方駆動方向Fを定めるロボット本体110(又はシャーシ)を有している。ロボット100は、駆動システム200、インターフェースモジュール300及びセンサシステム400を更に有し、これらは各々、ロボット本体110により支持されると共にロボット100の操作と運動を協調させるコントローラ500と通信状態にある。電源105を(例えば、1個又は複数個のバッテリ)が必要に応じてこれらコンポーネントの各々と電気的通信関係をなして支持されるのが良く、この電源は、電力を必要に応じてこれらコンポーネントの各々に送り出す。例えば、コントローラ500は、1,000MIPS(million instruction(s) per second)を超える数の命令を実施することができるコンピュータを含むのが良く、電源105は、コンピュータに3時間を超える間、電力供給するのに十分なバッテリを提供する。
ロボット本体110は、図示の実施例では、基部120、基部120から上方に延びる少なくとも1本の脚部130及び少なくとも1本の脚部130によって支持された胴部140を有する。基部120は、少なくとも駆動システム200を部分的に支持することができる。ロボット本体110は、胴部140によって支持された頸部150を更に有する。頸部150は、頭部160を支持し、頭部160は、インターフェースモジュール300の少なくとも一部分を支持している。基部120は、機械的安定性を維持するために基部120の低い重心CGB及びロボット100の低い全体的重心CGRを維持するのに十分なおもり(例えば、電源105(バッテリ)を支持することによって)を有する。
図3及び図4A〜図4Cを参照すると、幾つかの具体例では、基部120は、三辺形的に対称の形状(例えば、平面図で見て三角形の形状)を定めている。例えば、基部120は、基部シャーシ122を有するのが良く、基部シャーシ122は、三辺形状の基部120(例えば、図4A参照)の各脚部に対応する第1、第2及び第3の基部本体部分124a,124b,124cを備えた基部本体124を支持している。各基部本体部分124a,124b,124cは、物体との接触に応答して基部シャーシ122に対して別個独立に動くよう基部シャーシ122によって可動的に支持されるのが良い。基部120の三辺形的対称形状により、ロボット100周りに360°にわたる出っ張りバンプ(隆起部)の検出が可能である。各基部本体部分124a,124b,124cは、基部シャーシ122に対する対応の基部本体部分124a,124b,124cの運動を検出する関連の接触センサ(例えば、容量センサ、リードスイッチ等)を有するのが良い。
幾つかの具体化例では、駆動システム200は、ロボット100の全方向性及び/又はホロノミック運動制御を可能にする。本明細書で用いられる「全方向性」という用語は、実質的に任意の平面方向、即ち、左右(側方)、前後及び回転運動を行うことができるということを意味している。これら方向は、一般に、本明細書ではそれぞれx、y及びθzと称する。さらに、「ホロノミック」という用語は、この用語の文献的使用と実質的に一致した仕方で用いられており、平面方向に3つの平面状自由度、即ち、2つの並進及び1つの回転で動くことができるということを意味している。それ故、平面方向に3つの平面速度(前後、側方及び回転)の実質的に任意の比率で構成された速度で動くことができる能力を備えると共に実質的に連続した仕方でこれらの比率を変化させることができる能力を備えている。
ロボット100は、車輪付き移動方式を用いて人の環境(例えば、典型的には二足歩行居住者向きに設計された環境)で働くことができる。幾つかの具体化例では、駆動システム200は、垂直軸線Z回りに等間隔を置いて(例えば、120°の間隔を置いて)(即ち、三辺形対称に)配置された第1、第2及び第3の駆動輪210a,210b,210cを有するが、他の構成も又採用可能である。図5A及び図5Bを参照すると、駆動輪210a,210b,210cは、横方向弧状転動面(即ち、転動方向DR)に対して横方向又は垂直な方向に湾曲した輪郭形状を備えるのが良く、この転動面は、ホロノミック駆動システム200の操縦性を助けることができる。各駆動輪210a,210b,210cは、それぞれ駆動モータ220a,220b,220cに結合されており、この駆動モータは、他の駆動モータ220a,220b,220cとは別個独立に駆動輪210a,210b,210cを前進(前方)方向及び/又は後退(後方)方向に駆動することができる。各駆動モータ220a〜220cは、それぞれのエンコーダ212(図8C)を有するのが良く、このエンコーダは、コントローラ500に車輪回転フィードバックを提供する。幾つかの実施例では、各駆動輪210a,210b,210cは、正三角形の3つの頂点のうちの1つに又はこの近くに取り付けられ、それぞれの三角形の端の角度の二等分線に垂直な駆動方向(前後方向)を有する。三辺形対称ホロノミック基部120を前方駆動方向Fで駆動することにより、ロボット100は、閉じ込め状態又はクラッタからの自律的な逃げ出しのために非前方駆動方向に移行することができ、次に、逃げ出しが解決した後、前方駆動方向Fに沿って駆動するよう回転すると共に/或いは並進することができる。
図5C及び図5Dを参照すると、幾つかの具体化例では、各駆動輪210は、ローラ230の内側の列232及び外側の列234を有し、各列は、駆動輪210の転動方向DRに垂直な転動方向Drを有する。ローラ230の列232,234は、互い違いに配置されているのが良い(例えば、その結果、内側の列232に属する1つのローラ230は、外側の列234に属する2つの隣り合うローラ230相互間に等しく位置決めされる。ローラ230は、駆動輪210の駆動方向に垂直な無限のスリップを行う。ローラ230は、これらの転動方向Drに垂直な弧状(例えば、凸状)外面235を備え、その結果、ローラ230は、一緒になって、駆動輪210の円形又は実質的に円形の周囲を定めている。ローラ230の輪郭形状は、駆動輪210の全体的輪郭形状に影響を及ぼす。例えば、ローラ230は、一緒になって駆動輪210のスカラップ状転動面(例えば、トラクションのためのトレッドとして)を構成する弧状ローラ外面235を備えることができる。しかしながら、ローラ230をこれが駆動輪210の全体として円形の転動面を構成する輪郭形状を有するよう構成することにより、ロボット100は、車輪トレッドと垂直に振動するのではなく、平坦な表面上で滑らかに移動することができる。角度をなして物体に接近する場合、ローラ230(半径r)の互い違いの列232,234をトレッドとして用いると、駆動輪210の車輪半径Rと同じ又はほぼ同じほど高い物体を登ることができる。
図3〜図5Bに示された実施例では、第1の駆動輪210aは、前方駆動方向Fに沿う先導駆動輪として構成され、残りの2つの駆動輪210b,210cは、これに後続する。この構成例では、前方に駆動するためには、コントローラ500は、第1の駆動輪210aが前方駆動方向Fに沿ってスリップしている間に第2及び第3の駆動輪210b,210cが同じ速度で前方転動方向に駆動するようにする駆動指令を出すのが良い。さらに、この駆動輪構成により、ロボット100は、短時間で停止することができる(例えば、前方駆動方向Fに対して迅速な負の加速を生じさせる)。これは、三輪設計の自然な動的不安定性に起因している。前方駆動方向Fが2本の前方駆動輪相互間の角度の二等分線に沿っている場合、短時間で停止させると、ロボット100がその2本の「前」輪を中心として回動してこれを転倒させるトルクが生じる。これとは異なり、1本の駆動輪210aを前方に自然に走行させることにより、ロボット100が支持され又は急停止を行うことが必要な場合であっても前方に倒れるのが阻止される。しかしながら、停止状態から加速すると、コントローラ500は、ロボット100の全体的重心CGRからロボット100の慣性モーメントIを考慮に入れることができる。
他の具体化例では、駆動システム200は、2本の駆動輪210a,210b相互間の角度の角度二等分線がロボット100の前方駆動方向Fと整列するよう位置決めされた第1及び第2の駆動輪210a,210bを有するよう配置されるのが良い。この構成例では、前方に駆動するため、コントローラ500は、第1及び第2の駆動輪210a,210bを前方転動方向に且つ同一速度で駆動させ、駆動させる駆動指令を出すのが良く、他方、第3の駆動輪210cは、空回り状態のままである。前方に駆動しながら左又は右に曲がるため、コントローラ500は、対応の第1又は第2の駆動輪210a,210bを比較的速い速度又は遅い速度で駆動するようにする指令を出すのが良い。他の構成の駆動システム200も又使用できる。駆動輪210a,210b,210cは、円筒形、円形、楕円形又は多角形の輪郭形状を備えることができる。
再び図1〜図3を参照すると、基部120は、基部120からZ方向に上方に延びる少なくとも1本の脚部130を支持している。脚部130は、胴部140を基部120に対して昇降させるために可変高さを有するよう構成されているのが良い。幾つかの具体化例では、各脚部130は、互いに対して動く(例えば、入れ子式又は伸縮運動、直線運動及び/又は角運動)第1及び第2の脚部分132,134を有する。連続的に小径の押し出し部を互いに入れ子式に出入りさせたり比較的大径の基部押し出し部から入れ子式に出すのではなく、第2の脚部分134は、図示の実施例では、第1の脚部分132上でこれに沿って入れ子式に動き、かくして、他のコンポーネントを第2の脚部分134に沿って配置することができると共に潜在的に第2の脚部分134と一緒に基部120の比較的近くまで動くことができる。脚部130は、第2の脚部分134を第1の脚部分132に対し動かすアクチュエータ組立体136(図8C)を有するのが良い。アクチュエータ組立体136は、昇降モータ138b及び位置フィードバックをコントローラ500に提供するエンコーダ138cと連絡状態にあるモータドライバ138aを含むのが良い。
一般に、入れ子式構成は、脚部130全体の重心CGLをできるだけ低く保つために基部120のところの比較的大径の押し出し部から入れ子式に出入りする連続的に小径の押し出し部を有する。さらに、脚部130を完全に伸長させたときに基部120のところで生じる大きなトルクを取り扱うために底部のところに強力且つ/又は大径のコンポーネントを設けるのが良い。しかしながら、このやり方は、2つの問題を提起する。第1に、比較的小径のコンポーネントが脚部130の頂部のところに配置されると、雨、埃又は他の粒状物が押し出し部に沿って流れ又は落ちる傾向があり、それにより押し出し部相互間の空間に入り込み、かくして押し出し部の嵌合を妨害する。これにより、脚部130の完全な移動性/関節運動を依然として維持しようとする場合に極めて困難な密封上の問題が生じる。第2に、ロボット100にペイロード又は付属装置を取り付けることが望ましい場合がある。付属装置に取り付ける1つのありふれた場所は、胴部140の頂部である。第2の脚部分134が入れ子式に第1の脚部分に対して出入りした場合、付属装置及びコンポーネントは、胴部140と一緒に移動する必要がある場合、第2の脚部分134全体の上方にしか取り付けることができない。もしそうでなければ、第2の脚部分134に取り付けられたコンポーネントが脚部130の入れ子式運動を制限することになる。
第2の脚部分134を第1の脚部分130上でこれに沿って入れ子式に動かすことにより、第2の脚部分134は、基部120に対して垂直に動くことができる追加のペイロード取り付け箇所を提供する。この種の構成により、水又は空気により運ばれる粒状物が脚部分132,134相互間の空間に入らないで、全ての脚部分132,134(例えば、押し出し部)の外部で胴部140に沿って流れる。これにより、脚部130の継手又は関節部の密封が大幅に単純化される。さらに、胴部140のペイロード/付属装置取り付け特徴部及び/又は第2の脚部分134は、常時露出され、脚部130がどのように伸長されようと接近可能である。
図3及び図6を参照すると、脚部130は、胴部140を支持し、胴部140は、基部120を覆うと共にこの上方に延びる肩142を有するのが良い。図示の実施例では、胴部140は、肩142の少なくとも一部を形成する下方に向いた底面44(例えば、基部寄り)及び逆の上方に向いた頂面146を有し、これら相互間には側面148が延びている。胴部140は、脚部130によって支持された中央部分141及び脚部130の側方広がりを超える側方に延びる周辺自由部分143を備えた種々の形状又は幾何学的形状、例えば、円形又は楕円形の形をしているのが良く、かくして、下方に向いた表面144を構成する張り出し部分が形成されている。幾つかの実施例では、胴部140は、肩を構成する多角形又は他の複雑な形状を有し、肩は、基部120を覆った状態で脚部130を超えて延びる張り出し部分となっている。
ロボット100は、ペイロードを受け入れる1つ又は2つ以上の付属装置ポート170(例えば、機械的及び/又は電気的相互連結箇所)を有するのが良い。付属装置ポート170は、受け入れたペイロードがセンサシステム400(例えば、胴部140の底面144及び/又は頂面146等に取り付けられている)のセンサを遮蔽せず又は妨害しないよう配置されるのが良い。幾つかの具体化例では、図6に示されているように、胴部140は、胴部140の後方部分149に設けられていて、例えば、バスケット360に入ったペイロードを受け入れる1つ又は2つ以上の付属装置ポート170を有し、それにより、胴部140の前方部分147又はロボット本体110の他の部分に取り付けられているセンサが妨害されないようになっている。
再び図1〜図3及び図7を参照すると、胴部140は、頭部160を胴部140に対してパンしたり係合させたりする頸部150を支持している。図示の実施例では、頸部150は、ローテータ152及びチルタ154を有する。ローテータ152は、約90°〜約360°の角運動範囲θR(例えば、Z軸回り)を提供することができる。他の範囲も又、採用可能である。さらに、幾つかの実施例では、ローテータ152は、頭部160とロボット100の残部との間の電気的連絡状態を維持しながら制限されない回転数で胴部140に対する頭部160の連続した360°の回転を可能にする電気的コネクタ又は接点を有する。チルタ154は、頭部160とロボット100の残部との間の電気的連絡状態を維持しながら胴部140に対する頭部150の回転を可能にする同一又は類似の電気コネクタ又は接点を有するのが良い。ローテータ152は、リング153(例えば、歯付きリングラック)に結合され又はこれに係合するローテータモータ151を有するのが良い。チルタ154は、ローテータ152とは別個独立に、頭部を胴部140に対して角度θT(例えば、Y軸回りに)動かすことができる。幾つかの実施例では、チルタ154は、チルタモータ155を有し、チルタモータ155は、頭部160をZ軸に対して±90°の角度θTの間で動かす。他の範囲、例えば±45°等も又採用可能である。ロボット100は、脚部130、胴部140、頸部150及び頭部160がロボット100の安定した移動性を維持するために基部120の周囲の範囲内に留まるよう構成されているのが良い。図8Fに示されている例示の概略回路図では、頸部150は、パン・チルト組立体159を有し、パン・チルト組立体159は、ローテータ152及びチルタ154を対応のモータドライバ156a,156b及びエンコーダ158a,158bと一緒に含む。
図8A〜図8Gは、ロボット100の回路構成の例示の略図である。図8A〜図8Cは、基部120のための回路構成の例示の略図を提供しており、基部120は、近接センサ、例えばソナー近接センサ410及びクリフ(断崖状箇所)近接センサ420、接触センサ430、レーザスキャナ440、ソナースキャナ460及び駆動システム200を収容するのが良い。基部120は、コントローラ500、電源105及び脚部アクチュエータ組立体136を更に収容するのが良い。胴部140は、マイクロコントローラ145、マイクロホン330、スピーカ340、走査型3‐Dイメージセンサ410a及び胴部タッチセンサシステム480を収容するのが良く、胴部タッチセンサシステム480により、コントローラ500は、ユーザの接触又はタッチを受け取ってこれに対して応動することができる(例えば、胴部140を基部120に対して動かし、頸部150をパンすると共に/或いは傾動させると共に/或いはこれに応答して指令を駆動システム200に送り出すことによって)。頸部150は、パン・チルト組立体159を収容するのが良く、パン・チルト組立体159は、対応のモータドライバ156a及びエンコーダ158aを有するローテータ152と、対応のモータドライバ156b及びエンコーダ158bを有するチルタ154とを含むのが良い。頭部160は、1つ又は2つ以上のウェブパッド310及びカメラ320を収容するのが良い。
図1〜図4C及び図9を参照すると、確実且つ堅牢な自律運動を達成するため、センサシステム400は、ロボット100がロボットの環境で取る行為に関する知的な決定を行うことができるのに十分なロボット環境の知覚を生じさせるよう互いに関連して用いることができる幾つかの互いに異なる形式のセンサを有するのが良い。センサシステム400は、ロボット本体110により支持された1つ又は2つ以上の形式のセンサを有するのが良く、かかるセンサとしては、障害物検出衝突回避(ODOA)センサ、通信センサ、ナビゲーションセンサ等が挙げられる。例えば、これらセンサとしては、近接センサ、接触センサ、三次元(3‐D)イメージング/深度マップセンサ、カメラ(例えば、可視光及び/又は赤外線カメラ)、ソナー、レーダ、LIDAR(Light Detection And Ranging)(光検知測距、これは、遠くに位置する標的のレンジ及び/又は他の情報を検知するよう散乱光の特性を測定する光学遠隔検出方式を必要とする場合がある)、LADAR(Laser Detection and Ranging)等が挙げられるが、これらには限定されない。幾つかの具体化例では、センサシステム400は、レンジングソナーセンサ410(例えば、基部120の周囲の周りに9つ)、近接クリフ検出器420、接触センサ430、レーザスキャナ440、1つ又は2つ以上の3‐Dイメージング/深度センサ450及びイメージングソナー460を有するのが良い。
センサをロボットプラットホームに配置するには幾つかの課題が存在する。第1に、センサは、これらがロボット100の周りの関心のある領域の最大カバレージ(有効範囲)を有するよう配置されることが必要である。第2に、センサは、ロボット100それ自体がセンサに対する絶対最小限の遮蔽度を生じさせるよう配置されることが必要な場合があり、本質的には、センサは、これらがロボットそれ自体により「目隠しされ」るように配置されてはならない。第3に、センサの配置及び取り付けは、プラットホームの工業的設計の残部に対して出しゃばるようなことがあってはならない。美感の面で、センサが目立たないように取り付けられたロボットがそうではないロボットよりも「魅力的」であると見なすことができる。実用性の面では、センサは、通常のロボット動作を邪魔しないよう(障害物に引っ掛かったり等しないよう)取り付けられるべきである。
幾つかの具体化例では、センサシステム400は、コントローラ500と通信状態にあると共に近くの又は侵入している障害物を検出するためにロボット100の1つ又は2つ以上のゾーン又は部分内に配置された(例えば、ロボット本体110の基部本体部分124a,124b,124cに又はその近くに設けられた1組の又はアレイをなす近接センサ410,420を有する。近接センサ410,420は、物体がロボット100の所与の範囲内にあるときに信号をコントローラ500に提供する集束形赤外線(IR)エミッタ‐センサ要素、ソナーセンサ、超音波センサ及び/又はイメージングセンサ(例えば、3‐D深度マップイメージセンサ)であるのが良い。
図4A〜図4Cに示されている実施例では、ロボット100は、基部120の周りに設けられる(例えば、実質的に等間隔を置いて)と共に上向き視野を備えて構成されたアレイをなすソナー形近接センサ410を有する。第1、第2及び第3のソナー近接センサ410a,410b,410cが第1の(前方の)基部本体部分124aに設けられ又はその近くに設けられており、ソナー近接センサのうちの少なくとも1つは、第1の基部本体124aの半径方向最も外側の縁部125aの近くに位置している。第4、第5及び第6のソナー近接センサ410d,410e,410fが第2の(左側の)基部本体部分124bに又はその近くに設けられており、ソナー近接センサのうちの少なくとも1つは、第2の基部本体124bの半径方向最も外側の縁部125bの近くに位置する。第7、第8及び第9のソナー近接センサ410g,410h,410iが第3の(右側の)基部本体部分124cに又はその近くに設けられており、ソナー近接センサのうちの少なくとも1つは、第3の基部本体124cの半径方向最も外側の縁部125cの近くに位置している。この構成により、少なくとも3つの検出ゾーンが得られる。
幾つかの実施例では、基部120の周りに設けられた1組のソナー近接センサ410(例えば、410a〜410i)は、上方に(例えば、実質的にZ方向に)向くよう配置され、オプションとして、Z軸から外方に遠ざかるよう角度をなしており、かくして、ロボット100の周りに検出カーテン412が形成されている。各ソナー近接センサ410a〜410iは、ソナーエミッション(放射波)を上方に案内し又は少なくともロボット本体110の他の部分に向かっては案内しない(例えば、ロボット本体110のそれ自体に対する運動を検出しないようにするため)シュラウド又はエミッション案内414を有するのが良い。エミッション案内414は、シェル又は半シェル形のものであるのが良い。図示の実施例では、基部120は、脚部130を越えて側方に延び、ソナー近接センサ410(例えば、410a〜410i)は、脚部130の周りで基部120に(例えば、実質的に基部120の周囲に沿って)設けられている。さらに、上方に向いたソナー近接センサ410は、脚部130周りの連続した又は実質的に連続したソナー検出カーテン412を形成するよう互いに間隔を置いて位置している。ソナー検出カーテン412は、高所側方突き出し部分を備えた障害物、例えばテーブル上面、棚等を検出するために使用できる。
上方視認型ソナー近接センサ410は、主として水平面内に位置する物体、例えばテーブル上面を見る機能を提供する。これら物体は、これらのアスペクト比に起因して、他のセンサシステムの他のセンサ、例えばレーザスキャナ440又はイメージングセンサ450では見えない場合があり、したがって、ロボット100に対して問題をもたらす場合がある。基部120の周囲に沿って設けられた、上方視認型ソナー近接センサ410は、これら形式の物体/障害物を視認し又は検出する手段となる。さらに、ソナー近接センサ410は、ロボット100の胴部120又は頭部160により遮蔽又は妨害されないように僅かに外方に傾斜した状態で基部周囲の最も幅の広い箇所の周りに配置されるのが良く、かくして、結果的にロボット100それ自体の部分を検出する誤った確信が生じなくなる。幾つかの具体化例では、ソナー近接センサ410は、ソナー近接センサ410の視野の外部で胴部140の周りに設けられていて、かくして、取り付けられたペイロード又は付属装置、例えばバスケット360を自由に受け入れることができる容積部を後に残すよう配置されている(上方及び外方に)。ソナー近接センサ410は、目に見えないようにしかも障害物に引っ掛かり又は当たる外部特徴部をもたらさないよう基部本体124内に引っ込められるのが良い。
センサシステム400は、バックアップの役目を果たしながら障害物を検出するために後方に(例えば、前方駆動方向Fとは反対側の方向に)向けられた1つ又は2つ以上のソナー近接センサ410(例えば、後側近接センサ410j)を有するのが良い。後側ソナー近接センサ410jは、そのソナー検出野412を方向付けるエミッション案内414を有するのが良い。さらに、後側ソナー近接センサ410jは、ロボット100と後側ソナー近接センサ410jの視野内の検出物体(例えば、「バックアップアラート」として)との間の距離を求めるための測距に使用できる。幾つかの実施例では、後側ソナー近接センサ410jは、ハウジング形式の視覚的又は機能的不規則性をもたらさないよう基部120内に引っ込められた状態で設けられる。
図3及び図4Bを参照すると、幾つかの具体化例では、ロボット100は、駆動輪210a,210b,210cがクリフ(例えば、階段)に当たる前にクリフ検出を可能にするよう駆動輪210a,210b,210cの近くに又はこれらの周りに配置されたクリフ近接センサ420を有している。例えば、クリフ近接センサ420は、基部本体124a〜124cの半径方向最も外側の縁部125a〜125cの各々のところ又はその近くで且つこれら相互間の場所に配置されるのが良い。幾つかの場合、クリフ検出は、赤外線(IR)近接又は実際のレンジ検出を用いると共に床を予測するべき場所にオーバーラップしたエミッション及び検出野及びかくして検出ゾーンを形成するよう互いに向かって傾けられた赤外線エミッタ422及び赤外線検出器424を用いて実施される。IR近接検出は、比較的狭い視野を有するのが良く、信頼性を得るために表面アルベド(albedo)で決まる場合があり、表面ごとの変化するレンジ精度を有するのが良い。結果として多数の別々のセンサをロボット100の周囲に沿ってぐるりと配置してロボット100上の多数の箇所からのクリフを適切に検出するのが良い。さらに、IR近接利用型センサは、代表的には、クリフと例えばロボット100が敷居を上がった直後の安全事象とを区別することができない。
クリフ近接センサ420は、ロボット100が床の下がり縁に遭遇した時点、例えばロボットが一連の階段に遭遇した時点を検出することができる。コントローラ500(制御システムを実行する)は、縁を検出したときにロボット100が例えばその移動方向の変化という行為を取るようにする挙動を実行することができる。幾つかの具体化例では、センサシステム400は、1つ又は2つ以上の二次クリフセンサ(例えば、クリフ検出及びオプションとしての他形式の検出を行うよう構成された他のセンサ)を有する。クリフ検出近接センサ420は、クリフの早期検出を提供し、実際のクリフと安全事象(例えば、敷居を上がること)とを区別するためのデータを提供するよう構成され、そして、これらの視野がロボット本体110の少なくとも一部及びロボット本体110から遠ざかって位置する領域を含むよう下方及び外方に位置決めされるのが良い。幾つかの具体化例では、コントローラ500は、支持作業面(例えば、床)の縁、作業面の縁を通過する距離の増大及び/又はロボット本体110と作業面との間の距離の増大を識別して検出するクリフ検出ルーチンを実施する。この具体化例では、1)潜在的なクリフの早期検出(これは、未知の環境における迅速な移動速度の実現を可能にする場合がある)、2)コントローラ500がクリフ事象が真の意味で安全ではないかどうか又はクリフを安全に横切ることができるかどうか(例えば、敷居を上がって)を知るためにクリフ検出近接センサ420からのクリフイメージング情報を受け取るので、自律移動性の信頼性の増大、3)クリフの誤った確信の減少(例えば、狭い視野を備えた多数の別々のIR近接センサに対する縁検出の使用に起因している)が可能になる。「ホイールドロップ(wheel drop)」センサとして配置された追加のセンサは、万全を期すためにしかもレンジ検出カメラが或る特定の形式のクリフを確実に検出することができない状況を検出するために使用できる。
敷居及び階段の検出により、ロボット100は、上がることができる敷居を横切るか高すぎる階段を回避するかのいずれかを効果的に計画することができる。これは、ロボット100が安全に横切ることができる場合があり又はそうでない作業面上の乱雑に置かれた物体についても当てはまる。ロボット100が確認する障害物又は敷居の場合、ロボット100が滑らかさを最大にすると共に突然の加速に起因した不安定性を最小限に抑えるために滑らかに移行することができるよう必要であると見なされた場合に適度に減速することができるこれらの高さを知って上がることができる。幾つかの具体化例では、敷居及び階段検出は、幾何学的認識(例えば、敷居又は電気ケーブルと染み、例えばソックスの区別)と共に作業面上の物体高さに基づいている。敷居は、縁検出によって認識できる。コントローラ500は、クリフ検出近接センサ420(又は、ロボット100に取り付けられている別のイメージングセンサ)からイメージングデータを受け取り、縁検出ルーチンを実行し、そして縁検出ルーチンの結果に基づいて駆動指令を出すことができる。コントローラ500は、パターン認識を利用して物体を識別することも可能である。敷居検出により、ロボット100は、滑らかな階段登り能力を最大にするよう敷居に対してその向きを変えることができる。
近接センサ410,420は、単独で機能することができ又は変形例として、万全を期すために1つ又は2つ以上の接触センサ430(例えば、バンプスイッチ)と組み合わせて機能することができる。例えば、ロボット本体110に取り付けられている1つ又は2つ以上の接触又はバンプセンサ430は、ロボット100が物理的に障害物に出会ったかどうかを検出することができる。かかるセンサは、ロボットが障害物に出会った時点を確認するためにロボット100内の物理的性質、例えばキャパシタンス又は物理的変位を利用することができる。幾つかの具体化例では、基部120の各基部本体部分124a,124b,124cは、基部シャーシ122(例えば、図4Aを参照されたい)に対する対応の基部本体部分124a,124b,124cの運動を検出する関連の接触センサ430(例えば、容量形センサ、リードスイッチ等)を有する。例えば、各基部本体124a,124b,124cは、スリーウェイバンプ検出を可能にするよう基部シャーシ122のZ軸に対して半径方向に動くことができる。
図1〜図4C、図9及び図10Aを参照すると、幾つかの具体化例では、センサシステム400は、ロボット本体110の前方部分に取り付けられると共にコントローラ500と通信状態にあるレーザスキャナ440を有する。図示の実施例では、レーザスキャナ440は、第1の基部本体124aに又はこれの上方で(例えば、ロボットの駆動方向Fに沿う最大イメージングカバレージを得るために)前方に向いた状態で(例えば、前方駆動方向Fに沿う視野を有する)基部120に取り付けられている。さらに、レーザスキャナを三角形基部120の前側先端部に又はその近くに配置することは、ロボット基部の外側の角度(例えば、300°)がレーザスキャナ440の視野442(例えば、約285°)よりも大きく、かくして、基部120がレーザスキャナ440の検出視野442を遮蔽せず又は妨害するのが阻止されることを意味している。レーザスキャナ440を基部本体124を越える突き出しレーザスキャナの部分を最小限に抑えるために(例えば、美感のために、更に障害物に引っ掛かる恐れを最小限に抑えるために)その視野を遮蔽しないで、可能な限り基部本体124内に引っ込んだ状態で設けられるのが良い。
レーザスキャナ440は、ロボット100の周りの領域を走査し、コントローラ500は、レーザスキャナ440から受け取った信号を用いて、走査した領域の環境マップ又は物体マップを作る。コントローラ500は、ナビゲーション、障害物検出及び障害物回避のために物体マップを用いることができる。さらに、コントローラ500は、物体マップを作成するため且つ/或いはナビゲーションのためにセンサシステム400の他のセンサから感覚入力を用いることができる。
幾つかの実施例では、レーザスキャナ440は、走査型LIDARであり、これは、一方向に領域を迅速に走査するレーザを「主」走査線として用いると共に深度をこのライン中で生じた各ピクセルに割り当てる(走査平面内の二次元深度線に戻る)ために位相差又はこれに類似した技術を用いるタイムオブフライトイメージング要素を使用することができる。三次元マップを作成するため、LIDARは、第2の方向に「補助」走査を実施することができる(例えば、スキャナを「うなずかせる」によって)。この機械的走査技術は、捕捉されなければ、例えば“フラッシュ”LIDAR/LADAR及び“Swiss Ranger”型焦点面イメージング要素センサのようなテクノロジー、各ピクセルのところに深度又は各ピクセルのところに一連の深度を提供するよう(エンコードされたイルミネータ又は照明レーザにより)ピクセルの完全2‐Dマトリックスのためのタイムオブフライト計算を可能にするよう半導体スタックを用いる技術によって完全なものとなることができる。
センサシステム400は、コントローラ500と通信状態にある1つ又は2つ以上の三次元(3‐D)イメージセンサ450を有するのが良い。3‐Dイメージセンサ450が限られた視野を持つ場合、コントローラ500又はセンサシステム400は、3‐Dイメージセンサ450aを側方走査方式で作動させて比較的広い視野を作り、それにより堅固なODOAを実施することができる。
再び図2及び図4A〜図4Cを参照すると、センサシステム400は、ロボット100の全体的重心CGRに対するロボット100の慣性モーメントを測定したりモニタしたりするようコントローラ500と通信状態にある慣性測定ユニット(IMU)470を有するのが良い。
コントローラ500は、通常の制限のない操作に対応したしきい信号に対するIMU470からのフィードバックのずれをモニタすることができる。例えば、ロボットが直立位置からつんのめり始めた場合、ロボットは、「クローズライン」され又は違ったやり方で妨害され、或いは、誰かが突然重いペイロードを追加する場合がある。これらの場合、ロボット100の安全動作を保証するために緊急措置(かかる措置としては、再較正及び/又は音声的/視覚的警告の発生を含むが、これらには限定されない)を取ることが必要な場合がある。
ロボット100は、人間環境で働くことができるので、ロボット100は、人と対話することができ、そして人向きに設計された空間内で作業することができる(ロボットの制約を顧慮しないで)。ロボット100は、混雑し、拘束され又は極めて動的な環境内にあるとき、例えば、カクテルパーティ又はせわしない病院においてその駆動速度及び加速度を制限することができる。しかしながら、ロボット100は、例えば長くて何も置かれていない廊下では比較的迅速に駆動しても安全である状況に遭遇する場合があるが、例えば何かがロボットの運動経路を横切った場合に突然減速することが可能である。
停止から加速すると、コントローラ500は、ロボットの全体的重心CGRからのロボット100の慣性モーメントを考慮してロボットがひっくり返るのを阻止することができる。コントローラ500は、その現在の慣性モーメントを含むその姿勢のモデルを使用することができる。ペイロードを支持する場合、コントローラ500は、全体的重心CGRに対する荷重の影響を計測してロボット慣性モーメントの運動をモニタすることができる。例えば、胴部140及び/又は頸部150は、ひずみを測定するためにひずみ計を有するのが良い。これが可能ではない場合、コントローラ500は、試験登録指令を駆動輪210に加えるのが良く、そして安全限度を経験的に定めるためにIMU470を用いてロボットの実際の直線加速度及び角加速度を測定することができる。
突然の減速の際、第2及び第3の駆動輪210b,210c(後輪)に対する指令された荷重を減少させ、その間、第1の駆動輪210a(前輪)は、前方駆動方向にスリップし、ロボット100を支持する。第2及び第3の駆動輪210b,210c(後輪)の荷重が非対称である場合、ロボット100は、「偏揺れ(ヨーイング)」し、それにより、動的安定性が低下する。IMU470(例えば、ジャイロ)を用いると、この偏揺れを検出し、第2及び第3の駆動輪210b,210cに指令を出してロボット100の向きを向け直すことができる。
図1〜図3、図9及び図10Aを参照すると、幾つかの具体化例では、ロボット100は、ロボット本体110の前方部分に取り付けられていて、前方駆動方向Fに沿って視野を持つ(例えば、ロボットの駆動方向Fに沿って最大のイメージングカバレージを有するよう)走査型3‐Dイメージセンサ450aを有する。走査型3‐Dイメージセンサ450aは、主として、障害物検出/障害物回避(ODOA)のために使用できる。図示の実施例では、例えば図3に示されているように胴部140内に引っ込められた状態で(例えば、底面144と面一をなして又はこれを越えて)胴部140に肩142の下で又は底面144上に取り付けられており、それにより、ユーザと走査型3‐Dイメージセンサ450aとの接触が阻止されている。走査型3‐Dイメージセンサ450aは、障害物検出及び障害物回避(ODOA)のために(例えば、ロボット本体110の基部120又は他の部分による妨害がある状態で)ロボット100の前に下向きの視野452を有するよう実施的に下方に且つロボット本体110から遠ざかる方向に向くよう配置されるのが良い。走査型3‐Dイメージセンサ450aを胴部140の前方縁部に又はその近くに配置することにより、3‐Dイメージセンサ450の視野(例えば、約285°)は、3‐Dイメージセンサ450に対して胴部140の外側の表面角度(例えば、300°)よりも小さいものとすることができ、かくして、胴部140が走査型3‐Dイメージセンサ450aの検出視野452を遮蔽し又は妨害するのが阻止される。さらに、走査型3‐Dイメージセンサ450a(及び関連のアクチュエータ)は、その視野を遮蔽しないで(例えば、美感のためにも且つ障害物に引っ掛かるのを最小限に抑えるために)できるだけ胴部140内に引っ込んだ状態で設けられるのが良い。走査型3‐Dイメージセンサ450aの注意をそらせてしまうような走査運動は、ユーザの目には見えず、かくして注意をそらすような相互作用の経験が少なくなる。突出したセンサ又は特徴部とは異なり、引っ込んだ状態で設けられた走査型3‐Dイメージセンサ450aは、特に動いているとき又は走査しているときに環境と意図しない相互作用(人、障害物等に引っ掛かること)を生じる傾向はないであろう。というのは、胴部140のエンベロープを越えて延びる可動部分が事実上ないからである。
幾つかの具体化例では、センサシステム400は、基部120、脚部130、頸部150及び/又は頭部160に設けられた追加の3‐Dイメージセンサ450を有している。図1に示されている実施例では、ロボット100は、基部120、胴部140及び頭部160に設けられた3‐Dイメージセンサ450を有している。図2に示されている実施例では、ロボット100は、基部120、胴部140及び頭部160に設けられた3‐Dイメージセンサ450を有している。図9に示されている実施例では、ロボット100は、脚部130、胴部140及び頸部150に設けられた3‐Dイメージセンサ450を有している。他の形態も又、採用可能である。1つの3‐Dイメージセンサ450(例えば、頭部160の上方で頸部150に取り付けられている)は、人々の認識、ジェスチャの認識及び/又はテレビ会議のために用いることができ、他方、別の3‐Dイメージセンサ450(例えば、基部120及び/又は脚部130に取り付けられている)は、ナビゲーション及び/又は障害物検出及び障害物回避のために用いることができる。
頸部150及び/又は頭部160に設けられた前方に向いた3‐Dイメージセンサ450がロボット100の周りの人々の個人の、顔面及び/又はジェスチャの認識のために使用できる。例えば、頭部160に設けられた3‐Dイメージセンサ450からの信号入力を用いて、コントローラ500は、視認すると共に/或いは捕捉したユーザの顔面の三次元マップを作り、そして作った三次元マップを人々の顔面の既知の3‐Dイメージと比較し、そして既知の3‐D顔面イメージのうちの1つとの一致を確認することによってユーザを認識することができる。顔面認識は、ロボット100の許容可能なユーザとしてユーザを確証するために使用されるのが良い。さらに、3‐Dイメージセンサ450のうちの1つ又は2つ以上は、ロボット100によって視認される個人のジェスチャを判定し、オプションとして、判定したジェスチャ(例えば、手の指差し、手を振って合図すること及び/又は手信号)に基づいて反応するために使用できる。例えば、コントローラ500は、特定の方向における認識された手の指差しに応答して駆動指令を出すことができる。
図10Bは、カメラ910、ソナーセンサ920及びレーザレンジファインダ(距離計)930を備えたロボット900の略図であり、カメラ910、ソナーセンサ920及びレーザレンジファインダ930は全て、ロボット本体905に取り付けられており、これらは各々、地面Gに平行な又は実質的に平行な視野を有している。この構成により、距離を置いたところに位置する物体の検出が可能である。実施例では、レーザレンジファインダ930は、地面Gの近くの物体を検出し、リング状に配置された超音波センサ(ソナー)920は、地面Gよりも更に上方に位置する物体を検出し、カメラ910は、高い見晴らしの利く位置からシーンの大部分を捕捉する。この設計の重要な特徴は、センサ910,920,930が全て地面Gに平行に差し向けられていることにある。この構成の一利点は、センサ910,920,930のうちの1つ又は2つ以上用いて測定される物体までの距離がロボット900が対応の所与の方向において物体に接触する前にロボット900が走行することができる距離でもあるという意味でコンピュータ計算を単純化できるということにある。この構成の欠点は、ロボットの周囲の良好なカバレージを得るために、多くのレベルの検出が必要であるということにある。これは、コスト及びコンピュータ計算の観点からは禁止される場合があり、それにより、ロボット900のセンサ910,920,930全ての感覚視野に大きな隙間が生じる場合が多い。
幾つかの具体化例では、ロボットは、ロボット100の周りの領域の音響イメージングを得るためのソナースキャナ460を有する。図1及び図3に示されている実施例では、ソナースキャナ460は、基部120の前方部分に設けられている。
図1、図3B及び図10Aを参照すると、幾つかの具体化例では、ロボット100は、検出の万全を期すためにレーザスキャナ又はレーザレンジファインダ440並びに安全のために後方に向いたソナー近接センサ410jを用いており、これらは両方共、地面Gに平行に差し向けられている。ロボット100は、ロボット100の周りの堅調な検出を可能にするために第1及び第2の3‐Dイメージセンサ450a,450b(デプスカメラ)を有するのが良い。第1の3‐Dイメージセンサ450aは、地面Gに対して一定の角度をなして下方に差し向けられた状態で胴部140に取り付けられている。第1の3‐Dイメージセンサ450aを下方に傾斜させることによって、ロボット100は、ロボット100のすぐ前又はこれに隣接した領域の密なセンサカバレージを受け取り、このカバレージは、前方方向におけるロボット100の短時間移動に適切である。後方に向いたソナー410jは、ロボットが後方に移動しているときに物体検出を行う。後方移動がロボット100にとって一般的である場合、ロボット100は、ロボット100のすぐ後方の又はこれに隣接した領域の密のセンサカバレージを提供するよう前後に向いた第3の3‐Dイメージセンサ450を有するのが良い。
第2の3‐Dイメージセンサ450bは、頸部150をパンしたり傾動させたりすることができる頭部160に取り付けられている。第2の3‐Dイメージセンサ450bは、遠隔駆動に有用であるのが良い。というのは、これにより、オペレータとしての人が、ロボット100がどこに行っているかを見ることができるからである。頸部150により、オペレータは、第2の3‐Dイメージセンサ450bを傾動させたり/或いはパンしたりして近くの物体と遠くの物体の両方を見ることができる。第2の3‐Dイメージセンサ450bをパンすると、関連の水平視野が広がる。速い走行中、ロボット100は、第2の3‐Dイメージセンサ450bを僅かに下方に傾けて3‐Dイメージセンサ450a,450bの両方の全体的又は組み合わせ状態の視野を広げると共にロボット100が障害物を回避するのに十分な時間を与えることができる(というのは、速い速度は、一般に、物体に対応する時間が短いことを意味するからである)。遅い速度では、ロボット100は、第2の3‐Dイメージセンサ450bを上方に又は地面Gに実質的に平行に傾けてロボット100がついて行っている人を追跡することができる。さらに、比較的低速で駆動している間、ロボット100は、第2の3‐Dイメージセンサ450bをパンしてロボット100の周りのその視野を広げることができる。第1の3‐Dイメージセンサ450aは、ロボットがロボットの知覚範囲を広げようと駆動しているとき、固定状態のままであるのが良い(例えば、基部120に対して動かないのが良い)。
3‐Dイメージセンサ450は、以下の形式のデータ、即ち、(i)深度マップ、(ii)反射率を利用した強度イメージ及び/又は(iii)通常強度のイメージを生成することができる場合がある。3‐Dイメージセンサ450は、イメージパターン照合、フライトタイムの測定及び/又は源から放出されて標的から反射される光の位相遅れシフトによってかかるデータを得ることができる。
幾つかの具体化例では、プロセッサ(例えば、ロボットコントローラ500のプロセッサ)上で実行可能な推論又は制御ソフトウェアがセンサシステム400により生成される種々のタイプのデータを用いて実行されるアルゴリズムの組み合わせを用いる。推論ソフトウェアは、センサシステム400から集められたデータを処理し、ロボット100が例えば障害物と衝突しないで動くことができる場所についてのナビゲーション上の決定を行うためのデータを出力する。ロボットの周囲の経時的なイメージングデータの蓄積によって、推論ソフトウェアは、効果的な方法を検出されたイメージの選択されたセグメントに適用して3‐Dイメージセンサ450の深度測定を向上させることができる。これは、適当な一時的且つ空間的平均化技術の使用を含むのが良い。
ロボットの衝突なしの運動を実行する信頼性は、(i)経時的な高レベル推論によって得られる信頼水準及び(ii)分析のために3つの主要な形式のデータを蓄積する深度知覚センサに基づくのが良く、かかる3つの主要な形式のデータは、(a)深度イメージ、(b)アクティブ照明イメージ及び(c)周囲照明イメージである。種々の形式のデータを認識するアルゴリズムを深度知覚イメージングセンサ450により得られたイメージの各々について実行するのが良い。集まったデータは、種々のデータのうちの1つだけを用いたシステムと比較して信頼水準を向上させることができる。
3‐Dイメージセンサ450は、1つ又は2つ以上の物体を含むロボット100の周りのシーン(例えば、部屋又は作業領域のセンサ視認部分)から深度及び輝度データを含むイメージを得ることができる。コントローラ500は、シーンからの反射光の捕捉に基づいて物体に関する占有データを定めるよう構成されているのが良い。さらに、コントローラ500は、幾つかの実施例では、障害物(即ち、シーン内の物体)を迂回するために少なくとも部分的に占有データに基づいて駆動指令を駆動システム200に出す。3‐Dイメージセンサ450は、コントローラ500によるリアルタイム決定のためにシーン深度イメージを繰り返し捕捉してロボット100をシーン内の物体に衝突することなくシーン中を進むことができる。例えば、深度イメージデータが3‐Dイメージセンサ450により得られる速度又は頻度を3‐Dイメージセンサ450のシャッタ速度によって制御することができる。加うるに、コントローラ500は、事象トリガ(例えば、センサシステム400の別のセンサコンポーネント(例えば近接センサ410,420からの)を受け取り、コントローラ500に近くに物体があること又は危険があることを知らせる。コントローラ500は、事象トリガに応答して、3‐Dイメージセンサ450が深度イメージを捕捉すると共に占有情報を得る頻度を増大させるようにすることができる。
図11を参照すると、幾つかの具体化例では、3‐Dイメージングセンサ450は、光をシーン10、例えばロボット100の周りの領域(例えば、部屋)に放出する光源1172を有する。イメージングセンサ450は、光源1172に源を発した反射光(例えば、シーン深度イメージとしての)を含むシーン10からの反射光を捕捉するイメージャ1174(例えば、アレイ状に配列された光電性ピクセル1174p)を更に有するのが良い。幾つかの実施例では、イメージングセンサ450は、放出された反射光及び受け取った反射光をそれぞれ操作する(例えば、スペックルし又は合焦させる)光源レンズ1176及び/又は検出器レンズ1178を有する。ロボットコントローラ500又はロボットコントローラ500と通信状態にあるセンサコントローラ(図示せず)は、イメージャ1174(例えば、ピクセル1174p)から光信号を受け取ってイメージパターン照合及び/又はイメージャ1174により捕捉された反射光のタイムオブフライト特性に基づいてシーン10内の物体12に関する深度情報を決定する。
図12は、イメージングセンサ450を動作させる操作又はステップの例示の構成又は流れ図1200を提供している。さらに図10Aを参照すると、操作は、光をロボット100の周りのシーン10に放出するステップ(1202)及びシーン10からの放出光の反射光をイメージャ(例えば、光電性ピクセルのアレイ)上で受け取るステップ(1204)を含む。操作は、コントローラ500がイメージャからの光検出信号を受け取るステップ(1206)、光検出信号に由来するイメージデータを用いてシーン10内の物体12の1つ又は2つ以上の特徴を検出するステップ(1208)及び光検出信号に由来するイメージ深度データを用いてシーン10内の物体12の検出特徴の位置を追跡するステップ(1210)を更に含む。操作は、光を放出するステップ(1202)を繰り返すステップ(1212)、光の反射光を受け取るステップ(1204)、光検出信号を受け取るステップ(1206)、物体の特徴を検出するステップ(1208)及び物体特徴の位置をイメージデータ又はイメージ深度データの解像度を増大させると共に/或いは信頼水準を提供するよう物体特徴の位置を追跡するステップ(1210)を含むのが良い。
繰り返しステップ(1212)は、比較的高い解像度を得るための比較的遅い速度(例えば、遅いフレーム率)、中間速度又は比較的低い解像度による高い速度で実施できる。繰り返しステップ(1212)の頻度は、ロボットコントローラ500によって調節可能であるのが良い。幾つかの具体化例では、コントローラ500は、事象トリガを受け取った際に繰り返しステップ(1212)の頻度を増減することができる。例えば、シーン内の提示されたアイテムは、繰り返しステップ(1212)の頻度の増大を生じさせてシーン10内の場合によっては目立っている物体12(例えば、出入口、敷居又はクリフ)を検出するようにする事象をトリガすることができる。追加の実施例では、検出物体12相互間の経過時間事象により、繰り返しステップ(1212)の頻度が遅くなり又は所与の期間にわたって停止する場合がある(例えば、別の事象によって起こされるまでスリープ状態になる)。幾つかの実施例では、シーン10内の物体12の1つ又は2つ以上の検出ステップ(1208)は、特徴検出事象をトリガし、それによりイメージ深度データが得られる速度を増大させるために繰り返しステップ(1212)の頻度を比較的高くする。イメージ深度データの比較的高い収集速度は、シーン内における比較的確実な特徴の追跡を可能にする。
操作は、シーン10内の物体12を迂回するためのナビゲーションデータを出力するステップ(1214)を更に含む。幾つかの具体化例では、コントローラ500は、出力されたナビゲーションデータを用いて駆動指令を駆動システム200に出し、それによりロボット100を物体12との衝突を避ける仕方で動かす。
幾つかの具体化例では、センサシステム400は、ロボット100の周りのシーン10内の多数の物体12を検出し、コントローラ500は、検出した物体12の各々の位置を追跡する。コントローラ500は、ロボット100の周りの領域、例えば部屋の境界付けられた領域内の物体12の占有マップを作成することができる。コントローラ500は、センサシステム400のイメージ深度データを用いてシーン10を占有マップの一部分と照合し、占有マップを追跡した物体12の存在場所で更新することができる。
図13を参照すると、幾つかの具体化例では、3‐Dイメージセンサ450は、三次元(3‐D)スペックルカメラ1300を有し、このスペックルカメラは、スペックル非相関性によりイメージマッピングを可能にする。スペックルカメラ1300は、スペックルパターンをシーン10(標的領域として)中に放出するスペックルエミッタ1310(例えば、赤外線紫外線及び/又は可視光の)及びシーン10内の物体12の表面上のスペックルパターンのイメージを捕捉するイメージャ1320を有する。
スペックルエミッタ1310は、光のビームを反射及びかくして投影のためにシーン10中へのスペックルパターンとしてディフューザ1314中に、そして反射器1316に放出する光源1312、例えばレーザを有するのが良い。イメージャ1320は、対物光学素子センサ1322を有するのが良く、この対物光学素子は、光検出器1326のアレイを有するイメージセンサ1324、例えばCCD例えばCMOS技術利用イメージセンサにイメージを集束させる。スペックルエミッタ1310及びイメージャ1320の光軸が例えば非相関モードでは同一直線上に位置するものとして示されているが、スペックルエミッタ1310及びイメージャ1320の光軸は、非同一直線上にあっても良く、他方、例えば相互相関モードでは、イメージング軸は、放出軸からずれるようになる。
スペックルエミッタ1310は、スペックルパターンをシーン10中に放出し、イメージャ1320は、スペックルエミッタ1310から種々の物体距離Znのレンジ(例えば、Z軸がイメージャ1320の光軸により定めることができる場所)でシーン10内のスペックルパターンの基準イメージを捕捉する。図示の実施例では、投影されたスペックルパターンの基準イメージは、原点から種々のそれぞれの距離を置いたところで、例えばZ1,Z2,Z3と印付けられた基準場所等のところの一連の平面で捕捉される。基準イメージ相互間の差ΔZは、しきい距離(例えば、5mm)のところに設定可能であり又はコントローラ500によって調節可能であるのが良い(例えば、トリガされた事象に応答して)。スペックルカメラ1300は、捕捉した基準イメージをアーカイブしてこれらをそれぞれの放出距離に割り送りし、それによりスペックルエミッタ1310からの距離とのスペックルパターンの非相関を可能にし、それにより次のイメージで捕捉された物体12の測距を可能にする。ΔZが隣り合う基準距離Z1,Z2,Z3,...相互間の距離にほぼ等しいと仮定すると、場所ZAのところの物体12に対するスペックルパターンを例えばZ2のところで捕捉されたスペックルパターンの基準イメージに相関させることができる。他方、ZBのところの物体12に対するスペックルパターンを例えばZ3のところの基準イメージに相関させることができる。これら相関測定値により、原点からの物体12の適当な距離が与えられる。物体12を三次元でマップするため、スペックルカメラ1300又はスペックルカメラ1300から情報を受け取るコントローラ500は、最も近い照合を与えた基準イメージとの局所相互相関性を用いることができる。
本明細書において説明した細部及び特徴と組み合わせることができる例えば三角形分割又は非相関性を用いるスペックル相互相関性によってスペックル測距を使用する3‐Dイメージマッピングに関する他の細部及び特徴は、国際出願PCT/IL2006/000335号明細書に見られ、この国際出願を参照により引用し、その記載内容全体を本明細書の一部とする。
図14は、スペックルカメラ1300を動作させる操作又はステップの例示の構成又は流れ図1400を示している。操作は、スペックルパターンをシーン10中に放出するステップ(1402)及びスペックルエミッタ1310から種々の距離を置いたところで基準イメージ(例えば、基準物体12の基準イメージ)を捕捉するステップ(1404)を含む。操作は、スペックルパターンをシーン10内の標的物体12に放出するステップ(1406)及び物体12上のスペックルパターンの標的イメージを捕捉するステップ(1408)を更に含む。操作は、標的イメージ(スペックル物体の標的イメージ)を種々の基準画像と比較して標的物体12上のスペックルパターンと最も相関の強い基準パターンを識別するステップ(1410)及びシーン10内の標的物体12の推定距離レンジを求めるステップ(1412)を更に含む。これは、物体12上の主要スペックルパターンを突き止めるステップ及び物体12上の主要スペックルパターンと相関の最も強いスペックルパターンを有する基準イメージを見出すステップを更に含む。距離レンジを基準イメージの対応の距離から求めることができる。
操作は、オプションとして、例えばシーン内の物体12の存在場所を突き止めるために物体12上のスペックルパターンと識別された基準パターンとの局所相互相関性によって物体12の表面の3‐Dマップを作成するステップ(1414)を含む。これは、物体12上の主要スペックルパターンを突き止めるステップ及び標的イメージ中の物体12の多数の領域上の主要スペックルパターンと識別された基準イメージ中の主要スペックルパターンとのそれぞれのオフセットを見出して物体の三次元(3‐D)マップを導き出すステップを含むのが良い。シーンの3‐Dマッピングのためのソリッドステートコンポーネントの使用により、ロボットナビゲーションシステムのための比較的安価な手段が得られる。
代表的には、種々のそれぞれの距離のうちの少なくとも幾つかは、それぞれの距離のところの主要スペックルパターンの軸方向長さよりも長い距離だけ軸方向に隔てられている。標的イメージを基準イメージと比較するステップは、標的イメージと基準イメージのうちの少なくとも幾つかの各々とのそれぞれの相互相関性をコンピュータ計算するステップ及び標的イメージとの最も強いそれぞれの相互相関性を有する基準イメージを選択するステップを含むのが良い。
操作は、ステップ(1402〜1412)又はステップ(1406〜1412)を繰り返しするステップ(1416)及びオプションとしてシーン10内の物体12の運動を追跡するステップ(1414)(例えば、連続的に)を含むのが良い。例えば、スペックルカメラ1300は、物体12が基準イメージとの比較とのために動いている間、一連の標的イメージを捕捉することができる。
本明細書において説明する細部及び特徴と組み合わせ可能なスペックル測距を用いる3‐Dイメージマッピングに関する他の細部及び特徴は、米国特許第7,433,024号明細書、米国特許出願公開第2008/0106746号明細書(発明の名称:Depth-varying light fields for three dimensional sensing)、米国特許出願公開第2010/0118123号明細書(発明の名称:Depth Mapping Using Projected Patterns)、米国特許出願公開第2010/0034457号明細書(発明の名称:Modeling Of Humanoid Forms From Depth Maps)、米国特許出願公開第2010/0020078号(発明の名称:Depth Mapping Using Multi-Beam Illumination)、米国特許出願公開第2009/0185274号明細書(発明の名称:Optical Designs For Zero Order Reduction)、米国特許出願公開第2009/0096783号(発明の名称:Three-Dimensional Sensing Using Speckle Patterns)、米国特許出願公開第2008/0240502号(発明の名称:Depth Mapping Using Projected Patterns)及び米国特許出願公開第2008/0106746号(発明の名称:Depth-Varying Light Fields For Three Dimensional Sensing)に見受けられ、これら特許文献を参照により引用し、これらの記載内容全体を本明細書の一部とする。
図15を参照すると、幾つかの具体化例では、3‐Dイメージングセンサ450は、深度イメージデータを得るための3‐Dタイムオブフライト(TOF)カメラ1500を有する。3‐D・TOFカメラ1500は、光源1510、相補型金属酸化膜半導体(CMOS)センサ1520(又は電荷結合素子(CCD))、レンズ1530及び光源1510及びCMOSセンサ1520と連絡状態にある処理リソース(資源)(及び/又はロボットコントローラ500)を備えた制御論理又はカメラコントローラ1540を有する。光源1510は、周期的高周波数信号により調整される強度を備えたレーザ又は発光ダイオード(LED)であるのが良い。幾つかの実施例では、光源1510は、集束レンズ1512を有する。CMOSセンサ1520は、アレイ状に配置されたピクセル検出器1522又は他の配置構成のピクセル検出器1522を有するのが良く、この場合、各ピクセル検出器1522は、これに当たったフォトニックエネルギーの強度及び位相を検出することができる。幾つかの実施例では、各ピクセル検出器1522は、関連のピクセル検出器1522の検出電荷出力を処理する専用検出器回路1524を有する。レンズ1530は、関心のある1つ又は2つ以上の物体12を含むシーン10から反射された光をCMOSセンサ1520上に集束又は合焦させる。カメラコントローラ1540は、CMOSセンサ1520により得られたピクセルデータを深度マップ及び輝度イメージにフォーマットする一連の操作を提供する。幾つかの実施例では、3‐D・TOFカメラ1500は、入力/出力(IO)1550(例えば、ロボットコントローラ500と連絡状態にある)、メモリ1560及び/又はカメラコントローラ1540及び/又はピクセル検出器1522(例えば、検出器回路1524)と連絡状態にあるクロック1570を更に有している。
図16は、3‐D・TOFカメラ1500を操作する操作又はステップの例示の流れ図1600を示している。操作は、光パルス(例えば、赤外線、紫外線及び/又は可視光)をシーン10中に放出するステップ(1602)及び光パルスの飛行時間のタイミングを開始する(例えば、クロック1570のクロックパルスをカウントすることにより)ステップ(1604)を含む。操作は、シーン10内の物体12の1つ又は2つ以上の表面からの放出光の反射光を受け取るステップ(1606)を含む。反射光は、光源1510から種々の距離Znのところに位置する物体12の表面からの反射光であるのが良い。反射光は、レンズ1530を通ってCMOSセンサ1520のピクセル検出器1522上に受け取られる。操作は、CMOSセンサ1520の対応の各ピクセル検出器1522上で受け取られた各光パルス反射光に関するタイムオブフライトを受け取るステップ(1608)を含む。光パルスのラウンドトリップ飛行時間(TOF)の間、それぞれの各ピクセル検出器1522の検出器回路1524のカウンタは、クロックパルスを蓄積する。多数の蓄積されたクロックパルスは、長いTOFを表し、それ故に、イメージングされた物体12上の光反射箇所と光源150との間の長い距離を表している。操作は、受け取った各光パルス反射光に関する物体12の反射面相互間の距離を求めるステップ(1610)及びオプションとして三次元物体表面を構築するステップ(1612)を更に含む。幾つかの具体化例では、操作は、ステップ(1602〜1610)を繰り返すステップ(1614)及びオプションとしてシーン10内の物体12の運動を追跡するステップ(1612)を含む。
本明細書において説明する細部及び特徴と組み合わせ可能な3‐Dタイムオブフライトイメージングに関する他の細部及び特徴は、米国特許第6,323,942号明細書(発明の名称:CMOS Compatible 3-D Image Sensor)、米国特許第6,515,740号明細書(発明の名称:Methods for CMOS-compatible Three-Dimensional Image Sensing Using Quantum Efficiency Modulation)、国際出願PCT/US02/16621号明細書(発明の名称:Method and System to Enhance Dynamic Range Conversion Usable with CMOS Three-Dimensional Imaging)に見受けられ、これら特許文献を参照により引用し、これらの記載内容全体を本明細書の一部とする。
幾つかの具体化例では、3‐Dイメージングセンサ450は、次の3つの形式の情報、即ち、(1)深度情報(例えば、CMOSセンサ1520の各ピクセル検出器1522からシーン12上の対応の場所まで)、(2)各ピクセル検出器配置場所のところの周辺光強度及び(3)各ピクセル検出器配置場所のところのアクティブ照明強度を提供する。深度情報により、検出した物体12の位置を特にロボット展開場所に対する物体の近接性に関して経時的に追跡することができる。アクティブ照明強度及び周辺光強度は、互いに異なる形式の輝度イメージである。アクティブ照明強度は、標的物体12で反射されたアクティブ光(例えば、光源1510により提供される)の反射光から捕捉される。周辺光イメージは、標的物体12で反射された周辺光のものである。2つのイメージは、一緒になって、特に照明条件が貧弱である場合(例えば、暗すぎる又は過度に高い周辺照明)、追加の堅調さを提供する。
イメージセグメント化及び分類アルゴリズムを用いると、シーン10内の物体12の位置を分類すると共に検出することができる。これらアルゴリズムにより提供される情報並びにイメージングセンサ450から得られる距離測定情報は、ロボットコントローラ500又は他の処理リソースによって使用できる。イメージングセンサ450は、タイムオブフライト原理で動作することができ、具体的に説明すると、周辺光を濾波するフォトダイオードの感度を調節する技術を含むシーン10から反射された調整された光パターン中の検出可能な位相遅れに基づいて動作することができる。
ロボット100は、1)マッピング、存在場所突き止め及びナビゲーション、2)物体検出及び物体回避(ODOA)、3)物体ハンティング(例えば、人を見出すために)、4)ジェスチャ認識(例えば、コンパニオンロボットのため)、5)人々及び顔面検出、6)人々追跡、7)ロボット100による物体の操作のモニタ及びロボット100の自律的動作のための他の適当なアプリケーションのためにイメージングセンサ450を使用することができる。
幾つかの具体化例では、3‐Dイメージセンサ450のうちの少なくとも1つは、地面よりも1フィート(30.5cm)又は2フィート(61.0cm)以上、上方の高さ位置のところでロボット100に取り付けられると共にロボットの移動方向において床平面を含む空間ボリュームから点群を得ることができる(全方向性駆動システム200により)差し向けられたボリューム形点群イメージング装置(例えば、スペックル又はタイムオブフライトカメラ)であるのが良い。図1及び図3に示されている実施例では、第1の3‐Dイメージセンサ450aは、地面よりも1又は2フィート以上、上方の高さ位置(又は、地面よりも約1又は2フィートの高さ)のところで基部120に取り付けられると共に駆動しながら(例えば、物体検出及び物体回避のために)床を含むボリュームのイメージ(例えば、ボリューム的点群)を捕捉するために前方駆動方向Fに沿って差し向けられるのが良い。第2の3‐Dイメージセンサ450bは、ロボット100に隣接して位置する空間ボリュームから骨組み認識及びデフィニション点群を得ることができるよう頭部160に(例えば、地面よりも約3フィート(91.5cm)又は4フィート(122.0cm)以上、上方の高さ位置のところで)取り付けられた状態で示されている。コントローラ500は、骨組み/ディジタル認識ソフトウェアを実行して捕捉されたボリューム形点群のデータを分析することができる。
周辺光条件とは無関係にイメージングセンサ450を用いて物体12を正しく検出することが重要な場合がある。多くの環境において、照明条件は、直接の太陽光から明るい蛍光照明、そして薄暗い陰までの広い範囲に及び、その結果、物体12の表面テキスチャ及び基本的反射率の大幅な変化が生じる。照明は、所与の場所内において、更にシーン10毎に様々であって良い。幾つかの具体化例では、イメージセンサ450は、周辺光条件からの影響を比較的少なくした状態で(例えば、周辺光拒否)あらゆる状況において人と物体12を識別すると共に解像するために使用されるのが良い。
幾つかの具体化例では、イメージングセンサ450のVGA解像度は、640水平ピクセル×480水平ピクセルであるが、他の解像度、例えば320×240(例えば、短距離センサの場合)も又採用可能である。
イメージングセンサ450は、パルスレーザ及び指定された範囲内でのみ物体12を見るよう時間領域内において帯域フィルタとして働くカメラ絞りを有するのが良い。イメージングセンサ450の可変絞りを用いると、種々の距離のところで物体12を検出することができる。さらに、パルス化高出力レーザを屋外用途に用いることができる。
表1及び表2(以下に掲載されている)は、種々の用途に関するイメージングセンサ450の例示の特徴、パラメータ及び/又は使用を提供している。センサ1は、汎用イメージングセンサ450として用いられるのが良い。センサ2,3は、人との対話ロボットに取り付けて用いられるのが良く、センサ4,5は、カバレージ又は清掃用ロボットに取り付けて用いられるのが良い。
最小センサ待ち時間により、物体12をロボット100が動いているときに回避するに足るほど迅速に見えることができるようになる。イメージングセンサ450の待ち時間は、検出されると共に認識されたユーザジェスチャに対するリアルタイムの反応の際における要因であるのが良い。幾つかの実施例では、イメージングセンサ450は、約44ミリ秒の待ち時間を有する。イメージングセンサ450により捕捉されるイメージは、属性タイムスタンプを意味するのが良く、かかる属性タイムスタンプは、空間内で並進又は回転している間にイメージが撮像されたロボットポーズを決定するために使用できる。
コントローラ500と通信状態にあるシリアル周辺インターフェースバス(SPI)をイメージングセンサ450との通信のために使用されるのが良い。イメージングセンサ450のためにSPIインターフェースを用いることによっては、マルチノード分散型センサ/アクチュエータシステムのためのその使用が制限されるわけでなく、Ethernet利用可能装置、例えばマイクロプロセッサ又はフィールドプログラマブルゲートアレイ(FPGA)との結合が可能であり、かかる装置により、この場合、2010年2月16日に出願された米国特許出願第61/305,069号明細書(発明の名称:Mobile Roboto Communication System)に記載されているようにEthernet及びEtherIOシステムによりデータが利用可能になり、この特許文献を参照により引用し、その記載内容全体を本明細書の一部とする。
SPIは、制限されたプロトコルなので、イメージ捕捉を実行する際にストローブし又は移行するイメージングセンサ450へのインターフェースに割込みピンが利用可能であるのが良い。割込みピンは、フレームを捕捉したときにコントローラ500との通信を可能にする。これにより、コントローラ500は、データをいつでも読み取ることができるということを知ることができる。追加的に、割込みピンは、イメージを撮像した時点を指示するタイムスタンプを捕捉するためにコントローラ500によって使用可能である。イメージングセンサ450のイメージング出力は、タイムスタンプされるのが良く(例えば、コントローラ500のグローバルクロックによって)、これは、待ち時間を補償するために参照可能である。さらに、多数のイメージングセンサ450(例えば、シーン10の種々の部分の)からのタイムスタンプされたイメージング出力を同期させて組み合わせることができる(例えば、互いに縫い合わせることができる)。EtherIOシステムにより、割込み時間(割込みピンに関する)を捕捉してEtherIOシステムの高レベル装置及びソフトウェアに利用できるようにするのが良い。ロボット100は、クロック同期化方式を実行するマルチノード分散型センサ/アクチュエータシステム、例えばIEEE1588を有するのが良く、本発明者は、かかるIEEE1588をイメージングセンサ450から捕捉されたデータに適用することができる。
SPIインターフェースとEtherIOの両方は、メモリアドレス駆動インターフェースであるのが良い。例えばバイト/ワード(語)/ダブルワード(倍長語)のデータをSPIインターフェースを介してイメージングセンサ450から読み取ることができ、そしてEtherIOシステムのメモリ空間で利用できる。例えば、FPGA内に設けられた局部レジスタ及びメモリ、例えばダイレクトメモリアクセス(DMA)メモリを用いると、EtherIOシステムのEtherIOノードを制御することができる。
幾つかの場合、ロボット100は、左右に又は側方にイメージングセンサ450を走査する必要のある場合がある(例えば、物体12又は遮蔽部16(図17A)の周りを見るために)。差動的に操舵されるロボット100の場合、これは、ロボット100を定位置で駆動システム200により回転させ又はイメージングセンサ450と関連した鏡、プリズム、可変角度マイクロミラー若しくはMEMSミラーアレイを回転させる場合を含むのが良い。
360°よりも小さい視認角度θVを有するイメージングセンサ450の視野452を光学素子、例えば全方向性、フィッシュアイ、カタディオプトリック(例えば、放物面鏡、テレセントリックレンズ)、パナモルフ(panamorph)ミラー及びレンズによって360°に拡大可能である。コントローラ500は、とりわけ測距のためにイメージングセンサ450を利用することができるが、必ずしも人により視認可能なイメージ又は映像(例えば、人とのコミュニケーションのため)のために使用されるわけではないので、光源1172の照明のディストーション(例えば、ワーピング)及び/又は光学素子によるイメージャ1174(図11)によるイメージ捕捉は、測距のために許容できる(例えば、3‐Dスペックルカメラ1300及び/又は3‐D・TOFカメラ1500を用いた場合のように)。
幾つかの場合において、イメージングセンサ450は、黒い物体12、変化アルベドの表面、反射率の高い物体12、強固な3‐D構造体、自己相似性若しくは周期的構造体又は視野452のところ又はこれをすぐ越えたところに位置する物体(例えば、水平及び垂直視野角度のところ又はその外側)を認識して測距するのに困難を伴う場合がある。かかる場合、センサシステム400の他のセンサを用いると、イメージングセンサ450を補完し又はイメージングセンサ450の冗長手段として働くよう使用できる。
幾つかの具体化例では、光源1172(例えば、3‐Dスペックルカメラ1300及び/又は3‐D・TOFカメラ1500の)は、赤外線(IR)レーザ、IRパターン照明器又は他のIR照明器を有する。黒色の物体、特に黒色の布又はカーペットは、IRを吸収することができ、したがって、イメージャ1174による認識に十分な強力な反射光を戻すことができない。この場合、二次検出モード(例えば、ソナー)か又は表明アルベド差のための自動較正技術かのいずれかが黒色物体の認識度を向上させるために必要な場合がある。
屈折率の高い物体12又は正反射強調が相当高い物体12(例えば、円柱状又は球状)は、イメージングセンサ450にとって測距を困難にする場合がある。同様に、イメージングセンサ450が検出している光の波長に極めて吸収性の高い物体12は、同様な問題を提起する場合がある。ガラスで作られている物体12、例えばドアや窓は、反射性が極めて高い場合があり、測距された場合、これらが自由空間(有限距離)であるかの如く見えるか第1の非鏡面状反射面への反射光として測距する。これにより、ロボット100は、物体12を障害物としては見ず、その結果、ロボット100は、窓又はドアと衝突する場合があり、それによりロボット又は物体12の損傷が生じる恐れがある。これを回避するため、コントローラ500は、代表的な窓ガラス又は出入口の寸法形状(直線から成る)にマッチする表面の不連続部を探す1つ又は2つ以上のアルゴリズムを実行するのが良い。すると、これら表面は、自由空間ではなく障害物であると推定される場合がある。ロボットの経路中の反射性物体を検出する別の具体化例は、それ自体の反射光を検出する反射センサを用いることである。障害物又は物体12の注意深い接近時、反射センサを用いて鏡面反射性物体が前にあるかどうか又はロボットが安全に空間を占有しているかどうかを判定することができる。
3‐Dスペックルカメラ1300の場合、光源1312は、反射性の高い物体12の表面上で認識可能なパターンを形成しないようになる場合があり、或いはイメージャ1320は、反射性の高い物体12からのスペックル反射光を認識しない場合がある。3‐D・TOFカメラ1500の場合、反射性の高い物体12は、3‐D・TOFカメラ1500が物体12中で反射された別の物体12までの(物体それ自体までではない)レンジ又は距離を得る多経路状況を生じさせる場合がある。IR故障モードを治すため、センサシステム400は、音響飛行時間、ミリメートル波レーダ、シーン10内のほんの僅かな反射光を用いることができるステレオ又は他のビジョン技術を採用するのが良い。
メッシュ物体12は、イメージングセンサ450にとって測距を困難にする場合がある。特定の多孔率のメッシュのすぐ後ろに物体12が存在していない場合、メッシュは、中実障害物12として見えるであろう。しかしながら、物体12がメッシュの後ろに移動した場合及び3‐Dスペックルカメラ1300の場合、スペックルは、メッシュの後ろで物体12から反射することができ、物体は、たとえこれがメッシュの後ろに位置した場合であってもメッシュではなく、深度マップ中に見えることになる。メッシュの識別にあらかじめ寄与した箇所に関する情報が利用できる場合(物体12がメッシュの後ろに移動する前)、かかる情報を用いると、将来の占有マップにメッシュの位置を登録することができる。様々な距離での受け取りスペックルマップルの確率的相関に関する情報を受け取ることにより、コントローラ500は、イメージングセンサ450と一線をなす多数の多孔質又はメッシュ状物体12の存在場所を突き止めることができる。
コントローラ500は、カラー(色)/サイズ/寸法ブロブ照合のためにイメージングセンサ450からのイメージングデータを利用することができる。シーン10内における別々の物体12の識別により、ロボット100は、衝突を回避するだけでなく物体12を探すことも可能である。ヒューマンインターフェースロボット100は、家又はオフィス環境の背景に対して人及び標的物体12を識別することが必要な場合がある。コントローラ500は、深度マップが単一のグレースケールマップであって同一の「カラー」(即ち、深度の連続性)を探してシーン10内の連続物体12を生じさせるかの如くイメージングセンサ450のイメージングデータに由来する深度マップに対して1つ又は2つ以上のカラーマップブロブ発見アルゴリズムを実行することができる。カラーマップを用いて物体12をどのようにセグメントするかについての決定を強化することにより、色空間並びに深度空間のセグメント化を可能にすることにより物体照合が一段と強化される。コントローラ500は、先ず最初に、深度により物体12を検出することができ、次に、色により物体12を一段とセグメント化することができる。これにより、ロボット100は、互いに異なる光学品質で互いに近い又は互いに当たっている2つの物体12を識別することができる。
センサシステム400が物体検出のためにイメージングセンサ450(例えば、カメラ)を1つしか備えていない具体化例では、イメージングセンサ450は、シーンテキスチャのない場合に表面を画像化する上で問題があり、シーンのスケールを分析することができない場合がある。さらに、物体12の鏡及び/又は鏡面強調により、イメージャ1174の一群のピクセル1174pの飽和(例えば、捕捉したイメージの対応部分の飽和)が生じる場合があり、カラーイメージでは、鏡面強調は、異なる視点によっては別々に見える場合があり、それにより例えばスペックルカメラ1300についてイメージ照合が阻害される。
物体検出のための2つ又は3つ以上のセンサを用い又は集めることにより、比較的堅固であり且つ冗長度の高いセンサシステム400を提供することができる。例えば、フラッシュLADARは、一般に低いダイナミックレンジを有し、回転スキャナは一般に、長い検査時間を必要とするが、これらの形式のセンサは、物体検出には有用である場合がある。幾つかの具体化例では、センサシステム400は、コントローラ500と連絡状態にあるイメージングセンサ450(例えば、3‐Dスペックルカメラ1300及び/又は3‐D・TOFカメラ1500)に加えて、フラッシュLADAR及び/又は回転スキャナを有する。コントローラ500は、イメージングセンサ450及びフラッシュレーザレーダ及び/又は回転スキャナからの検出信号を用いて物体12を識別し、ロボット100からの物体12の距離を求め、物体12の表面の3‐Dマップを作成すると共に/或いは占有マップ1700を作成し又はアップデートすることができる。3‐Dスペックルカメラ1300及び/又は3‐D・TOFカメラ1500を用いると、測距を初期化し、低テキスチャの領域を埋め、深度不連続部を検出すると共に/或いはスケールを固定することによってカラー又はステレオカメラの弱点に取り組むことができる。
3‐Dスペックルカメラ1300を用いた実施例では、スペックルエミッタ1310により放出されるスペックルパターンは、イメージャ1320に対して回転不変性であるのが良い。さらに。3‐Dスペックルカメラ1300及び/又は3‐D・TOFカメラ1500と同時に用いられる追加のカメラ1300(カラー又はステレオカメラ)は、エゴ回転、傾動、透視及び/又はスケール(距離)を取り扱うのに幾分かの又は完全にスケール回転アフィン不変性である特徴部検出器を採用するのが良い。スケール不変性特徴変換(又はSIFT)は、イメージ中の局所特徴部を検出すると共に/或いは説明するためのアルゴリズムである。SIFTは、物体認識、ロボットマッピング及びナビゲーション、3‐Dモデル化、ジェスチャ認識、映像追跡及び照合移動のためにコントローラ500(センサシステム400からのデータを用いる)によって使用可能である。SIFTは、スケール不変性、回転不変性変換として、シーン10内の特徴部に対するサインの配置を可能にすると共にシーン10内の識別された特徴部が遠くに位置し又はこれらを回転させた場合であってもシーン10内の識別された特徴部を再び得るのを助けることができる。例えば、通常のイメージに対するSIFTの適用により、移動した物体12(例えば、顔面又はボタン若しくは何らかのテキスト)の認識を可能にし、物体12が同一の輝度又はカラーパターンを有し、大きくなったか又は小さくなったか或いは回転したかが識別される。アフィン不変性であり、物体12を角度から識別するためのスキュー又はディストーションを説明することができる変換のうちの他のものを採用することができる。センサシステム400及び/又はコントローラ500は、SIFT、RIFT、アフィンSIFT、RIFT、G‐RIF、SURF、PCA‐SIFT、GLOH.PCA‐SIFT、SIFTw/FAST曲がり角検出及び/又はスケール変更可能なボキャブラリーツリー及び/又はSIFTw/Irregular Orientation Histogram Binningを採用することによりスケール不変性特徴部認識(例えば、カラー又はステレオカメラによる)を提供することができる。
幾つかの具体化例では、コントローラ500は、物体検出及び/又は識別のためにSIFT及び/又は他の変換を採用するプログラム又はルーチンを実行する。コントローラ500は、イメージセンサ450又はIRカメラからのイメージデータ、例えば色、黒色及び白色を受け取ることができる。幾つかの実施例では、イメージセンサ450は、スペックル測距の利点なく特徴部を識別するためにスペックル照明なしでイメージデータを提供することができる3‐DスペックルIRカメラである。コントローラ500は、スペックル測距からの3‐Dシーンに先にマップされた特徴部又は物体12を識別し又はタグ付けすることができる。深度マップを用いると、カメラでイメージ化された特徴部に適用されるSIFTの認識率をフィルタ処理して向上させることができると共に/或いはスケール不変性を単純化することができる(レンジ中の運動と変化の両方が既知であり、スケールに関連付けることができるので)。SIFT状変換は、フレーム毎に位置変化について標準化されると共に/或いはシフトされた深度マップデータに有用である場合があり、慣性追跡、オドメトリ(odometry)、固有感覚性及び/又はビーコン基準を備えたロボットは、かかる深度マップデータを追跡することができる。例えば、スケール及び回転不変性に適用される変換は、深度マップが特徴部の方向に運動量だけ割送りされた場合、深度マップの局部特徴を認識する上で依然として有効な場合がある。
本明細書において説明すると細部及び特徴と組み合わせ可能な3‐DデータへのSIFT状又は他の特徴記述子に対する他の細部及び特徴は、セ・エス(Se S),ローヴェ(Lowe),デビッド・ジー(David G),リトル・ジェイ(Little J),「ビジョン‐ベースド・モビル・ロボット・ローカリゼーション・アンド・マッピング・ユージング・スケール‐フィーチャーズ(Vision-based mobile robot localization and mapping using scale-invariant features)」,プロシーディングス・オブ・ジ・インスティトュート・オブ・エレクトリカル・アンド・エレクトロニック・エンジニアズ・インターナショナル・カンファレンス・オン・ロボティックス・アンド・オートメーション(アイ・シー・アール・エー)(Proceedings of the IEEE International Conference on Robotics and Automation(ICRA)),2001年,p.2051又はエフ・ロサゲンジャー(F Rothganger),エス・レイズブニック(S Lasebnik),シー・シュミット(C Schmid)及びジェイ・ポンセ(J Ponce),「スリーディー・オブジェクト・モデリング・アンド・リカグニシャン・ユージング・ローカル・アフィン‐インヴァリアント・イメージ・ディスクリプターズ・アンド・マルチ‐ビュー・スペーシャル・カンストレインズ(3D Object Modeling and Recognition Using Local Affine-Invariant Image Descriptors and Multi-View Spatial constrains)」,インターナショナル・カンファレンス・オン・コンピュータ・ビジョン(ICCV),2004年、イルナ・ゴルドン(Iruna Gordon)及びデビッド・ジー(David G),ローヴェ(Lowe),「ワット・アンド・ホェア:スリーディー・オブジェクト・リカグニシャン・ウィズ・アキュレート・ポーズ(What and where:3D object recognition with accurate pose)」,トワード・カテゴリー‐レベル・オブジェクト・リカグニシャン(Toward Category-Level Object Recognition),シュプリンガー‐フェアラーク(Springer-Verlag),2006年,p67−82に見受けられ、これら非特許文献を参照により引用し、これらの記載内容全体を本明細書の一部とする。
落下を含む人の行為の認識における3‐DSIFTに適した技術に関する他の細部及び特徴は、イワン・ラプティブ(Ivan Laptev)及びトニー・リンデバーグ(Tony Lindeberg),「ローカル・ディスクリプターズ・フォー・スペイシオ‐テンポラル・リカグニシャン(Local descriptors for spatio-temporal recognition)」,ヨーロピアン・カンファレンス・オン・コンピュータ・ビジョン2004・ワークショップ・オン・スペーシャル・コヘーレンス・フォー・ヴィジュアル・モーション・アナリシス(ECCV’04 Workshop on Spatial Coherence for Visual Motion Analysis),シュプリンガー・レクチャー・ノーツ・イン・コンピュータ・サイエンス(Springer Lecture Notes in Computer Science),第3667号,2004年,p.91‐103、イワン・ラプティフ(Ivan Laptev),バルバラ・カプト(Barbara Caputo),クリスチャン・シュルト(Christian Schuldt)及びトニー・リンデバーグ(Tony Lindeberg),「ローカル・ヴェロシティー‐アダプティッド・モーション・イベンツ・フォー・スペーシオ‐テンポラル・リカグニシャン(Local velocity-adapted motion events for spatio-temporal recognition)」,コンピュータ・ビジョン・アンド・イメージ・アンダースタンディング108(Computer Vision and Image Understanding 108),p.207‐229,2007年、ポール・スコバーナ(Paul Scovanner),エス・アリ(S Ali),エム・シャー(M Shah),「ア・スリーディメンショナル・シフト・ディスクリプター・アンド・イッツ・アプリケーション・トュー・アクション・リカグニシャン(A 3-dimensional sift descriptor and its application to action recognition)」,プロシーディングス・オブ・ザ・フィフティーンス・インターナショナル・カンファレンス・オン・マルチメディア(Proceeding of the 15th International Conference on Multimedia),p.357‐360,2007年、ジェイ・ニーブルス(J Niebles),エイチ・ワン(H Wang),フェイフェイ・リー(Fei-Fei Li),「アンスーパーバイズド・ラーニング・オブ・ヒューマン・アクション・カテゴリーズ・ユージング・スペーシャル‐テンポラル・ワーズ(Unsupervised Learning of Human Action Categories Using Spatial-Temporal Words)」,プロシーディング・オブ・ザ・ブリティッシュ・マシーン・ビジョン・カンファレンス(ビー・エム・ブイ・シー)(Proceeding of the British Machine Vision Conference(BMVC)に見受けられ、これら非特許文献を参照により引用し、これらの記載内容全体を本明細書の一部とする。
コントローラ500は、深度不連続部からの穴を埋めて3‐Dモデルのメートル法スケールを固定するために物体12の表面の3‐Dマップを作成する際にイメージングセンサ450(例えば、深度マップセンサ)を使用するのが良い。深度マップセンサレンジデータで補強されたストラクチャ・フロム・モーション(structure-from-motion)を用いると、センサポーズを推定することができる。典型的なストラクチャ・フロム・モーションパイプラインは、視点不変性特徴部推定、カメラ内特徴部照合及びバンドル法を含むのが良い。
イメージングセンサ450を備えたカラー/ステレオカメラ(例えば、3‐Dスペックルカメラ1300及び/又はTOFカメラ1500)の特徴を組み合わせたソフトウェア手段としては、(1)センサポーズ推定、(2)深度マップ推定及び(3)3‐Dメッシュ推定が挙げられる。センサポーズ推定では、各イメージ捕捉のセンサパッケージの位置及び姿勢が求められる。深度マップ推定では、高解像度深度マップが各イメージについて得られる。3‐Dメッシュ推定では、センサポーズ推定及び深度マップを用いて関心のある物体を識別することができる。
幾つかの具体化例では、カラー又はステレオカメラ320(図9)及び3‐Dスペックルカメラ1300又は3‐D・TOFカメラ1500を同時に用いるのが良い。1メートル及び45°の視野452のスタンドオフ距離は、妥当な回路時間及びビュー相互間のオーバーラップを与えることができる。少なくとも2つのピクセルが50パーセント検出に必要である場合、少なくとも1メガピクセル解像度のカラーカメラを45°視野452を備えたレンズに用いるのが良く、60°又はこれよりも広い視野452については比例して大きな解像度が用いられる。
深度マップセンサが比較的低い解像度及びレンジ精度を有している場合があるが、深度マップは、カラー/ステレオイメージからのピクセルの集まりを正確な表面に確実に割り当てることができる。これにより、テキスチャがないことによるステレオ視誤差を減少させることができ、又、例えば5cm間隔までレンジを境界付けることにより、ばらつきサーチレンジ及びコンピュータ処理費用を減少させることができる。
再び図10Aを参照すると、第1及び第2の3‐Dイメージセンサ450a,450bを用いると、ロボットの環境のマッピングを向上させてロボットマップを作成することができる。というのは、第1の3‐Dイメージセンサ450aを用いると、近くの物体をマップすることができ、第2の3‐Dイメージセンサ450bを用いると遠くの物体をマップすることができるからである。
図17A及び図17Bを参照すると、幾つかの場合において、ロボット100は、シーン10及び/又は作業領域5内の物体12の占有マップ1700を受け取り又はロボットコントローラ500は、経時的にイメージングセンサ450(例えば、第2の3‐Dイメージセンサ450b)から受け取ったイメージデータ及び/又はイメージ深度データに基づいて占有マップ1700を生じさせる(そして、アップデートすることができる)。シーン10(例えば、ロボット100の周りの環境)内のロボット100の存在場所突き止めに加えて、ロボット100は、センサシステム400を用いて連結空間(例えば、作業領域5)内の他の箇所まで移動することができる。ロボット100は、ロボット100の周りの近くの領域をマップして比較的近くの物体12を見分ける短距離型のイメージングセンサ450a(例えば、図1及び図3に示されているように胴部140の下面に取り付けられる)及びロボット100の周りの比較的広い空間をマップして比較的遠くに位置する物体12を見分ける長距離型のイメージセンサ450(例えば、図1及び図3に示されているように頭部160に取り付けられる)を有するのが良い。ロボット100は、占有マップ1700を用いてシーン10内の既知の物体12並びに遮蔽部16(例えば、物体12が現在の見晴らしの利く位置から確認されるべき又は確認されるはずであり又は確認されるはずがなく確認することもできない場所)を識別することができる。ロボット100は、シーン10内の遮蔽部16又は新たな物体12を登録することができ、そして遮蔽部16内の新たな物体12又は何らかの物体12の存在場所を確認するために遮蔽部16又は新たな物体12を迂回しようとすることができる。さらに、ロボット100は、占有マップ1700を用いて、シーン10内の物体12の運動を突き止めてこれを追跡することができる。例えば、イメージングセンサ450,450a,450bは、シーン10内の物体12のマップされた位置を検出しない状態でシーン10の物体12の新たな位置12′を検出することができる。ロボット100は、古い物体12の位置を遮蔽部16として登録することができ、そして物体12の存在場所を確認するために遮蔽部16を迂回しようとすることができる。ロボット100は、新たなイメージ深度データを先のイメージ深度データ(例えば、マップ1700)と比較してシーン10内の物体12の存在場所の信頼水準を割り当てることができる。シーン10内の物体12の存在場所信頼水準は、しきい期間後にタイムアウトすることができる。センサシステム400は、センサシステム400の各イメージングサイクル後に各物体12の存在場所信頼水準を更新することができる。幾つかの実施例では、遮蔽検出期間(例えば、10秒未満)内の検出された新たな遮蔽部16(例えば、占有マップ1700からなくなった物体12)は、シーン10内の「生きている」物体12(例えば、移動中の物体12)を意味する場合がある。
幾つかの具体化例では、シーン10内の検出された第1の物体12aの後ろに位置する関心のある第2の物体12bを当初、シーン10内の遮蔽部16として検出できない場合がある。遮蔽部16は、イメージングセンサ450,450a,450bによっては容易には検出できない又は視認することができないシーン10内の領域であるといえる。図示の実施例では、ロボット100のセンサシステム400(例えば、又はその一部分、例えばイメージングセンサ450,450a,450b)は、シーン10を視認するために視認角θVこれは、0°から360°までの間の任意の角度であって良い)を持つ視野452を有する。幾つかの実施例では、イメージングセンサ450,450a,450bは、360°視認角θVのための全方向性光学素子を有し、他方、他の実施例では、イメージングセンサ450,450a,450bは、360°未満(例えば、約45°〜180°)の視認角θVを有する。視認角θVが360°未満である実施例では、イメージングセンサ450,450a,450b(又は、これらのコンポーネント)は、360°の視認角θVを達成するためにロボット本体110に対して回転することができる。イメージングセンサ450,450a,450bは、水平視認角θV-Hと同じ又はこれとは異なる垂直視認角θV-Vを有することができる。例えば、イメージングセンサ450,450a,450bは、少なくとも45°の水平視認角θV-H及び少なくとも40°の垂直視認角θV-Vを有することができる。幾つかの具体化例では、イメージングセンサ450,450a,450b又はこれらの部分は、ロボット本体110及び駆動システム200に対して動くことができる。さらに、第2の物体12bを検出するため、ロボット100は、シーン10の周りに1つ又は2つ以上の方向に駆動することにより(例えば、作業領域5上での並進及び/又は回転により)イメージングセンサ450,450a,450bを動かして第2の物体12bの検出を可能にする見晴らしの利く箇所を得ることができる。イメージングセンサ450,450a,450b又はこれらの部分のロボット運動又は独立運動は、単眼性の問題をも解決することができる。
信頼水準を作業領域5内の物体12の検出された存在場所又は追跡された動きに割り当てるのが良い。例えば、占有マップ1700の作成時又はアップデート時、コントローラ500は、マップ1700上の各物体12に関する信頼水準を割り当てるのが良い。信頼水準は、物体12がマップ1700上に指示されるように作業領域5内に実際に存在する可能性に正比例するのが良い。信頼水準は、多くの要因、例えば、物体12を検出するために用いられるセンサの数及び形式によって決定可能である。例えば、接触センサ430は、かかる接触センサ430がロボット100によって物体12との実際の接触を検出するので、最も高い信頼水準を提供することができる。イメージングセンサ450は、近接センサ430よりも高い場合のある異なる信頼水準を提供することができる。センサシステム400の2つ以上のセンサから受け取った情報を任意の単一のセンサに比較的高い信頼水準を提供するために集めることができ又は蓄積することができる。
オドメトリは、経時的な位置の変化(走行距離)を推定するためにアクチュエータの運動からのデータの使用法である。幾つかの実施例では、車輪の回転数、したがってロボット100の走行距離を測定するためにエンコーダが駆動システム200に取り付けられる。コントローラ500は、物体の存在場所に関する信頼水準を評価する際にオドメトリを用いるのが良い。幾つかの具体化例では、センサシステム400は、ロボット100の走行距離を検出するためにオドメータ及び/又は角速度センサ(例えば、ジャイロスコープ又はIMU470)を有する。ジャイロスコープは、角運動量の保存則に基づいて向きを計測し又は維持する装置である。コントローラ500は、オドメータ及び/又は角速度センサからそれぞれ受け取ったオドメトリ及び/又はジャイロ信号を用いて作業領域5内及び/又は占有マップ1700上のロボット100の存在場所を突き止めることができる。幾つかの実施例では、コントローラ500は、推測航法を用いる。推測航法は、先に求めた位置に基づいて現在の位置を推定し、そして経過時間にわたる既知の又は推定された速度及び道筋に基づいてその位置を前進させるプロセスである。作業領域5内のロボット存在場所を知る(例えば、オドメトリ、ジャイロスコープ等を介して)と共に作業領域5内の1つ又は2つ以上の物体12の検出された存在場所を知る(センサシステム400によって)ことによって、コントローラ500は、占有マップ1700上且つ作業領域5内の(これに対し、オドメトリ又はジャイロスコープを用いない)物体の存在場所又は運動の比較的高い信頼水準を評価することができる。
車輪運動に基づくオドメトリは、電気的に雑音がある場合がある。コントローラ500は、駆動システム200のオドメトリに基づいて車輪とは別個独立に視覚的オドメトリによりロボット運動をコンピュータ計算するためにロボット100の周りの環境又はシーン10のイメージデータをイメージングセンサ450から受け取ることができる。視覚的オドメトリでは、オプティカルフローを用いてイメージングセンサ450の運動を求める必要がある。コントローラ500は、車輪に基づくオドメトリの誤差を是正するためにイメージングセンサ450のイメージングデータに基づく計算された運動を用いるのが良く、かくして、マッピング及び運動制御を向上させることができる。視覚的オドメトリは、イメージングセンサ450が捕捉されたイメージ内の特徴を追跡することができない場合、低テキスチャ又は低光量シーン10の場合には制限がある場合がある。
本明細書において説明する細部及び特徴と組み合わせ可能なオドメトリ及びイメージングシステムに関する他の細部及び特徴は、米国特許第7,158、317号明細書(この米国特許明細書は、「デプスオブフィールド(depth-of-field)」イメージングシステムを記載している)及び米国特許第7,115,849号明細書(この米国特許明細書は、ウェーブフロントコーディング干渉コントラストイメージングシステムを記載している)に見受けられ、これら特許文献を参照により引用し、これらの記載内容全体を本明細書の一部とする。
ロボットがこれが働く建物にとって慣れていない場合、ロボットを自律的ナビゲーションのために動き回らせ又はロボットに建物のマップ(例えば、部屋又は廊下の配置場所)を提供する必要がある場合がある。例えば、病院では、ロボットは、各患者の部屋、看護ステーション等の場所を知る必要がある場合がある。幾つかの具体化例では、ロボット100は、例えば図18Aに示されているレイアウトマップ1810を受け取り、そしてロボット100を訓練してレイアウトマップ1810を学習させるのが良い。例えば、ロボット100を建物の中をぐるりと案内しながら、ロボット100は、レイアウトマップ1810上の場所に対応した特定の場所を記録するのが良い。ロボット100は、ウェブパッド310上にレイアウトマップ1810を表示することができ、ユーザがロボット100を特定の場所につれて行くと、ユーザは、その場所をレイアウトマップ1810上にタグ付けするのが良い(例えば、ウェブパッド310のタッチスクリーン又は他のポインティング装置を用いて)。ユーザは、部屋の名称又は部屋の番号のようにタグ付けされた場所のラベルをエンターするよう選択することができる。タグ付け時、レイアウトマップ1810にポイントを当てた状態で且つ例えば図18Bに示されているロボットマップ1820に対応のポイントを当てた状態でタグを記憶するのが良い。
センサシステム400を用いて、ロボット100は、これが動き回っているときにロボットマップ1820を作成することができる。例えば、センサシステム400は、ロボット100がどれほど遠くまで動いたか及び移動方向に関する情報を提供することができる。ロボットマップ1820は、レイアウトマップ1810に提供されている壁に加えて固定状態の障害物を含む場合がある。ロボット100は、ロボットマップ1820を用いて自律的ナビゲーションを実行することができる。ロボットマップ1820では、「壁」は、例えば対応の廊下の壁に沿って置かれた包装材の検出及び/又は種々の小部屋内の家具の検出に起因して完全に真っ直ぐには見えない場合がある。さらに、レイアウトマップ1810とロボットマップ1820との間に回転及び解像度の差が存在する場合がある。
マップ訓練後、ユーザがロボット100を所与の場所に送りたいと思った場合、ユーザは、ラベル/タグを参照することができ(例えば、ラベル又はタグをウェブパッド310上に表示された存在場所テキストボックス中に入力することができ)又はロボット100はレイアウトマップ1810をウェブパッド310上でユーザに表示することができ、そしてユーザは、レイアウトマップ1810上のその場所を選択することができる。ユーザがタグ付けされたレイアウトマップ場所を選択した場合、ロボット100は、レイアウトマップ1810上の選択された場所に対応するロボットマップ1820上の場所を容易に突き止めることができ、そして前進して選択された場所まで進むことができる。
レイアウトマップ1810上の選択された場所がタグ付けされた場所ではない場合、ロボット100は、ロボットマップ1820上の対応の場所を突き止める。幾つかの具体化例では、ロボット100は、既存のタグ付け場所を用いてスケール変更サイズ、オリジンマッピング及びロボットマップ1820との回転をコンピュータ計算し、次に、コンピュータ計算したパラメータを利用してロボットマップ場所を突き止める(例えば、アフィン変換又は座標を用いて)。
ロボットマップ1820は、レイアウトマップ1810と同一の向き及びスケールでなくても良い。さらに、レイアウトマップは、縮尺通りでなくても良く、マップ領域によって様々なディストーションを有していても良い。例えば、ホテル、オフィス及び病院で通常見られる火災時避難マップを走査することにより作られるレイアウトマップ1810は、通常、縮尺通りには作られておらず、マップの種々の領域に種々のスケールを有する場合がある。ロボットマップ1820は、それ自体のディストーションを有する場合がある。例えば、ロボットマップ1820上の場所は、距離の尺度として車輪の回転をカウントすることによってコンピュータ計算される場合があり、床が僅かに滑りやすく又は曲がり角で余分の車輪の回転を生じさせる場合、不正確な回転に関する計算により、ロボット100は、マップされた物体の不正確な場所を定める場合がある。
レイアウトマップ1810上の所与の箇所1814をロボットマップ1820上の対応の箇所1824にマップする方法は、既存のタグ付けされた箇所1812を用いてレイアウトマップ箇所を含む領域(例えば、しきい半径内で)レイアウトマップ1810とロボットマップ1820との局所ディストーションをコンピュータ計算するステップを含むのが良い。この方法は、ディストーション計算をレイアウトマップ箇所1814に適用するステップを更に含み、その目的は、対応のロボットマップ箇所1824を見出すことにある。逆の手順は、ロボットマップ1820上の所与の箇所で始まり、そして例えばロボットにその現在の場所を尋ねるためにレイアウトマップ1810上の対応の箇所を見出したいと思った場合に実施されるのが良い。
図18Cは、ロボット100を操作してレイアウトマップ1810及びロボットマップ1820を用いて環境をぐるりと進む操作又はステップの例示の流れ図1800を提供している。図18B及び図18Cを参照すると、操作は、ロボット100の環境に対応したレイアウトマップ1810を受け取るステップ(1802c)、ロボット100を環境内でレイアウトマップ1810上のレイアウトマップ場所1812まで動かすステップ(1804c)、環境に対応すると共にロボット100により作成されたロボットマップ1820上のロボットマップ場所1822を記録するステップ(1806c)、記録したロボットマップ場所1822及び対応のレイアウトマップ場所1812を用いてロボットマップ1820とレイアウトマップ1810との間のディストーションを求めるステップ(1808c)及び求めたディストーションを標的レイアウトマップ場所1814に適用して対応の標的ロボットマップ場所1824を求めるステップ(1810c)を有し、かくして、ロボットは、レイアウトマップ1810上の選択された場所1814まで進むことができる。幾つかの具体化例では、操作は、既存のタグ付け場所を用いてスケール変更サイズ、オリジンマッピング及びレイアウトマップとロボットマップとの間の回転を求めるステップ及び選択したレイアウトマップ場所1814に対応するロボットマップ場所を分析して求めるステップを含む。操作は、アフィン変換を求めたスケール変更サイズ、オリジンマッピング及び回転に適用してロボットマップ場所を分析により求めるステップを含むのが良い。
図19A〜図19Cを参照すると、幾つかの具体化例では、この方法は、タグ付けされたレイアウトマップ箇所1912(記録されたレイアウトマップ場所とも呼ばれる)を用いてタグ付けされたレイアウトマップ箇所1912を含む境界付け形状内の領域の三角形分割を行ってレイアウトマップ1810の全ての領域を頂点がタグ付けされたレイアウトマップ箇所1912のところに位置する少なくとも1つの三角形1910により覆われるようにするステップを含む。この方法は、選択したレイアウトマップ箇所1914を含む三角形1910を見出すステップ及びレイアウトマップ箇所1810でマップされた三角形1910とロボットマップ1820でマップされた対応の三角形1920(即ち、同一のタグ付けされた頂点を有するロボットマップ三角形)との間のスケール、回転、並進及びスキューを求めるステップを更に含む。この方法は、求めたスケール、回転、並進及びスキューを選択したレイアウトマップ箇所1914に適用して対応のロボットマップ箇所1924を見出すステップを含む。
図19Cは、標的ロボットマップ場所1924を求める操作又はステップの例示の流れ図1900を提供している。操作は、標的レイアウトマップ場所を境界付けるレイアウトマップ相互間の三角形分割を求めるステップ(1902)、レイアウトマップでマップされた三角形とロボットマップでマップされた対応の三角形との間のスケール、回転、並進及びスキューを求めるステップ(1904)及び対応のロボットマップ箇所を求めるために求めたスケール、回転、並進及びスキューを標的レイアウトマップ場所に適用するステップ(1906)を含む。
図20A及び図20Bを参照すると、別の実施例では、この方法は、選択したレイアウトマップ箇所1914までのレイアウトマップ1810内の全てのタグ付け箇所1912の距離を求めるステップ及びレイアウトマップタグ付け箇所1912の図心2012を求めるステップを有する。この方法は、ロボットマップ1820上の全てのタグ付け箇所1922の図心2022を求めるステップを更に有する。各タグ付けレイアウトマップ箇所1912に関し、この方法は、レイアウトマップ図心2012から選択したレイアウト箇所1914まで延びるベクトル2014をロボットマップ図心2022からロボットマップ箇所1924まで延びるベクトル2024に変換するのに必要な回転及び長さスケール変更を求めるステップを有する。このデータを用いて、この方法は、平均回転及びスケールを求めるステップを更に有する。各タグ付けレイアウトマップ箇所1912に関し、この方法は、図心変換、平均回転及び平均スケールを選択したレイアウトマップ箇所1914に適用することにより「理想ロボットマップ座標」箇所1924iを求めるステップを更に有する。さらに、各タグ付けレイアウトマップ箇所1912に関し、この方法は、そのレイアウトマップ箇所1912から選択したレイアウトマップ箇所1914までの距離を求めるステップ及びこれらの距離、即ち、最も短い距離から最も長い距離までによってタグ付けレイアウトマップ箇所1912を分類するステップを有する。この方法は、各タグ付けレイアウトマップ箇所1912と選択したレイアウトマップ箇所1914との間の距離の逆二乗を用いて各タグ付けレイアウトマップ箇所1912に関する「影響因子」を求めるステップを有する。次に、各タグ付けレイアウトマップ箇所1912に関し、この方法は、タグ付けレイアウトマップ箇所1912の影響因子を用いることによって比例配分された「理想ロボットマップ座標」箇所1924iとロボットマップ箇所1924との差であるベクトルを求めるステップを有する。この方法は、比例配分されたベクトルを合計するステップ及びかかるベクトルの合計を選択したレイアウトマップ箇所1914に関する「理想ロボットマップ座標」箇所1924iに追加するステップを有する。結果は、ロボットマップ1820上の対応のロボットマップ箇所1924である。幾つかの実施例では、この方法/アルゴリズムは、全てのタグ付けレイアウトマップ箇所1912ではなく、最も近いN個のタグ付けレイアウトマップ箇所1912だけを含む。
図20Cは、レイアウトマップ1810及びロボットマップ1820を用いて標的ロボットマップ場所1924を求めるための操作又はステップの例示の流れ図2000を提供している。操作は、全てのレイアウトマップ場所と標的レイアウトマップ場所との間の距離を求めるステップ(2002)、レイアウトマップ場所の図心を求めるステップ(2004)、全ての記録されたロボットマップ場所の図心を求めるステップ(2006)及び各レイアウトマップ場所に関し、回転及び長さスケール変更を求めてレイアウトマップ図心から標的レイアウト場所まで延びるベクトルをロボットマップ図心から標的ロボットマップ場所まで延びるベクトルに変換するステップ(2006)を含む。
図10A及び図21A〜図21Dを参照すると、幾つかの具体化例では、ロボット100(例えば、図22に示されている制御システム510)は、その局所知覚空間(例えば、センサ視野405)を3つのカテゴリ、即ち、障害物(黒色)2102、未知領域(灰色)2104及び既知自由領域(白色)2106に分類する。障害物2102は、地面Gの上方に位置すると共にロボット100の高さよりも低く観察された(検出された)箇所及び地面Gよりも低く観察された箇所(例えば、穴、ステップダウン等)である。既知自由領域2106は、3‐Dイメージセンサ450が地面Gを見ることができる領域に対応している。センサシステム400の全てのセンサからのデータを組み合わせてこれらを離散化3‐Dボクセル格子にするのが良い。次に、3‐D格子を分析してこれを3つの局所知覚空間分類により2‐D格子2100に変換するのが良い。図21Aは、静止状態にあるときのロボット100の局所知覚空間の例示の略図である。3‐Dボクセル格子中の情報は、持続性を有するが、これが補強されなければ経時的に崩れる。ロボット100が動いているとき、ロボットは、持続性のために進入する既知自由領域2106を有する。
制御システム500の物体検出物体回避(ODOA)ナビゲーション方式は、指令の結果として生じる潜在的なロボット位置を受け入れること又は拒否することかのいずれかを含む場合がある。潜在的ロボット経路2110を種々の指令により多くの深度レベルで発生させることができ、結果的に、各レベルのところでロボット位置が生じる。図21Bは、動いている間におけるロボット100の局所知覚空間の例示の略図である。ODOA挙動600b(図22)は、各予測ロボット経路2110を評価することができる。これら評価を行為選択エンジン580によって利用すると、好ましい結果及び対応のロボット指令を得ることができる。例えば、ロボット経路2110中の各ロボット位置2120に関し、ODOA挙動600bは、物体検出及び物体回避のための方法を実行することができ、かかる方法は、格子2100内に位置していて、ロボット100の対応の箇所の周りの境界付けボックス内に位置する各セルを識別するステップ、各セルの分類を受け取るステップ、障害物又は未知領域として分類された各セルに関し、このセルに対応する格子箇所を検索するステップ及びこの格子箇所がロボット100の存在場所の周りの衝突円内に位置するかどうかを判定することにより衝突チェックを実行するステップを有する。格子箇所が衝突円内に位置している場合、この方法は、格子箇所が衝突三角形内に位置しているかどうかの三角形試験を実行するステップを更に有する(例えば、ロボット100を三角形としてモデル化するのが良い)。格子箇所が衝突三角形内に位置している場合、この方法は、格子箇所を拒否するステップを有する。ロボット位置が対をなす格子箇所のセンサシステム視野の内側に位置している場合、「未知」格子箇所が無視される。というのは、ロボット100がこれら格子箇所に到達する時点までにこれが知られるということが前提とされるからである。
この方法は、障害物衝突がロボット経路2110中の連続したロボット位置2120相互間のロボット経路領域(例えば、三角形としてモデル化されている)内に存在しているかどうかを判定して或る1つのロボット位置2120から次のロボット位置までの移行中、ロボット衝突を阻止するステップを有するのが良い。
図21Cは、ロボット100の局所知覚空間及びセンサシステムの視野405の略図である(制御システム510は、ロボット経路決定のために或る特定のセンサ、例えば第1及び第2の3‐Dイメージセンサ450a,450bしか使用しないのが良い)。駆動システム200のホロノミック移動性を利用して、ロボット100は、公知の地面Gの持続性を利用し、それにより、ロボット100は、センサシステムの視野405が実際にカバーしない方向に進むことができる。例えば、ロボット100が、第1及び第2の3‐Dイメージセンサ450a,450bが前方に向いた状態で依然として座っている場合、ロボット100は、側方に進むことができるが、制御システム510は、提案された動きを拒否する。というのは、ロボット100は、図21Cの実施例に示されているようにその側部に何があるかを知らないからであり、図21Cは、ロボット100の側に未知の分類された領域を示している。ロボット100が、第1及び第2の3‐Dイメージセンサ450a,450bが前方に向いた状態で前方に進んでいる場合、ロボット100の次の地面Gは、既知自由領域2106として分類されるのが良い。というのは、第1の3‐Dイメージセンサ450aと第2の3‐Dイメージセンサ450bの両方は、ロボット100が前方に進んでいるときに地面Gを自由として見ることができ、分類の持続性は依然として崩されていないからである(これについては、例えば、図21Bを参照されたい)。かかる状況では、ロボット100は、側方に進むことができる。
図21Dを参照すると、幾つかの実施例では、ホロノミック移動性がある状態で多数の考えられる軌道が与えられている場合、ODOA挙動600bにより、ロボットは、ロボットが行こうとしている場所をロボットが見る(現在ではないが)軌道を選択することができる。例えば、ロボット100は、制御システム510が物体を検出することができるセンサの視野の向きを予想することができる。ロボットは、並進しながら回転することができるので、ロボットは、進みながらセンサ視野405を広げることができる。
センサシステム400の視野405を理解すると共にセンサシステムが異なる位置で見るものを理解することによって、ロボット100は、ロボットが行こうとしている場所をロボットが見るのを助ける運動軌道を選択することができる。例えば、曲がり角を曲がる際、ロボット100は、曲がり角の周りのきつく曲がる軌道を拒否することができる。というのは、図21Eに示されているように、ロボット100は、親ロボット位置2120のセンサシステム視野405ではなく、ロボットが現時点においては知られないロボット位置2120に最後は至ることができるからである。これとは異なり、ロボット100は、最初は所望の運動方向に向き、そして駆動システム200のホロノミック移動性を利用して図21Fに示されているように側方に動き、次に曲がり角を回って真っ直ぐに動く運動軌道を選択することができる。
図22を参照すると、幾つかの具体化例では、コントローラ500は、互いに通信状態にある制御調停システム510aと挙動システム510bを含む制御システム510を実行する。制御調停システム510aにより、アプリケーション520を制御システム510に動的に追加したりこれから削除したりすることができ、又、アプリケーション520が各々任意他のアプリケーション520について知る必要なくロボット100を制御することができるようにするのが容易になる。換言すると、制御調停システム510aは、ロボット100のアプリケーション520とリソース530との間の単純な優先化制御機構体を提供する。リソース530は、コントローラ500と通信状態にある駆動システム200、センサシステム400及び/又は任意のペイロード又は制御可能な装置を有するのが良い。アプリケーション520は、ロボット100のメモリ内に記憶されるのが良く又はロボット100と通信関係をなすのが良く、それにより同時に動作し(例えば、プロセッサ)、それと同時にロボット100を制御する。アプリケーション520は、挙動システム510bの挙動600にアクセスすることができる。独立して配備されるアプリケーション520を実行時に動的に組み合わせてロボット100のロボットリソース530(例えば、駆動システム200、腕、頭部等)を共有することができる。アプリケーション520の中で実行時にロボットリソース530を動的に共有する低レベルポリシーが実施される。ポリシーは、どのアプリケーション520がそのアプリケーション520(例えば、アプリケーション520のうちで優先度階層)の必要とするロボットリソース530の制御を行うかを決定する。アプリケーション520は、動的に開始したり停止したりすることができ、そして互いに完全に別個独立に実行される。また、制御システム510により、互いに組み合わせることができる複雑な挙動600は、互いに支援することができる。
制御調停システム510aは、1つ又は2つ以上のリソースコントローラ540、ロボットマネージャ550及び1つ又は2つ以上の制御アービタ560を有する。これらコンポーネントは、共通のプロセス又はコンピュータにある必要はなく、しかも、任意特定の順序で開始される必要もない。リソースコントローラ540のコンポーネントは、アプリケーション520のための制御調停システム510aのインターフェースをなす。あらゆるアプリケーション520についてこのコンポーネントのインスタンスが存在する。リソースコントローラ540は、認証、分散型リソース制御アービタ、コマンドバッファリング等の複雑さを抜粋すると共に要約する。ロボットマネージャ550は、どのアプリケーション520が任意特定の時点でロボットリソース530のうちの任意のものの排他的制御を行うかを制御することによってアプリケーション520の優先化を強調させる。これは、上方の中央コーディネータなので、ロボット部分毎にロボットマネージャ550のインスタンスが1つだけ存在する。ロボットマネージャ550は、リソースコントローラ540の線形優先化順序を有する優先度ポリシーを実行し、ハードウェア制御を可能にするリソース制御アービタ560を常時監視する。制御アービタ560は、全てのアプリケーション520から指令を受け取り、そしてアプリケーションの優先度に基づいて単一の指令を出し、そしてこれをその関連のリソース530のために公示する。制御アービタ560は又、その関連のリソース530から状態フィードバックを受け取り、そしてこれをアプリケーション520に送り戻す。ロボットリソース530は、1つ又は2つ以上のハードウェアコントローラを備えた機能モジュール(例えば、アクチュエータ、駆動システム及びこれらの群)のネットワークであるのが良い。制御アービタ560の指令は、特定の行為を実行する上でリソース530にとって特有である。
コントローラ500上で実行可能なダイナミックスモデル570が現在のロボットの状態を評価するためにロボット100の種々の部分の重心(CG)、慣性モーメント及び慣性の外積をコンピュータ計算するよう構成されているのが良い。ダイナミックスモデル570は又、これらコンポーネントの形状、重量及び/又は慣性モーメントをモデル化することができる。幾つかの実施例では、ダイナミックスモデル570は、ロボット100に設けられていて、ロボット100の種々の重心を計算するためにコントローラ500と通信状態にある慣性モーメントユニット470(IMU)又はその部分(例えば、加速度計及び/又はジャイロ)と通信する。ダイナミックスモデル570を他のプログラム520又は挙動600と一緒にコントローラ500によって使用することができ、それによりロボット100及びそのコンポーネントの作動エンベロープを求めることができる。
各アプリケーション520は、行為選択エンジン580及びリソースコントローラ540を有し、1つ又は2つ以上の挙動600が、行為選択エンジン580に接続され、1つ又は2つ以上の行為モデル590が行為選択エンジン580に接続されている。挙動システム510bは、予測モデル化を提供し、かかる挙動システムにより、挙動600は、ロボット行為の考えられる結果を評価することによってロボットの行為に関して協調的に決定することができる。幾つかの実施例では、挙動600は、アプリオリ(事前)限度及び情報を備えた多数の源から感覚フィードバックをロボットの許容可能な行為に対する評価フィードバックに結合する階層的ステート・フル(state-full)評価機能を提供するプラグインコンポーネントである。挙動600は、アプリケーション520にプラグ接続可能なので(例えば、アプリケーション520の内側又は外側に存在する)、アプリケーション520又は制御システム510の任意他の部分を改変することなく挙動600を取り外したり付け加えたりすることができる。各挙動600は、スタンドアロンポリシーである。挙動600を強力にするためには、多数の挙動600の出力を一緒に別の挙動の入力に取り付けて複雑な組み合わせ機能を有することができるようにすることが可能である。挙動600は、ロボット100の全管轄の管理可能な部分を実行するようになっている。
行為選択エンジン580は、制御システム510の協調要素であり、挙動600の全ての入力が与えられると、最適行為を探して迅速な最適化された行為選択サイクル(予測/修正サイクル)を実施する。行為選択エンジン580は、3つの段階、即ち、ノミネーション、行為選択サーチ及び完了を有する。ノミネーション段階では、各挙動600が通知され、行為選択サイクルが開始し、これにサイクル開始時間、現在の状態及びロボットアクチュエータ空間の制限が与えられる。内部ポリシー又は外部入力に基づいて、各挙動600は、この行為選択サイクルに参加したいかどうかを決定する。この段階中、アクティブな挙動原形のリストが生じ、これら入力は、ロボット100上で実行されるべき指令の選択に影響を及ぼすであろう。
行為選択サーチ段階では、行為選択エンジン580は、行為空間とも呼ばれる利用可能な行為の空間から実行可能な結果を発生させる。行為選択エンジン580は、行為モデル590を用いて、将来における計画対象時間により互いに異なる時間ステップで各指令の行為をシミュレートした結果としてひとまとまりの実行可能な指令(限度内)及び対応の結果を提供する。行為選択エンジン580は、挙動600の結果評価に基づいて好ましい結果を計算し、対応の指令を制御調停システム510aに送り、フィードバックとして選択された指令の行為モデル590を知らせる。
完了段階では、協調的な最善の得点が付けられた結果に対応する指令を全体的指令として互いに組み合わせ、かかる全体的な指令がロボットリソース530上で実行可能にリソースコントローラ540に提供される。最善の結果は、フィードバックとしてアクティブな挙動600に提供され、将来の評価サイクルで用いられる。
センサシステム400からの受け取りセンサ信号により、1つ又は2つ以上の挙動600との相互作用が行為を実行することができる。例えば、制御システム510を用いて、コントローラ500は、対応の行為空間(例えば、その特定のコンポーネントのためのひとまとまりの考えられる行為又は動き)から各ロボットコンポーネント(例えば、モータ又はアクチュエータのための行為又は動き指令)を選択し、それにより各ロボットコンポーネント自体との衝突及びロボット100が知っているロボット100の周りの物体との衝突を回避する効率的な仕方で各ロボットコンポーネントの協調された動きを行わせる。コントローラ500は、ロボットネットワーク、例えばEtherIOネットワークにより協調された指令を出すことができる。
制御システム510は、ロボット100が所与の領域の回りを動いているときに互いに異なる形態/位置におけるロボット100の安定性を最大にするために駆動システム200の適応速度/加速度を提供することができる。
幾つかの具体化例では、コントローラ500は、指令を駆動システム200に出し、この駆動システムは、方位設定値及び速度設定値に従ってロボット100を推進する。1つ又は複数の挙動600は、センサシステム400から受け取った信号を用いて実行可能な指令の予想される結果を評価し、これら指令のうちの1つは、障害物を取り扱うために実行可能に(単独で又は全体的ロボット指令として他の指令と組み合わせて)選ばれるのが良い。例えば、近接センサ410からの信号により、制御システム510は、ロボット100の指令された速度又は方位を変化させることができる。例えば、近くの壁の存在に起因した近接センサ410からの信号の結果として、制御システム510は、原則指令を出すことができる。別の場合、椅子との遭遇に起因した接触センサからの衝突信号により、制御システム510は、方位を変える指令を出すことができる。他の場合、ロボット100の速度設定値を接触センサに応答して減少させることができず、しかも/或いはロボット100の方位設定値を近接センサ410に応答して変えることができない。
挙動システム510bは、占有マップ1700及び/又はロボットマップ1820を生じさせるマッピング挙動600a、ロボット100の速度設定値を調節するよう構成された速度挙動600c(例えば、プロセッサ上で実行可能な挙動ルーチン)及びロボット100の方位設定値を変更するよう構成された方位挙動600dを有するのが良い。速度及び方位挙動600c,600dは、同時に実行したり別個独立に実行したりするよう構成可能である。例えば、速度挙動600cは、センサのうちの1つ(例えば、近接センサ410,420の組)をポーリングするよう構成されているのが良く、方位挙動600dは、別のセンサ(例えば、運動学的バンプセンサ)をポーリングするよう構成されているのが良い。
図23Aを参照すると、幾つかの具体化例では、挙動システム510bは、人追従挙動600eを含む。この挙動600eを実行している間、ロボット100は、人2300を検出し、追跡し及び、そしてその後を追従することができる。ロボット100は、頸部150を用いて頭部160をパンすると共に傾動させることができるので、ロボット100は、第2の3‐Dイメージセンサ450bを方向付けて対応の視野452を人2300に当てた状態に維持することができる。さらに、頭部160は、基部120よりも比較的迅速に動くことができるので(例えば、駆動システム200を用いて)、頭部160(及び関連の第2の3‐Dイメージセンサ450b)は、ロボット100を定位置で回転させる場合よりも迅速に人2300を追跡することができる。ロボット100は、人2300をしきい距離DR(例えば、センサ視野に対応している)内に保つよう人2300に向かって進むことができる。幾つかの実施例では、ロボット100は、人2300を追跡しながら人/ユーザ2300に向かって前方に向くよう回る。ロボット100は、人2300の後を追従するよう速度指令及び/又はウェイポイント指令を用いるのが良い。
図23Bを参照すると、人に追従する素朴な具体化の結果として、人2300が第2の3‐Dイメージセンサ450bの視野452をいったん出ると、ロボットは、人2300の存在場所を見失う。この一実施例は、人が曲がり角をぐるりと曲がって進んだときである。この問題をうまく避けるには、ロボット100は、人2300の最後の既知の存在場所及びその軌道の知識を保持する。この知識を用いて、ロボット100は、ウェイポイント(又は1組のウェイポイント)を利用して人2300に向かって曲がり角に沿う場所に進むことができる。さらに、ロボット100が曲がり角を曲がって動いている人2300を検出すると、ロボット100は、進む(ホロノミック的に)と共に/或いは第2の3‐Dイメージセンサ450bを動かして(例えば、頭部160をパンすると共に/傾動させることによって)、それにより人2300の視認を再び得るように第2の3‐Dイメージセンサ450bの視野452を向けることができる。
図23B及び図24Aを参照すると、第2の3‐Dイメージセンサ450bから受け取ったイメージデータを用いて、制御システム510は、人2300を識別することができ(例えば、パターン認識又はイメージ認識により)それにより人2300の追従を続けることができる。第1の人2300が例えば曲がり角を曲がったときにロボット100が別の人2302に遭遇した場合、ロボット100は、その第2の人2302が第1の人2300ではないことを識別することができ、そして第1の人2300への追従を続ける。幾つかの具体化例では、第2の3‐Dイメージセンサ450bは、3‐Dイメージデータ2402(例えば、2‐Dアレイのピクセル、各ピクセルは、深度情報(例えば、カメラまでの距離を含む)を物体又はブロブ2406にセグメント化するためのセグメンタ(segmentor)2404に提供する。例えば、ピクセルは、隣りのピクセルへのこれらの近接性に基づいて大きな物体にグループ分けされる。これら物体(又はブロブ)の各々は、次に、サイズフィルタ2408によって受け取られ、更に分析される。サイズフィルタ2408は、あまりに小さくて(例えば、高さ約3フィート未満)又はあまりにも大きすぎて人ではない(例えば、高さ約8フィートを超える)物体を拒否することによって物体又はブロブ2406を処理して例えば正しいサイズの物体又はブロブ2410にする。形状フィルタ2412が正しいサイズの物体又はブロブ2410を受け取り、特定の形状を満たさない物体をなくす。形状フィルタ2412は、頭部の中点がカメラ450bの視覚及び物体までの既知の距離を用いることが予想される場所の予想幅を見ることができる。形状フィルタ2412のプロセスは、正しいサイズの物体又はブロブ2410を人データ2414(例えば、イメージ又はこれを表すデータ)に変換する。
幾つかの実施例では、ロボット100は、検出した各人2300,2302のための独特な識別子を維持することによって多数の人2300,2302を検出してこれらを追跡することができる。人追従挙動600eは、各人の軌道を個々に反映させ、それにより、ロボット100は、他の人又は物体によって一次的な遮蔽が生じた場合であってもロボット100が追跡すべき人の知識を維持することができる。図24Bを参照すると、幾つかの具体化例では、多標的トラッカ2420(例えば、コンピュータ計算プロセッサ、例えばコントローラ500上で実行可能なルーチン)が、形状フィルタ2412から人データ2414(例えば、イメージ又はこれを表すデータ)、ジャイロデータ2416(例えば、IMU470から)及びオドメトリデータ2418(例えば、駆動システム200からを受け取り、人存在場所/速度データ2422を提供し、かかるデータは、人追従挙動600eによって受け取られる。幾つかの具体化例では、多標的トラッカ2420は、カルマンフィルタを用いて各人の運動挙動を追跡すると共に反映させ、それにより、ロボット100は、ユーザが見える時点、例えば、人が曲がり角をぐるりと動いているとき又は別の人がその人に対する直接的な視認を一次的に遮断したときを越えて追跡を行うことができる。
図24Cを参照すると、幾つかの実施例では、人追従挙動600eは、進んでいる間のロボット100と人2300との間の追従距離DRを維持することによって人追従を実施する。人追従挙動600eは、2つのサブコンポーネント、即ち、駆動コンポーネント2430及びパン‐傾動コンポーネント2440に分割されるのが良い。駆動コンポーネント2430(例えば、計算プロセッサ上で実行可能な追従距離ルーチン)は、人データ2414、人速度データ2422及びウェイポイントデータ2424を受け取って追従距離DR(これは、レンジであるのが良い)を求める(例えば、コンピュータ計算する)ことができる。駆動コンポーネント2430は、ロボット100が人2300までの距離に応じてその目的をどのように達成しようとするかを制御する。ロボット100がしきい距離内にある場合、直接速度指令を用い、それにより、ロボット100は、人2300に向くよう回ることができ又は人2300が近すぎるところに居る場合には人2300から後退して離れることができる。人2300が所望の距離よりも遠くに存在する場合、ウェイポイント指令を用いるのが良い。
パン‐傾動コンポーネント2440により、頸部150は、パンすると共に/或いは傾動して第2の3‐Dイメージセンサ450bの視野452を人2300に当てた状態に維持する。パン/傾動ルーチン2440(例えば、計算プロセッサ上で実行可能である)が人データ2414、ジャイロデータ2416及び運動学的データ2426(例えば、制御システム510のダイナミックスモデル570から)を受け取って、第2の3‐Dイメージセンサ450bがその視野452を人2300に当てた状態に維持するよう差し向けるパン角度2442及びチルト角度2444を定めることができる。頭部160のパン‐傾動に対する基部120の運動に遅延が生じると共に人追従挙動600eに到達するセンサ情報にも遅延が生じる場合がある。これは、ジャイロ及びオドメトリ情報2416,2426に基づいて補償でき、その結果、ロボットがいったん回っていると、パン角度θRがそれほどオーバーシュートしないようになる。
図25Aを参照すると、幾つかの実施例では、人追従挙動600eにより、ロボット100は、障害物2502を避けて進んで人2300への追従を続ける。ロボット100がウェイポイントを用いて人2300に追従することができるので、人が障害物を越えて進んでロボットが横切ることができない場合であっても、ODOA(障害物検出/障害物回避)挙動600bを用いて障害物を避ける経路を求めることが可能である。ODOA挙動600b(図22)は、予想ロボット経路を評価することができる(例えば、検出した物体との衝突を起こさない予想ロボット経路の確実な評価を行うことができる)。これら評価は、行為選択エンジン580によって使用でき、それにより好ましい結果及び対応のロボット指令(例えば、駆動指令)を定めることができる。
図25B及び図25Cを参照すると、幾つかの具体化例では、制御システム510は、ロボット100の近くの領域における障害物2502の局所マップ2500を作成する。素朴な又は単純なシステムでは、ロボット100は、実際の障害物2502と追従すべき人2300との差を言うことができない場合がある。これにより、通常、ロボット100は、人2300の方向に移動するのが阻止される。というのは、人2300は、その方向における障害物2502であるように見えるからである。人追従アルゴリズムは、追従している人2300の存在場所をODOA挙動600bに連続的に報告することができる。したがって、次に、ODOA挙動600bは、局所マップ2500をアップデートして先に人2300に対応していた障害物2502を削除し、オプションとして、人2300の存在場所を提供することができる。
図26A〜図26Dを参照すると、幾つかの具体化例では、人追従挙動600eは、行為選択エンジン580により生じる実行可能な指令の結果を評価して2つの目的、即ち、1)ロボット100が図26Aに示されているように人2300に向いた状態に保つ目的(例えば、前方駆動方向Fを人2300の方に維持すると共に/或いは頭部160をパンすると共に/或いは傾動させて人2300に向くようにする目的)及び2)図26Bに示されているロボット100と人2300との間の追従距離DR(例えば、約2〜3メートル)を維持する目的を達成する。ロボット100が人2300の追従距離DRの範囲内に位置している場合、人追従挙動600eにより、制御システム510は、図26Cに示されているように速度指令(x,y,θz)を出して上述の目的を達成することができる。人2300がロボット100に近すぎるほど接近した場合、ロボット100は、オプションとして、後退して人2300から離れ、それにより安全距離、例えば追従距離DR(及びユーザをセンサレンジ内に保つ距離(例えば、0.5m以上))を維持することができる。ロボット100は、人2300が極めて近くに来た場合にこれに対応するよう第2の3‐Dイメージセンサ450bを傾動させるのが良い。というのは、人の体がレンジ内に入っていない場合でもあっても人の頭が依然としてレンジ内に入っている場合があるからである。ロボット100が追従距離DRの外に移動すると、ロボット100は、ウェイポイント指令を用いて追従距離DRを再び得ることができる。ウェイポイント指令を用いることにより、ロボット100は、ロボット100の最適経路を定めることができ、かくして、ODOA挙動600bは、近くの障害物から適当な距離を維持することができる。
図1〜図3及び図27を参照すると、幾つかの具体化例では、頭部160は、インターフェースモジュール300の1つ又は2つ以上の部分を支持する。頭部160は、ウェブパッド又はタブレットPCとも呼ばれる1つ又は2つ以上のコンピューティングタブレット310を解除可能に受け入れるドック302を有するのが良く、これらコンピューティングタブレットは各々、タッチスクリーン312を有するのが良い。ウェブパッド310を前方、後方又は上方に差し向けることができる。幾つかの具体化例では、ウェブパッド310は、タッチスクリーン、オプションとしてのI/O(例えば、ボタン及び/又はコネクタ、例えばマイクロUSB等)、プロセッサ及びプロセッサと通信状態にあるメモリを有する。例示のウェブパッド310としては、アップル・インコーポレイテッド(Apple Inc.) 製のアップルiPadが挙げられる。幾つかの実施例では、ウェブパッド310は、コントローラ500として機能し又はコントローラ500を支援すると共にロボット100を制御する。幾つかの実施例では、ドック302は、これにしっかりと取り付けられた第1のコンピューティングタブレット310a(例えば、比較的高い帯域幅、例えばギガビット速度でのデータ伝送のためのワイヤードインターフェース)及びドックに取り外し可能に接続された第2のコンピューティングタブレット310bを有する。第2のウェブパッド310bを図27に示されているように第1のウェブパッド310aに装着することができ又は第2のウェブパッド310bを第1のウェブパッド310aに対して頭部160の反対側に向いた側部又は他方の側部に装着することができる。追加の実施例では、頭部160は、これに固定的に取り付けられるか着脱自在に取り付けられるかのいずであっても良い単一のウェブパッド310を支持する。タッチスクリーン312は、ユーザ入力を受け取ると共にタッチ対話式であるグラフィカルユーザインターフェースを提供するためにユーザがタッチスクリーンにタッチする箇所を検出し、モニタすると共に/或いは再現することができる。幾つかの実施例では、ウェブパッド310をロボット100から取り外したときにユーザがこれを見出すことができるようにするタッチスクリーンコーラ(caller)を有する。
幾つかの具体化例では、ロボット100は、ロボット本体110の1つ又は2つ以上の部分に取り付けられた多数のウェブパッドドック302を有する。図27に示されている実施例では、ロボット100は、オプションとして脚部130及び/又は胴部140に取り付けられたウェブパッドドック302を有する。これにより、ユーザは、例えばウェブパッド310を種々の高さでロボット100にドッキングさせて異なる背丈のユーザに対応すると共に異なる見晴らしの利く箇所でウェブパッド310のカメラを用いて映像を捕捉すると共に/或いは多数のウェブパッド310をロボット100に装着することができる。
インターフェースモジュール300は、頭部160に取り付けられたカメラ320を有するのが良く(例えば、図2を参照されたい)、このカメラを用いると、頭部160の高い見晴らしの利く箇所から映像を捕捉することができる(例えば、テレビ会議のために)。図3に示されている実施例では、カメラ320は、頸部150に取り付けられている。幾つかの実施例では、カメラ320がウェブパッド310,310aを頭部160から取り外し又はドッキング解除したときにのみ作動される。ウェブパッド310,310aをドック302内で頭部160に取り付け又はドッキングさせたとき(そして、オプションとしてカメラ320を覆ったとき)、ロボット100は、映像を捕捉するためにウェブパッド310aのカメラを用いることができる。かかる場合、カメラ320は、ドッキングさせたウェブパッド310の背後に配置されるのが良く、かかるカメラ320は、ウェブパッド310を頭部160から取り外し又はドッキング解除したときに作動状態にあり、ウェブパッド310を頭部160に取り付け又はドッキングさせたときには不作動状態になる。
ロボット100は、インターフェースモジュール300を介して(例えば、ウェブパッド310、カメラ320、マイクロホン330及び/又はスピーカ340を用いて)テレビ会議(例えば、24fpsのところで)提供することができる。テレビ会議は、多パーティであるのが良い。ロボット100は、頭部160をこれがユーザに向くよう操縦することによってテレビ会議の両方のパーティ相互間のアイコンタクトを提供することができる。さらに、ロボット100は、5°未満の凝視角度(例えば、頭部160の前方フェースに垂直な軸線から遠ざかる角度)を有するのが良い。ロボット100に取り付けられている少なくとも1つの3‐Dイメージセンサ450及び/又はカメラ320は、ボディランゲージを含む実物大のイメージを捕捉することができる。コントローラ500は、音声と映像を同期させることができる(例えば、50ミリ秒未満の差で)。図28A〜図28Eに示されている実施例では、ロボット100は、頭部160に取り付けられているウェブパッド310及び/カメラ320の高さを調節する(胴部140を昇降させることにより)と共に/或いは頭部160をパンすると共に/或いは傾動させることによって立っている又は座っている人々にテレビ会議を提供することができる。カメラ320は、ウェブパッド310とは別個に少なくとも1つの自由度の範囲内で動くことができる。幾つかの実施例では、カメラ320は、地面から3フィートを超える距離のところであるがウェブパッド310の表示領域の頂縁からウェブパッド高さの10パーセント以下のところに位置決めされた対物レンズを有する。さらに、ロボット100は、カメラ320をズームしてロボット100の周りの拡大ピクチャ又は映像を得ることができる。頭部160は、テレビ会議を表示しているウェブパッド310の近くで音声を頭部160から出すよう1つ又は2つ以上のスピーカ340を有するのが良い。
幾つかの実施例では、ロボット100は、図28Eに示されているようにユーザ入力をウェブパッド310に受け入れることができる(例えば、タッチスクリーンを介して)。幾つかの具体化例では、ウェブパッド310は、ディスプレイ又はモニタであり、他の具体化例では、ウェブパッド310は、タブレット形コンピュータである。ウェブパッド310は、高い対話性を提供する容易且つ直感的に使える制御装置、例えばタッチスクリーンを有するのが良い。ウェブパッド310は、少なくとも1つの自由度で動くことができる150平方インチ(967.7cm2)以上の表示面積を備えたモニタディスプレイ312(例えば、タッチスクリーン)を有するのが良い。
ロボット100は、幾つかの実施例では、医師及び患者及び/又は他の医師又は看護師相互間のテレビ会議を提供することによってEMRインテグレーションを提供することができる。ロボット100は、パススルーコンサルテーション(対診)命令を含むのが良い。例えば、ロボット100は、聴き取りをテレビ会議ユーザ(例えば、医師)に伝えるよう構成されたステソスコープ(聴診器)を有するのが良い。他の実施例では、ロボットは、クラスII医療器具、例えば電子ステソスコープ、オトスコープ(耳鏡)及び超音波への直接的な接続を可能にして医療データを遠隔ユーザ(主治医)に送るコネクタを有する。
図28Bに示されている実施例では、ユーザは、ロボット100の遠隔操作、テレビ会議(例えば、ウェブパッド310のカメラ及びマイクロホンを用いて)及び/又はウェブパッド310上におけるソフトウェアアプリケーションの利用のためにウェブパッド310を頭部160に取り付けられているウェブパッドドック302から取り外すことができる。ロボット100は、ウェブパッド310がウェブパッドドック302から取り外されている間、テレビ会議、ナビゲーション等のために種々の見晴らしの利く箇所を得るために頭部160に取り付けられた第1及び第2のカメラ320a,320bを有するのが良い。
コンピュータ500上で実行可能であると共に/或いはコントローラ500と通信状態にある対話型用途では、ロボット100に2つ以上のディスプレイを設ける必要がある場合がある。ロボット100と関連した多数のウェブパッド310は、「フェースタイム(FaceTime)」、テレストレーション(Telestration)、HDルックアットジス‐カム(HD look at this-cam)(例えば、内蔵カメラを有するウェブパッド310の場合)の種々の組み合わせを提供することができ、ロボット100を遠隔制御するための遠隔オペレータ制御ユニット(OCU)として働くことができると共に/或いは局所ユーザインターフェースパッドを提供することができる。
幾つかの具体化例では、ロボット100は、ウェブパッド310とコントローラ500(及び/又はロボット100の他のコンポーネント)との通信を可能にするブリッジとも呼ばれている媒介セキュリティ装置350(図27)を有する。例えば、ブリッジ350は、ウェブパッド310の通信をウェブパッド通信プロトコルからロボット通信プロトコル(例えば、ギガビット容量を有するEthernet)に変換することができる。ブリッジ350は、ウェブパッド310が不正でないものと認証することができ、そしてウェブパッド310とコントローラ500との通信変換を可能にする。幾つかの実施例では、ブリッジ350は、ウェブパッド310とロボット100との間の通信トラフィックを認可/確認する認可チップを有する。ブリッジ350は、ブリッジがロボット100と通信しようとするウェブパッド310をチェックして認可した時期をコントローラ500に知らせることができる。さらに、認可後、ブリッジ350は、通信認可をウェブパッド310に知らせる。ブリッジ350は、頸部150又は頭部(又は図2及び図3に示されているように)又はロボット100のどこか他の場所に取り付け可能である。
セッション開始プロトコル(SIP)は、インターネットプロトコル(IP)によりマルチメディア通信セッション、例えば音声及び映像コールを制御するために広く用いられているIETF規定シグナリングプロトコルである。このプロトコルは、1つ又は数個のメディアストリームを含む2パーティ(ユニキャスト)又は多パーティ(マルチキャスト)セッションを創成したり修正したり終了させたりするために使用できる。修正は、アドレス又はポートの変更、多くの参加者の招待及びメディアストリームの追加又は削除を含む場合がある。他の実行可能な用途の例としては、テレビ会議、ストリーミングマルチメディア配信、インスタントメッセージング、プレゼンスインフォメーション、ファイル伝送等が挙げられる。インターネットプロトコルによる音声(IPによる音声、即ち、VoIP)は、インターネットプロトコル(IP)ネットワーク、例えばインターネットにより音声通信及びマルチメディアセッションの配信のための方法論、コミュニケーションプロトコル及び送信技術の系統の一部である。しばしば見受けられると共にVoIPと同義的に用いられる場合の多い他の用語は、IP電話技術、インターネット電話、ブロードバンドによる音声(VoBB)、ブロードバンド電話技術及びブロードバンド電話である。
図29は、ロボット100を介して通信を開始すると共に行うためにブリッジ350との対話を含む例示としての電話技術を提供している。電話AのSIPは、SIPアプリケーションサーバに電話をかける。SIPは、VoIPのダイヤル機能を起動し、それにより、HTTPポストリクエストがVoIPウェブサーバに送られる。HTTPポストリクエストは、折り返し(コールバック機能)電話機能のように挙動するのが良い。SIPアプリケーションサーバは、呼び出しを電話Aに送り、通話が開始したことを指示する。VoIPサーバは、PSTNを介してHTTPポストリクエストに含まれているコールバック電話番号への呼び出しを開始する。コールバック電話番号は、SIP DIDプロバイダで終わり、SIP DIDプロバイダは、SIPアプリケーションサーバへのコールバックを送るよう構成されている。SIPアプリケーションサーバは、来た電話と電話Aの元の電話を照合し、両方の電話をオーケー応答で返答する。メディアセッションは、電話AとSIP DIDプロバイダとの間に成り立っている。電話Aは、VoIPにより生じた人工的な呼び出しを聞くことができる。VoIPによりコールバックレッグに応答したことがいったん確認されると、VoIPは、送信宛先、例えばロボット100へのブリッジ350を介する)PSTNのコールを開始する。ロボット100は、コールに応答し、VoIPサーバは、SIP DIDプロバイダからのメディアをロボット100からのメディアにブリッジする。
再び図6を参照すると、インターフェースモジュール300は、音声入力を受け取るマイクロホン330(例えば、又はマクロホンアレイ)及びロボット本体110に取り付けられていて、音声出力を送る1つ又は2つ以上のスピーカ340を有するのが良い。マイクロホン330及びスピーカ340は、各々、コントローラ500と通信することができる。幾つかの実施例では、インターフェースモジュール300は、パンフレット、非常時情報、家庭用品及び他のアイテムを保持するよう構成されているのが良いバスケット360を有する。
移動式ロボットは、一般に、ロボットの周囲を安全に進むよう障害物及び危険を検知する必要がある。これは、特にロボットが今まで自律的に走行している場合であっても重要であり、但し、人により作動されるロボットも又、かかる検出が必要であり、その理由は、オペレータがロボットの周囲の細部を常時知っているわけでもなく、これらに常時注意できているわけでもないからである。接触検出(例えば、スイッチに当たってこれを閉成するバンパ)を一種のフェールセーフ機構体として用いることができるが、距離を置いたところから物体を検出するセンサは、通常、性能を向上させることが必要になる。かかるセンサとしては、レーザレンジファインダ、赤外線距離センサ、ビデオカメラ及びデプスカメラ(depth camera)が挙げられる。
図3〜図4C及び図6を参照すると、幾つかの具体例では、ロボット100は、多数のアンテナを有する。図示の実施例では、ロボット100は、第1のアンテナ490a及び第2のアンテナ490bを有し、これら両方のアンテナは、基部120に取り付けられている(但し、これらアンテナは、ロボット100の任意他の部分、例えば、脚部130、胴部140、頸部150及び/又は頭部160に取り付けられても良い)。多数のアンテナを使用することにより、堅調な信号受信及び信号送信が可能になる。多数のアンテナの使用により、ロボット100に多入力及び多出力、即ちMIMOが提供され、このMIMOは、通信性能を向上させるために送信器及び/受信器のための多数のアンテナの使用法である。MIMOは、追加の帯域幅又は送信電力をなしでデータスループット及びリンクレンジの大幅な増大をもたらす。MIMOは、高いスペクトル性能(帯域幅の1ヘルツ当たり1秒当たりのビット数が多い)及びリンク信頼性又は多様性(フェーディングの減少)によってこれを達成する。MIMOは、これらの特性に鑑みて、最新式のワイヤレス通信規格、例えばIEEE 802.11n(WiFi)、4G、3GPPロング・ターム・エボリューション(Long Term Evolution)、WiMAX及びHSPA+の重要な部分である。さらに、ロボット100は、近くの他の電子装置のためのWiFiブリッジ、ハブ又はホットスポットとして働くことができる。ロボット100のMIMOの移動性及び使用により、ロボットは、比較的高い信頼性のあるWiFiブリッジとなることができる。
MIMOは、3つの主要なカテゴリ、即ち、プレコーディング(pre-coding)、空間多重化又はSM及び多様化コーディングダイバーシティコーディングに細分できる。プレコーディングは、一種のマルチストリームビーム成形であり、送信器のところで生じる全ての空間処理であると考えられる。ビーム形成(単一層ビーム成形)では、同一の信号は、信号出力が受信器入力のところで最大になるよう重み付けする適当な位相(及び場合によってはゲイン)を備えた送信器アンテナの各々から放出される。ビーム成形の利点は、互いに異なるアンテナから放出された信号を互いに強めるようにすることによって受け取った信号のゲインを増大させると共に多パスフェーディング効果を減少させることにある。散乱が存在しない場合、ビーム形成の結果として、良好に規定された方向性パターンが得られる。受信器が多数のアンテナを備えている場合、送信ビーム形成は、受信アンテナの全てのところでの信号レベルを同時に最大にすることができず、多数のストリームを備えたプレコーディングを使用するのが良い。プレコーディングは、送信器のところでのチャネル状態情報(CSI)の知識を必要とする場合がある。
空間多重化は、MIMOアンテナ構成を必要とする。空間多重化では、高レート信号が多数の低レートストリームに分割され、各ストリームは、同一周波数チャネルで異なる送信アンテナから送信される。これら信号が十分に異なる空間シグナチュアで受信器アンテナアレイに達した場合、受信器は、これらストリームを平行な(ほぼ平行な)チャネルに分離することができる。空間多重化は、チャネルキャパシティを高い信号対雑音費(SNR)で増大させる非常に強力な技術である。空間ストリームの最大数は、送信器又は受信器のところのアンテナの個数の減少によって制限される。空間多重化を送信チャネルに関する知識の有無にかかわらず利用することができる。空間多重化は又、空間分割多元接続と呼ばれている多数の受信器への同時送信にも使用できる。互いに異なる空間シグナチュアを備えた受信器をスケジュール設定することにより、良好な分離性を保証することができる。
ダイバーシティコーディング技術は、送信器のところでのチャネルに関する知識が存在しない場合に使用されるのが良い。ダイバーシティ方法では、単一のストリーム(空間多重化の多数のストリームとは異なり)を送信するが、時空間コーディングと呼ばれている技術を用いてコード化される。信号は、完全又はほぼ直交するコーディングを備えた送信アンテナの各々から放出される。ダイバーシティコーディングは、信号ダイバーシティを高めるために多数のアンテナリンクにおける独立フェーディングを利用する。チャネルに関する知識がないので、ビーム成形は行われず又はダイバーシティコーディングからのアレイゲインが存在しない。空間多重化は又、チャネルが送信器のところで知られている場合にプレコーディングと組み合わせ可能であり又はデコーディング信頼性がトレードオフの関係にある場合にダイバーシティコーディングと組み合わせ可能である。
幾つかの具体化例では、胴部140及び/又は頭部160にそれぞれ設けられた第3のアンテナ490c及び/又は第4のアンテナ490dを有している(例えば、図3を参照されたい)。かかる場合、コントローラ500は、堅調な通信のためのしきい信号レベルを達成するアンテナ配置構成を定めることができる(例えば、胴部140を昇降させると共に/或いは頭部160を回転させると共に/或いは傾動させることにより例えばアンテナ490a〜490dを動かすことによって)。例えば、コントローラ500は、指令を出して胴部140の高さを持ち上げることによって第3及び第4のアンテナ490c,490dを高くすることができる。さらに、コントローラ500は、指令を出して頭部160を回転させると共に/或いは傾動させて他のアンテナ490a〜490cに対して第4のアンテナ490dを更に配向させることができる。
図30は、物体検出システム3000を備えた例示の住居3010の略図である。物体検出システム3000は、住居3010の(内側及び/又は外側の)種々の部屋3020、廊下3030及び/又は他の部分に設けられていて、ホームモニタリング、人モニタリング及び/又は人緊急時応答システム(PERS)のためのイメージングセンサ3070、例えば3‐Dスペックルカメラ1300及び/又は3‐D・TOFカメラ1500を有する。イメージングセンサ3070は、部屋3020全体(例えば、シーン10)又はその一部分に及ぶ視野3075を有するのが良い。物体検出システム3000は、ハンドフリーのリアルタイム行動モニタリング(例えば、老人の)を提供でき、介護者の注意を独立したリビングを探している老人に向ける。図示の実施形態では、イメージングセンサ3070は、1つ又は2つ以上の壁に又は人の活動を最も効果的にモニタすることができる部屋3020の1つ又は2つ以上の隅に配置されている。例えば、イメージングセンサ3070は、部屋の隅又は出入口と反対側の壁、ソファ、主要な着座領域等に配置されるのが良い。人の活動及び休息パターンをモニタし、追跡し、そして記憶させることができ(例えば、将来のパターンとの比較のために)、又は介護者に中継することができる。
物体検出システム3000は、イメージングセンサ3070と通信状態にある(例えば、電気接続部又はワイヤレスにより)基地局BSを有するのが良い。基地局BSは、イメージ認識及び/又はモニタリングルーチンを実行するプロセッサ及び或る特定の時間間隔でセンサデータ、例えば、3‐Dマップを記憶するメモリを有するのが良い。幾つかの実施例では、物体検出システム3000は、基地局BS及び/又はイメージングセンサ3070と通信状態にある移動式ロボット100を有する。
幾つかの具体化例では、イメージセンサ3070は、イメージングセンサ3070が物体認識及び/物体追跡のために設けられている対応の部屋3020の3‐Dマップを形成する。さらに、少なくとも1つのイメージングセンサ450を有する移動式ロボット100を含む実施例では、移動式ロボット100は、イメージングセンサ3070の3‐Dマップとの比較のために同一の部屋3020又は物体12の3‐Dを作成することができる。基地局BSは、互いに異なる見晴らしの利く箇所又は眺めからのものであるのが良い両方の3‐Dマップを受け取ることができ、そして2つの3‐Dマップを互いに比較して物体12(例えば、家具、人々、ペット等)及び遮蔽部16の存在場所を認識して分析することができる。
幾つかの具体化例では、物体検出システム3000は、人の体の一部又は体全体により生じるジェスチャを認識するようシーン10(例えば、3‐Dマップ)の深度知覚を得るためにイメージングセンサ3070を用いる。イメージングセンサ3070は、体の一部の別々の部分に関する深度方向位置情報を含む体又は体の一部に関する位置情報を識別することができる。イメージングセンサ3070は、関心のある体の部分の位置情報を含む人に関するシーン10全体の位置情報を含む深度イメージを作成することができる。イメージングセンサ3070及び/又は基地局BS(例えば、指令又はルーチンを実行するプロセッサを有する)は、深度イメージ中の背景及び他の物体から関心のある身体部分をセグメント化することができ、そして1つの特定の一感覚で関心のある体部分の(例えば、静的に)形状及び位置を求めることができる。動的決定は、体又は体の部分がシーン10内で動く際に実施できる。さらに、イメージングセンサ3070及び/又は基地局BSは、体部分の運動が関心のある場合、所与の持続時間にわたって体部分により動的に生じるジェスチャを識別することができる。識別された体ジェスチャを分類し、そして分類に基づいて事象が起こされる。本明細書において説明した細部及び特徴と組み合わせ可能なジェスチャ認識に関する追加の細部及び特徴は、米国特許第7,340,077号明細書(発明の名称:Gesture Recognition System Using Depth Perceptive Sensors)に見受けられ、この米国特許を参照により引用し、その記載内容全体を本明細書の一部とする。
イメージングセンサ3070は、それぞれの部屋3020内における人のジェスチャ認識のために使用可能である。例えば、イメージングセンサ3070は、人の3‐Dマップを作成することができ、この3‐Dマップは、人のジェスチャ又は姿勢(例えば、座っている状態、寝ている状態、歩いている状態、倒れた状態、指差している状態等)を分析し又は分類するために利用できる。イメージングセンサ3070、基地局BS及び/ロボット100は、イメージデータを用いて人の3‐Dマップを形成し、そして人のジェスチャを識別すると共に/或いは分類するためのルーチンを実行することができる。或る特定のジェスチャ、例えば倒れたジェスチャ又は手を振っているジェスチャは、物体検出システム3000による非常時事態トリガを引き起こすことができる。非常時事象トリガに応答して、基地局BSは、非常時支援のための非常時通信(例えば、電話コール、Eメール等)を送ることができると共に/或いはロボット100は、人の存在場所を突き止めてジェスチャ認識を確認すると共に/或いは支援(例えば、処方を送り、人を床から起きるのを助けること等)を提供することができる。
図31は、物体検出システム3000を作動させる操作又はステップの例示の流れ図3100を提供している。操作は、シーン10(例えば、部屋3020)のイメージデータ(例えば、3‐Dスペックルカメラ1300及び/又は3‐D・TOFカメラ1500からの)を受け取るステップ(3102)、シーン10内の標的物体12の3‐Dマップを作成するステップ(3104)を含む。操作は、標的物体12(例えば、人として)を分類するステップ(3106)及び標的物体12の状態、姿勢又はジェスチャを分析するステップ(3108)を更に含む。操作は、物体事象(例えば、分析した状態、姿勢及び/又はジェスチャに特有の事象)を引き起こすステップ(3110)及びオプションとして、物体事象に応答するステップ(3112)を含む。
幾つかの具体化例では、標的物体12を分類するステップ(3106)は、標的物体12の物体の種類(例えば、人、犬、猫、椅子、ソファ、ベッド等)及び生きている物体の種類(例えば、人)を判定するステップ、物体12の状態、例えば、物体12が生きているか、眠っているか、怪我しているかどうか等を判定するステップ(例えば、運動を検出している)を含む。
幾つかの具体化例では、標的物体12の状態、姿勢及び/又はジェスチャを分析するステップ(3108)は、標的物体12が生きているか、座っているか、寝ているか、手を振っているか、倒れつつあるか又は倒れているかどうかを判定するステップを含む。状態、姿勢及び/又はジェスチャの判定は、別々に、連続して、同時に又はこれらの組み合わせで実施できる。例えば、倒れつつある又は手を振っているジェスチャ(例えば、倒れながら合図をしているジェスチャ)を検出すると共に分析すると、操作は、標的物体12の姿勢、例えば倒れた姿勢(例えば、床の上に横たわっている姿勢)及び状態(例えば、生きているか、呼吸をしているか、怪我をしているか、障害があるか、意識がないか等)を判定するステップを更に含むのが良い。
倒れた標的物体12(例えば、人が倒れた)場合、例えば、操作は、標的物体12を人として分類するステップ(3106)及び例えばメモリに記憶可能な既知の特徴を認識することによって標的物体12の状態、姿勢及び/又はジェスチャを分析するステップ(3108)を含むのが良い。例示の記憶された特性は、無意識な状態で居るときにボロの着物の人形が崩れ落ちるジェスチャ又は前に倒れるジェスチャ姿勢、左側の腰が弱い場合に左側に倒れること、杖又は歩行補助具を使用していたにもかかわらず、のめって倒れること等を含む。さらに、操作は、特定の標的物体12の状態、姿勢及び/又はジェスチャ一端を学習するステップ、センサデータをフィルタ処理するステップ及び/又はセンサデータについて探索アルゴリズムを実行するステップを含むのが良い。
手を振っているジェスチャの場合、操作は、手を振っている事象及びこの事象に応答した事象を発生させるステップ、ロボット100を支援のために標的物体12に送るステップを含むのが良い。例えば、ロボット100は、通信能力(例えば、ワイヤレス、電話、テレコンフェレンス、Eメール等)、薬ディスペンサ又は標的物体12、例えば人が接近したいと思う他の何らかの物品を有するのが良い。さらに、ロボット100は、人を基地局BSにつれて行くことができ、基地局BSは、大型スクリーン(TV上)、安定した音響設備(モータの騒音及び機械的騒音を生じないBSに設けられているマイクロホンアレイ)、安定したAC電力、安定したカメラ及びワイヤードブロードバンドアクセスを利用するテレビ会議セッション用のテレビジョン又はディスプレイを有するのが良い。
横たわっていると共に/或いは座っている姿勢の場合、操作は、健康事象の確認及びこの事象に応答した事象を発生させるステップ、ロボット100の姿勢、バイタルサイン等を確認するために標的物体12まで送るステップを含むのが良い。倒れかけているジェスチャ又は倒れた姿勢の場合、操作は、緊急事象及びこの事象に応答する事象を発生させるステップ、ロボット100を支援のために標的物体12まで送るステップ及び非常時支援のために非常時伝達手段を出すステップを含むのが良い。
幾つかの実施例では、操作は、占有マップ1700を作成し又はアップデートするステップ及び物体追跡のために現在の物体の存在場所を過去の物体の存在場所と比較するステップを含む。ジェスチャ事象を移動した物体12について発生させるのが良く、そしてこの事象に応答して操作は、物体の存在場所を確認するためにロボット100を対応の部屋3020に送るステップを含むのが良い。
ロボット100は、物体検出システム3000から自律的に動作し、更に、これと通信状態を維持するのが良い。したがって、ロボット100は、物体検出システム3000の発生事象を受け取り、これら事象に応動することができる。例えば、基地局BSが指令をロボット100に出すのではなく、例えば、ジェスチャの分類を確認するために、ロボット100は、物体検出システム3000について発生した事象について聴き取りを行うのが良く、オプションとして、発生した事象に対処するのが良い。
図32を参照すると、幾つかの具体化例では、人がペンダント3200を掛けるのが良く、このペンダントは、物体検出システム3000と通信状態にある(例えば、基地局BS及び/又はイメージセンサ3070を介して)。ペンダント3200は、ユーザの運動を検出する運動センサ3210(例えば、1つ又は2つ以上の加速度計、ジャイロスコープ等)を有するのが良い。物体検出システム3000は、住居の中全体にわたってペンダントの動きを追跡することができる。例えば、ペンダントは、ユーザ運動データ、例えば歩数、座わり又は横になった回数及び/又は現在の状態(例えば、立っている状態、歩いている状態、まっすぐに座っている状態、横になっている状態等)を提供することができる。基地局BSは、ユーザ運動データを受け取ってそれに従って事象を発生させることができる。
例えば、横になっているペンダント3200の現在の状態を受け取ると、物体検出システム3000は、健康状態の確認事象及びこの事象に応答する事象を発生させることができ、ロボット100は、ペンダント3200を着けている人の存在場所を突き止め、そしてその人の現在の健康状態を確認することができる。例えば、その人の存在場所を突き止めると、ロボット100は、その人のイメージデータを捕捉し、その人が息をしているかどうかの指標として胸部の運動を確認し、赤外線イメージングを利用してその人の体温等を測定することができる。ロボット100は、聞こえることができる質問(例えば、「ごきげんいかがですか?」)を出し、そしてその人からの聞こえる応答を待つことができる。ロボット100が聞こえる応答を検出しなかった場合、ロボット100は、非常時支援のための通信による要求を行うために検出システム3000の基地局BSによって受け取り可能な非常時事象を発生させるのが良い。さらに、ロボット100のイメージセンサ450は、第三者(例えば、介護者、非常時応答事業所等)への通信のためにイメージ又はライブ映像を捕捉するのが良い。
幾つかの具体化例では、ペンダント3200は、ユーザが支援を要求するために押すことができる支援ボタン3220を有する。基地局BSは、ペンダント3200からの支援要求信号を受け取り、そして支援要求を介護者、非常時応答事業体等に伝えることができる。さらに、支援要求信号の受信に応答して、基地局BSは、支援要求事象を発生させることができ、基地局BSと通信状態にあるロボット100は、これを受け取ってそれに応じて応動することができる。例えば、ロボット100は、ペンダント3200を着けている人の存在場所を突き止めてその人の状態を確認すると共に/或いは支援を提供する(例えば、薬を提供する、テレビ会議を提供する、電話サービスを提供する、その人が起き上がるのを助けること等)ことができる。
図33Aを参照すると、幾つかの具体化例では、移動式ロボットシステム3301が移動式ロボット100及びロボット100と通信状態にあるタッチスクリーン312を備えた遠隔コンピュータ計算装置310r、例えばウェブパッド310を有し、この遠隔コンピュータ計算装置310rは、遠隔に位置するユーザがロボット100の周りの環境又はシーン10を視覚化したりロボット100を遠隔制御したりすることができるようにするソフトウェアアプリケーション3300(例えば、タブレット利用型UIコンポーネント/アプリケーション)を実行する。ソフトウェアアプリケーション3300は、ウェブパッド310のために例えばアップルiPad2及び/又はMotorola Xoom及びイメージセンサ450のためにPrimeSensorカメラ(イスラエル国テルアビブ69710フォースフロア・ハバゼルセント28所在のプライムセンサ(PrimeSensor)社から入手できる)のようなハードウェア又は任意適当なハードウェアを利用することができる。例えば、ソフトウェアに関し、ソフトウェアアプリケーション3300は、アップルiOS4.x、Android3.0(ハニカム(Honeycomb)とも呼ばれている)、OpenGL ES 2.0又は任意他の適当なオペレーティングシステム又はプログラムを使用することができる。
図33Bを参照すると、幾つかの具体化例では、ソフトウェアアプリケーション3300は、マップビュー3304を備えたユーザインターフェース3302(例えば、遠隔コンピュータ計算装置310rに設けられている)を表示し、ユーザインターフェース3302は、ロボット100の周りのシーン10又は領域の2‐Dトップダウンレイアウトマップ1810を表示する。ユーザは、レイアウトマップ1810上の場所1814を選択してロボット100を選択した場所1814に送ることができる(例えば、表示されたボタン又は図形を選択することによって)。ロボット100は、ロボットマップ1820上の対応の標的ロボットマップ場所1824を決定し(例えば、センサシステム400からのセンサデータに基づいて)、かくして、ロボット100は、レイアウトマップ1810上の選択された場所1814に進むことができる(図18A〜図18Cも又参照されたい)。ロボット100は、1つ又は2つ以上の挙動、例えばマッピング挙動600a、障害物検出及び障害物回避挙動600b、速度挙動600c及び/又は方位挙動600d(図22)を実行することによって選択された場所1814まで自律的に進む。ロボット100が選択された場所1814にいったん到達すると、ユーザは、ロボット100の周りのシーン10を見たくなる場合があると共に/或いはその局所シーン10の周りでロボット100を操縦したくなる場合がある(例えば、ロボット100を遠隔操作で進めたくなる場合がある)。
図33C及び図33Dを参照すると、ソフトウェアアプリケーション3300は、マップビュー3304中に3‐Dマップ3310を表示することができる。ユーザは、遠隔コンピュータ計算装置310rのタッチスクリーン312上における特定のハンドジェスチャ(例えば、マルチフィンガスワイプ、タップ等)を行うことによって3‐Dマップ3310が現れるようにすることができる。幾つかの実施例では、ユーザは、ロボット100のセンサシステム400又はライブカメラビューからセンサデータ(例えば、ロボット100に取り付けられている1つ又は2つ以上のカメラ320,450からの第1の人の映像ビュー)に基づいて3‐Dシーン10aを示す3‐Dマップ3310を選択することができる。ライブカメラビューは、ロボット100の前側縁部又は前側部分を含む場合があり、したがって、遠隔に位置するユーザは、基部120の前側縁部のすぐ近くに位置する障害物に進むことなくロボットを操縦することができるようになる。
幾つかの実施例では、3‐Dシーン10aは、3‐Dイメージングセンサ450,450a,450bにより捕捉された点群3320に基づくのが良い。図示の実施例では、点群3320の点3322は、ひとまとまりとなって、3‐Dシーン10aの三次元イメージを形成する。ソフトウェアアプリケーション3300も又、ロボット100のアニメーション又はコンピュータ生成モデル100aを3‐Dシーン10a内に置くことができ、そしてロボット100の位置及び/運動学的状態を示すことができる。ロボットモデル100aは、実際のロボット100の正確な記載であるのが良く、ロボット100のコンピュータ支援設計(CAD)モデルに基づくのが良い。図33Cに示されている実施例では、3‐Dマップ3110は、2‐Dレイアウトマップ1810上を浮動し、その現在の場所のところにおけるロボット100周りの実際のシーン10のクイックビューを提供する。図33Dに示されている実施例では、ユーザは、3‐Dマップ3310をフルスクリーン及びほぼフルスクリーンビューに拡張することができる。さらに、ソフトウェアアプリケーション3300は、ロボット100を操作するための(例えば、ロボット100の駆動及び/又はそのポーズの変更のための)コントロール部分3306を表示することができる。ユーザは、ロボット100に対する互いに異なるパースペクティブ又はアイポジション3350(図33G)から3‐Dマップ3310を見ることができる(例えば、3‐Dマップ3310をタッチスクリーン312上の1つ又は2つ以上のハンドジェスチャにより回転させることによって)。図33C〜図33Gは、種々のビューを備えた3‐Dマップ3310を提供している。
再び図33A〜図33Dを参照すると、ユーザは、2‐Dレイアウトマップ1810及び/又は3‐Dマップ3310を用いてロボットに指令を出すと共にロボット100を駆動することができる(例えば、ロボットの行き先を特定することによって)。2‐Dレイアウトマップ1810によりユーザはロボット100を広い領域をぐるりと動かすことができるが、ユーザが行うことができないことがある。例えば、2‐Dレイアウトマップは、典型的には、部屋、壁、廊下等の存在場所を示すが、病院のベッド又は会議室のテーブルのような家具を示すことができない。遠隔ユーザは、ロボット100に指令を出してロボットが部屋に自律的に進んで病院ベッドの側部のそばでちょうど停止し又はロボット100に指令を出してロボットが部屋の中の既定のスポットのところで停止することができるようにするが、ロボット100がいったん部屋の中に存在すると、ユーザは、例えば枕元のところの特定のスポットまで次の動きを行わせる必要のある場合がある。図示の実施例では、ソフトウェアアプリケーション3300は、ロボット100に隣接して位置する空間ボリューム3330(例えば、ロボット100の移動方向における床平面3332を含む)からボリューム形点群3320(例えば、イメージングセンサ450からの光のスペックル放出からの反射光)に基づく又はかかるボリューム形点群3320としての三次元深度イメージの形態をした3‐Dマップ3310をマップビュー3304中に提供する。
幾つかの具体化例では、ロボット100に取り付けられているイメージングセンサ450,450a,450bは、ボリューム形点群イメージング装置である。イメージングセンサ450は、地面よりも約1フィート以上、上方の高さ位置のところで駆動システム200の上方に支持されるのが良く且つロボット100の移動方向において床平面3332を含む空間ボリューム3330から点群3320を得ることができるよう差し向けられるのが良い。コントローラ500は、3‐Dイメージングセンサ450から点群信号を受け取ることができ、そして、少なくとも部分的に受け取った点群信号に基づいて駆動指令を駆動システム200に出すことができる。少なくとも1つの3‐Dイメージセンサ450,450a,450bは、ロボット100の周りのシーン10に光を放出することができ、そして例えばロボット100の駆動方向Fに沿ってシーン10のイメージを捕捉することができる。イメージは、(a)三次元深度イメージ、(b)アクティブな照明イメージ及び(c)周辺照明イメージのうちの少なくとも1つを含むのが良い。図示の点群3320は、ロボット100により知覚される部屋シーン10aの三次元深度イメージの一例である。3‐Dマップビュー3304は、(a)三次元深度イメージ、(b)アクティブな照明イメージ及び(c)周辺照明イメージのうちの少なくとも1つを含むのが良い。図示の実施例では、ソフトウェアアプリケーション3300は、シーン10内の3‐Dイメージセンサ450,450a,450bにより視認可能な空間ボリューム3330の三次元深度イメージとして3‐Dマップ3310を表示する。点群3320の幾つかの又は全ての点3322は、コロケート型RGBカメラ320からの色で着色されるのが良い。幾つかの実施例では、点群3320は、各々がx,y,z座標及びRGB色を備えた320×240ポイント(76,800ポイント)を含む。
遠隔場所からの人々との対話時、ユーザは、ロボット100からの音声/映像供給物から自分が何を見て何を聞いているかに依存する。ビデオカメラの典型的な視野は、制限されており(例えば、60°)、「状況アウェアネス(situational awareness)」を提供するのに適してはいない場合がある。ロボット100は、広い組み合わせ視野を得るために多数のカメラ320,450,450a,450bを用いることができると共に/或いはカメラ320,450,450a,450bのうちの1つ又は2つ以上走査して対応の視野452を効果的に広げることができる。さらに、ロボット100は、1つ又は2つ以上のカメラ320又はイメージングセンサ450を回転させてロボット100の周りの360°全体を含む組み合わせ視野452を得ることによってシーンアップデートルーチンを実行することができる。
幾つかの具体化例では、ロボット100は、定期的に又は1つ又は2つ以上の事象発生時に、ロボット100がイメージングセンサ450,450b,450cを動かして垂直中心軸線Z回りの360°のわたる三次元深度イメージデータ360を捕捉するシーンアップデートルーチンを実行する。ロボット100は、定位置でホロノミック的に360°回転し、頭部160を360°回転させること等を行うことができる。幾つかの実施例では、約60°の視野452に関し、ロボット100は、イメージセンサ450,450b,450cを0°の第1の位置、60°の第2の位置及び120°の第3の位置相互間で各々前方駆動方向Fに対して動かす。ソフトウェアアプリケーション3300は、捕捉した3‐D深度イメージデータに基づいて実際のシーン10の3‐Dシーン10aを提供することができる。
図34は、ソフトウェアアプリケーション3300のためのアーキテクチャ3400の例示の略図である。ソフトウェアアプリケーション3300は、ロボットデータモデル3420(例えば、グラフィックスデータファイル又はプログラミング物体)、イメージングセンサ450,450a,450bからのイメージングセンサに基づく点群データモデル3430(例えば、グラフィックスデータファイル又はプログラミング物体)及びタッチ認識機能を備えたオペレーティングシステムのハンドジェスチャアプリケーションプログラムインターフェース(API)3440と通信状態にあるアプリケーションエンジン3410を含む。アプリケーションエンジン3410は、レンダリングエンジン3450と通信し、このレンダリングエンジンは、Open GL ES3460と通信する。Open GL ES3460は、中央処理装置(CPU)3470及び/又は遠隔コンピュータ計算装置310rのグラフィックス処理ユニット(GPU)3480と通信することができる。
アプリケーションエンジン3410は、レンダリングエンジン3450によるレンダリングを行うためにユーザインターフェース3302を提供する。3‐Dマップ3310に関し、アプリケーションエンジン3410は、ロボットデータモデル3420(例えば、3‐D空間内におけるロボットモデル100aを操作するためのマトリックスマス)を用いてロボットモデル100aを提供すると共に両方共単一のビュー内にレンダリングするために点群データモデル3430(例えば、切頭体投影マトリックス)を用いて3‐Dシーン10aを提供することができる。アプリケーションエンジン3410は、ハンドジェスチャAPI3440を用いて遠隔コンピュータ計算装置310rのタッチスクリーン312上のタッチジェスチャ(例えば、タッチ場所座標、ジェスチャ経路、ジェスチャ持続時間等)を求めることができる。
アプリケーションエンジン3410は、ロボットモデル100aの姿勢を求めるためにロボットデータモデル3420にアクセスすることができる。ロボットデータモデル3420は、ロボット100の4つの自由度(例えば、頭部160をパンすること/傾動させること、胴部高さHTの変更及びロボット100の回転)を説明することができる。ロボットデータモデル3420により、4つの自由度によるロボットモデル100aの図形による操作を可能にし、例えば、3‐Dマップ3310内でロボットモデル100aの姿勢を動かしたり変更したりすることができる。さらに、アプリケーションエンジン3410は、遮蔽に起因した光の減衰を考慮に入れることによりリアリズムを局所反射モデルに追加するために環境遮蔽(アンビエントオクルージョン)、即ち、3‐Dコンピュータグラフィックスで用いられているシェーディング方法を実施することができる。環境射影は、光が特に通常非反射面と考えられる物体から現実世界において放射する仕方に近似しようとする。局所方法とは異なり、フォン(Phong)シェーディングのように、環境遮蔽は、各点における照明がシーン内における他の幾何学的形状の関数であることを意味するグローバルな方法である。環境遮蔽だけで達成されるソフトな外観は、物体が空一面曇った日に見える仕方にほぼ同じである。幾つかの実施例では、アプリケーションエンジン3410は、ロボットデータモデル3420に低域通過フィルタをかけてロボットモデル100a上の低い反射光を有する多角形を除去する。
幾つかの具体化例では、アプリケーションエンジン3410は、以下のパラメータ、即ち、ロボットモデル座標(x,y,z)、点群座標(x,y,z)、アイポジション3350(x,y,z)、アイターゲット3352(即ち、視線情報)、光源座標(x,y,z)及び/又はビューポートサイズ(即ち、タッチスクリーン312の表示領域)のうちの1つ又は2つ以上をレンダリングエンジン3450に伝える。レンダリングエンジン3450は、タッチスクリーン312上にグラフィックスを表示するためにOpen GLと通信することができる。幾つかの実施例では、レンダリングエンジン3450は、レンダリングルーチンを実行すると共に/或いはロボットモデル100aの回転又は並進、アイポジション3350及び/又はアイターゲット3352の変化等を計算するためにCPU3470及び/又はGPU3480と通信する。ロボットモデル100aは、ユーザにより別々にタッチ可能であると共に操作可能である15個のレンダリングされる部分を有するのが良い。
再び図33Dを参照するとロボット100は、自律的なナビゲーションが可能であるが、遠隔に位置するユーザが人々との対話をいったん始めると、遠くのユーザは、ロボット100の完全な制御を必要とする場合がある。典型的なロボット運動、例えば並進及び回転に加えて、遠隔のユーザは、ロボットの肩の高さHT(図2)及び頭部160のパン/チルト位置を調節することができる。ユーザインターフェース(UI)3302上に設けられた簡単なスライダ又はダイヤルがロボット運動学的状態の調節を可能にするが、従来型UIウィジェットは、ロボットの現在の運動学的状態の良好な視覚化をもたらすことができない。ユーザインターフェース3302は、ロボット100を駆動するための方向性パッド3308(D‐パッド)をコントロール部分3306中に表示することができる。例えば、方向性パッド3308は、ホロノミックX‐Y駆動指令に対応した左及び右側行為ボタン又はコントロール3308a,3308bを有するのが良い。方向性パッド3308は、ビデオゲームコンソールゲームパッド、ゲームコントローラ又はテレビジョン用のリモートコントロールユニットと同一又は類似しているのが良い。左側及び右側ボタン又はコントロール3308a,3308b上の組み合わせジェスチャは、組み合わせ運動指令、例えば上及び左を斜め運動方向として分析することができる。
幾つかの実施例では、ソフトウェアアプリケーションは、仮想浮動及び不可視D‐パッド3308及び/又はマウスルックを提供することができ、したがって、ユーザの左親指がタッチスクリーン312に当たった場合にはどのような場合であっても、D‐パッド3308は、浮動すると共に/或いはユーザの右親指がタッチスクリーン312に当たった場合にはどのような場合であってもマウスルックが浮動する。これら特徴の両方又はいずれか一方は、ユーザが自分の親指を持ち上げたときにはリセット可能である。
また図33B〜図33Dを参照すると、ソフトウェアアプリケーション3300により表示されるユーザインターフェース3302(例えば、ビュー)は、例えば、ロボット100と通信状態にあるウェブパッド310のタッチスクリーン312上のジェスチャ認識によりユーザ入力を受け取る。例示のジェスチャとしては、タップすること(任意の回数のタップ)、ピンチイン及びピンチアウト(ビューをズームするため)、パンすること又はドラグすること、スワイプすること(任意の方向に)、回転させること(フィンガを互いに逆方向に動かすこと)及び/又は長押し(「タッチアンドホールド」とも呼ばれている)が挙げられるが、これらには限定されない。ソフトウェアアプリケーション3300は、タッチスクリーン312上のジェスチャを認識することができ、そしてロボット100のための対応の指令された運動を決定することができる(例えば、ロボットモデル100aを操作し又はこれに指令したときに)。ロボット指令をウェブパッド310から実際の空間内のロボット100に伝達するのが良く、次にオプションとして点群3320で第3の人のモードビュー(例えば、指令に従ってロボット100が動いている状態を示している)中に再現すると共に示された状態で逆伝搬させることができる。例えば、タッチジェスチャAPI3440を用いたアプリケーションエンジン3410は、受け取ったタッチジェスチャを認識することができ、そして、例えばタッチルーチンにより取り扱い可能なタッチ事象を発生させることによりそれに応じて応動することができる。
ソフトウェアアプリケーション3300は、タッチ事象を受け取ると共に/或いはタッチ認識機能を実行し(タッチジェスチャAPI3440を用いて)、それにより存在場所(又は、マルチフィンガタッチの場所)、経路、持続時間及び/又は他のタッチ認識データを確認することができる。タッチスクリーン312上のタッチ場所を2‐Dレイアウトマップ1810上の対応の場所に直接投影することができるが、3‐Dマップ3310の場合、ソフトウェアアプリケーションは、2‐Dタッチジェスチャを図35に示されているように切頭体投影に沿って投影する。2‐Dタッチスクリーン312上に表示された3‐Dシーン10a内のタッチ場所を定めるため、ソフトウェアアプリケーション3300は、タッチスクリーン312上のタッチ場所3510を切頭体投影3500に沿ってタッチ場所3510を3‐Dシーン10a中の対応の交差点3520に投影することができる。
ロボット100を種々の仕方で第三者モードで案内することができる。一手法では、オペレータは、表示された3‐Dシーン10a内のタッチ場所3510としての床の場所を選択する(例えば、ポインティング装置を用いて又はロボット100と通信状態にあるウェブパッド310のタッチスクリーン312上の場所を選択して)。ソフトウェアアプリケーション3300は、選択したタッチ場所3510としてのフロアアプリケーションを切頭体投影3500に沿って3‐Dシーン10aに投影させて3‐Dシーン10a内の対応の選択されたシーン点3520を求める。ソフトウェアアプリケーション3300は、シーン点3520(例えば、実際の空間座標として)コントローラ500に伝えることができ、コントローラ500は、駆動指令を出してロボット100を識別されたロボット経路2110(図21B)に沿って障害物12をよけて選択された場所まで動かすことができる。
ソフトウェアアプリケーション3300及び/又はコントローラ500は、事後衝突検出のために(衝突がシミュレートされたモデルで起こった後)1つ又は2つ以上の物理的シミュレータを実行するのが良い。事後衝突検出では、ソフトウェアアプリケーション3300及び/又はコントローラ500は、物理的シミュレータを一タイムステップだけ前進させ、次に、物体12が交差しているかどうか又は物体12が交差していると考えられるしきい距離内に存在しているかどうかをチェックする。各シミュレーションステップでは、全ての交差した物体12のリストを作り、これら物体の位置及び軌道を幾分「固定」して衝突を説明する。事後シミュレーションでは、衝突は、これが実際にシミュレーションで起こった後に検出される。衝突検出アルゴリズムは、無数の物理的変数を知る必要はなく、物理的物体の単純なリストがアルゴリズムに送られるのが良く、プログラムは、交差物体のリストに戻る。衝突検出アルゴリズムは、摩擦、弾性衝突、非弾性衝突及び変形可能な本体を理解する必要はない。シミュレータにおいて衝突のないロボット経路2110を識別した後、ロボット100は、シーン10を実際の空間内で進むことができる。
図33Eを参照すると。ソフトウェアアプリケーション3300は、受け取った行き先場所L2及び行き先場所L2までのロボット100の現在の場所L1から行き先場所L2までのシーンの仮想空間内の投影経路を用いることができる。点群3320及び/又は既知の床平面3332は、衝突検出のための仮想表面となることができる。ロボット経路3350を仮想空間内でロボット100の現在の場所L1から選択された行き先場所L2まで投影することができ、ついには、ロボット経路は、仮想表面に当たる。ソフトウェアアプリケーションは、仮想平面までのロボット経路3350のための駆動指令を分析することができる。
図33D及び図35を参照すると、タッチスクリーン312上のロボットモデル100aを操作するため、ユーザは、ロボットモデル100aの胴部140にタッチし、これを垂直に動かし、そしてリリースして胴部肩高さHTを変化させることができる。ソフトウェアアプリケーション3300は、タッチ場所3510を切頭体投影3500に沿ってスクリーン312上に投影することができ、それにより3‐Dシーン10a内における対応のタッチ点3520を求めることができ、かかるタッチ点は、この実施形態では、ロボットモデル100aの胴部140と交差する。ソフトウェアアプリケーション3300は、タッチジェスチャAPI3440を用いて受け取ったタッチジェスチャの特性を求め、それによりこの場合指令を送って胴部肩高さHTを変えることによってそれに応じて応動する。ユーザは、タッチスクリーン312上のロボットモデル100aの胴部140(又はロボットモデル100a)の他の部分にタッチし、これを水平に動かし、そしてリリースしてロボット100を回転させることができる。ユーザは、ロボットモデル100aの前側バンパ124a(図4A)にタッチし、前側バンパ124aを保持してロボットを後方に動かすことができる。ロボット100を前方に動かすためには、ユーザは、ロボットモデル100aの後側バンパ124b,124c(図4A)のうちの一方にタッチし、保持し、そしてロボットをシーンビュー3304内で前方に動かすのが良い。3つのバンパ124a〜124cのうちの1つを素早くタップすると、ロボットは、短い距離(例えば、10cm)動くことができる。ユーザは、ロボットモデル100aの頭部160にタッチし、水平に動かし、次に頭部160をリリースすることによってロボット100の頭部160をパンすることができる。同様に、頭部160を傾動させるため、ユーザは、ロボットモデル100aの頭部160にタッチし、そしてこれを垂直に動かすのが良い。
幾つかの実施例では、ユーザは、合成又は組み合わせ運動(例えば、頭部160を同時にパンして傾動させること)によって多数の調節を同時に行うことができる。局所ウェイポイント指令を接着するため、ユーザは、ロボットモデル100aの基部120にタッチし、これを任意の方向に動かし、そしてこれをリリースするのが良い。リリース箇所は、地面平面3332に投影可能である。他の認識可能なジェスチャとしては、新たなセンサデータに基づく3‐Dシーン10aをアップデートするためにロボットモデル100aの頭部160を素早くタップすること及び/又はタッチすること、動かすこと(任意の方向に)及びロボットモデル100aの頭部160をリリースしてヘッドパン/チルト方向を設定することが挙げられる。リリース箇所は、3‐Dシーン10a内の有効点(即ち、点群3320中の点)に十分近い3‐D空間内の点に投影可能である。
図36Aを参照すると、ソフトウェアアプリケーション3300は、第3パースペクティブビューを3‐Dシーン10a中のロボット100のモデル100aの肩ビュー(例えば、第三者シュータビュー)上に投影することができる。アイポジション3350は、ロボットモデル100aの背後に初期デフォルト位置を有するのが良く、オプションとして、パースペクティブのために持ち上げられるのが良い。ロボットモデル100aは、ロボット100の現在の姿勢及びロボットの周りの視認された空間ボリューム3330に対するロボット100の現在の向きで示されるのが良い。さらに、ロボットモデル100a及び3‐Dマップ3310は、ロボット100のオペレータの視点及び/又は他の視点から示されるのが良く、これらの例は、図33E〜図33G、図36A及び図36Bに示されている。
図36A〜図36Cを参照すると、フリールックジェスチャ指令(マウスルックとも呼ばれている)が3‐Dマップ3310を回転させ又は違ったやり方でロボットモデル100a及び3‐Dシーン10aのビューパースペクティブを動かす機能(例えば、ジェスチャ認識を介して)を提供する。さらに、フリールック指令により、ユーザは、ロボットモデル100aをホロノミック的に回転させると共に/或いはカメラ320,450をパンし又は傾動させることができる。シーン視認のため、ユーザは、ロボットモデル100aにタッチし、これを任意の方向に動かし、そして開放空間上にリリースして3‐Dシーン10a内におけるアイポジション3350を変更することができる。この作用効果としては、アイ標的ポジション3352を不変のままにすることによって3‐Dシーン10a内におけるロボットモデル100aの回りに動くことが挙げられ、アイ標的ポジション3352は、デフォルトにより、ロボット開始位置に設定できる。図36A及び図36Bに示された実施例では、ユーザは、3‐Dマップ3310を回転させてロボットモデル100a及び3‐Dシーン10aをロボットモデル100aに対して横から視認する。ロボットモデル100aは、3‐Dシーン10a内でその開始位置から遠ざかることができる。さらに、アイターゲット位置3352は、ロボット100に追従する必要はない。ロボットモデル100aの胴部140を2回タップすると、アイターゲット位置3352をロボットの現在の位置に変えることができる。
図36Cを参照すると、3‐Dシーン10aの視認領域を定めるため、ソフトウェアアプリケーション3300は、視線3354をアイポジション3350からアイターゲット3352に投影するのが良い。図示の実施例では、ソフトウェアアプリケーション3300は、実際のシーン10に対してタッチスクリーン312の仮想位置を用い、次に視線投影像3354をアイポジション3350(例えば、ユーザの肩の上のデフォルト位置に当初配置される)からタッチスクリーン312上のスクリーン点3356を介して配置して3‐Dシーン10a内のアイターゲット位置3352を求めることができる。ソフトウェアアプリケーション3300は、タッチスクリーン312の受け取った表示領域を用いてレンダリングされた3‐Dシーン10aのサイズを求めることができる。初期アイポジション3350は、ロボット100の後ろに5メートルのところに位置すると共に地面より上方に45°の角度ψをなして視線3350に沿って高くされるのが良い。ロボットモデル100aの初期場所は、3‐Dシーン10a内に心出しされるのが良く、スクリーン312の初期仮想場所は、アイポジション3350とロボット100上の初期アイターゲット3352との間のベクトル(例えば、視線3354)に沿って位置するのが良い。
アイポジション3350及び/又は視線3354を変更するためには、ユーザは、3‐Dマップ3310の非可動部分(例えば、ロボットモデル100aではなく、3‐Dシーン10aの一部)を選択し、タッチ場所をスクリーン312に沿って動かし、そしてリリースするのが良い。ソフトウェアアプリケーション3300は、アイポジション3350をアイターゲット3352又はスクリーン場所3356(即ち、タッチ場所)に対して対応した量回転させるのが良い。
幾つかの具体化例では、ソフトウェアアプリケーション3300は、アイポジション3350及び選択されたスクリーン場所3356を用いて視線3354をアイポジション3350からスクリーン場所3356を介してアイターゲット3352としての3‐Dスクリーン10aとの交差点に投影するのが良い。アイターゲット3352の集まりを用いると、ロボット100を分析されたアイターゲット3352に沿う既定の経路に沿って案内するための駆動指令を求めることができる。追加の実施例では、ソフトウェアアプリケーション3300は、最初のアイ標的3352及び最後のアイ標的3352をそれぞれ求める第1の選択されたスクリーン場所3356及び最後の選択されたスクリーン場所3356(例えば、最初のタッチ及びリリース点)を定める。最初のアイ標的3352がロボットモデル100aの基部120に一致し、最後のアイ標的3352がロボットモデル100aの現在の場所から離れて位置する場合、ソフトウェアアプリケーション3300は、駆動指令を出してロボット100を最後のアイ標的3352に対応する場所に駆動するのが良い。さらに、ユーザは、ロボット100がその現在の場所から選択された行き先場所に自律的に進むことができるようにすることができる。
運動学的状態操作は、ソフトウェアアプリケーション3300で可能な場合がある。例えば、ソフトウェアアプリケーション3300は、ロボットモデル100aの位置の変化及び/又は運動学的状態を計算することができる(例えば、ロボットデータモデル3420を用いて)と共に適当な指令を出してロボット100をロボットモデル100aに同期させることができる。ソフトウェアアプリケーション3300は、ロボットコントローラ500と通信し、指令を送ってソフトウェアアプリケーション3300の変化に基づいてロボット100の位置及び運動学的状態を調節すると共にロボットモデル100aをそれに応じてアップデートするためにロボット100の位置及び状態の変化のフィードバックを受け取る。換言すると、ロボットの位置及び運動学的状態をソフトウェアアプリケーション3300とロボット100との間で同期させることができる。例えば、ユーザは、ロボットモデル100aの胴部の高さHTを変化させ、その頭部160を回転させることによりタッチスクリーン312上におけるロボットモデル100aを操作することができる。モデル操作の認識後、ソフトウェアアプリケーション3300は、ロボット位置及び運動学的状態データをロボットコントローラ500に送ることができ、ロボットコントローラは、適当な指令を決定してロボット100の姿勢を変えると共に/或いはソフトウェアアプリケーション3300は指令を決定してロボットの姿勢をアップデートし、これら指令を実行のためにロボットコントローラ500に送る。さらに、ユーザがロボット100の姿勢及び/又は位置(場所)を変化させることによりロボット100を物理的に操作する場合、ロボット100は、対応のデータをソフトウェアアプリケーション3300に送り、ソフトウェアアプリケーションは、ロボットモデルの姿勢及び2‐Dレイアウトマップ1810及び3‐Dマップ3310内のその場所をアップデートする。現在の且つ正確な3‐Dマップ3310を提供するため、ロボット100は、1回又は2回以上のロボット‐ロボットモデル同期化後、シーンアップデートルーチンを実行するのが良い。ソフトウェアアプリケーション3300は、シーンアップデートルーチンの実行頻度を制御することができる。
幾つかの実施例では、ソフトウェアアプリケーション3300は、変更後のロボットモデル100aのゴースト像を表示し、次に開始位置及び/又は姿勢から変更後の位置及び/又は姿勢まで実際のロボット100とリアルタイムで動いているロボットモデル100aの一連のイメージを順次表示し、ついには、最後の変更後の状態が達成される。
図37A及び図37Bを参照すると、幾つかの具体化例では、ソフトウェアアプリケーション3300は、点群3320を分析して認識できない塊3324、例えば非反射性物体(例えば、黒色の物体)、光源(例えば、窓)等を確認し、センサシステム400を用いて認識できない塊3324(図37A)の各々を識別し、次に、認識可能なイメージ3710(図37B)を対応の認識できない塊3324上に引き又はオーバーレイする。ソフトウェアアプリケーション3300は、シーン10を見ているカメラ320と通信し又はこのカメラ320からRGBイメージデータを受け取ることができ、そして認識可能なイメージ3710として用いるために認識できない塊3324に対応したRGBイメージデータの一部分をトリミングすることができる。他の実施例では、ソフトウェアアプリケーション3300は、認識可能なイメージ3710として用いるために記憶された一般的なイメージを用いることができる。したがって、3‐Dマップ3310を点群3320と点群3320上にオーバーレイされ又はこれに合体された1つ又は2つ以上の認識可能なイメージ3710の組み合わせとしてレンダリングするのが良い。幾つかの実施例では、認識可能なイメージ3710は、部分的に透明であり、したがって、ユーザは、対応の認識できない塊3324を部分的に見ることができる。
図38を参照すると、幾つかの具体化例では、ソフトウェアアプリケーション3300は、遠隔コンピュータ計算装置310rを介してワイヤレスネットワーク又はクラウドコンピューティングネットワーク3810によりロボット100と通信する。通信は、安全のためにファイアウォール3820を通るのが良い。幾つかの実施例では、遠隔コンピュータ計算装置310rは、ロボット100と仮想プライベートネットワーク(VPN)通信又はハイパーテキスト転送プロトコル(http)トンネルを確立する。
クラウドコンピューティングネットワーク3810は、インターネットを利用したコンピューティングを提供することができ、それにより、共有サーバは、リソース、ソフトウェア及びデータを要求に応じて種々のコンピュータ及び他の装置に提供する。例えば、クラウドコンピューティングネットワーク3810は、少なくとも1つのサーバコンピューティング装置を含むクラウドコンピューティングサービスであるのが良く、このクラウドコンピューティングサービスは、サービスアブストラクションレーヤ及びこの上にインスタント化されたサーババーチャルマシン上のハイパーテキスト転送プロトコルラッパを含むのが良い。サーバコンピューティング装置は、HTTPリクエストをパースし、HTTP応答を送るよう構成されているのが良い。クラウドコンピューティングは、データ及びアプリケーションを維持するためにインターネット及び中央リモートサーバを用いる技術であると言える。クラウドコンピューティングにより、ユーザは、インターネットアクセスにより任意のコンピュータのところでの設定及びアクセスパーソナルファイルなしでアプリケーションにアクセスしてこれらを用いることができる。クラウドコンピューティングは、ストレージ、メモリ、処理及び帯域幅を集中化することによって比較的効率の高いコンピュータ処理を可能にする。クラウドコンピューティングネットワーク3810は、スケール変更可能なオンデマンドのコンピューティング電力、ストレージ及び帯域幅を提供することができ、他方、ロボットハードウェア要件を緩和することができる(例えば、CPU及びメモリの空き容量を確保することによって)。ロボットをクラウドコンピューティングネットワーク3810に接続できることにより、ロボット100が基地局に戻る必要なく、ロボット動作及び使用履歴の自動的データ収集が可能である。さらに、経時的な連続データ収集により、マーケティング、製品開発及びサポートのために漁ることができる多量のデータを生じさせることができる。
本明細書において説明したシステム及び技術の種々の具体化例をディジタル電子回路、集積回路、特別設計ASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア及び/又はこれらの組み合わせで実現できる。これら種々の具体化例は、プログラム可能なシステム上で実行可能であると共に/或いは解釈可能な1つ又は2つ以上のコンピュータプログラムの状態での具体化例を含むことができ、かかるプログラム可能なシステムは、記憶システム、少なくとも1つの入力装置及び少なくとも1つの出力装置からデータ及び命令を受け取り、データ及び命令を記憶システム、少なくとも1つの入力装置及び少なくとも1つの出力装置に送るよう結合された特定目的又は一般目的であるのが良い少なくとも1つのプログラム可能プロセッサを含む。
これらコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション又はコードとも呼ばれる)は、プログラム可能プロセッサのための機械命令を含み、ハイレベル手順及び/又はオブジェクト指向プログラミング言語及び/又はアセンブリ/機械言語で実施できる。本明細書で用いられる「機械可読媒体」及び「コンピュータ可読媒体」という用語は、機械命令及び/又はデータを、機械命令を機械可読信号として受け取る機械可読媒体を含むプログラム可能プロセッサに提供するために用いられる任意のコンピュータプログラム製品、装置及び/又はデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を意味する。「機械可読信号」という用語は、機械命令及び/又はデータをプログラム可能プロセッサに提供するために用いられる任意の信号を意味している。
本明細書において説明した本発明の内容及び機能的操作の具体化は、ディジタル電子回路又はコンピュータソフトウェア、ファームウェア又は本明細書において開示した構造及びこれら構造の均等例又はこれらのうちの1つ又は2つ以上の組み合わせを含むハードウェアで具体化できる。本明細書において説明した本発明の内容の実施形態は、1つ又は2つ以上のコンピュータプログラム製品、即ち、データ処理装置により実行可能に又はデータ処理装置の動作を制御するためのコンピュータ可読媒体上にコード化されたコンピュータプログラム命令の1つ又は2つ以上のモジュールとして具体化できる。コンピュータ可読媒体は、機械可読記憶装置、機械可読記憶基板、メモリ装置、機械可読伝搬信号を送る物体の構成物又はこれらのうちの1つ又は2つ以上の組み合わせであって良い。「データ処理装置」という用語は、データを処理するための全ての装置、デバイス及び機械を含み、これらとしては、一例を挙げると、プログラム可能プロセッサ、コンピュータ又は多数のプロセッサ若しくはコンピュータが挙げられる。装置は、ハードウェアに加えて、問題のコンピュータプログラムのための実行環境を生じさせるコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム又はこれらのうちの1つ若しくは2つ以上の組み合わせを構成するコードを含むのが良い。伝搬信号は、適当なレシーバ装置への送信のために情報をコード化するよう生成される人工的に生じた信号、例えば、機械生成電気信号、光信号又は電磁信号である。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト又はコードとも呼ばれる)は、コンパイルされ又は解釈された言語を含むプログラミング言語の任意の形態で書き込み可能であり、これをスタンドアロンプログラム又はモジュール、コンポーネント、サブルーチン若しくはコンピュータ処理環境で用いられるのに適した他のユニットとして含まれる任意の形態で利用可能である。コンピュータプログラムは、必ずしも、ファイルシステム中のファイルに対応しているわけではない。プログラムは、問題のプログラムに専用のシングルファイル又は多数のコーディネートされたファイル(例えば、1つ又は2つ以上のモジュール、サブプログラム又はコードの部分を記憶したファイル)中に他のプログラム又はデータ(例えば、メーキャップ言語文章に記憶された1つ又は2つ以上のスクリプト)を保持したファイルの一部分に記憶可能である。コンピュータプログラムは、1つのコンピュータ又は1つのサイトに配置され又は多数の場所に分散して配置されると共に通信ネットワークによって互いに接続された多数のコンピュータ上で実行されるよう利用可能である。
本明細書において説明したプロセス及び論理の流れは、入力データについて働き、出力を生じさせることによって機能を実行するよう1つ又は2つ以上のコンピュータプログラムを実行する1つ又は2つ以上のプログラム可能プロセッサによって実施できる。プロセス及び論理流れは又、専用目的論理回路、例えばFPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)によっても実行可能であり、そして装置は、これらとしても具体化できる。
コンピュータプログラムの実行に適したプロセッサとしては、一例を挙げると、汎用目的マイクロプロセッサと専用目的プロセッサの両方及び任意種類のディジタルコンピュータの任意の1つ又は2つ以上のプロセッサが挙げられる。一般に、プロセッサは、読み取り専用記憶装置又は読み取り書き込み記憶装置から命令及びデータを受け取る。コンピュータの必須の要素は、命令を実行するプロセッサ及び命令及びデータを記憶する1つ又は2つ以上の記憶装置である。一般に、コンピュータは、データを記憶する1つ又は2つ以上の大量記憶装置、例えば、磁気ディスク、光磁気ディスク又は光ディスクを含み又はこれらからデータを受け取り、若しくはデータをこれらに伝送し又はこれら両方を行うよう作動的に結合される。しかしながら、コンピュータは、かかる装置を有する必要はない。さらに、コンピュータは、別の装置、例えば、少し挙げてみただけでも、携帯電話、携帯型端末(PDA)、移動式オーディオプレーヤ、全地球測位システム(GPS)レシーバに埋め込み可能である。コンピュータプログラム命令及びデータを記憶するのに適したコンピュータ可読媒体としては、あらゆる形式の不揮発性メモリ、メディア及び記憶装置が挙げられ、かかる形態としては、一例を挙げると、半導体記憶装置、例えばEPROM、EEPROM及びフラッシュメモリ装置、磁気ディスク、例えば内部ハードディスク又はリムーバブルディスク、光磁気ディスク、CDROM及びDVD‐ROMディスクが挙げられる。プロセッサ及びメモリは、専用目的論理回路によって捕捉されるのが良く又はこれらの中に組み込まれるのが良い。
本明細書において説明した本発明の内容の具体化例は、例えばデータサーバとしてバックエンドコンポーネントを含み若しくはミドルウェアコンポーネント、例えばアプリケーションサーバを含み、或いはフロントエンドコンピュータ、例えばユーザが本明細書において説明した本発明の内容の具体化例と対話することができるようにするグラフィカルユーザインターフェース又はウェブブラウザを有するクライアントコンピュータを含み又は1つ又は2つ以上のかかるバックエンド、ミドルウェア又はフロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステムで具体化できる。かかるシステムのコンポーネントは、ディジタルデータ通信の任意の形態又は媒体、例えば通信ネットワークにより互いに接続可能である。通信ネットワークの例としては、ローカルエリアネットワーク(「LAN」)及びワイドエリアネットワーク(「WAN」)、例えばインターネットが挙げられる。
コンピューティングシステムは、クライアント及びサーバを含むのが良い。クライアント及びサーバは、一般に、互いに離れており、典型的には、通信ネットワークを介して対話する。クライアントとサーバの関係は、それぞれのコンピュータ上でランすると共に互いに対するクライアント‐サーバ関係を有するコンピュータプログラムによって生じる。
本明細書は、多くの細部を有するが、これら細部は、本発明の範囲又はクレーム請求可能な本発明の制限として介されてはならず、それどころか、本発明の特定の具体化例に特有の特徴の説明として介されるべきである。別々の具体化例に関連して本明細書において説明した或る特定の特徴は又、単一の具体化例において組み合わせ状態で具体化できる。これとは逆に、単一の具体化例の関連で説明した種々の特徴も又、多数の具体化例において別々に又は任意適当なサブコンビネーションの状態で具体化できる。さらに、特徴を或る特定の組み合わせで用いられるものとして上述し、場合によっては当初その状態でクレーム請求されている場合があるが、クレーム請求されたコンビネーションからの1つ又は2つ以上の特徴は、場合によっては、その組み合わせから削除でき、クレーム請求されるコンビネーションは、サブコンビネーション又はサブコンビネーションの変形例に変更可能である。
同様に、操作又はステップが図面に特定の順序で記載されているが、これは、かかる操作又はステップが図示の特定の順序又は逐次順序で実施されること又は全ての図示した操作又はステップが所望の目的を達成するために実施されるべきであることを必要条件として理解されるべきではない。或る特定の状況では、多重タスキング及び並行処理が有利な場合がある。さらに、上述の実施形態における種々のシステムコンポーネントの分離は、あらゆる実施形態においてかかる分離を必要とするものであると理解されるべきではなく、上述のプログラムコンポーネント及びシステムは、一般に、単一ソフトウェア製品に互いに一体化でき又は多数のソフトウェア製品にパッケージ化できることは理解されるべきである。
多くの具体化例を説明した。それにもかかわらず、本発明の精神及び範囲から逸脱することなく、種々の改造例を相当できることは理解されよう。したがって、特許請求の範囲に記載された本発明の範囲内で他の具体化例が存在する。例えば、特許請求の範囲に記載された行為は、別の順序で実施でき、この場合であっても、所望の結果を達成することができる。