以下、本発明によるリンク列マッピング装置について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。本実施の形態によるリンク列マッピング装置は、モデルのリンク列をロボットのリンク列にマッピングするため、モデルのリンク列上の複数の点と、ロボットのリンク列上の複数の点との各距離に応じた目的関数が小さくなるように、ロボットのリンク列の各関節の角度を求めるものである。
図1は、本実施の形態によるリンク列マッピング装置1の構成を示すブロック図である。本実施の形態によるリンク列マッピング装置1は、受付部11と、記憶部12と、正規化部13と、特定部14と、算出部15と、ノイズ除去部16と、出力部17とを備える。
受付部11は、モデル5のリンク列に含まれる各リンクの位置に関する情報であるモデルリンク列情報を受け付ける。モデル5は、例えば、人間であってもよく、人間以外の動物やロボットなどであってもよい。なお、リンク列マッピング装置1は、例えば、モデル5の動きをロボット6にまねさせるためのマッピングを行うものであるため、モデル5は、動きのあるものであることが好適である。このモデル5は、リンク列のマッピングの写像元となる対象である。モデル5は、マッピング対象となる1以上のリンク列を有していることが好適である。例えば、モデル5が人間である場合には、四肢のそれぞれがリンク列となる。また、人間の頭から腰までを一つのリンク列と考えてもよい。モデルリンク列情報は、連結された複数のリンクの全体(例えば、両肩の中心から手先までのリンク列など)の情報であってもよく、その連結された複数のリンクの一部(例えば、肘から手先までのリンク列など)の情報であってもよい。また、モデルリンク列情報は、手先や足先などの端部、すなわち関節ではない端部を有するリンク列の情報であってもよく、または、肩から手首までのリンク列のように関節から関節までのリンク列の情報であってもよい。また、本実施の形態では、モデルリンク列情報が、分岐を含まないリンク列の情報である場合について主に説明するが、モデルリンク列情報は、分岐を含むリンク列の情報であってもよい。モデルリンク列情報は、結果としてモデル5のリンク列に含まれる各リンクの位置が分かる情報であれば、どのような情報であってもよい。モデルリンク列情報は、例えば、各リンクの両端の位置を示す情報であってもよく、各リンクの長さと関節におけるリンク間の角度とを示す情報であってもよい。各リンクの両端の位置を示す情報は、各関節の位置を示す情報を含んでいてもよく、さらにリンク列の端部の位置を示す情報を含んでいてもよい。本実施の形態では、モデルリンク列情報が、リンク列の関節の位置を示す情報と、端部の位置を示す情報とを含んでいる場合について主に説明する。その位置は、モデル5のリンク列について設定されている座標系における位置である。その座標系は、モデル5が存在する実空間の座標系であってもよく、モデル5のリンク列に関する位置の取得された仮想空間の座標系であってもよく、その他の座標系であってもよい。
モデルリンク列情報は、例えば、モーションキャプチャの技術によって取得されてもよい。モーションキャプチャは、例えば、モデル5に装着されたマーカの位置を検出することによって行われてもよく、または、モデル5の撮影画像を用いて行われてもよい。マーカを用いて行われるモーションキャプチャは、例えば、光学式のモーションキャプチャであってもよく、機械式のモーションキャプチャであってもよく、磁気式のモーションキャプチャであってもよい。また、撮影画像を用いてモーションキャプチャを行う場合に、例えば、モデル5との距離を測定することなどによって、撮影画像を用いたモーションキャプチャの精度を向上させるようにしてもよい。撮影画像を用いたモーションキャプチャを行う装置として、例えば、KINECT(登録商標)や、RealSenseなどを用いてもよい。
リンク列のマッピングがリアルタイムで行われる場合には、受付部11は、例えば、モデルリンク列情報を時系列に沿って繰り返して、一定または不定の時間間隔で受け付けることが好適である。すなわち、受付部11が受け付けたモデルリンク列情報によって、モデル5のリンク列の動きが分かることが好適である。なお、モデルリンク列情報自体が、モデル5のリンク列に関する時系列に沿った情報であってもよい。一方、リンク列のマッピングがリアルタイムで行われない場合には、受付部11は、例えば、モデル5のリンク列に関する複数のモデルリンク列情報を一括して受け付けてもよく、または、モデルリンク列情報を一つずつ受け付けてもよい。また、モデル5が2以上のリンク列を有する場合に、受付部11は、モデル5のリンク列ごとにモデルリンク列情報を受け付けてもよい。本実施の形態では、モデル5が人間であり、その人間の腕に関するリンク列のモデルリンク列情報が定期的にリアルタイムでモーションキャプチャ装置2からリンク列マッピング装置1に入力され、受付部11で受け付けられる場合について主に説明する。また、受付部11が複数のリンク列にそれぞれ対応する複数のモデルリンク列情報を受け付ける場合には、そのモデルリンク列情報には、対応するリンク列を識別する情報(例えば、右腕のリンク列である旨等)が含まれていてもよい。また、受付部11は、モデルリンク列情報と共に、モデル5の向きを示す情報(例えば、モデル5の顔の向きを示す情報など)をも受け付けてもよい。そのモデル5の向きを示す情報を用いることによって、モデルリンク列情報がモデル5のどのリンク列に対応するのかを知ることができるようになる。
なお、受付部11は、例えば、有線または無線の通信回線を介して送信されたモデルリンク列情報を受信してもよく、所定の記録媒体(例えば、光ディスクや磁気ディスク、半導体メモリなど)から読み出されたモデルリンク列情報を受け付けてもよい。なお、受付部11は、受け付けを行うためのデバイス(例えば、モデムやネットワークカードなど)を含んでもよく、または含まなくてもよい。また、受付部11は、ハードウェアによって実現されてもよく、または所定のデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
記憶部12では、ロボット6のリンク列における関節の可動域を示す情報である関節可動域情報が記憶される。その関節可動域情報には、可動域に制限のあるすべての関節に関する情報が含まれていることが好適である。例えば、ロボット6のリンク列におけるリンク101,102の間の関節Piの角度が、図5のようにθ1 i、θ2 i、θ3 iで示される場合に、関節可動域情報は、θ1 i、θ2 i、θ3 iのうち、可動域に制限のある1以上の角度に関する範囲を示す情報であってもよい。例えば、角度θ1 iの範囲が、
α1 i≦θ1 i≦β1 i
である場合には、関節可動域情報に含まれる角度θ1 iに関する情報は、その角度θ1 iに関する下限値α1 iと、上限値β1 iとであってもよい。なお、可動域に制限のない関節や軸については、関節可動域情報によって可動域が示されなくてもよい。また、図5では、リンク101,102の間の関節Piが3個の軸を有している場合について示しているが、関節の軸数は問わない。関節の軸数は、例えば、1個、2個、3個のいずれかであってもよく、4個以上であってもよい。また、その関節の軸の方向についても任意である。また、2以上の軸を有する関節においては、各軸の順序、例えば、リンク101側からリンク102側について、どのような順序で各軸が設けられているのかを示す情報が記憶部12で記憶されていてもよい。
本実施の形態では、ロボット6がヒューマノイドロボットである場合について主に説明するが、そうでなくてもよい。ロボット6は、例えば、犬や猫、鳥、魚、蛇、昆虫などの動物型ロボットであってもよく、その他の形状のロボットであってもよい。なお、そのロボット6は、1以上の動作可能なリンク列を有しているものとする。その動作可能なリンク列は、例えば、複数のモータによってそれぞれ駆動される複数の関節によって連結されたリンク列であってもよい。また、そのロボット6は、通常、玩具用のロボット、すなわちエンタテイメントロボットであるが、そうでなくてもよい。また、写像元であるモデル5のリンク列におけるリンク数LN1と、写像先であるロボット6のリンク列におけるリンク数LN2との多少は問わない。例えば、モデル5のリンク数LN1は、ロボット6のリンク数LN2より多くてもよく、少なくてもよく、両リンク数LN1,LN2は等しくてもよい。なお、ロボット6のリンク列についても、モデル5のリンク列と同様に座標系が設定されているものとする。その座標系は、ロボット6が存在する実空間の座標系であってもよく、ロボット6のリンク列に関する位置関係を示すための仮想空間の座標系であってもよく、その他の座標系であってもよい。
記憶部12では、関節可動域情報以外の情報が記憶されていてもよい。例えば、ロボット6のリンク列における各リンクの長さを示すリンク長さ情報が記憶部12で記憶されてもよい。そのリンク長さ情報と、ロボット6のリンク列における各関節の角度とを用いることによって、ロボット6のリンク列の位置を特定できることは、ロボットの順運動学として知られている。また、例えば、ロボット6のリンク列における各関節の軸の方向に関する情報が記憶部12で記憶されてもよい。また、モデル5のリンク列においてあらかじめ決められた複数箇所を示す情報や、その複数箇所に対応する、ロボット6のリンク列における複数箇所を示す情報が記憶部12で記憶されていてもよい。また、ロボット6のリンク列に、直線以外の形状のリンクが含まれる場合には、そのリンクの形状を示す情報が記憶部12で記憶されていてもよい。また、後述するノイズ除去部16におけるローパスフィルタの時定数等が記憶部12で記憶されていてもよい。
記憶部12に情報が記憶される過程は問わない。例えば、記録媒体を介して情報が記憶部12で記憶されるようになってもよく、通信回線等を介して送信された情報が記憶部12で記憶されるようになってもよく、または、入力デバイスを介して入力された情報が記憶部12で記憶されるようになってもよい。記憶部12での記憶は、RAM等における一時的な記憶でもよく、または、長期的な記憶でもよい。記憶部12は、所定の記録媒体(例えば、半導体メモリや磁気ディスク、光ディスクなど)によって実現されうる。
正規化部13は、モデル5のリンク列の長さと、ロボット6のリンク列の長さとを正規化する。通常、モーションキャプチャ装置2から受け取るモデルリンク列情報によって示されるモデル5のリンク列の長さと、ロボット6のリンク列の長さとは異なっている。したがって、正規化部13は、両者の長さを一致させる処理である正規化を行う。その正規化において、モデル5のリンク列の長さ、及びロボット6のリンク列の長さは、「1」にされてもよく、または、他の値にされてもよい。本実施の形態では、前者の場合について主に説明する。なお、リンク列の長さとは、リンク列の一端から他端までの各リンクの長さの合計である。モデル5及びロボット6のリンク列の長さを1に正規化する場合には、正規化部13は、例えば、モデル5のリンク列の長さを算出し、モデル5のリンク列における各座標値をその算出したリンク列の長さで割ることによって正規化を行ってもよく、ロボット6のリンク列の長さを算出し、ロボット6のリンク列における各リンクの長さをその算出したリンク列の長さで割ることによって正規化を行ってもよい。なお、例えば、モデルリンク列情報によって、モデル5のリンク列における各リンクの両端の位置が示される場合には、正規化部13は、その情報を用いて各リンクの長さを算出して合計することによって、モデル5のリンク列の長さを算出することができる。また、例えば、モデルリンク列情報によって、モデル5のリンク列における各リンクの長さと角度とが示される場合には、正規化部13は、各リンクの長さを合計することによって、モデル5のリンク列の長さを算出することができる。また、例えば、記憶部12においてロボット6のリンク列における各リンクの長さが記憶されている場合には、正規化部13は、その各リンクの長さを合計することによって、ロボット6のリンク列の長さを算出することができる。また、正規化部13は、モデル5のリンク列の座標系と、ロボット6のリンク列の座標系との少なくとも一方の座標系の単位を変更することによって、正規化を行ってもよい。例えば、正規化部13は、両座標系において、モデル5のリンク列の長さと、ロボット6のリンク列の長さが1になるように座標系の単位を変更することによって、正規化を行ってもよい。
正規化部13は、この正規化の処理の際に、モデル5のリンク列の基端と、ロボット6のリンク列の基端との両方が原点となる座標系を設定してもよい。そして、その座標系において、後段の特定部14や算出部15の処理が行われてもよい。具体的には、正規化部13は、モデル5のリンク列の座標系と、ロボット6のリンク列の座標系とのそれぞれについて、リンク列の基端が原点となるように平行移動などの座標変換を行い、両座標系を同一のものにするため、少なくとも一方の座標系について回転等の座標変換を行ってもよい。なお、両座標系の向きが一致している場合には、回転等の座標変換は行わなくてもよい。本実施の形態では、モデル5及びロボット6のリンク列の位置を示す最終的な座標系として、xyz直交座標系が設定される場合について主に説明する。なお、リンク列の基端とは、例えば、人間の腕や足に対応するリンク列における胴体側、すなわち手先や足先の反対側(すなわち、本体側)の端点のことである。例えば、蛇に対応するリンク列のように本体が存在しない場合には、いずれかの端部、例えば尾側または頭側の端部を基端とみなしてもよい。なお、基端と反対側の端点を先端と呼ぶこともある。また、ロボット6のリンク列における各リンクの長さが変わることはないため、ロボット6のリンク列に関する正規化は、1回行われるだけであってもよい。一方、モデル5のリンク列における各リンクの長さは、モデルリンク列情報の取得方法によっては、時間的に変化することもあり得る。そのように、モデル5のリンク列における各リンクの長さが変わりうる場合には、受付部11がモデル5のリンク列に関する情報を受け付けるごとに、モデル5のリンク列に関する正規化が行われることが好適である。一方、モデル5のリンク列における各リンクの長さが変わらない場合には、例えば、正規化部13が、モデル5のリンク列に関する正規化を1回行い、その正規化後の座標系等をモーションキャプチャ装置2に渡すことによって、それ以降は、正規化されたモデルリンク列情報が受け付けられるようになってもよい。なお、特定部14や算出部15が用いるモデル5やロボット6の座標値は、正規化部13によって正規化された後の座標値である。また、正規化が行われ、両リンク列の基端が原点とされた後には、モデル5のリンク列の位置と、ロボットリンク列の位置とは、一の座標系において示されることが好適である。本実施の形態では、正規化が行われ、両リンク列の基端が原点とされた後に、モデル5及びロボット6の位置が上述のxyz直交座標系によって示される場合について主に説明する。
特定部14は、受付部11によって受け付けられたモデルリンク列情報を用いて、モデル5のリンク列におけるあらかじめ決められた複数箇所の座標値を特定する。なお、その座標値の特定は、正規化部13による正規化の行われた後の座標値の特定である。また、本実施の形態では、その座標値が上述のxyz直交座標系における座標値である場合について主に説明する。モデル5のリンク列におけるあらかじめ決められた複数箇所とは、モデル5のリンク列の両端点の間をあらかじめ決められた比で内分する複数箇所である。すなわち、その複数箇所は、リンク列の両端間をあらかじめ決められた割合で分割する複数の点に応じた箇所である。したがって、この複数箇所は、リンク列の関節の位置とは関係なく決められる。また、この複数箇所の個数は、ロボット6のリンク列における連結箇所の数よりも多いことが好適である。リンク列における連結箇所とは、リンク列においてリンクとリンクとを接続する箇所のことである。また、通常、リンク列における連結箇所の数に1を足した値が、そのリンク列におけるリンク数となるため、複数箇所の個数は、ロボット6のリンク列におけるリンク数以上であることが好適であると言い換えることもできる。また、その複数箇所の位置は、均等に設けられてもよく、またはそうでなくてもよい。また、その複数箇所には、モデル5のリンク列における一端または両端が含まれていてもよく、そうでなくてもよい。また、リンク列の両端点の間をあらかじめ決められた比で内分する複数箇所とは、リンク列を直線状に伸ばした場合に、両端点の間をあらかじめ決められた比で内分する複数箇所であると考えてもよい。その複数箇所の各々を基準点と呼ぶこともある。また、座標値を特定するとは、その特定した座標値を記録媒体に蓄積することであってもよい。
算出部15は、特定部14によって座標値の特定された複数箇所と、その複数箇所にそれぞれ対応するロボット6のリンク列における複数箇所との各距離に応じた目的関数が小さくなるように、ロボット6のリンク列に含まれる各リンクの位置に関する情報であるロボットリンク列情報を算出する。ここで、モデル5のリンク列における複数の基準点に対応するロボット6のリンク列における複数箇所の各々も基準点と呼ぶことがある。特定部14によって特定された、モデル5のリンク列における複数箇所にそれぞれ対応するロボット6のリンク列における複数箇所とは、例えば、ロボット6のリンク列の両端点の間をあらかじめ決められた比で内分する複数箇所であってもよい。そのあらかじめ決められた比は、モデル5のリンク列における複数箇所に関するあらかじめ決められた比と同じであってもよく、または、異なっていてもよい。後者の場合には、例えば、人間であるモデル5の動きが、ロボット6における大げさな動きとなるようにモデル5のリンク列における複数の基準点と、ロボット6のリンク列における複数の基準点とが決定されてもよい。いずれの場合であっても、複数箇所の個数が、ロボット6のリンク列におけるリンク数以上であるときには、ロボット6のリンク列における各リンクに少なくとも1箇所が存在するように、その比が設定されてもよい。モデル5のリンク列に関するあらかじめ決められた比と、ロボット6のリンク列におけるあらかじめ決められた比とが同じである場合には、モデル5のリンク列及びロボット6のリンク列において、同じ比の基準点が対応する基準点となる。一方、両者の比が異なる場合には、モデル5のリンク列における複数の基準点と、ロボット6のリンク列における複数の基準点とは、基端側から順番にそれぞれ対応するものとする。
特定部14によって特定された複数箇所と、その複数箇所にそれぞれ対応するロボット6のリンク列における複数箇所との各距離は、特定されたある基準点と、その基準点に対応するロボット6のリンク列における基準点との距離である。その各距離に応じた目的関数は、各距離が大きくなるほど値が大きくなる関数であってもよい。具体的には、その目的関数は、各距離の二乗を加算したものであってもよい。その場合には、最小二乗法を用いたマッピングが行われることになる。また、その目的関数は、各距離の絶対値を加算したものであってもよい。その場合には、最小絶対値法を用いたマッピングが行われることになる。なお、各距離が大きくなるほど値が大きくなるその他の目的関数が用いられてもよいことは言うまでもない。各距離は、正規化後の距離、すなわち、正規化された座標値を用いて計算された距離である。また、各距離は、モデル5及びロボット6のリンク列の基端を原点にした座標系における座標値に応じた距離、すなわち、その座標値を用いて計算された距離である。また、目的関数が小さくなるようにロボットリンク列情報を算出することは、目的関数が小さくなるようにロボット6のリンク列の位置を算出することである。通常、ロボット6のリンク列における各リンクの長さは一定であるため、ロボット6のリンク列における各関節の角度によって、ロボット6のリンク列の位置を特定できる。したがって、ロボット6のリンク列の位置を算出することは、そのリンク列における各関節の角度を算出することであってもよい。その場合には、ロボットリンク列情報は、ロボット6のリンク列における各関節の角度を示す情報であってもよい。リンク列の基端も関節である場合には、そのロボットリンク列情報には、その基端である関節の角度も含まれてもよい。一方、ロボットリンク列情報は、関節の角度以外の情報であってもよい。例えば、ロボットリンク列情報は、ロボット6のリンク列における各リンクの両端の位置を示す情報であってもよく、ロボット6のリンク列における複数の基準点の各座標値であってもよい。ロボットリンク列情報が、ロボット6のリンク列における複数の基準点の各座標値である場合に、その複数の基準点の各座標値によってリンク列の位置を一意に特定できることが好適である。本実施の形態では、ロボットリンク列情報が、ロボット6のリンク列における各関節の角度を示す情報である場合について主に説明する。その場合に、ロボットリンク列情報では、例えば、関節を識別する情報と、その関節における角度を示す情報とが対応付けられていてもよく、関節の軸を識別する情報と、その軸における角度を示す情報とが対応付けられていてもよい。また、ロボットリンク列情報を算出する際に、ロボット6のリンク列の基端の位置を固定してもよく、または、そうでなくてもよい。本実施の形態では、前者の場合について説明する。なお、後者の場合には、ロボット6のリンク列の基端の位置を示す情報もロボットリンク列情報に含まれてもよい。
目的関数が小さくなるようにロボットリンク列情報を算出する場合に、算出部15は、最適化問題を解く任意のアルゴリズムを用いることができる。なお、その最適化問題を解く際には、局所最適となるように解いてもよく、大域最適となるように解いてもよい。本実施の形態では、最適化問題を局所最適となるように解く場合について主に説明する。例えば、算出部15は、目的関数の導関数を用いるアルゴリズムである勾配法によって目的関数が小さくなるようにロボットリンク列情報を算出してもよく、目的関数の導関数を用いないアルゴリズムによって目的関数が小さくなるようにロボットリンク列情報を算出してもよい。また、算出部15は、記憶部12で記憶されている関節可動域情報の示す可動域内において、目的関数が小さくなるようにロボットリンク列情報を算出する。すなわち、算出部15は、関節可動域情報を制約条件として、最適化問題を解いてもよい。また、目的関数が小さくなるようにロボットリンク列情報を算出するとは、目的関数が最小となるようにロボットリンク列情報を算出することであってもよく、目的関数が最小に近くなるようにロボットリンク列情報を算出することであってもよい。ここで、目的関数が最小となるとは、目的関数が厳密な意味で最小値になることであってもよく、または、目的関数が最小値に十分近くなることであってもよい。目的関数が小さくなるようにロボットリンク列情報を算出する際に、例えば、ニュートン法などの反復処理を繰り返し、完全に収束する前に処理を終了することによってロボットリンク列情報を算出した場合には、目的関数を厳密な意味で最小にするロボットリンク列情報を算出したことにはならないが、目的関数が最小値に十分近くなるようにロボットリンク列情報を算出したことになると言える。また、目的関数が小さくなるようにロボットリンク列情報を算出している際に、次のモデルリンク列情報が受付部11で受け付けられた場合には、算出部15は、その時点のロボットリンク列情報を後段のノイズ除去部16に渡し、新たに受け付けられたモデルリンク列情報に応じたロボットリンク列情報の算出を行ってもよい。その場合であっても、算出部15は、目的関数が最小に近くなるようにロボットリンク列情報を算出していることになる。そのように、算出部15が、目的関数が最小になるように逐次的に処理を行っている途中にその処理を終了した場合に、その終了時点のロボットリンク列情報が、目的関数が小さくなるように算出されたロボットリンク列情報であると考えてもよい。
なお、算出部15が目的関数を小さくする処理を行うモデル5のリンク列とロボット6のリンク列とは、あらかじめ決められていてもよく、または、そうでなくてもよい。後者の場合には、例えば、あらかじめ決められたルールに従って、モデル5のリンク列に対応するロボット6のリンク列を特定するようにしてもよい。具体的には、モデル5が人間であり、ロボット6がヒューマノイドロボットである場合には、頭部に近いリンク列同士を対応するリンク列とする、というルールが存在してもよく、頭部に近く、頭部の向き(例えば、頭部の顔の向き)に対して右側(あるいは左側)のリンク列同士を対応するリンク列とする、というルールが存在してもよい。このルールにより、腕のリンク列を対応付けることができる。また、頭部から遠いリンク列同士を対応するリンク列とする、というルールが存在してもよく、頭部から遠く、頭部の向きに対して右側(あるいは左側)のリンク列同士を対応するリンク列とする、というルールが存在してもよい。このルールにより、足のリンク列を対応付けることができる。
ノイズ除去部16は、ロボットリンク列情報に含まれる高周波のノイズ成分を除去する。例えば、モーションキャプチャ装置2によってモデルリンク列情報を取得する際に、そのモデルリンク列情報に高周波のノイズ成分が含まれることがある。その場合には、結果としてロボットリンク列情報にも高周波のノイズ成分が含まれることになるため、ノイズ除去部16によってそのノイズ成分を除去することが好適である。ノイズ除去部16は、例えば、ローパスフィルタであってもよい。ノイズ除去部16は、例えば、算出部15によって算出されたロボットリンク列情報に移動平均処理を行うことによって、ローパスフィルタとして機能してもよい。そのローパスフィルタの時定数として、ノイズ除去部16は、記憶部12で記憶されているものを読み出して用いてもよい。
出力部17は、ロボットリンク列情報に応じたロボット6のリンク列の各関節の角度に関する情報を出力する。そのロボットリンク列情報は、ノイズ除去部16によって高周波のノイズ成分が除去されたロボットリンク列情報である。リアルタイムでマッピングの処理が行われる場合には、出力部17は、その情報を時系列に沿って繰り返して、一定または不定の時間間隔で出力してもよい。この場合には、例えば、モデル5の動きにあわせて、ロボット6が動作するようになる。一方、リアルタイムでマッピングの処理が行われない場合には、出力部17は、情報を順次、出力してもよく、または、一括してまとめて出力してもよい。この場合には、例えば、モデル5の過去の動きと同様の動きを、ロボット6が再生するようになってもよい。また、ロボット6が2以上のリンク列を有する場合には、出力部17は、ロボット6のリンク列ごとに情報を出力してもよい。ロボットリンク列情報が、ロボット6のリンク列の各関節の角度に関する情報である場合には、出力部17は、ロボットリンク列情報をそのまま出力してもよい。ロボットリンク列情報がロボット6のリンク列の位置を示す情報である場合には、出力部17は、そのロボットリンク列情報を、ロボット6のリンク列の各関節の角度に関する情報に変換して出力する。例えば、図5において、リンク101,102の位置が分かっている場合に、関節Piの各軸に関する角度を特定する方法はすでに公知であるため、その方法を用いて、ロボットリンク列情報を、ロボット6のリンク列の各関節の角度に関する情報に変換することができる。ロボット6のリンク列の各関節の角度に関する情報とは、各関節の角度を示す情報であってもよく、結果として、各関節の角度を知ることができる情報であってもよい。
ここで、この出力は、出力対象の情報がロボット6で結果として受け付けられるのであれば、どのような出力であってもよく、例えば、ロボット6への有線または無線の通信回線を介した送信でもよく、記録媒体への蓄積でもよく、他の構成要素への引き渡しでもよい。なお、出力部17によって、記録媒体への情報の蓄積や、他の構成要素への情報の引き渡しが行われた場合であっても、その情報が最終的にロボット6に到達するようになることが好適であることは言うまでもない。また、出力対象の情報が、ロボット6で受け付けられるまでに、適宜、フォーマットの変換等の処理が行われてもよいことは言うまでもない。なお、出力部17は、出力を行うデバイス(例えば、送信デバイスなど)を含んでもよく、または含まなくてもよい。また、出力部17は、ハードウェアによって実現されてもよく、または、それらのデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
次に、リンク列マッピング装置1の動作について図2のフローチャートを用いて説明する。
(ステップS101)正規化部13は、ロボット6のリンク列に関する正規化を行う。
(ステップS102)受付部11は、モデルリンク列情報を受け付けたかどうか判断する。そして、モデルリンク列情報を受け付けた場合には、ステップS103に進み、そうでない場合には、モデルリンク列情報を受け付けるまで、ステップS102の処理を繰り返す。
(ステップS103)正規化部13は、ステップS102で受け付けられたモデルリンク列情報に対応するモデル5のリンク列に関する正規化を行う。
(ステップS104)特定部14は、ステップS103で正規化されたモデル5のリンク列におけるあらかじめ決められた複数箇所の座標値をそれぞれ特定する。
(ステップS105)算出部15は、ステップS104で座標値が特定された複数箇所と、その複数箇所にそれぞれ対応するロボット6のリンク列における複数箇所との各距離に応じた目的関数が小さくなるように、ロボットリンク列情報を算出する。
(ステップS106)ノイズ除去部16は、ステップS105で算出されたロボットリンク列情報に含まれる高周波のノイズ成分を除去する。
(ステップS107)出力部17は、高周波のノイズ成分の除去されたロボットリンク列情報に応じたロボット6のリンク列の各関節の角度に関する情報を出力する。そして、ステップS102に戻る。
なお、図2のフローチャートにおいてリアルタイムの処理を行う場合には、ステップS105において、ロボットリンク列情報を算出している際に、モデルリンク列情報を受け付ける処理を並列して実行し、モデルリンク列情報を受け付けるとステップS105の処理を中断し、その時点のロボットリンク列情報に応じた出力(ステップS106,S107)を行うと共に、新たに受け付けられたモデルリンク列情報に応じた処理を実行するようにしてもよい。また、モデル5やロボット6が、マッピング関係にあるリンク列を複数有している場合には、リンク列マッピング装置1は、各リンク列について、ステップS102〜S107の処理を繰り返して実行してもよく、並列して実行してもよい。具体的には、モデル5の両手、両足のリンク列をロボット6の両手、両足にマッピングする場合には、ステップS102〜S107の処理が、4個のリンク列について繰り返して、または並列して処理されるようにしてもよい。また、図2のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
次に、本実施の形態によるリンク列マッピング装置1の動作について、具体例を用いて説明する。この具体例では、モデル5のリンク列が人間の腕であり、ロボット6のリンク列がヒューマノイドロボットの腕である場合について説明する。すなわち、人間の腕が、ヒューマノイドロボットの腕にマッピングされる場合について説明する。この具体例では、モデル5のリンク列におけるリンク数をnとし、ロボット6のリンク列におけるリンク数をNとする。n,Nはそれぞれ1以上の整数である。
図3は、人間であるモデル5のリンク列5aの一例を示す図である。マッピング対象のリンク列5aは、リンク51〜53で構成されており、関節である端点p0は両肩の中心であり、関節p1は肩であり、関節p2は肘であり、端点p3は手先である。なお、図3では、説明を簡単にするため、手首の関節を省略している。図3において、p0〜p3の座標をそれぞれxyz直交座標系における(x0,y0,z0)、(x1,y1,z1)、(x2,y2,z2)、(x3,y3,z3)とする。また、リンク51〜53の長さをそれぞれd1,d2,d3とする。図3では、リンク数n=3である。
図4は、ヒューマノイドロボットであるロボット6のリンク列6aの一例を示す図である。マッピング先のリンク列6aは、リンク61,62で構成されており、関節である端点P0は肩であり、関節P1は肘であり、端点P2は手先である。図4において、P0〜P1の座標をそれぞれXYZ直交座標系における(X0,Y0,Z0)、(X1,Y1,Z1)、(X2,Y2,Z2)とする。また、リンク61,62の長さをそれぞれD1,D2とする。このD1,D2は、記憶部12で記憶されているものとする。また、関節Piにおける関節の角度をθ1 i,θ2 i,…,θki iとする。なお、kiは、関節Piにおける軸数を示す1以上の整数である。i=0,1である。図4では、リンク数N=2である。
xyz直交座標系、及びXYZ直交座標系は共に、モデル5やロボット6に設定されるローカル座標系であり、xyz軸がそれぞれXYZ軸に対応するようになっているものとする。例えば、z軸及びZ軸が体軸方向に設定されており、x軸及びX軸が前後方向に設定されており、y軸及びY軸が左右方向に設定されていてもよい。なお、体軸方向とは、人間やヒューマノイドロボットの立位での上下方向のことである。
正規化部13は、まず、ロボット6のリンク列の正規化を行う(ステップS101)。具体的には、正規化部13は、記憶部12で記憶されているリンクの長さD
1等を用いて、次式のように、リンク列の長さDを算出する。
次に、正規化部13は、P0が原点になるようにXYZ直交座標系を平行移動させる。具体的には、(Xi,Yi,Zi)を(Xi−X0,Yi−Y0,Zi−Z0)にしてもよい。ただし、i=0〜Nである。また、その平行移動後のXYZ直交座標系において、各座標値に1/Dを掛けることによって、ロボット6のリンク列の長さが1になるようにする。具体的には、(Xi,Yi,Zi)を(Xi/D,Yi/D,Zi/D)としてもよい。なお、その平行移動の処理と、1/Dを掛ける処理との順序は問わない。また、正規化部13は、記憶部12で記憶されているリンクの長さD1等についても、1/Dを掛けることによって正規化する。以下の説明では、(Xi,Yi,Zi)、Diは、平行移動と正規化との行われた後の座標、リンクの長さであるとする。
その後、受付部11がモデルリンク列情報を受け付けたとする(ステップS102)。そのモデルリンク列情報は、モデル5のリンク列における各リンクの両端の位置を示す情報、すなわち、(x
0,y
0,z
0)、(x
1,y
1,z
1)、…、(x
n,y
n,z
n)であるとする。すると、正規化部13は、モデル5のリンク列の正規化を行う(ステップS103)。具体的には、正規化部13は、モデルリンク列情報を用いて、各リンクの長さd
1〜d
nを、次式のように算出する。
その後、正規化部13は、算出したリンクの長さd
1等を用いて、次式のように、リンク列の長さdを算出する。
次に、正規化部13は、p0が原点になるようにxyz直交座標系を平行移動させる。具体的には、(xi,yi,zi)を(xi−x0,yi−y0,zi−z0)にしてもよい。ただし、i=0〜nである。また、その平行移動後のxyz直交座標系において、各座標値に1/dを掛けることによって、モデル5のリンク列の長さが1になるようにする。具体的には、(xi,yi,zi)を(xi/d,yi/d,zi/d)としてもよい。なお、その平行移動の処理と、1/dを掛ける処理との順序は問わない。また、正規化部13は、算出したリンクの長さd1等についても、1/dを掛けることによって正規化する。以下の説明では、(xi,yi,zi)、diは、平行移動と正規化との行われた後の座標、リンクの長さであるとする。この具体例では、xyz直交座標系におけるモデル5の向きと、XYZ直交座標系におけるロボット6の向きとが一致しているため、それぞれの座標系について平行移動と正規化とを行った後には、モデル5及びロボット6の座標値をxyz直交座標系で示すことにする。すなわち、平行移動及び正規化後の(Xi,Yi,Zi)等は、xyz直交座標系における座標値であるとする。
この具体例では、モデル5及びロボット6のリンク列をm個に分割する箇所の距離に応じた目的関数を用いるものとする。すなわち、モデル5のリンク列においてあらかじめ決められた複数箇所が、m−1個であるとする。また、モデル5のリンク列において、そのm−1個の箇所は、リンク列の長さを1とした場合に、基端側からの長さがg1,g2,…,gm-1となる位置であるとする。例えば、モデル5のリンク列が均等にm個に分割される場合には、gi=i/mとなる。なお、g0=0,gm=1とする。また、giに対応する基準点の座標を、(ai,bi,ci)とする。また、mは2以上の整数である。
また、モデル5のリンク列におけるm−1個の箇所に応じたロボット6のリンク列におけるm−1個の箇所も、リンク列の長さを1とした場合に、基端側からの長さがG1,G2,…,Gm-1となる位置であるとする。例えば、ロボット6のリンク列が均等にm個に分割される場合には、Gi=i/mとなる。なお、G0=0,Gm=1とする。また、Giに対応する基準点の座標を、(Ai,Bi,Ci)とする。また、前述のように、gi=Giであってもよく、または、そうでなくてもよい。また、g1〜gm-1やG1〜Gm-1は、記憶部12で記憶されていてもよい。
特定部14は、記憶部12からg
1〜g
m-1を読み出し、それらを用いてモデル5のリンク列における複数箇所の座標値を特定する(ステップS104)。具体的には、
となるg
iが存在する場合に、特定部14は、そのiについて、(x
j-1,y
j-1,z
j-1)と、(x
j,y
j,z
j)とを両端とするリンクの長さを1としたときの(x
j-1,y
j-1,z
j-1)からの長さが、
である点を、i番目の基準点(a
i,b
i,c
i)とする。そのように、上記式を満たすg
iに応じた箇所(a
i,b
i,c
i)を特定する処理を、j=1〜nについて行うことによって、モデル5のリンク列におけるあらかじめ決められた複数箇所のそれぞれの座標値を特定することができる。その特定した座標値(a
i,b
i,c
i)は、図示しない記録媒体に蓄積されてもよい。なお、d
0=0としている。
ここで、基準点(a
i,b
i,c
i)に対応するロボット6のリンク列における基準点(A
i,B
i,C
i)を特定する方法について説明する。モデル5のリンク列の場合と同様に、
となるG
iが存在する場合に、そのiについて、(X
j-1,Y
j-1,Z
j-1)と、(X
j,Y
j,Z
j)とを両端とするリンクの長さを1としたときの(X
j-1,Y
j-1,Z
j-1)からの長さが、
である点が、i番目の基準点(A
i,B
i,C
i)となる。そのように、上記式を満たすG
iに応じた箇所(A
i,B
i,C
i)を特定する処理を、j=1〜Nについて行うことによって、ロボット6のリンク列におけるあらかじめ決められた複数箇所のそれぞれの座標値を特定することができる。その特定した座標値(A
i,B
i,C
i)は、図示しない記録媒体に蓄積されてもよい。なお、D
0=0としている。
なお、ロボット6のリンク列においては、リンクの先端側の端点の位置を、そのリンクの基端側の端点の位置と、その基端側の端点における関節の角度とを用いて表すことができる。例えば、次式のようになる。なお、i=1〜Nであり、関数Fiは、関節Piの角度θ1 i,θ2 i,…,θki iを引数とし、Piに対するP(i+1)の相対的な位置を示す関数である。
(Xi,Yi,Zi)=(Xi-1,Yi-1,Zi-1)+Fi-1(θ1 i-1,θ2 i-1,…,θk(i-1) i-1)
したがって、各座標値(Aj,Bj,Cj)は、各関節Piの角度を用いて表すことができるため、例えば、次式のように表すことができる。なお、j=1〜m−1である。また、(Aj,Bj,Cj)の位置に応じて、関数Gjの引数は変わりうるが、次式では、引数が最も多い場合について記載している。この関係はロボット6のリンク列における複数の箇所が変更されない限り変わらないため、特定部14は、モデル5のリンク列における複数の箇所の座標値を特定する際に、ロボット6のリンク列における複数の箇所を示す次式を算出し、その算出した結果を記憶部12または図示しない記録媒体に蓄積してもよい。
(Aj,Bj,Cj)=Gj(θ1 0,θ2 0,…,θk0 0,θ1 1,θ2 1,…,θk1 1,…,θ1 N-1,θ2 N-1,…,θk(N-1) N-1)
その後、算出部15は、目的関数Eを最小にするロボットリンク列情報を算出する(ステップS105)。具体的には、次式の目的関数Eは、各関節の角度θ
1 0,θ
2 0,…,θ
k0 0,θ
1 1,θ
2 1,…,θ
k1 1,…,θ
1 N-1,θ
2 N-1,…,θ
k(N-1) N-1を引数とする関数となる。そのため、算出部15は、次式の目的関数Eが最小となる各関節の角度θ
1 0,θ
2 0,…,θ
k0 0,θ
1 1,θ
2 1,…,θ
k1 1,…,θ
1 N-1,θ
2 N-1,…,θ
k(N-1) N-1を算出し、その算出結果であるロボットリンク列情報をノイズ除去部16に渡す。
上記目的関数Eは、例えば図6において、基準点ps1と基準点PS1との距離の二乗、基準点ps2と基準点PS2との距離の二乗、基準点ps3と基準点PS3との距離の二乗、基準点ps4と基準点PS4との距離の二乗を足しあわせたものとなる。なお、リンク列の両端点も基準点である場合には、その距離も目的関数に含めるようにしてもよい。その場合には、上記目的関数Eの式において、総和をj=0からj=mまでにすればよいことになる。なお、(a0,b0,c0)=(x0,y0,z0)であり、(am,bm,cm)=(xn,yn,zn)であり、(A0,B0,C0)=(X0,Y0,Z0)であり、(Am,Bm,Cm)=(XN,YN,ZN)であるとする。図6においては、正規化後のリンク列5a,6aを示しているため、両リンク列5a,6aの長さは等しくなっており、また、基端側の端点p0,P0が一致している。そのように、リンク列の基端を一致させる場合には、j=0における基準点間の距離は0であるため、上記目的関数において、総和をj=1からj=mまでにしてもよい。
なお、上記目的関数Eにおいて、(ai,bi,ci)は、特定部14によって特定された座標値であり、(Ai,Bi,Ci)は、各関節の角度θ1 0,θ2 0,…,θk0 0,θ1 1,θ2 1,…,θk1 1,…,θ1 N-1,θ2 N-1,…,θk(N-1) N-1で表される。したがって、その目的関数Eを最小にする角度θ1 0,θ2 0,…,θk0 0,θ1 1,θ2 1,…,θk1 1,…,θ1 N-1,θ2 N-1,…,θk(N-1) N-1を勾配法によって求める場合には、例えば、目的関数Eを角度θ1 0等で偏微分し、角度θ1 0等について目的関数Eが極小値となる位置をそれぞれ求めてもよい。
ノイズ除去部16は、算出部15から受け取ったロボットリンク列情報から高周波のノイズ成分を除去し、その除去した結果のロボットリンク列情報を出力部17に渡す(ステップS106)。なお、そのノイズの除去を移動平均処理によって行う場合には、ノイズ除去部16は、あらかじめ決められた個数の最新のロボットリンク列情報を一時的に記憶していてもよい。
出力部17は、ノイズ除去部16から受け取ったロボットリンク列情報をロボット6に出力する(ステップS107)。その結果、ロボット6は、リンク列の各関節が、ロボットリンク列情報に含まれる角度となるように各関節のモータ等を制御する。そのようにすることで、モデル5のリンク列の形状と、ロボット6のリンク列の形状とが似たものになる。また、そのような動作が繰り返されることによって、ロボット6がモデル5の動作をまねるように制御できるようになり、ロボット6をミラーロボットとして動作させることができるようになる。
そのミラーロボットとしてのロボット6の動作の一例について具体的に説明する。図7で示されるように、モデル5が、腕に対応するリンク列5aを、下向きの位置5a−1から、側方の位置5a−2を経由して、上向きの位置5a−3にまで、矢印AR1のように動かしたとする。その一連の動作において、腕はねじられていないものとする。すなわち、関節p0,p1においては、図6の紙面に垂直な方向の軸を中心とする回転のみが行われたとする。一方、ロボット6の腕に対応するリンク列6aは、下向きの位置6a−1から腕をねじることなく上げることができるのは、側方の位置6a−2までであったとする。すると、ロボット6の腕をねじることなく側方の位置6a−2から上向きの位置6a−3までのマッピングを行うことができなくなる。そこで、モデル5のリンク列が側方の位置5a−2から上向きの位置5a−3にまで移動する際には、目的関数Eを最小にするため、算出部15は、関節P0において腕を180°ねじるようにロボットリンク列情報を算出することになる。したがって、目的関数Eを最小にするようにロボット6のリンク列6aを動作させる場合には、そのリンク列6aは、下向きの位置6a−1から側方の位置6a−2まで腕をねじることなく矢印AR2のように動き、その後、矢印AR3の方向に180°回転された後に、側方の位置6a−2から上向きの位置6a−3まで、矢印AR4のように動くことになる。その結果、上向きの位置5a−3,6a−3において、モデル5の手の平は外向きとなり、ロボット6の手の平は内向きとなる違いはあるが、両者の腕の形状を似たものとすることができる。
なお、上述の説明において、写像元のモデル5のリンク列におけるリンク数が、ロボット6のリンク列におけるリンク数以上である場合には、リンク列における複数の箇所の個数や位置を適切に設定することによって、ロボット6のリンク列の形状が一意に決定されうる。一方、写像元のモデル5のリンク列におけるリンク数が、ロボット6のリンク列におけるリンク数未満である場合には、ロボット6のリンク列の形状が一意に決定されないこともある。ロボット6のリンク列の形状が一意に決定されないとは、目的関数Eを最小にする複数の異なるロボットリンク列情報を算出できることである。そのような場合には、算出部15は、例えば、ランダムにロボットリンク列情報を算出してもよく、または、ロボットリンク列情報を一意に決定するための制約条件を用いて、ロボットリンク列情報を算出してもよい。その制約条件は、例えば、直前のロボット6のリンク列からの変化が最も少なくなるようにすることであってもよい。その変化は、関節の角度の変化であってもよく、または、リンク列における特定の位置の変化であってもよい。その特定の位置は、関節であってもよく、先端であってもよく、その他の点であってもよい。また、それ以外の制約条件を用いて目的関数Eを小さくするためのロボットリンク列情報を算出するようにしてもよい。写像元のモデル5のリンク列におけるリンク数が、ロボット6のリンク列におけるリンク数以上である場合であっても、ロボット6のリンク列の形状が一意に決定されないときには、上述の説明と同様にしてロボットリンク列情報を算出してもよい。
以上のように、本実施の形態によるリンク列マッピング装置1によれば、モデル5のリンク列をロボット6のリンク列にマッピングするための変換式等を人手で作成しなくても、ロボット6のリンク列が、モデル5のリンク列と似た動作を行うように、モデル5のリンク列の形状をロボット6のリンク列にマッピングすることができる。そのため、その変換式を作成する労力が不要になるというメリットがある。また、そのような変換式を用いた場合には、モデル5が想定外の動きを行うことなどによって、ロボット6のリンク列への変換に失敗し、ロボット6の動きが途中で停止することもあるが、本実施の形態のようにマッピングを行うことによって、そのような事態を回避することができる。また、ロボット6のリンク数がモデル5のリンク数よりも少ない場合や、ロボット6の関節の可動域がモデル5の関節の可動域よりも狭い場合、すなわち、完全なミラーリングのためのマッピングを行うことができない場合であっても、ロボット6の動きをモデル5の動きに似せることができるようになる。また、ノイズ除去部16を備えることにより、ロボットリンク列情報における高周波ノイズを除去することができ、例えば、モデルリンク列情報に混入した高周波ノイズの影響を低減することができるようになる。
また従来、ヒューマノイドロボットのリンク数や関節の可動域に合うように、人間の動きがキャプチャーされることもあった。具体的には、ロボットの腕のリンク数が1個である場合には、人間の腕においても、1個のリンクに関する動きのみがキャプチャーされることがあった。その場合には、ヒューマノイドロボットの種類ごとに専用のモーションキャプチャを行うようにセッティングする必要があった。一方、本実施の形態によるリンク列マッピング装置1では、モデルリンク列情報からロボットリンク列情報へのマッピングを自動的に行うため、モーションキャプチャ装置2は、汎用のモーションキャプチャを行う装置であってもよい。したがって、専用のモーションキャプチャを行わなくてもよいというメリットもある。
なお、本実施の形態では、リンク列マッピング装置1がノイズ除去部16を備えている場合について説明したが、高周波のノイズ成分を除去しない場合には、リンク列マッピング装置1は、ノイズ除去部16を備えていなくてもよい。例えば、モデルリンク列情報に高周波のノイズ成分が含まれていないことが明らかな場合などには、リンク列マッピング装置1はノイズ除去部16を備えなくてもよい。
また、本実施の形態では、正規化部13がモデル5のリンク列の基端と、ロボット6のリンク列の基端を座標系の原点にする場合について説明したが、そうでなくてもよい。両基端が原点になっていない状況で目的関数を用いたロボットリンク列情報の算出を行ってもよく、はじめから両基端が原点となるように各リンク列の座標系が設定されていてもよい。
また、本実施の形態では、モデル5のリンク列の長さと、ロボット6のリンク列の長さとを正規化する場合について説明したが、そうでなくてもよい。例えば、両長さが一緒になるように設定されている場合、例えば、モデルリンク列情報におけるリンク列の長さと、ロボット6のリンク列の長さとが同じになるように決まっている場合などには、正規化の処理を行わなくてもよい。その場合には、リンク列マッピング装置1は、正規化部13を備えていなくてもよい。
また、本実施の形態では、記憶部12に関節可動域情報が記憶されている場合について説明したが、そうでなくてもよい。例えば、関節の可動域に制限のない場合には、関節可動域情報が記憶部12で記憶されていなくてもよい。また、関節可動域情報が記憶部12において記憶されていない場合には、算出部15は、関節可動域情報に関する制約条件のない状況において、目的関数が小さくなるようにロボットリンク列情報を算出することになる。
また、本実施の形態において、上述のように、モデルリンク列情報を用いてロボットリンク列情報を算出し、そのロボットリンク列情報に応じた出力を行う一連の処理は、リアルタイムで行われてもよく、または、そうでなくてもよい。
また、本実施の形態では、モデル5やロボット6のリンク列に分岐のない場合について説明したが、リンク列に分岐が含まれていてもよい。モデル5やロボット6のリンク列に分岐が含まれる場合には、例えば、分岐点において、複数のリンク列に分割し、分岐のない各リンク列について上述の処理を行ってもよく、または、分岐を有するリンク列に対して、上述の処理を行ってもよい。
また、本実施の形態では、ロボット6をミラーロボットとして動作させるためのマッピングを行う場合について主に説明したが、そうでなくてもよい。例えば、モデル5の腕のリンク列を、ロボット6の足のリンク列にマッピングし、モデル5の足のリンク列を、ロボット6の腕のリンク列にマッピングするようにしてもよい。また、人間であるモデル5の腕のリンク列を、蛇型のロボット6の頭から尾までのリンク列にマッピングしてもよい。
なお、本実施の形態では、モデルリンク列情報がモーションキャプチャによって取得されたものである場合について主に説明したが、そうでなくてもよい。モデルリンク列情報は、例えば、手作業やコンピュータなどによって作成された情報であってもよい。その場合には、例えば、3DCG(3次元コンピュータグラフィックス)によってモデルリンク列情報が作成されてもよい。そのように、3DCG等によって作成されたモデルリンク列情報が受付部11で受け付けられる場合には、あるリンク列についてモデルリンク列情報を作成すると、任意のリンク数のロボットを動作させることができるようになるというメリットがある。
また、本実施の形態において、算出部15が最適化において用いる目的関数は、重み付けられた各距離に応じたものであってもよい。すなわち、目的関数に含まれる、モデル5のリンク列における複数の基準点と、その複数の基準点にそれぞれ対応するロボット6のリンク列における複数の基準点との各距離に重みが係数として掛けられていてもよい。具体的には、上述の具体例で用いた目的関数Eを次式のように変更してもよい。
ここで、W
jは重みであり、例えば、記憶部12で記憶されていてもよい。その重みW
jは、少なくとも1個の値が異なっているものとする。そうでなければ、重みを設定する必要がないからである。また、その重みW
jは、ユーザ等が適宜、変更できるようになっていてもよい。そのような場合には、例えば、ユーザが、距離が近くなって欲しい箇所の重みを、他の重みと比較して大きい値に設定することによって、その距離が近くなるようにロボットリンク列情報が算出されるように設定することができる。例えば、特定部14が特定する複数箇所に、モデル5のリンク列の先端が含まれており、モデル5のリンク列の先端である特定された箇所に対応するロボット6のリンク列における箇所が、そのロボット6のリンク列の先端である場合に、そのモデル5及びロボット6の各リンク列の先端の距離の重みを、他の距離の重みよりも大きく設定することにより、モデル5のリンク列の先端と、ロボット6のリンク列の先端とが近くなるようにロボットリンク列情報が算出されるようにすることができる。具体的には、モデル5及びロボット6の各リンク列の先端の距離の重みを「3」に設定し、他の重みを「1」に設定してもよい。モデル5のリンク列の先端やロボット6のリンク列の先端は、通常、注目される位置であるため、両者が近似した位置関係になることによって、ロボット6の動きがモデル5の動きにより近似したものとなる。また、重みを用いることによってモデル5及びロボット6の各リンク列の所望の位置(例えば、各リンク列の先端の位置)を近づけることができるが、厳密に一致させるのではないため、例えば、関節の可動域等の原因により、所望の位置を一致させると両リンク列の類似性が損なわれる場合には、所望の位置を一致させるよりも、両リンク列の類似性が保たれることが優先されるようになる。その程度については、重みの調整によって設定することができる。
また、本実施の形態において、リアルタイムでリンク列のマッピングが行われる場合に、受け付けられた情報や出力される情報に関する予測を行い、その予測に応じた情報が出力されるようにしてもよい。予測とは、少し先の時間(例えば、0.2秒や0.5秒、1秒程度など)の先の情報を予測することである。受付部11によって受け付けられたモデルリンク列情報に応じてロボット6を動作させた場合には、例えば、モーションキャプチャ装置2における処理時間、モーションキャプチャ装置2からリンク列マッピング装置1への送信の時間、リンク列マッピング装置1における処理時間、リンク列マッピング装置1からロボット6への送信の時間、ロボット6における処理時間だけ、ロボット6の動作がモデル5の動作に対して遅れることになる。一方、モデルリンク列情報やロボットリンク列情報に関する予測を行い、その予測に応じた出力がなされるようにすることで、モデル5の動作とロボット6の動作とを一致させることができるようになりうる。そのため、リンク列マッピング装置1は、図8A〜図8Cで示されるように、予測部21a〜21cを備えていてもよい。なお、予測部21a〜21cを特に区別しない場合には、予測部21と記載することにする。予測部21は、モデルリンク列情報またはロボットリンク列情報に関する予測を行う。モデルリンク列情報に関する予測は、モデルリンク列情報を予測することであってもよい。また、ロボットリンク列情報に関する予測は、ロボットリンク列情報を予測することであってもよく、または、ロボットリンク列情報に応じたロボット6のリンク列の各関節の角度に関する情報を予測することであってもよい。出力部17は、予測部21による予測結果に応じて、予測されたロボット6のリンク列の各関節の角度に関する情報を出力する。例えば、モデルリンク列情報について予測が行われた場合には、その予測結果に応じて算出されたロボットリンク列情報等も予測されたものとなるため、結果として、出力部17が出力する情報も、予測されたものとなる。
ここで、予測部21による予測の方法について、簡単に説明する。予測部21は、外挿によって予測を行ってもよい。すなわち、予測部21は、最新の所定期間の予測対象情報を用いて、その所定期間の直後の情報を外挿によって予測してもよい。その場合には、外挿の結果が予測結果となる。具体的には、予測部21は、最新の連続した所定個数の角度や位置など(例えば、最新の200msごとの7個の角度や位置など)を用いて、200ms後や400ms後の角度や位置を外挿してもよい。また、予測部21は、パターンマッチングによって予測を行ってもよい。すなわち、予測部21は、予測対象情報の過去の履歴を図示しない記録媒体で保持しておき、その保持している履歴において、最新の所定期間の予測対象情報にマッチングする箇所を特定し、そのマッチングする箇所の直後の情報を読み出すことによって予測してもよい。その場合には、読み出した結果が予測結果となる。また、その保持される履歴は、時系列に沿ったものであることが好適である。具体的には、予測部21は、最新の連続した所定個数の角度や位置などの時間変化と類似度が高い履歴の箇所を特定し、その特定した箇所の直後の角度や位置などを読み出してもよい。なお、類似度が高いとは、類似度があらかじめ決められた閾値より高いことであってもよい。また、予測部21は、機械学習によって予測を行ってもよい。すなわち、予測部21は、所定期間の予測対象情報を入力とし、その所定期間の直後の情報を出力とする機械学習を、予測対象情報の過去の履歴を用いてあらかじめ実行しておく。そして、その機械学習結果を用いて、予測部21は、最新の所定期間の予測対象情報の入力に対して、その所定期間の直後の情報を出力することによって予測してもよい。その場合には、出力された情報が予測結果となる。なお、予測対象情報は、例えば、モデルリンク列情報であってもよく、ロボットリンク列情報であってもよく、または、ロボットリンク列情報に応じたロボット6のリンク列の各関節の角度に関する情報であってもよい。また、所定期間の直後とは、例えば、0.5秒後であってもよく、1秒後であってもよく、その他の時間の後であってもよい。この時間は、例えば、モデル5の動作に対するロボット6の動作の遅延時間に設定されてもよく、その他の時間に設定されてもよい。また、パターンマッチングや機械学習等によって予測を行う場合には、あるリンク列の複数の情報の集合、例えば、あるリンク列の複数の関節の各角度の集合について、パターンマッチングや機械学習等を行ってもよい。また、予測部21は、複数の予測方法を組み合わせて用いてもよい。例えば、予測部21は、パターンマッチングによる予測を行うことができる場合には、パターンマッチングによる予測を行い、パターンマッチングによる予測を行うことができない場合には、外挿による予測を行ってもよい。パターンマッチングによる予測を行うことができない場合とは、例えば、最新の連続した所定個数の角度や位置などの時間変化と類似度が高い履歴の箇所が存在しない場合であってもよい。また、予測部21は、上述した以外の方法によって予測を行ってもよい。
次に、図8Aを用いて、リンク列マッピング装置1が予測部21aを備えている場合について説明する。この場合には、予測部21aは、受付部11によって受け付けられたモデルリンク列情報を用いて、モデルリンク列情報の予測を行う。そして、受付部11によって受け付けられたモデルリンク列情報に代えて、予測部21aによって予測されたモデルリンク列情報が用いられることになる。例えば、特定部14は、予測部21aによって予測されたモデルリンク列情報を用いて、複数箇所の座標値を特定してもよい。この場合には、そのようにして予測されたモデルリンク列情報が用いられるため、出力対象の情報も、間接的に予測されたものとなる。したがって、出力部17は、その予測結果に応じて、予測されたロボット6のリンク列の各関節の角度に関する情報を出力することになる。
次に、図8Bを用いて、リンク列マッピング装置1が予測部21bを備えている場合について説明する。この場合には、予測部21bは、算出部15によって算出されたロボットリンク列情報を用いて、ロボットリンク列情報の予測を行う。そして、算出部15によって算出されたロボットリンク列情報に代えて、予測部21bによって予測されたロボットリンク列情報が用いられることになる。なお、図8Bでは、予測部21bが、ノイズの除去が行われる前のロボットリンク列情報について予測を行う場合について示しているが、予測部21bは、ノイズの除去の行われた後のロボットリンク列情報について予測を行ってもよい。そのようにして予測されたロボットリンク列情報が用いられるため、出力対象の情報が、そのロボットリンク列情報そのものである場合には、予測された情報が出力されることになり、出力対象の情報が、そのロボットリンク列情報から生成されたものである場合には、間接的に予測された情報が出力されることになる。したがって、出力部17は、その予測結果に応じて、予測されたロボット6のリンク列の各関節の角度に関する情報を出力することになる。
次に、図8Cを用いて、リンク列マッピング装置1が予測部21cを備えている場合について説明する。この場合には、予測部21cは、算出部15によって算出されたロボットリンク列情報に応じたロボット6のリンク列の各関節の角度に関する情報を用いて、その各関節の角度に関する情報の予測を行う。そして、出力部17は、予測部21cによって予測されたロボット6のリンク列の各関節の角度に関する情報を出力する。この場合には、出力部17は、その予測結果に応じて、予測結果そのものである、予測されたロボット6のリンク列の各関節の角度に関する情報を出力することになる。
また、モデルリンク列情報やロボットリンク列情報に関する予測を行う場合に、予測部21は、例えば、受付部11によって受け付けられたモデルリンク列情報と異なるモデルリンク列情報について予測を行ってもよく、算出部15によって算出されたロボットリンク列情報と異なるロボットリンク列情報について予測を行ってもよい。具体的には、受付部11によって受け付けられたモデルリンク列情報が各リンクの両端の位置を示す情報である場合に、予測部21は、そのモデルリンク列情報に応じて算出された、リンク列の関節の角度を示すモデルリンク列情報について予測を行ってもよい。そのモデルリンク列情報の変換は、例えば、予測部21によって行われてもよく、その他の構成要素によって行われてもよい。
また、上記実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、または、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う2個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、または、その情報の受け渡しを行う2個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、算出したり、送信したり、受信したりした情報や、各構成要素が処理で用いる閾値や数式、アドレス等の情報等は、上記説明で明記していなくても、図示しない記録媒体において、一時的に、または長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、または、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、または、図示しない読み出し部が行ってもよい。
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いる閾値やアドレス、各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していなくても、ユーザが適宜、それらの情報を変更できるようにしてもよく、または、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
また、上記実施の形態において、リンク列マッピング装置1に含まれる2以上の構成要素が通信デバイスや入力デバイス等を有する場合に、2以上の構成要素が物理的に単一のデバイスを有してもよく、または、別々のデバイスを有してもよい。
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、または、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、記憶部や記録媒体にアクセスしながらプログラムを実行してもよい。なお、上記実施の形態におけるリンク列マッピング装置1を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータを、モデルのリンク列に含まれる各リンクの位置に関する情報であるモデルリンク列情報を受け付ける受付部、受付部によって受け付けられたモデルリンク列情報を用いて、モデルのリンク列におけるあらかじめ決められた複数箇所の座標値を特定する特定部、特定部によって特定された複数箇所の座標値と、複数箇所にそれぞれ対応するロボットのリンク列における複数箇所の座標値との距離に応じた目的関数が小さくなるように、ロボットのリンク列に含まれる各リンクの位置に関する情報であるロボットリンク列情報を算出する算出部、算出部によって算出されたロボットリンク列情報に応じたロボットのリンク列の各関節の角度に関する情報を出力する出力部として機能させるためのプログラムである。
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を取得する取得部や、情報を出力する出力部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には少なくとも含まれない。
また、このプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体(例えば、CD−ROMなどの光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、または分散処理を行ってもよい。
図8は、上記プログラムを実行して、上記実施の形態によるリンク列マッピング装置1を実現するコンピュータの外観の一例を示す模式図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
図8において、コンピュータシステム900は、CD−ROMドライブ905を含むコンピュータ901と、キーボード902と、マウス903と、モニタ904とを備える。
図9は、コンピュータシステム900の内部構成を示す図である。図9において、コンピュータ901は、CD−ROMドライブ905に加えて、MPU(Micro Processing Unit)911と、ブートアッププログラム等のプログラムを記憶するためのROM912と、MPU911に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するRAM913と、アプリケーションプログラム、システムプログラム、及びデータを記憶するハードディスク914と、MPU911、ROM912等を相互に接続するバス915とを備える。なお、コンピュータ901は、LANやWAN等への接続を提供する図示しないネットワークカードを含んでいてもよい。
コンピュータシステム900に、上記実施の形態によるリンク列マッピング装置1の機能を実行させるプログラムは、CD−ROM921に記憶されて、CD−ROMドライブ905に挿入され、ハードディスク914に転送されてもよい。これに代えて、そのプログラムは、図示しないネットワークを介してコンピュータ901に送信され、ハードディスク914に記憶されてもよい。プログラムは実行の際にRAM913にロードされる。なお、プログラムは、CD−ROM921、またはネットワークから直接、ロードされてもよい。また、CD−ROM921に代えて他の記録媒体(例えば、DVD等)を介して、プログラムがコンピュータシステム900に読み込まれてもよい。
プログラムは、コンピュータ901に、上記実施の形態によるリンク列マッピング装置1の機能を実行させるオペレーティングシステム(OS)、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能やモジュールを呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム900がどのように動作するのかについては周知であり、詳細な説明は省略する。
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。