以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。本実施の形態においては、平面抽出装置が搭載された2足歩行のロボット装置について説明する。
図1は、本発明の実施の形態におけるロボット装置の概略を示すブロック図である。図1に示すように、ロボット装置1の頭部ユニット250には、2台のCCDカメラ200R,200Lが設けられ、このCCDカメラ200R,200Lの後段には、ステレオ画像処理装置210が設けられている。2台のCCDカメラ(以下、右目200R、左目200Lという。)により撮像された右目画像201R、左目画像201Lは、ステレオ画像処理装置210に入力される。ステレオ画像処理装置210は、各画像201R,201Lの視差情報(disparity data)(距離情報)を計算し、カラー画像(YUV:輝度Y、UV色差)202及び視差画像(YDR:輝度Y、視差D、信頼度R)203をフレーム毎に左右交互に算出する。ここで、視差とは、空間中のある点が左目及び右目に写像される点の違いを示し、そのカメラからの距離に応じて変化するものである。
このカラー画像202及び視差画像203はロボット装置1の体幹部260に内蔵されたCPU(制御部)220に入力される。また、ロボット装置1の各関節にはアクチュエータ230が設けられており、CPU220からの指令となる制御信号221が供給されて、その指令値に応じてモータを駆動する。各関節(アクチュエータ)には、ポテンショメータが取り付けられ、その時のモータの回転角がCPU220へ送られる。このアクチュエータに取り付けられたポテンショメータ、足底に取り付けられたタッチセンサ及び体幹部に取り付けられたジャイロ・センサ等の各センサ240は、現在の関節角度、設置情報、及び姿勢情報等の現在のロボット装置の状態を計測し、センサデータ241としてCPU220へ出力する。CPU220は、ステレオ画像処理装置210からのカラー画像202及び視差画像203と、各アクチュエータ230の全ての関節角度等のセンサデータ241とが入力され、後述するソフトウェア構成を実現する。
本実施の形態のソフトウェアは、オブジェクト単位で構成され、ロボット装置の位置、移動量、周囲の障害物、及び環境地図等を認識し、ロボット装置が最終的に取るべき行動についての行動列を出力する各種認識処理等を行うものである。なお、ロボット装置の位置を示す座標として、例えば、後述するランドマーク等の特定の物体等に基づく所定位置を座標の原点としたワールド基準系のカメラ座標系(以下、絶対座標ともいう。)と、ロボット装置自身を中心(座標の原点)としたロボット中心座標系(以下、相対座標ともいう。)との2つの座標を使用する。
図2は、本実施の形態におけるロボット装置のソフトウェアの構成を示す模式図である。同図において、丸で表されているのが、オブジェクト又はプロセスと呼ばれるエンティティである。オブジェクト同士が非同期に通信し合うことで、システム全体が動作する。各オブジェクトはメッセージ通信と共有メモリを使用したオブジェクト間通信方法によりデータの受け渡し及びプログラムの起動(Invoke)を行っている。
図2に示すように、ソフトウェア300は、キネマティックオドメトリ(Kinematics Odometry)KINE310、平面抽出部(Plane Extractor)PLEX320、障害物グリッド算出部(Occupancy Grid)OG330、ランドマーク位置検出部(Landmark Sensor)CLS340、絶対座標算出部(Localization)LZ350及び行動決定部(Situated behavior Layer)SBL360から構成され、各オブジェクト単位にて処理がなされる。これらのソフトウェアの詳細な構成及び動作については後述する。また、ロボット装置についての詳細な構成及び動作についても後述する。
ここで、先ず、上述したロボット装置1に搭載される平面抽出装置、即ち、上述した平面抽出部PLEX320の平面抽出方法について説明する。
本発明の平面抽出方法は、3次元データからランダムにデータをサンプリングして平面パラメータを算出し、ハフ変換(ランダム化ハフ変換:Randomized Hough Transform)、即ち、平面パラメータを投票空間に直接投票して平面であるか否かを決定するものである。即ち、下記数式(2)に示すN固の3次元データから、法線ベクトルの向きを(θ,φ)、原点からの距離をdとしたときの平面パラメータ(θ,φ,d)、即ち下記数式(3)に示す平面方程式を求める方法である。
そして、投票、即ちヒストグラムに基づく確率密度関数の推定により3次元データから、その3次元データに含まれる支配的な平面のパラメータを決定する確率論的方法である。
以下、本発明の実施の形態における平面抽出方法ついて詳細に説明する。図3は、本実施の形態における平面抽出方法の工程を示すフローチャートである。
例えば、ステレオ視(ステレオカメラ)等による方法、又はレンジセンサ等の操作によって得られた視差又は距離画像は、適切なキャリブレーションに基づく変換により、3次元データに容易に変換することができ、この3次元データの配列が入力される。
先ず、N個のデータ(3次元データ){p1,p2,p3,…,pN}からM組のサブセット{p11,p21,p31,…,pN1},{p12,p22,p32,…,pN2},…,{p1M,p2M,p3M,…,pNM}を取り出す(ステップS1)。このときの投票総数はMとなる。次に、各サブセット{p1i,p2i,p3i,…,pNi}から、パラメータ(θi,φi,di)を計算する(ステップS2)。次いで、計算されたパラメータを量子化し、投票先グリッドを決定し、これに対して各パラメータ毎に個別に投票を行う(ステップS3)。そして、最終的に投票数が多いパラメータを解とする。即ち、このパラメータを有する平面を平面として推定し、後述するイタレーション等の処理を行い、平面を決定する(ステップS4)。
先ず、ステップS1でデータを取り出す前に行われる処理について説明する。図4は、ステップS1の前工程を示すフローチャートである。例えば距離画像又は視差画像等のような形で得られた3次元座標データ群を処理する方法について説明する。図4に示すように、ステレオ視401又はレンジセンサ402からのデータが入力され、キャリブレーション又はパラメータ変換されて3次元のデータ配列が生成される(ステップS01)。ここで、3次元座標に変換された3次元データ群と共に、この3次元データの信頼度rを示す信頼度パラメータがステレオ視401又はレンジセンサ402から入力される(ステップS02)。本実施の形態においては、ステレオ視等に基づく距離画像を入力画像とし、ステレオ距離計算の過程で得られる信頼度パラメータを有効利用することができる。また、このような信頼度パラメータが利用不可能である場合、これを定数と見なすことで信頼度パラメータが付随しない3次元データにも直接応用することができる。
信頼度パラメータについては様々な評価値を用いて求めることができるが、本実施の形態においては、テンプレートの分散値による信頼度パラメータの求め方及びマッチングスコアによる信頼度パラメータの求め方の2つの方法について説明する。
上述したように、本実施の形態の3次元データは、ステレオ視による距離画像を入力としている。ステレオ距離計測では左右のステレオ画像中の画素の対応関係をテンプレートマッチングによって探索する。例えば、左のステレオ画像を基準画像、右のステレオ画像をマッチング先の画像とし、マッチングテンプレート内の画素の輝度の分散値を求める。そして、探索する全てのテンプレートの分散値を算出し、分散値の大きさを信頼度パラメータとすることができる。即ち、分散値が高い程信頼度が高いことを示し、分散値が低い程、信頼度が低いことを示す。
また、マッチングスコアによる信頼度画像の求め方としては、基準画像におけるテンプレートと、マッチング先画像のエピポーララインに沿って選択された領域とを比較し、これらの領域内の画素の輝度の差からマッチングスコア値を算出する。そして、マッチングスコア値、最小マッチングスコア値付近におけるピークの幅、及びグラフの急峻度値等からマッチングスコアによる信頼度パラメータを求めることができる。即ち、マッチングスコア値が低く、最小スコア値付近におけるピークの幅が小さく、グラフの急峻度値が大きいもの程、信頼度が高いことを示す。
このように、各3次元パラメータは個別に信頼度パラメータが算出され、この信頼度パラメータにより、信頼度が所定の閾値より低いデータは切り捨てる等して入力データの選別が行われる(ステップS03)。上述した何れの従来例においても、入力3次元データの信頼性に関する考慮が全くなされてないため、ノイズが多く紛れ込みやすいデータとなり、このノイズにより性能が悪化するという問題点があったが、本実施の形態のように、信頼度パラメータによる3次元データの選別を行うことにより、信頼性及び安定性を向上し、性能悪化を防止することができる。
次に、ステップS1におけるN個の3次元データからM組のサブセットを取り出す方法について説明する。図5は、ステップS1乃至ステップS3の工程を示すフローチャートである。上述したステップS03にて選別された3次元データ群(x,y,z)及び各データに付随する信頼度パラメータ(信頼度r)が出力され(ステップS11)、これらのデータ群から、平面パラメータを推定するためのサンプルを抽出するサンプリングを行う。サンプリングの方法としては、3次元データ(x,y,z)から
1.全くランダムにサンプリングする方法
2.基準点となる1点を3次元データ全体からランダムにサンプリングし、残りのデータを基準点近傍点、例えば3次元空間内での距離が十分近いデータ群等からサンプリングする方法
3.3次元データを複数の解像度レベルに亘ってスキャンしながら各小近傍(例えば、3次元空間内での距離が十分近いデータ群等)のデータをひとまとまりにしてサブセットとする方法
等がある。
3次元空間内での距離が十分近いデータ群とは、例えば基準点との距離が閾値dmin乃至dmaxであるような任意の点とすることができる。
ここで、入力データ中には、支配的な単一の平面が存在することを仮定したとき、又は何らかの付加情報により支配的な平面が存在することを知ることができたとき等、平面領域が大きい場合には画面全体から高域にサンプリングすると効果的となる。また、小規模領域におけるデータをサンプリングする場合は、小さい段差等を多く含む画像に効果的となる。
次に、ステップS2における平面パラメータの算出方法について説明する。図5に示すステップS21においては、3種類の平面パラメータの算出方法を有し、必要に応じて最適な算出方法をとることができる。先ず、第1のパラメータ算出方法は、3点の3次元データから直接解法を使用してパラメータを決定する方法である。
平面αは、法線ベクトルの向きと座標原点からの距離という3つのパラメータによって決定される。即ち、図6に示すように、法線ベクトルの向きを(θ,φ)で極座標表示し、原点からの距離をdとしたとき、下記数式(4)が平面αを決定する方程式となる。
また、別の見方をすれば、上記数式(4)は、下記数式(5)に置き換えることもできる。
従って、同一直線にない3点の座標が与えられれば上記数式(4)を満たす(θ,φ,d)を求めることは極めて容易であり、どちらか一方が求まれば他方も直ちに決定される。
例えば、3点{p0,p1,p2}が与えられているとき、下記数式(6)で示す平面の方程式は、ベクトルm=(p1−p0)×(p2−p0)を使用して、下記数式(7)によって一意に計算される。
なお、一般性を損ねないものと仮定して、3点は同一直線上にはなく(|ベクトルm|≠0)、3点のうち1点p0は原点と一致しない(|p0|≠0)ものとする。
第2のパラメータ算出方法は、主成分分析による平面パラメータの推定方法である。即ち、画面全体を適当な分解粒度・解像度でスキャンして入力される3次元データを3次元空間内の近傍領域毎に分割する等して得られた各データ群に対し、主成分分析を行って平面パラメータを推定する方法である。
先ず、同一平面上にあると期待されるN個の3次元データを下記数式(8)とする。
上記数式(8)から、これらの共分散行列C=PPTは、(理想的には)ランク(階数)2の3×3行列となる。即ち、Cを固有値分解し、最小固有値に対応する個有ベクトルを取れば、これが平面の法線ベクトルとなる。ここで、第1及び第2主成分は、平面を張る2つのベクトルを与え、これらに垂直なベクトルが第3主成分となる。こうして主成分分析から下記数式(9−1)に示す平面方程式は、下記数式(9−2)により計算される。
但し、v3は、最小の固有値λ3に対応する固有ベクトルである。こうして、第2の方法によっても平面パラメータ(θ,φ,d)は直ちに計算することができる。
また、平面パラメータを求める第3のパラメータ算出方法は、最小二乗法を使用して平面パラメータを当てはめる方法である。例えば、上述と同様に、画面全体を適当な分割粒度・解像度でスキャンし、得られた距離画像等を例えば矩形小領域に分割する等して、3次元空間内の近傍領域毎に3次元データ群を分割し、線形最小二乗法を使用して平面パラメータを算出する方法である。
これは、本発明の実施の形態が適用される状況に巧妙に特化した方法であり、数学的には汎用の方法ではない。即ち、推定すべき平面は座標原点を通らないと仮定して求める方法である。この仮定により、以下に説明する簡明な解法が適用可能となる。
先ず、同一平面上にあると期待されるN個の3次元データを上記数式(8)とし、この平面の方程式を下記数式(10)とする。
上記数式(10)で示される方程式は、座標原点を通らない任意の平面を表す方程式である。ここで、パラメータΓ=(α,β,γ)には、何の制約条件も付いていない。このとき、解くべき方程式は、下記数式(11)となる。
従って、特異値展開等の方法によりPの一般化逆行列P−1を計算すれば、下記数式(12)に示すパラメータΓが、下記数式(13)に示す誤差残差rを最小二乗法における意味で最小にする最適解を与える。
なお、ここで、下記数式(14)が成り立つ。
次に、ステップS3における投票について説明する。平面を決定するパラメータとして(θ,φ,d)を使用することは極めて自然である。ここで、平面の法線ベクトルnは原点を中心とする半径1の単位球の表面上に存在するとみることができ、下記数式(15)に示す関係が成り立つ。
しかしながら、法線ベクトルの微少変化を考えると、ヤコビアンJは下記数式(16)となるため、平面を決定するパラメータ(θ,φ,d)をハフ変換を使用する際の投票先の空間の直交軸を張るパラメータとして利用するのは適切ではない。
即ち、パラメータ(φ,θ)の極座標をとると、図7(a)に示す投票空間500において、各グリッド501は同一面積であるであるのに対し、図7(b)に示すように、実際の空間に示す面積は異なる。即ち、実際の空間を球体510としたとき、例えば球体の中心を通り紙面に平行且つ上向きのAの直線を中心軸とし、上記中心から中心軸に垂直な方向の球体510上のグリッド511の面積を例えばSとすると、上記中心から中心軸方向の球体510上のグリッド512の面積はScosθとなり、グリッドの面積が異なる。従って、図7(a)に示す投票空間500に投票すると、実際には、異なる面積のグリッド上に投票することになり、適切な投票値を得ることができない。
このように、投票先の3次元パラメータ空間を素朴に設計して投票した場合、元の対応空間内で異なる面積のグリッドに投票することになり、ピークが鋭く現れない場合があり、ノイズに対する脆弱性となる。
ここで、本願発明者等は投票空間下記数式(1−1)又は数式(1−2)で定義すれば、上述の問題を解決することができることを知見した。
図8は、上記数式(1−1)に示す投票空間を示す模式図である。図8(a)に示すように、投票空間600を上記数式(1−1)で定義することにより、投票空間600に仕切られた直交グリッド601のひとつひとつが、図8(b)に示す実際の3次元空間610における平面の微小変化に対し、一様に対応付けられるとみなすことができる。上記数式(1−1)のように仮定することにより、例えば紙面に平行な方向の球体の中心を通る直線を中心軸とすれば、中心軸に平行な方向のグリッド611及び中心軸に垂直な方向のグリッド612は共に面積Sとなり、グリッドサイズが等しくなる。また、投票空間を上記数式(1−2)で表される空間としても、各グリッドは、元の対応空間内で同一の面積を占めるものとなる。なお、投票空間は、その各グリッドが対応空間内で同一の面積を占めるように設計すればよく、上記数式(1−1)及び(1−2)に示されるものに限らない。
このように、平面を指定する平面パラメータは、元の3次元直交座標空間に対して極座標を形成することから、投票スロット(グリッド)が元の対応空間内で同一の大きさとなるように投票空間を上記数式(1−1)又は(1−2)として設計することにより、更にロバストで精度が高いデータが得られ、従ってサンプリング数を減らすことができ、処理が高速化する。
次にステップS3の投票について説明する。一般に、投票の際の1票の重みは同じである場合が多い。即ち、例えば1の投票に対しその投票値を1とする。これに対して、本実施の形態においては、誤差の性質を考慮して一票の重みを定め、ノイズに対するロバスト性を向上する。即ち、1の投票に対し、誤差の評価によって、その投票値を例えば0.5又は2等とするものである。投票数誤差の評価方法としては以下に説明する方法等がある。
先ず、第1の誤差評価方法としては、投票先を計算(平面パラメータを計算)するために使用した元の3次元データの信頼度(信頼度パラメータ)を使用する方法である。この場合、平面パラメータを求めるのに使用した各3次元データに付随する各信頼度を平均する等して投票値に重み付けすることができる。
第2の誤差評価方法は、投票先を計算するために使用した元の3次元データの誤差の標準偏差を使用する方法である。この誤差とは、例えば、3点から直接解法によって平面パラメータを求める第1のパラメータ算出方法であれば誤差0、主成分分析によって平面パラメータを求める第2のパラメータ算出方法であれば本来0であるべき最小固有値λ3から計算した値、最小二乗法によって平面パラメータを求める第3のパラメータ算出方法であれば誤差残差rから計算した値等とすることができる。
第3の誤差方法としては、3次元距離データがステレオ視装置、又はレンジセンサ等から得られる場合、一般的に視差方向における誤差は極めて小さく、距離方向における誤差は、距離の測定値に比例する。このことにより、計算元の3次元データの分布を視点中心の球面に投影したときの立体角が大きい程、測定誤差が計測結果に与える影響が小さくなるため、この立体角に応じて投票値に重み付けをする。また、立体角が同じ場合は実空間でのデータの分布の分散が大きい程、特に、主成分分析による第2の方法においては、第1主成分と第2主成分との積λ1λ2が大きい程、測定誤差が計算結果に与える影響が小さい。このことを考慮して投票値の重み付けを行うことができる。
このようにして誤差評価によって、1票の投票値に対して異なる重み付けを行うことにより、入力データのバラツキ、距離画像等を撮像する装置の特性によるバラツキ等、及びサンプルリングの仕方によるバラツキ等を低減することができる。また、これらのことから、計算結果の誤差に対するセンシティビティの指標を得ることができる。
これらの誤差の評価値によって、投票の際の1票の投票値の重みを異ならせ、ノイズに対してロバストな投票値を得ることができる(ステップS31)。そして、投票総数が閾値Nmaxを超えたか、又は投票総数が閾値Nmaxを超え且つ投票値の分布が十分なピークを形成しているか否かを判定する(ステップS32)。十分なピークとは、ピーク位置のグリッドにおけるデータが例えば全ての投票の数(総投票数)の一定以上の割合を有するか、又はピーク位置のグリッドにおける投票数の合計(得票数)又は投票値の合計(得票値)が所定の閾値以上であるか否か等により判定することができる。ここで、十分であると判定された場合は、ピーク位置又はその近傍のグリッド内の平面パラメータを後述する方法にて平均処理する。一方、十分でないと判定された場合は、ステップS21に戻り、3次元データ群からデータサブセットを抽出して平面パラメータを算出する。
次に、平面を決定するステップS4について説明する。図9及び図10は平面決定工程を示すフローチャートである。ステップS4の平面決定においては、図9に示すように、先ず、ピーク値近傍における重み付き平均処理が行われる(ステップS41)。この重み付き平均処理により、ピークのより正確な位置を推定することができる。
投票空間のピーク値近傍グリッド集合をgとすると、この集合gに含まれる各グリッドGiの得票値(投票値の合計)をvi、代表パラメータを(θi,φi,di)とすれば、推定パラメータ(θk,φk,dk)は下記数式(17)として算出される。
上記数式(17)に示すように、各グリッドの代表パラメータの量子化サイズよりも細かい粒度でのパラメータ推定が可能となる。ここで、上記数式(17)では、ピーク値近傍においては、確率分布がほぼ正規分布をなすと仮定している。
図9に示すように、ステップS41での重み付き平均処理により、推定パラメータの初期値(初期パラメータ)(θ0,φ0,d0)を出力する。次に、この初期パラメータ(θ0,φ0,d0)と3次元座標700とからイタレーションを計算する(ステップS42)。このイタレーションにより、更に正確な平面パラメータを推定する。そして、図10に示すように、ステップS42のイタレーションによるパラメータの変化量が収束するか、又は所定の回数以上繰り返すかして終了判定を行い(ステップS43)、その結果の信頼度を判定し(ステップS44)、終了判定された平面パラメータ(θ,φ,d)及びその信頼度を出力する。
本実施の形態においては、3次元データはフィルタバンク(FBK)により、リアルタイムに多重解像度化されており、上述のハフ変換による初期パラメータ推定の際には低解像度の3次元データを使用して処理を高速化すると共に、このイタレーションにおいては、高解像度の3次元データを使用することにより、精度を更に高めるものである。即ち、イタレーションにおいては、初期パラメータから推定される推定平面の十分近傍にある点をサンプルとして抽出する。
以下、このステップS42及びS43について更に詳細に説明する。図11は、ステップS42及びS43を示すフローチャートである。図11に示すように、初期パラメータ(θ0,φ0,d0)が入力されると、上述したステップS03にて信頼度パラメータでフィルタ済みの入力3次元データセットの中から、誤差tolで推定平面にのるデータポイント、即ち、下記数式(18)の条件を満たすデータサブセットPiを抽出する(ステップS421)。誤差tolにおいて、誤差許容範囲の初期値tol0は、予め適当に定めるものとする。
次に、下記数式(19)に示すPiの一般化逆行列Pi−1を計算し、最小二乗の意味でのデータに最適に当てはまる平面のパラメータΓ(αi,βi,γi)=(−1,−1,…,−1)Pi−1を求める(ステップS422)。
そして、パラメータの変化量が十分小さく収束したとみなせるか、又はイタレーションの回数が予め設定された最大繰り返し数Itermaxに達するかを判定し(ステップS431)、収束したか又は最大繰り返し数Itermaxに達している場合はステップS432へ進む。また、誤差tolを小さくさせて収束を早めることも可能である。一方、収束していない、又は所定回数に達していない場合は、次回のイタレーションにおける誤差許容値toliを誤差残差riから決定し、iをインクリメントしてステップS421に戻る。
ステップS431から入力されたデータから下記数式(20)によって平面パラメータ(θ,φ,d)を決定する(ステップS342)。
図10に戻って、ステップS44では、ステップS43から出力された平面パラメータ(θ,φ,d)の信頼度を計算する。この信頼度の計算は、事前知識を有する場合は、ステップS432において算出された平面パラメータ(θ,φ,d)と、事前知識とを比較し、予想の範囲内であることを確認し、範囲外である場合はこの値を棄却する。また、上述したステップS3におけるピーク値近傍の得票数又は得票値が夫々投票総数又は投票値の合計に占める割合、及びステップS42のイタレーションにおいてパラメータ推定に使用した3次元データの個数等を推定結果の信頼度として使用することができる。即ち、信頼度は下記数式(21−1)乃至(21−3)に示す各指数によって計算することができる。ここで計算した信頼度は、平面パラメータと共に出力する。また、規定の信頼度に達しない場合は、そのデータを棄却する等することができる。
また、投票空間には、複数のピークが検出された場合には、各ピーク毎に上述したパラメータ推定処理(ステップS42乃至S44)を繰り返し、最も信頼度が高いパラメータを平面パラメータとして決定する。
更に、決定された平面パラメータ(θ,φ,d)を有する平面について、z’=0とする座標変換行列を求め、入力データ群をその変換行列で写像して出力することにより、後述する後段においての処理が便利である。
本実施の形態においては、3次元データからハフ変換により直接平面パラメータを推定することができるため、ハフ変換の確率密度推定としての利点、即ち、ノイズに対してロバストなデータを得ることができ、また、平面パラメータを求める際は、ランダムにサンプリングすることができるため、より速く全体の統計的な特徴点を把握することができる。また、3次元パラメータの投票空間を上記数式(1−1)又は(1−2)と定義するため、より正確な投票結果を得ることができる。更に、ノイズが多い入力3次元データに対して信頼度パラメータを使用してデータの選別を行うと共に、この選別された3次元データから求められた3次元パラメータ自体の信頼性も考慮するため、ノイズに対して極めてロバストであり、信頼性及び安定性が高い結果を得ることができる。更にまた、投票を適当な回数でうち切り、イタレーション等により精度を向上することにより、ハフ変換により平面パラメータを求めても高速化が可能である。入力データをハードウェアで複数解像度でサンプリングするため、データ全体の大局的な構造をつかむフェーズでの高速化が可能となる。
また、ハフ変換は、投票先の3次元パラメータ空間の量子化サイズと精度との間にトレードオフの関係がある。即ち、量子化サイズを小さくすると、精度は向上するものの、サンプリング数を増やさなければならず、ピーク検出に時間がかかるが、量子化サイズを大きくすると、高速化するものの、結果の粒度が粗く精度が低下する。本実施の形態においては、投票結果のピーク周辺で重み付き平均処理をすることにより、投票先の3次元パラメータ空間の量子化サイズよりも細かい粒度のパラメータ推定が可能である。更に、ハフ変換の結果を初期パラメータとしてイタレーションによる最適化を実行して最終結果を生成するため、投票先の3次元パラメータ空間の量子化サイズをある程度の大きさとしても十分高い精度が得られる。
更に、ハフ変換においては、投票先の3次元パラメータ空間のサイズが大きくなると、処理速度が遅くなり、また記憶するデータ量が増加するため、カメラと平面との位置関係を別の手段で取得し、その情報を利用することでパラメータの検索空間を制限することにより、更に高速化が可能となる。このように、本実施の形態においては、ノイズにロバストであり精度が高いというハフ変換の利点を生かしつつ、高速化を実現することができる。
更にまた、3次元データ群から平面パラメータを推定する場合、その関係式は非線形の制約条件を含むため、1ステップの直接解放で解くことは難しいが、本実施の形態においては、カメラと平面との位置関係に対して、特殊な仮定、即ち、平面はカメラ位置(原点)を通らないという仮定をすることで、単なる線形問題に定式化し直し、この定式化を使用したことにより、極めて容易に平面方程式(平面パラメータ)が算出できる。
次に、以上説明した平面抽出部PLEX320を有する上述した図2に示すロボット装置1のソフトウェアの構成及び動作について詳細に説明する。図12は、図2に示すソフトウェア300の動作を示すフローチャートである。
図2に示すソフトウェア300のキネマティックオドメトリKINE310には、上述したように、画像データ301及びセンサデータ302が入力される。この画像データ301は、カラー画像及びステレオカメラによる視差画像である。また、センサデータ302は、ロボット装置の関節角等のデータである。キネマティックオドメトリKINE310は、これらの入力データ301,302を受け取り、メモリに格納されていたそれまでの画像及びセンサデータを更新する(ステップS101)。
次に、これら画像データ301とセンサデータ302との時間的な対応を取る(ステップS102−1)。即ち、画像データ301の画像が撮像された時間におけるセンサデータ302の関節角を割り出す。次いで、この関節角のデータを使用してロボット装置1が中心に固定されたロボット中心座標系を頭部ユニットに設けられたカメラの座標系へ変換する(ステップS102−2)。この場合、本実施の形態においては、ロボット中心座標系からカメラ座標系の同時変換行列等を導出し、この同時変換行列311とこれに対応する画像データとを画像認識を行うオブジェクトへ送信する。即ち、同時変換行列311及びこれに対応する視差画像312を平面抽出部PLEX320へ出力し、同時変換行列311及びカラー画像313をランドマークセンサ部CLS340へ出力する。
また、センサデータ302から得られる歩行パラメータと、足底センサを使用した歩数のカウント数とからロボット装置1の移動量を算出し、ロボット装置1のロボット装置中心座標系における移動量を算出する。以下、ロボット装置中心座標系の移動量をオドメトリともいう。このオドメトリ314を障害物グリッド算出部OG330及び絶対座標算出部LZ350へ出力する。
平面抽出部PLEX320は、キネマティックオドメトリKINE310にて算出された同時変換行列311と、これに対応するステレオカメラから得られる視差画像312とが入力されると、それまでメモリに格納されていたこれらのデータを更新する(ステップS103)。そして、ステレオカメラのキャリブレーションパラメータ等を使用して視差画像312から3次元の位置データ(レンジデータ)を算出する(ステップS104−1)。次いで、このレンジデータからハフ変換等を使用して、例えば壁及びテーブル等の平面を除く平面を平面として抽出する。また、座標変換行列311からロボット装置1の足底が接地している平面との対応を取り、床面を選択し、床面上にない点、例えば所定の閾値よりも高い位置にあるもの等を障害物として床面からの距離を算出し、この障害物情報(obstacle)321を障害物グリッド算出部330に出力する(ステップS104−2)。
障害物グリッド算出部OG330では、上述したように、キネマティックオドメトリKINE310にて算出されたオドメトリ314と、平面抽出部PLEX320にて算出された障害物の観測情報(障害物情報)321とが入力されると、メモリに格納されていたそれまでのデータを更新する(ステップS105)。そして、床面上に障害物があるか否かの確率を保持する障害物グリッドを確率的手法により更新する(ステップS106)。
この障害物グリッド算出部OG330は、ロボット装置1を中心とした例えば周囲4mの障害物情報、即ち、上述した環境地図と、ロボット装置1の向く方角を示す姿勢情報とを保持しており、上述の方法により、環境地図を更新し、この更新した認識結果(障害物情報331)を出力することにより、上位レイヤ、即ち、本実施の形態においては、経路計画決定部SBL360にて障害物を回避する計画を作成することができる。
ランドマークセンサCLS340は、キネマティックオドメトリKINE310から同時変換行列311及びカラー画像313が入力されると、予めメモリ内に格納されていたこれらのデータを更新する(ステップS107)。そして、カラー画像313の画像処理を行って、予め認識しているカラーランドマークを検出する。このカラーランドマークのカラー画像313上での位置及び大きさをカメラ座標系での位置に変換する。更に、同時変換行列311を使用し、カラーランドマークのカメラ座標系での位置をロボット中心位置座標系における位置に変換し、ロボット中心位置座標系におけるカラーランドマーク位置の情報(カラーランドマーク相対位置情報)341を絶対座標算出部LZ350に出力する(ステップS108)。
絶対座標算出部LZ350は、キネマティックオドメトリKINE310からのオドメトリ314と、ランドマークセンサ部CLS340からのカラーランドマーク相対位置情報341とが入力されると、予めメモリ内に格納されていたこれらのデータが更新される(ステップS109)。そして、絶対座標算出部LZ350が予め認識しているカラーランドマークの絶対座標(ワールド座標系での位置)、カラーランドマーク相対位置情報341、及びオドメトリ314を使用し、確率的手法によりロボット装置の絶対座標(ワールド座標系での位置)を算出する。そして、この絶対座標位置351を経路計画決定部SBL360に出力する。
経路計画決定部SBL360は、障害物グリッド算出部OG330から障害物グリッド情報331が入力され、絶対座標算出部LZ350から絶対座標位置351が入力されると、予めメモリに格納されていたこれらのデータが更新される(ステップS111)。そして、経路計画決定部SBL360障害物グリッド算出部OG330からの障害物情報331により、ロボット装置1の周囲に存在する障害物に関する認識結果を取得し、絶対座標算出部LZ350から現在のロボット装置1の絶対座標を取得することにより、絶対座標系又はロボット装置中心のロボット中心座標系で与えられた目標地点に対して障害物に衝突せずに歩行可能な経路を生成し、経路に応じて経路を遂行する動作コマンドを発行する。即ち、入力データから状況に応じてロボット装置1が取るべき行動を決定し、その行動列を出力する(ステップS112)。
また、人間によるナビゲーションの場合には、障害物グリッド算出部OG330からロボット装置の周囲に存在する障害物に関する認識結果及び絶対座標算出部LZ350からの現在のロボット装置の位置の絶対座標をユーザに提供し、このユーザからの入力に応じて動作コマンドを発行させる。
図13は、上述のソフトウェアに入力されるデータの流れを模式的に示す図である。なお、図13において、図1及び図2に示す構成と同一構成要素には同一符号を伏してその詳細な説明は省略する。
顔検出部FDT(FaceDetector)371は、画像フレーム中から顔領域を検出するオブジェクトであり、カメラ等の画像入力装置からカラー画像202を受け取り、それを例えば9段階のスケール画像に縮小変換する。この全ての画像の中から顔に相当する矩形領域を探索する。重なりあった候補領域を削減して最終的に顔と判断された領域に関する位置、大きさ、及び特徴量等の情報372を出力して、顔識別部FI(FaceIdentify)377へ送る。
顔識別部FI377は、検出された顔画像を識別するオブジェクトであり、顔の領域を示す矩形領域画像からなる情報372を顔検出部FDT371から受け取り、この顔画像がメモリに格納されている手持ちの人物辞書のうちでどの人物に相当するかを比較して人物の識別を行う。そして、顔検出部FDT371から受け取った顔画像の顔画像領域の位置、大きさ情報と共に人物のID情報378をDIL379に出力する。
色認識部MCT(MultiColorTracker)373は、色認識を行うオブジェクトであり、カメラ等の画像入力装置からカラー画像202を受け取り、予め保有している複数のカラー・モデル情報に基づいて色領域を抽出し、連続した領域に分割する。色認識部MCT373は、分割した各領域の位置、大きさ及び特徴量等の情報374を距離情報付加部DIL(DistanceInformationLinker)379に出力する。
動き検出部MDT(MotionDetector)375は、画像の中で動いている部分を検出するオブジェクトであり、検出した動き領域の情報376を距離情報付加部DIL379に出力する。
距離情報付加部DIL379は、入力された2次元の情報に距離情報を付加して3次元の情報を出力するオブジェクトであり、顔検出部FI377からのID情報378、色認識部MCT373からの分割した各領域の位置、大きさ及び特徴量等の情報374並びに動き検出部MDT375からの動き領域の情報376に距離情報を付加して3次元情報380を短期記憶部STM(ShortTermMemory)381に出力する。
短期記憶部STM381は、ロボット装置1の外部環境に関する情報を比較的短い時間だけ保持するオブジェクトであり、ArthurDecoder(図示せず)から音声認識結果(単語、音源方向、確信度)を受け取り、色認識部MCT373から肌色の領域の位置、大きさと顔領域の位置、大きさを受け取り、顔識別部FI377から人物のID情報等を受け取る。また、ロボット装置1の機体上の各センサからロボット装置の首の方向(関節角)を受け取る。そして、これらの認識結果及びセンサ出力を統合的に使って、現在どこにどの人物がいて、しゃべった言葉がどの人物のものであり、その人物とはこれまでにどんな対話を行ったのかという情報を保存する。こうした物体、即ちターゲットに関する物理情報と時間方向でみたイベント(履歴)を出力として、経路計画決定部(状況依存行動階層)(SBL)360等の上位モジュールに渡す。
経路計画決定部SBL360は、上述の短期記憶部STM381からの情報を基にロボット装置1の行動(状況に依存した行動)を決定するオブジェクトである。複数の行動を同時に評価したり、実行したりすることができる。また、行動を切り替えて機体をスリープ状態にしておき、別の行動を起動することができる。
以下、上述した各オブジェクトについて更に詳細に説明する。先ず、上述の実施の形態において説明した平面抽出部PLEX320について説明する。平面抽出部PLEX320は、同時変換行列311と、これに対応する図14に示す左目画像201L及び右目画像201Rから得られた視差画像312を受け取り、以下の図15に示す処理手順にしたがって障害物を認識する。
先ず、平面抽出部PLEX320は、同時変換行列311とこれに対応する視差画像312を受け取る(ステップS61)。そして、視差画像312からレンズ歪みとステレオの取り付け誤差を吸収したキャリブレーションパラメータを利用して、画素毎にカメラ座標から見た3次元の位置データ(x,y,z)を距離画像として生成する(ステップS62)。
次に、平面抽出部PLEX320は、ステップS62で生成された距離画像からハフ変換等を用いて画像中の支配的な平面のパラメータを検出する(ステップS63)。この平面のパラメータは図16に示すパラメータ空間(θ,φ)(投票空間)のヒストグラムにより検出される。パラメータの投票が小さいいと障害物、大きいと平面上のものと見なすことができる。この平面のパラメータを使って、元々画像から得られた距離の測定点が平面上からどれくらいの距離であるかが分かる。以上は、上述の実施の形態において説明した通りである。
次に、カメラ座標系の同時変換行列311から図17に示すようにロボットの足底接地面への変換を求める(ステップS64)。これにより、カメラ座標系で表現される接地平面のパラメータの算出が行われる。そして、前記ステップS63での画像による平面の検出と、前記ステップS64での足底接地平面の照合から、画像中の平面パラメータから床面に相当するものを選択する(ステップS65)。
次に、前記ステップS65にて選択された平面パラメータを使って、元の距離画像から平面上に載っている点を選択する(ステップS66)。これは下記数式(22)、数式(23)を使用して、平面からの距離dがしきい値Dthより小さい事を使って判断する。
図18には、しきい値Dthを1cmとした範囲で選択された測定点(×印)を示す。この図18にて、黒く抜かれている点が平面と判断されなかった点である。
したがって、前記ステップS66にて平面上(床面)上に載っている点以外の点(床面上に無い点)を障害物としてステップS67にて認識することができる。これらの判断結果は床平面上の点(x、y)とその高さzで表現される。例えば、高さz<0は、平面より凹んでいる点を示す。
これにより、高さがロボットより高い障害物点はそれをくぐることができるので障害物ではないという判断も可能とすることができる。
また、ロボットビュー(図19の(a))から得た床面抽出画像(図19の(b))の高さzを0(z=0)となるように座標変換すれば、図19の(c)に示すように、平面上の2次元の位置で床か障害物かを表現することができる。
このように、障害物認識装置は、多数の測定点を使って平面の検出を行うために安定した平面を抽出できる。また、画像から得られる平面候補をロボットの姿勢から得られる床面パラメータと照合することで正しい平面を選択できる。また、障害物を認識するのではなく、実質的には床面を認識するので障害物の形状や大きさに因らない認識が可能である。また、床面からの距離で障害物を表現するので細かい段差や凹みまで検出することができる。またロボットの大きさを考慮して跨いだり、くぐったりする判断も容易である。さらに、2次元床面上の障害物表現となるので経路計画などに既存の移動ロボットで用いられる手法が適用可能であるし、3次元の表現より高速に演算できる。
障害物グリッド算出部OG330は、所定の大きさのグリッドに分割された、ロボット中心座標系の地図情報である環境地図と、例えば環境地図上においてx軸方向又はy軸方向等の所定の方角からロボット装置が向く方角を示す姿勢情報とを有している。また、環境地図は、障害物情報が上述した平面抽出部PLEX320から入力され、障害物として認識されているグリッド(障害物占有領域)を有する。この障害物グリッド算出部OG330は、ロボット装置が移動すると、即ち、オドメトリ314が入力されると、予めメモリ内に格納されていた環境地図及び姿勢情報を、ロボット装置の姿勢の変化(差分移動角)及び移動距離(差分移動量)に伴って、予め認識している環境地図及び姿勢方向の情報を更新する。ここで、差分移動量がグリッドサイズより小さければ環境地図を更新せず、移動量がグリッドのサイズを超える場合は環境地図を更新する。また、環境地図及びそのグリッドの大きさを必要に応じて適宜変更することにより、計算量及びメモリコピーコスト等を低減することができる。
ランドマーク位置検出部CLS340は、図20に示すように、例えば、グリーン部分1001、ピンク部分1002、又はブルー部分1003等のカラーを有する人工的なカラーランドマーク1004を含む環境において、ロボット装置1のセンサ情報と、ロボット装置1が行った動作情報によって、ロボット装置の自己位置(位置及び姿勢)を同定する。
例えば、2次元的な作業空間上では、略等間隔状にグリッド(x,y)を設け、各グリッドの位置l(localization)毎にロボット装置が存在する確率p(l)を管理する。この存在確率p(l)は、ロボット装置の移動(move)、即ち内界観測情報a、又はランドマークの観測、即ち外界観測情報sの入力に応じて更新される。
存在確率p(l)は、ロボット装置の以前の状態、即ち自己位置l'における存在確率p(l')と、以前の状態l'において移動aを行ったときに状態lになるという遷移確率p(l|a,l')に依拠する。即ち、これまでの各状態l'になる確率p(l')と、状態l'において移動aを行ったときに状態lになるという遷移確率p(l|a,l')の積を加算していく(若しくは積分する)ことによって、現在の状態、即ち自己位置lになるという存在確率p(l)に収束する。従って、外界観測結果としてのロボット装置の移動aが観測されたときには、各グリッドでは、下記数式(24)に従ってロボット装置の存在確率p(l)を更新することができる。
また、状態、即ち自己位置lにロボット装置が存在するという存在確率p(l)は、存在確率p(l)とこの状態lにおいてランドマークを観察するという遷移確率p(s|l)に依拠する。したがって、状態lにおいてランドマークの観測、即ち外界観測情報sが入力された場合には、下式に従ってロボット装置の存在確率p(l)を更新することができる。但し、下記数式(25)に示すように右辺では、正規化のため、ランドマークを観察するという確率p(s)で除して正規化している。
図21は、マルコフ・ローカリゼーションと拡張カルマン・フィルタを併用した本実施形態に係るランドマークセンサCLS(自己位置同定システム)340の機能構成を模式的に示している。同図に示すように、このランドマークセンサCLS340は、マルコフ・ローカリゼーション部(ML)342と、拡張カルマン・フィルタ部(EKL)343と、拡張カルマン・フィルタ部343の動作を制御するEKL制御部344とで構成されている。
マルコフ・ローカリゼーション部342は、作業空間内の自分の位置を離散的なグリッド上の自己位置確率密度分布として保持し、ランドマークの観測に関する外界観測情報sと、ロボット装置自身の動作に関する内界観測情報aを入力して、自己位置確率密度分布の更新を行う。そして、各時刻において、自己位置確率密度分布の最も高い値を持つグリッドを自己位置の推定結果としてEKL制御部344に出力する。
図22は、マルコフ・ローカリゼーション部342により求められた各グリッド上での自己位置確率密度分布を表している。同図では、各グリッドにおける確率密度を濃淡により表現している。最も色が濃い、即ち自己位置確率密度分布が最も高い値を有するグリッドが自己位置の推定結果となる。
このマルコフ・ローカリゼーションによる自己位置同定は、センサのノイズに対してロバストであり、同定解の精度は粗いが解の収束速度が速いことを主な特徴とする。
一方、図21に示す拡張カルマン・フィルタ部343は、自己位置を状態変数[x,y,θ]を実測値として保持し、環境内に設置されたカラーランドマーク1004を観測すると、ランドマークからの相対位置に基づいて自己位置を推定する。また、自身の動作情報を観測すると、その動作情報に基づいて状態量の推定を行う。
拡張カルマン・フィルタ部343は、ロボット装置自身の動作情報aと状態、即ち、自己位置lとの関係を規定した状態モデルと、自己位置lとランドマークの観測情報sとの関係を規定した観測モデルとで構成されている。
状態モデルは、ロボット装置が状態(自己位置)lにおいて動作aを行った場合における理論的な状態lを与える遷移関数F(l,a)を備えている。実際には理論的な状態lに対してノイズ成分wが重畳されることから、ロボット装置の状態lは状態モデルにより下記数式(26)のように収束する。
また、観測モデルは、ロボット装置が状態、即ち自己位置iにおいて、ある既知の環境Env(例えばランドマークの位置など)に関する観測の理論値sを与える観測関数H(Env,l)を備えている。実際には観測の理論値に対してノイズ成分vが重畳されることから、観測値sは観測モデルにより下記数式(27)のように収束する。
なお、状態l並びに観測sに重畳されるそれぞれのノイズw及びvは、ここではゼロを中央値とするガウス分布として仮定する。
ロボット装置自身の動作情報aと自己位置lとの関係を規定した状態モデルと自己位置lとランドマークの観測情報sとの関係を規定した観測モデルを備えた拡張カルマン・フィルタ部343において、動作情報aは内界観測結果として、ランドマークの観測情報sは外界観測結果として、夫々既知である。従って、ロボット装置の自己位置同定を、ロボット装置の状態lをロボット装置の動作情報a及び観測情報sにより推定するという問題に帰着することができる。ここでは、ロボット装置の動作a、状態l、及び観測sをそれぞれ下記に示すガウス分布として表現することができる。
ある時点でのロボット装置の状態lがある中央値と及び共分散を有するガウス分布をとるものとして推定する。そして、ロボット装置の動作aが観測されたときには、状態lの推定値に関する中央値並びに共分散を下記数式(28−1),(28−2)により更新することができる。
ここで、▽Fl,▽Faは、下記とする。
同様に、ある時点でのロボット装置の状態lがある中央値及び共分散を有するガウス分布をとるものとして推定する。そして、ランドマークの観測情報sが観測されたときには、状態lの推定値に関する中央値並びに共分散を下記数式(29−1),(29−2)により更新することができる。
ここで、各パラメータは下記数式(30−1)乃至(30−4)とする。
拡張カルマン・フィルタ343はセンサ情報に対するロバスト性に優れているので、拡張カルマン・フィルタ部343の推定結果は、ランドマークセンサCLS340全体の出力としている。
EKL制御部344は、マルコフ・ローカリゼーション部342の出力結果に応じて拡張カルマン・フィルタ部344の動作を制御する。より具体的には、マルコフ・ローカリゼーション部342の自己位置推定結果に基づいて、ランドマークの観測情報sに関する妥当性を検証する。観測情報sの妥当性は、マルコフ・ローカリゼーション部342において最大の存在確率となるグリッド位置mlpにおいてランドマークを観測する確率p(s|mlp)が所定の閾値パラメータthreshobsを越えたかどうかで判断することができる。
グリッド位置mlpにおいてランドマークを観測する確率p(s|mlp)が閾値パラメータthreshobsを下回る場合には、センサ・ノイズに対してロバストなマルコフ・ローカリゼーション部342においてさえ、センサ・ノイズのために同定解が充分に収束していないことが推測される。このような場合、センサ・ノイズに対するロバスト性が低い拡張カルマン・フィルタ部343において自己位置を推定しても、精度が高い解が得られず、むしろ演算時間を浪費するだけである。このため、観測情報sが妥当でないと判断された場合には、切換器345を用いて拡張カルマン・フィルタ部343への外界観測情報s、即ちランドマークの観測情報の入力を遮断して、拡張カルマン・フィルタ部343における自己位置推定値の更新を停止させる。
また、EKL制御部344は、拡張カルマン・フィルタ部343の自己位置推定結果の妥当性も検証する。自己位置推定結果の妥当性は、推定された状態lの中央値及び共分散を用いて、マルコフ・ローカリゼーション部342から出力される存在確率p(l)との分布比較テストにより判断することができる。分布比較テストの一例は、カイ自乗テストchi−square−test(ml,ekf)である。
分布比較テストによりマルコフ・ローカリゼーション部342と拡張カルマン・フィルタ部343との各確率分布が類似していない場合には、センサ・ノイズに対するロバスト性が低い拡張カルマン・フィルタ部343における自己位置推定値の方が、センサ・ノイズの影響により妥当でないと判断することができる。このような場合、EKL制御部344は拡張カルマン・フィルタ部343の再初期化を行わせる。何故ならば、拡張カルマン・フィルタは再復帰に多大な時間を要するからである。
次に、ランドマークセンサCLS340の動作について説明する。図23は、ランドマークセンサCLS340の動作を示すフローチャートである。図23に示すように、ロボット装置1の移動に関する内界観測情報aがランドマークセンサCLS340に入力されると、まずマルコフ・ローカリゼーション部342において、上記数式(24)を用いて自己位置推定値の更新処理が行われる(ステップS201)。次いで、拡張カルマン・フィルタ部343において、上記数式数(28−1),(28−2)を用いて自己位置推定値の更新処理が行われる(ステップS202)。
また、ランドマークの観測に関する外界観測情報sがランドマークセンサCLS340に入力されると、まずマルコフ・ローカリゼーション部342において、上記数式(25)を用いて、自己位置推定値の更新処理が行われる(ステップS211)。
マルコフ・ローカリゼーション部342の出力結果は、EKL制御部344に入力されて、観測情報sの妥当性が検証される(ステップS212)。観測情報sの妥当性は、マルコフ・ローカリゼーション部342において最大の存在確率となるグリッド位置mlpにおいてランドマークを観測する確率p(s|mlp)が所定の閾値パラメータthreshobsを越えたかどうかで判断することができる。
グリッド位置mlpにおいてランドマークを観測する確率p(s|mlp)が閾値パラメータthreshobsを下回る場合には、センサ・ノイズに対してロバストなマルコフ・ローカリゼーション部342においてさえ、センサ・ノイズのために同定解が充分に収束していないことが推測される。このような場合、センサ・ノイズに対するロバスト性が低い拡張カルマン・フィルタ部343において自己位置を推定しても、精度のよい解が得られず、むしろ演算時間を浪費するだけである。このため、観測情報sが妥当でないと判断された場合には、切換器345を用いて拡張カルマン・フィルタ部343への外界観測情報s、即ちランドマークの観測情報の入力を遮断して、拡張カルマン・フィルタ部343における自己位置推定値の更新を停止させる。
他方、観測情報sを検証した結果、妥当性を満たす、即ちグリッド位置mlpにおいてランドマークを観測する確率p(s|mlp)が閾値パラメータthreshobsを上回る場合には、さらに拡張カルマン・フィルタ部343において、上記数式(29−1),(29−2)を用いて更新処理が行われる(ステップS213)。
拡張カルマン・フィルタ部343による自己位置推定の結果は、EKL制御部344に入力されて、その妥当性が検証される(ステップS214)。拡張カルマン・フィルタ部343による自己位置推定結果の妥当性は、推定された状態lの中央値及び共分散を用いて、マルコフ・ローカリゼーション部342から出力される存在確率p(l)との分布比較テストにより判断することができる。分布比較テストの一例は、カイ自乗テストchi−square−test(ml,ekf)である。
分布比較テストによりマルコフ・ローカリゼーション部342と拡張カルマン・フィルタ部343それぞれの確率分布が類似していない場合には、センサ・ノイズに対するロバスト性が低い拡張カルマン・フィルタ部343における自己位置推定値の方が、センサ・ノイズの影響により妥当でないと判断することができる。このような場合、EKL制御部344は拡張カルマン・フィルタ部343の再初期化を行わせる(ステップS215)。何故ならば、拡張カルマン・フィルタは再復帰に多大な時間を要するからである。
このようにして、ランドマークセンサCLS340では、広い範囲で比較的短い探索時間で探索を行う大域探索と高精度だが探索時間を要する局所的探索とを併用して、高精度で、高速且つロバストな自己位置同定を行うことができる。
経路計画決定部SBL360は、障害物グリッド算出部OG330からの障害物情報331により、ロボット装置1の周囲に存在する障害物に関する認識結果を取得し、絶対座標算出部LZ350から現在のロボット装置1の絶対座標を取得することにより、絶対座標系又はロボット装置中心のロボット中心座標系で与えられた目標地点に対して障害物に衝突せずに歩行可能な経路を生成し、経路に応じて経路を遂行する動作コマンドを発行する。即ち、入力データから状況に応じてロボット装置1が取るべき行動を決定し、その行動列を出力する。ここで、障害物グリッド算出部OG330の、障害物情報331に基づいた処理については後述する。
障害物グリッド算出部OG330からの障害物情報331により生成される障害物地図上の点は、図24に示すように以下の3つの種類に分類される。
第1の点は、障害物の存在する点(図中の黒色で表される点)である。第2の点は、自由空間(障害物が存在しない空間)上の点(図中の白で表される点)である。そして、第3の点は、未観測領域上の点(図中の斜線で表される点)である。
次に、前記経路計画決定部SBL360が採用する経路計画アルゴリズムを図25のフローチャートに示し、以下に詳細を説明する。
先ず、現在位置から目的位置までを結ぶ直線経路の周辺の障害物地図が作成されるように、視線を目的地方向に向ける(ステップS71)。そして距離画像を観測し、距離計測を行い、障害物地図を作成(更新)する(ステップS72)。
次に、生成された障害物地図において、未観測領域と自由空間領域を移動可能領域とみなして経路計画を行う(ステップS73)。
この経路計画としては、例えば経路全体のコストを最小化するA*探索(A*search)いう方法を用いる。このA*探索は、評価関数としてfを用い、h関数が許容的であるような最良優先探索である。いかなるヒューリスティック関数に対しても効率最適という点を用いている。
このステップS73にて例えばA*探索を適用することにより生成された経路が移動可能であるな否かをステップS74にてチェックし、障害物を回避することのできる経路が計画できなかった場合(NO)には、これ以上観測を続けても移動可能な経路が得られる可能性がないため、その旨を告げて経路計画を終了する(ステップS75)。
ステップS73にて移動可能経路が例えば前記A*探索を適用して計画できた場合(YES)には、ステップS76に進み、出力された経路上に未観測領域が含まれるか否かを検索する。このステップS76にて経路上に未観測領域が含まれなかった場合(NO)には、ステップS77にて目的地までの経路計画として移動可能経路を出力する。ステップS76にて未観測領域が含まれる場合(YES)には、ステップS78に進んで現在位置から未観測領域までの歩数を計算し、その歩数が閾値を超えるか否かをチェックする。
ステップS78において歩数が閾値を超える場合(YES)には、ステップS79により未知領域までの移動可能経路を出力してから、ステップS71の処理に戻る。一方、ステップS78において未知観測領域までの歩数が閾値に満たない場合(NO)は、未観測領域が距離観測されるように視線方向の制御を行って再観測を行い(ステップS80)、再び障害物地図の更新を行う。
以上のような経路計画アルゴリズムを採用した経路計画決定部SBL360は、未観測領域と自由空間領域を移動可能領域とみなして経路計画を行い、出力された経路上に含まれる未観測領域部のみを再観測することにより、目的地に移動する際に不必要な観測及び距離画像計算処理を行わなわず、効率的で短時間に移動経路計画を生成することが可能となる。
以下、本発明の実施の形態における上述した平面抽出装置を搭載した2足歩行タイプのロボット装置について詳細に説明する。この人間型のロボット装置は、住環境その他の日常生活上の様々な場面における人的活動を支援する実用ロボットであり、内部状態(怒り、悲しみ、喜び、楽しみ等)に応じて行動できるほか、人間が行う基本的な動作を表出できるエンターテインメントロボットである。
図26に示すように、ロボット装置1は、体幹部ユニット2の所定の位置に頭部ユニット3が連結されると共に、左右2つの腕部ユニット4R/Lと、左右2つの脚部ユニット5R/Lが連結されて構成されている(但し、R及びLの各々は、右及び左の各々を示す接尾辞である。以下において同じ。)。
このロボット装置1が具備する関節自由度構成を図27に模式的に示す。頭部ユニット3を支持する首関節は、首関節ヨー軸101と、首関節ピッチ軸102と、首関節ロール軸103という3自由度を有している。
また、上肢を構成する各々の腕部ユニット4R/Lは、肩関節ピッチ軸107と、肩関節ロール軸108と、上腕ヨー軸109と、肘関節ピッチ軸110と、前腕ヨー軸111と、手首関節ピッチ軸112と、手首関節ロール軸113と、手部114とで構成される。手部114は、実際には、複数本の指を含む多関節・多自由度構造体である。ただし、手部114の動作は、ロボット装置1の姿勢制御や歩行制御に対する寄与や影響が少ないので、本明細書ではゼロ自由度と仮定する。したがって、各腕部は7自由度を有するとする。
また、体幹部ユニット2は、体幹ピッチ軸104と、体幹ロール軸105と、体幹ヨー軸106という3自由度を有する。
また、下肢を構成する各々の脚部ユニット5R/Lは、股関節ヨー軸115と、股関節ピッチ軸116と、股関節ロール軸117と、膝関節ピッチ軸118と、足首関節ピッチ軸119と、足首関節ロール軸120と、足部121とで構成される。本明細書中では、股関節ピッチ軸116と股関節ロール軸117の交点は、ロボット装置1の股関節位置を定義する。人体の足部121は、実際には多関節・多自由度の足底を含んだ構造体であるが、ロボット装置1の足底は、ゼロ自由度とする。したがって、各脚部は、6自由度で構成される。
以上を総括すれば、ロボット装置1全体としては、合計で3+7×2+3+6×2=32自由度を有することになる。ただし、エンターテインメント向けのロボット装置1が必ずしも32自由度に限定されるわけではない。設計・制作上の制約条件や要求仕様等に応じて、自由度、即ち関節数を適宜増減することができることはいうまでもない。
上述したようなロボット装置1がもつ各自由度は、実際にはアクチュエータを用いて実装される。外観上で余分な膨らみを排してヒトの自然体形状に近似させること、2足歩行という不安定構造体に対して姿勢制御を行うことなどの要請から、アクチュエータは小型且つ軽量であることが好ましい。
図28には、ロボット装置1の制御システム構成を模式的に示している。同図に示すように、ロボット装置1は、ヒトの四肢を表現した体幹部ユニット2,頭部ユニット3,腕部ユニット4R/L,脚部ユニット5R/Lと、各ユニット間の協調動作を実現するための適応制御を行う制御ユニット10とで構成される。
ロボット装置1全体の動作は、制御ユニット10によって統括的に制御される。制御ユニット10は、CPU(Central Processing Unit)や、DRAM、フラッシュROM等の主要回路コンポーネント(図示しない)で構成される主制御部11と、電源回路やロボット装置1の各構成要素とのデータやコマンドの授受を行うインターフェイス(何れも図示しない)などを含んだ周辺回路12とで構成される。
本発明を実現するうえで、この制御ユニット10の設置場所は、特に限定されない。図28では体幹部ユニット2に搭載されているが、頭部ユニット3に搭載してもよい。あるいは、ロボット装置1外に制御ユニット10を配備して、ロボット装置1の機体とは有線又は無線で交信するようにしてもよい。
図27に示したロボット装置1内の各関節自由度は、それぞれに対応するアクチュエータによって実現される。即ち、頭部ユニット3には、首関節ヨー軸101、首関節ピッチ軸102、首関節ロール軸103の各々を表現する首関節ヨー軸アクチュエータA2、首関節ピッチ軸アクチュエータA3、首関節ロール軸アクチュエータA4が配設されている。
また、頭部ユニット3には、外部の状況を撮像するためのCCD(Charge Coupled Device)カメラが設けられているほか、前方に位置する物体までの距離を測定するための距離センサ、外部音を集音するためのマイク、音声を出力するためのスピーカ、使用者からの「撫でる」や「叩く」といった物理的な働きかけにより受けた圧力を検出するためのタッチセンサ等が配設されている。
また、体幹部ユニット2には、体幹ピッチ軸104、体幹ロール軸105、体幹ヨー軸106の各々を表現する体幹ピッチ軸アクチュエータA5、体幹ロール軸アクチュエータA6、体幹ヨー軸アクチュエータA7が配設されている。また、体幹部ユニット2には、このロボット装置1の起動電源となるバッテリを備えている。このバッテリは、充放電可能な電池によって構成されている。
また、腕部ユニット4R/Lは、上腕ユニット41R/Lと、肘関節ユニット42R/Lと、前腕ユニット43R/Lに細分化されるが、肩関節ピッチ軸107、肩関節ロール軸108、上腕ヨー軸109、肘関節ピッチ軸110、前腕ヨー軸111、手首関節ピッチ軸112、手首関節ロール軸113の各々表現する肩関節ピッチ軸アクチュエータA8、肩関節ロール軸アクチュエータA9、上腕ヨー軸アクチュエータA10、肘関節ピッチ軸アクチュエータA11、肘関節ロール軸アクチュエータA12、手首関節ピッチ軸アクチュエータA13、手首関節ロール軸アクチュエータA14が配備されている。
また、脚部ユニット5R/Lは、大腿部ユニット51R/Lと、膝ユニット52R/Lと、脛部ユニット53R/Lに細分化されるが、股関節ヨー軸115、股関節ピッチ軸116、股関節ロール軸117、膝関節ピッチ軸118、足首関節ピッチ軸119、足首関節ロール軸120の各々を表現する股関節ヨー軸アクチュエータA16、股関節ピッチ軸アクチュエータA17、股関節ロール軸アクチュエータA18、膝関節ピッチ軸アクチュエータA19、足首関節ピッチ軸アクチュエータA20、足首関節ロール軸アクチュエータA21が配備されている。各関節に用いられるアクチュエータA2,A3・・・は、より好ましくは、ギア直結型で旦つサーボ制御系をワンチップ化してモータ・ユニット内に搭載したタイプの小型ACサーボ・アクチュエータで構成することができる。
体幹部ユニット2、頭部ユニット3、各腕部ユニット4R/L、各脚部ユニット5R/Lなどの各機構ユニット毎に、アクチュエータ駆動制御部の副制御部20,21,22R/L,23R/Lが配備されている。さらに、各脚部ユニット5R/Lの足底が着床したか否かを検出する接地確認センサ30R/Lを装着するとともに、体幹部ユニット2内には、姿勢を計測する姿勢センサ31を装備している。
接地確認センサ30R/Lは、例えば足底に設置された近接センサ又はマイクロ・スイッチなどで構成される。また、姿勢センサ31は、例えば、加速度センサとジャイロ・センサの組み合わせによって構成される。
接地確認センサ30R/Lの出力によって、歩行・走行などの動作期間中において、左右の各脚部が現在立脚又は遊脚何れの状態であるかを判別することができる。また、姿勢センサ31の出力により、体幹部分の傾きや姿勢を検出することができる。
主制御部11は、各センサ30R/L,31の出力に応答して制御目標をダイナミックに補正することができる。より具体的には、副制御部20,21,22R/L,23R/Lの各々に対して適応的な制御を行い、ロボット装置1の上肢、体幹、及び下肢が協調して駆動する全身運動パターンを実現できる。
ロボット装置1の機体上での全身運動は、足部運動、ZMP(Zero Moment Point)軌道、体幹運動、上肢運動、腰部高さなどを設定するとともに、これらの設定内容にしたがった動作を指示するコマンドを各副制御部20,21,22R/L,23R/Lに転送する。そして、各々の副制御部20,21,・・・等では、主制御部11からの受信コマンドを解釈して、各アクチュエータA2,A3・・・等に対して駆動制御信号を出力する。ここでいう「ZMP」とは、歩行中の床反力によるモーメントがゼロとなる床面上の点のことであり、また、「ZMP軌道」とは、例えばロボット装置1の歩行動作期間中にZMPが動く軌跡を意味する。なお、ZMPの概念並びにZMPを歩行ロボットの安定度判別規範に適用する点については、Miomir Vukobratovic著“LEGGED LOCOMOTION ROBOTS”(加藤一郎外著『歩行ロボットと人工の足』(日刊工業新聞社))に記載されている。
以上のように、ロボット装置1は、各々の副制御部20,21,・・・等が、主制御部11からの受信コマンドを解釈して、各アクチュエータA2,A3・・・に対して駆動制御信号を出力し、各ユニットの駆動を制御している。これにより、ロボット装置1は、目標の姿勢に安定して遷移し、安定した姿勢で歩行できる。
また、ロボット装置1における制御ユニット10では、上述したような姿勢制御のほかに、加速度センサ、タッチセンサ、接地確認センサ等の各種センサ、及びCCDカメラからの画像情報、マイクからの音声情報等を統括して処理している。制御ユニット10では、図示しないが加速度センサ、ジャイロ・センサ、タッチセンサ、距離センサ、マイク、スピーカなどの各種センサ、各アクチュエータ、CCDカメラ及びバッテリが各々対応するハブを介して主制御部11と接続されている。
主制御部11は、上述の各センサから供給されるセンサデータや画像データ及び音声データを順次取り込み、これらをそれぞれ内部インターフェイスを介してDRAM内の所定位置に順次格納する。また、主制御部11は、バッテリから供給されるバッテリ残量を表すバッテリ残量データを順次取り込み、これをDRAM内の所定位置に格納する。DRAMに格納された各センサデータ、画像データ、音声データ及びバッテリ残量データは、主制御部11がこのロボット装置1の動作制御を行う際に利用される。
主制御部11は、ロボット装置1の電源が投入された初期時、制御プログラムを読み出し、これをDRAMに格納する。また、主制御部11は、上述のように主制御部11よりDRAMに順次格納される各センサデータ、画像データ、音声データ及びバッテリ残量データに基づいて自己及び周囲の状況や、使用者からの指示及び働きかけの有無などを判断する。
さらに、主制御部11は、この判断結果及びDRAMに格納した制御プログラムに基づいて自己の状況に応じて行動を決定するとともに、当該決定結果に基づいて必要なアクチュエータを駆動させることによりロボット装置1に、いわゆる「身振り」、「手振り」といった行動をとらせる。
このようにしてロボット装置1は、制御プログラムに基づいて自己及び周囲の状況を判断し、使用者からの指示及び働きかけに応じて自律的に行動できる。
ところで、このロボット装置1は、内部状態に応じて自律的に行動することができる。そこで、ロボット装置1における制御プログラムのソフトウェア構成例について、図29乃至図34を用いて説明する。
図29において、デバイス・ドライバ・レイヤ40は、制御プログラムの最下位層に位置し、複数のデバイス・ドライバからなるデバイス・ドライバ・セット41から構成されている。この場合、各デバイス・ドライバは、CCDカメラやタイマ等の通常のコンピュータで用いられるハードウェアに直接アクセスすることを許されたオブジェクトであり、対応するハードウェアからの割り込みを受けて処理を行う。
また、ロボティック・サーバ・オブジェクト42は、デバイス・ドライバ・レイヤ40の最下位層に位置し、例えば上述の各種センサやアクチュエータ281〜28n等のハードウェアにアクセスするためのインターフェイスを提供するソフトウェア群でなるバーチャル・ロボット43と、電源の切換えなどを管理するソフトウェア群でなるパワーマネージャ44と、他の種々のデバイス・ドライバを管理するソフトウェア群でなるデバイス・ドライバ・マネージャ45と、ロボット装置1の機構を管理するソフトウェア群でなるデザインド・ロボット46とから構成されている。
マネージャ・オブジェクト47は、オブジェクト・マネージャ48及びサービス・マネージャ49から構成されている。オブジェクト・マネージャ48は、ロボティック・サーバ・オブジェクト42、ミドル・ウェア・レイヤ50、及びアプリケーション・レイヤ51に含まれる各ソフトウェア群の起動や終了を管理するソフトウェア群であり、サービス・マネージャ49は、メモリカードに格納されたコネクションファイルに記述されている各オブジェクト間の接続情報に基づいて各オブジェクトの接続を管理するソフトウェア群である。
ミドル・ウェア・レイヤ50は、ロボティック・サーバ・オブジェクト42の上位層に位置し、画像処理や音声処理などのこのロボット装置1の基本的な機能を提供するソフトウェア群から構成されている。また、アプリケーション・レイヤ51は、ミドル・ウェア・レイヤ50の上位層に位置し、当該ミドル・ウェア・レイヤ50を構成する各ソフトウェア群によって処理された処理結果に基づいてロボット装置1の行動を決定するためのソフトウェア群から構成されている。
なお、ミドル・ウェア・レイヤ50及びアプリケーション・レイヤ51の具体なソフトウェア構成をそれぞれ図30に示す。
ミドル・ウェア・レイヤ50は、図30に示すように、騒音検出用、温度検出用、明るさ検出用、音階認識用、距離検出用、姿勢検出用、タッチセンサ用、動き検出用及び色認識用の各信号処理モジュール60〜68並びに入力セマンティクスコンバータモジュール69などを有する認識系70と、出力セマンティクスコンバータモジュール78並びに姿勢管理用、トラッキング用、モーション再生用、歩行用、転倒復帰用、LED点灯用及び音再生用の各信号処理モジュール71〜77などを有する出力系79とから構成されている。
認識系70の各信号処理モジュール60〜68は、ロボティック・サーバ・オブジェクト42のバーチャル・ロボット43によりDRAMから読み出される各センサデータや画像データ及び音声データのうちの対応するデータを取り込み、当該データに基づいて所定の処理を施して、処理結果を入力セマンティクスコンバータモジュール69に与える。ここで、例えば、バーチャル・ロボット43は、所定の通信規約によって、信号の授受或いは変換をする部分として構成されている。
入力セマンティクスコンバータモジュール69は、これら各信号処理モジュール60〜68から与えられる処理結果に基づいて、「うるさい」、「暑い」、「明るい」、「ボールを検出した」、「転倒を検出した」、「撫でられた」、「叩かれた」、「ドミソの音階が聞こえた」、「動く物体を検出した」又は「障害物を検出した」などの自己及び周囲の状況や、使用者からの指令及び働きかけを認識し、認識結果をアプリケーション・レイヤ41に出力する。
アプリケーション・レイヤ51は、図31に示すように、行動モデルライブラリ80、行動切換モジュール81、学習モジュール82、感情モデル83及び本能モデル84の5つのモジュールから構成されている。
行動モデルライブラリ80には、図32に示すように、「バッテリ残量が少なくなった場合」、「転倒復帰する」、「障害物を回避する場合」、「感情を表現する場合」、「ボールを検出した場合」などの予め選択されたいくつかの条件項目にそれぞれ対応させて、それぞれ独立した行動モデルが設けられている。
そして、これら行動モデルは、それぞれ入力セマンティクスコンバータモジュール69から認識結果が与えられたときや、最後の認識結果が与えられてから一定時間が経過したときなどに、必要に応じて後述のように感情モデル83に保持されている対応する情動のパラメータ値や、本能モデル84に保持されている対応する欲求のパラメータ値を参照しながら続く行動をそれぞれ決定し、決定結果を行動切換モジュール81に出力する。
なお、この実施の形態の場合、各行動モデルは、次の行動を決定する手法として、図33に示すような1つのノード(状態)NODE0〜NODEnから他のどのノードNODE0〜NODEnに遷移するかを各ノードNODE0〜NODEnに間を接続するアークARC1〜ARCn1に対してそれぞれ設定された遷移確率P1〜Pnに基づいて確率的に決定する有限確率オートマトンと呼ばれるアルゴリズムを用いる。
具体的に、各行動モデルは、それぞれ自己の行動モデルを形成するノードNODE0〜NODEnにそれぞれ対応させて、これらノードNODE0〜NODEn毎に図34に示すような状態遷移表90を有している。
この状態遷移表90では、そのノードNODE0〜NODEnにおいて遷移条件とする入力イベント(認識結果)が「入力イベント名」の列に優先順に列記され、その遷移条件についてのさらなる条件が「データ名」及び「データ範囲」の列における対応する行に記述されている。
従って、図34の状態遷移表90で表されるノードNODE100では、「ボールを検出(BALL)」という認識結果が与えられた場合に、当該認識結果とともに与えられるそのボールの「大きさ(SIZE)」が「0から1000」の範囲であることや、「障害物を検出(OBSTACLE)」という認識結果が与えられた場合に、当該認識結果とともに与えられるその障害物までの「距離(DISTANCE)」が「0から100」の範囲であることが他のノードに遷移するための条件となっている。
また、このノードNODE100では、認識結果の入力がない場合においても、行動モデルが周期的に参照する感情モデル83及び本能モデル84にそれぞれ保持された各情動及び各欲求のパラメータ値のうち、感情モデル83に保持された「喜び(Joy)」、「驚き(Surprise)」又は「悲しみ(Sadness)」の何れかのパラメータ値が「50から100」の範囲であるときには他のノードに遷移することができるようになっている。
また、状態遷移表90では、「他のノードヘの遷移確率」の欄における「遷移先ノード」の行にそのノードNODE0〜NODEnから遷移できるノード名が列記されているとともに、「入力イベント名」、「データ名」及び「データの範囲」の列に記述された全ての条件が揃ったときに遷移できる他の各ノードNODE0〜NODEnへの遷移確率が「他のノードヘの遷移確率」の欄内の対応する箇所にそれぞれ記述され、そのノードNODE0〜NODEnに遷移する際に出力すべき行動が「他のノードヘの遷移確率」の欄における「出力行動」の行に記述されている。なお、「他のノードヘの遷移確率」の欄における各行の確率の和は100[%]となっている。
従って、図34の状態遷移表90で表されるノードNODE100では、例えば「ボールを検出(BALL)」し、そのボールの「SIZE(大きさ)」が「0から1000」の範囲であるという認識結果が与えられた場合には、「30[%]」の確率で「ノードNODE120(node 120)」に遷移でき、そのとき「ACTION1」の行動が出力されることとなる。
各行動モデルは、それぞれこのような状態遷移表90として記述されたノードNODE0〜 NODEnが幾つも繋がるようにして構成されており、入力セマンティクスコンバータモジュール69から認識結果が与えられたときなどに、対応するノードNODE0〜NODEnの状態遷移表を利用して確率的に次の行動を決定し、決定結果を行動切換モジュール81に出力するようになされている。
図31に示す行動切換モジュール81は、行動モデルライブラリ80の各行動モデルからそれぞれ出力される行動のうち、予め定められた優先順位の高い行動モデルから出力された行動を選択し、当該行動を実行すべき旨のコマンド(以下、行動コマンドという。)をミドル・ウェア・レイヤ50の出力セマンティクスコンバータモジュール78に送出する。なお、この実施の形態においては、図32において下側に表記された行動モデルほど優先順位が高く設定されている。
また、行動切換モジュール81は、行動完了後に出力セマンティクスコンバータモジュール78から与えられる行動完了情報に基づいて、その行動が完了したことを学習モジュール82、感情モデル83及び本能モデル84に通知する。
一方、学習モジュール82は、入力セマンティクスコンバータモジュール69から与えられる認識結果のうち、「叩かれた」や「撫でられた」など、使用者からの働きかけとして受けた教示の認識結果を入力する。
そして、学習モジュール82は、この認識結果及び行動切換えモジュール71からの通知に基づいて、「叩かれた(叱られた)」ときにはその行動の発現確率を低下させ、「撫でられた(誉められた)」ときにはその行動の発現確率を上昇させるように、行動モデルライブラリ70における対応する行動モデルの対応する遷移確率を変更する。
他方、感情モデル83は、「喜び(Joy)」、「悲しみ(Sadness)」、「怒り(Anger)」、「驚き(Surprise)」、「嫌悪(Disgust)」及び「恐れ(Fear)」の合計6つの情動について、各情動毎にその情動の強さを表すパラメータを保持している。そして、感情モデル83は、これら各情動のパラメータ値を、それぞれ入力セマンティクスコンバータモジュール69から与えられる「叩かれた」及び「撫でられた」などの特定の認識結果や、経過時間及び行動切換モジュール81からの通知などに基づいて周期的に更新する。
具体的には、感情モデル83は、入力セマンティクスコンバータモジュール69から与えられる認識結果と、そのときのロボット装置1の行動と、前回更新してからの経過時間となどに基づいて所定の演算式により算出されるそのときのその情動の変動量を△E[t]、現在のその情動のパラメータ値をE[t]、その情動の感度を表す係数をkeとして、下記数式(31)によって次の周期におけるその情動のパラメータ値E[t+1]を算出し、これを現在のその情動のパラメータ値E[t]と置き換えるようにしてその情動のパラメータ値を更新する。また、感情モデル83は、これと同様にして全ての情動のパラメータ値をにより更新する。
なお、各認識結果や出力セマンティクスコンバータモジュール78からの通知が各情動のパラメータ値の変動量△E[t]にどの程度の影響を与えるかは予め決められており、例えば「叩かれた」といった認識結果は「怒り」の情動のパラメータ値の変動量△E[t]に大きな影響を与え、「撫でられた」といった認識結果は「喜び」の情動のパラメータ値の変動量△E[t]に大きな影響を与えるようになっている。
ここで、出力セマンティクスコンバータモジュール78からの通知とは、いわゆる行動のフィードバック情報(行動完了情報)であり、行動の出現結果の情報であり、感情モデル83は、このような情報によっても感情を変化させる。これは、例えば、「叫ぶ」といった行動により怒りの感情レベルが下がるといったようなことである。なお、出力セマンティクスコンバータモジュール78からの通知は、上述した学習モジュール82にも入力されており、学習モジュール82は、その通知に基づいて行動モデルの対応する遷移確率を変更する。
なお、行動結果のフィードバックは、行動切換モジュール81の出力(感情が付加された行動)によりなされるものであってもよい。
一方、本能モデル84は、「運動欲(exercise)」、「愛情欲(affection)」、「食欲(appetite)」及び「好奇心(curiosity)」の互いに独立した4つの欲求について、これら欲求毎にその欲求の強さを表すパラメータを保持している。そして、本能モデル84は、これらの欲求のパラメータ値を、それぞれ入力セマンティクスコンバータモジュール69から与えられる認識結果や、経過時間及び行動切換モジュール81からの通知などに基づいて周期的に更新する。
具体的には、本能モデル84は、「運動欲」、「愛情欲」及び「好奇心」については、認識結果、経過時間及び出力セマンティクスコンバータモジュール78からの通知などに基づいて所定の演算式により算出されるそのときのその欲求の変動量をΔI[k]、現在のその欲求のパラメータ値をI[k]、その欲求の感度を表す係数kiとして、所定周期で下記数式(32)を用いて次の周期におけるその欲求のパラメータ値I[k+1]を算出し、この演算結果を現在のその欲求のパラメータ値I[k]と置き換えるようにしてその欲求のパラメータ値を更新する。また、本能モデル84は、これと同様にして「食欲」を除く各欲求のパラメータ値を更新する。
なお、認識結果及び出力セマンティクスコンバータモジュール78からの通知などが各欲求のパラメータ値の変動量△I[k]にどの程度の影響を与えるかは予め決められており、例えば出力セマンティクスコンバータモジュール78からの通知は、「疲れ」のパラメータ値の変動量△I[k]に大きな影響を与えるようになっている。
なお、本実施の形態においては、各情動及び各欲求(本能)のパラメータ値がそれぞれ0から100までの範囲で変動するように規制されており、また係数ke、kiの値も各情動及び各欲求毎に個別に設定されている。
一方、ミドル・ウェア・レイヤ50の出力セマンティクスコンバータモジュール78は、図30に示すように、上述のようにしてアプリケーション・レイヤ51の行動切換モジュール81から与えられる「前進」、「喜ぶ」、「鳴く」又は「トラッキング(ボールを追いかける)」といった抽象的な行動コマンドを出力系79の対応する信号処理モジュール71〜77に与える。
そしてこれら信号処理モジュール71〜77は、行動コマンドが与えられると当該行動コマンドに基づいて、その行動をするために対応するアクチュエータに与えるべきサーボ指令値や、スピーカから出力する音の音声データ及び又はLEDに与える駆動データを生成し、これらのデータをロボティック・サーバ・オブジェクト42のバーチャル・ロボット43及び信号処理回路を順次介して対応するアクチュエータ又はスピーカ又はLEDに順次送出する。
このようにしてロボット装置1は、上述した制御プログラムに基づいて、自己(内部)及び周囲(外部)の状況や、使用者からの指示及び働きかけに応じた自律的な行動ができる。
このような制御プログラムは、ロボット装置が読取可能な形式で記録された記録媒体を介して提供される。制御プログラムを記録する記録媒体としては、磁気読取方式の記録媒体(例えば、磁気テープ、フレキシブルディスク、磁気カード)、光学読取方式の記録媒体(例えば、CD−ROM、MO、CD−R、DVD)等が考えられる。記録媒体には、半導体メモリ(いわゆるメモリカード(矩形型、正方形型など形状は問わない。)、ICカード)等の記憶媒体も含まれる。また、制御プログラムは、いわゆるインターネット等を介して提供されてもよい。
これらの制御プログラムは、専用の読込ドライバ装置、又はパーソナルコンピュータ等を介して再生され、有線又は無線接続によってロボット装置1に伝送されて読み込まれる。また、ロボット装置1は、半導体メモリ、又はICカード等の小型化された記憶媒体のドライブ装置を備える場合、これら記憶媒体から制御プログラムを直接読み込むこともできる。
本実施の形態においては、頭部ユニットのCCDカメラ200R,200L及び画像処理回路210からなるステレオ距離計測装置から信頼度画像を使用して求められた正確な補正距離データが情報処理手段に入力されるため、ロボット装置は、ステレオ距離計測データを用いた位置認識及び物体認識等、ロボットの後段の認識精度を高めることができる。
また、上記パラメータは、CCDカメラのパラメータと、ロボット装置のパラメータとを含み、信頼度画像の信頼度に基づいてカメラパラメータ及びロボットパラメータを制御することで、CCD画像の撮像条件及び撮像位置等のカメラパラメータを制御するだけではなく、ロボット装置の頭部ユニット、左右2つの腕部ユニット4R/L及び左右2つの脚部ユニット5R/L等を動作させるロボットパラメータを種々変更することにより、更に信頼度が高い距離画像を得ることができ、ロボット装置の性能が向上する。
このようなロボット装置によれば、供給された入力情報に基づいて動作を行う自律型のロボット装置であって、3次元データ群から3点以上の3次元データをサンプリングし、上記3次元データによって決まる1つの平面を示す平面パラメータを複数算出する平面算出手段と、この平面算出工程から得られた複数の平面パラメータを投票空間に投票してこの投票結果に基づき平面を決定する平面決定手段とを有するため、高い精度で平面を抽出することができ、この平面検出結果から障害物等のロボット装置の環境を認識することができる。
以上詳細に説明したように本発明に係る平面抽出方法の実施の形態によれば、3次元データ群から3点以上の3次元データをサンプリングし、上記3次元データによって決まる1つの平面を示す平面パラメータを複数算出する平面算出工程と、この平面算出工程から得られた複数の平面パラメータを投票空間に投票してこの投票結果に基づき平面を決定する平面決定工程とを有するため、平面パラメータを投票空間に直接投票することができるため、ノイズに対してロバストで、精度が高く、従って、サンプリング数を減らして処理を高速化することができる。
1 ロボット装置、250 頭部ユニット、200R,200L CCDカメラ、201R 右目画像、201L 左目画像、202 カラー画像、203 視差画像、210 ステレオ画像処理装置、220 CPU、230 アクチュエータ、231 制御信号、240 センサ、241 センサデータ、260 体幹部、300 ソフトウェア、310 キネマティックオドメトリKINE、320 平面抽出部PLEX、330 障害物グリッド算出部OG、340 ランドマーク位置検出部CLS、350 絶対座標算出部LZ、360 行動決定部SBL、400,500,510,600,610,700