(57)【特許請求の範囲】
【請求項１】
モデルのリンク列に含まれる各リンクの位置に関する情報であるモデルリンク列情報を受け付ける受付部と、
前記受付部によって受け付けられたモデルリンク列情報を用いて、前記モデルのリンク列におけるあらかじめ決められた複数箇所の座標値を特定する特定部と、
前記特定部によって特定された複数箇所と、当該複数箇所にそれぞれ対応するロボットのリンク列における複数箇所との各距離に応じた目的関数が小さくなるように、前記ロボットのリンク列に含まれる各リンクの位置に関する情報であるロボットリンク列情報を算出する算出部と、
前記算出部によって算出されたロボットリンク列情報に応じた前記ロボットのリンク列の各関節の角度に関する情報を出力する出力部と、を備えたリンク列マッピング装置。
【請求項２】
前記複数箇所の個数は、前記ロボットのリンク列における連結箇所の数よりも多い、請求項１記載のリンク列マッピング装置。
【請求項３】
前記ロボットのリンク列における関節の可動域を示す情報である関節可動域情報が記憶される記憶部をさらに備え、
前記算出部は、前記関節可動域情報の示す可動域内において、前記目的関数が小さくなるように前記ロボットリンク列情報を算出する、請求項１または請求項２記載のリンク列マッピング装置。
【請求項４】
前記モデルのリンク列の長さと、前記ロボットのリンク列の長さとを正規化する正規化部をさらに備え、
前記距離は、正規化後の距離である、請求項１から請求項３のいずれか記載のリンク列マッピング装置。
【請求項５】
前記距離は、前記モデルのリンク列の基端及び前記ロボットのリンク列の基端を原点にした座標系における座標値に応じた距離である、請求項１から請求項４のいずれか記載のリンク列マッピング装置。
【請求項６】
前記ロボットリンク列情報に含まれる高周波のノイズ成分を除去するノイズ除去部をさらに備え、
前記出力部は、前記ノイズ除去部によって高周波のノイズ成分が除去されたロボットリンク列情報に応じた前記ロボットのリンク列の各関節の角度に関する情報を出力する、請求項１から請求項５のいずれか記載のリンク列マッピング装置。
【請求項７】
モデルのリンク列に含まれる各リンクの位置に関する情報であるモデルリンク列情報を受け付ける受付ステップと、
前記受付ステップで受け付けられたモデルリンク列情報を用いて、前記モデルのリンク列におけるあらかじめ決められた複数箇所の座標値を特定する特定ステップと、
前記特定ステップで特定された複数箇所と、当該複数箇所にそれぞれ対応するロボットのリンク列における複数箇所との各距離に応じた目的関数が小さくなるように、前記ロボットのリンク列に含まれる各リンクの位置に関する情報であるロボットリンク列情報を算出する算出ステップと、
前記算出ステップで算出されたロボットリンク列情報に応じた前記ロボットのリンク列の各関節の角度に関する情報を出力する出力ステップと、を備えたリンク列マッピング方法。
【請求項８】
コンピュータを、
モデルのリンク列に含まれる各リンクの位置に関する情報であるモデルリンク列情報を受け付ける受付部、
前記受付部によって受け付けられたモデルリンク列情報を用いて、前記モデルのリンク列におけるあらかじめ決められた複数箇所の座標値を特定する特定部、
前記特定部によって特定された複数箇所と、当該複数箇所にそれぞれ対応するロボットのリンク列における複数箇所との各距離に応じた目的関数が小さくなるように、前記ロボットのリンク列に含まれる各リンクの位置に関する情報であるロボットリンク列情報を算出する算出部、
前記算出部によって算出されたロボットリンク列情報に応じた前記ロボットのリンク列の各関節の角度に関する情報を出力する出力部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モデルのリンク列をロボットのリンク列にマッピングするために用いられるリンク列マッピング装置等に関する。
【背景技術】
【０００２】
従来、ヒューマノイドロボットが作られており、そのヒューマノイドロボットに人間の動作をまねさせることも行われている。人間と同様の動きを行うことができるヒューマノイドロボットについては、キャプチャーした人間の動きをそのまま動作させることができる。一方、そうでない場合、例えば、ヒューマノイドロボットの方が人間よりも関節数が少なかったり、関節の可動域が狭かったりする場合には、キャプチャーした人間の動きをロボットに合うように変換する必要があった。そのような変換の設定は、人間が手動で行っていた。
なお、関連する技術として、人間の動きをキャプチャーする技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１２−５２５６４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述のように、キャプチャーした人間の動きをロボットに合うように変換する場合には、ヒューマノイドロボットの種類ごとにその変換の設定を行わなくてはならないという問題があった。また、そのような変換の設定を行っていても、例えば、人間が想定外の動きを行った場合には、その人間の動きを適切に変換することができず、ヒューマノイドロボットの動きが停止してしまうという問題もあった。
【０００５】
一般的に言えば、モデルの動きをロボットにマッピングする際に、人手によってその変換式等を作成しなくてもよいようにしたいという要望があった。
【０００６】
本発明は、上記事情に応じてなされたものであり、モデルのリンク列を自動的に任意のロボットのリンク列にマッピングすることができるリンク列マッピング装置等を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明によるリンク列マッピング装置は、モデルのリンク列に含まれる各リンクの位置に関する情報であるモデルリンク列情報を受け付ける受付部と、受付部によって受け付けられたモデルリンク列情報を用いて、モデルのリンク列におけるあらかじめ決められた複数箇所の座標値を特定する特定部と、特定部によって特定された複数箇所と、複数箇所にそれぞれ対応するロボットのリンク列における複数箇所との距離に応じた目的関数が小さくなるように、ロボットのリンク列に含まれる各リンクの位置に関する情報であるロボットリンク列情報を算出する算出部と、算出部によって算出されたロボットリンク列情報に応じたロボットのリンク列の各関節の角度に関する情報を出力する出力部と、を備えたものである。
このような構成により、モデルのリンク列とロボットのリンク列とに、例えばリンク数などの相異があったとしても、ロボットのリンク列がモデルのリンク列に似るように、ロボットのリンク列の各関節の角度に関する情報を出力することができる。その結果、モデルのリンク列を自動的に任意のロボットのリンク列にマッピングするための変換式等を人手で作成しなくてもよいことになる。また、変換式等を用いるのではないため、モデルのリンク列の位置が想定外のものになったとしても、ロボットリンク列情報を算出することができる。そのため、例えば、ロボットのリンク列の動きが停止するような事態を回避することができる。
【０００８】
また、本発明によるリンク列マッピング装置では、複数箇所の個数は、ロボットのリンク列における連結箇所の数よりも多くてもよい。
このような構成により、モデルのリンク列をロボットのリンク列に適切にマッピングすることができるようになる。
【０００９】
また、本発明によるリンク列マッピング装置では、ロボットのリンク列における関節の可動域を示す情報である関節可動域情報が記憶される記憶部をさらに備え、算出部は、関節可動域情報の示す可動域内において、目的関数が小さくなるようにロボットリンク列情報を算出してもよい。
このような構成により、例えば、モデルのリンク列とロボットのリンク列とについて、関節の可動域が異なっていたとしても、ロボットのリンク列がモデルのリンク列に似るように、ロボットリンク列情報を算出することができるようになる。
【００１０】
また、本発明によるリンク列マッピング装置では、モデルのリンク列の長さと、ロボットのリンク列の長さとを正規化する正規化部をさらに備え、距離は、正規化後の距離であってもよい。
このような構成により、モデルのリンク列をロボットのリンク列により適切にマッピングすることができるようになる。
【００１１】
また、本発明によるリンク列マッピング装置では、距離は、モデルのリンク列の基端及びロボットのリンク列の基端を原点にした座標系における座標値に応じた距離であってもよい。
このような構成により、ロボットリンク列情報を算出する際の計算量を低減することができる。
【００１２】
また、本発明によるリンク列マッピング装置では、ロボットリンク列情報に含まれる高周波のノイズ成分を除去するノイズ除去部をさらに備え、出力部は、ノイズ除去部によって高周波のノイズ成分が除去されたロボットリンク列情報に応じたロボットのリンク列の各関節の角度に関する情報を出力してもよい。
このような構成により、例えば、モデルリンク列情報に高周波のノイズが入っている場合であっても、そのノイズを除去した出力を行うことができるようになる。
【発明の効果】
【００１３】
本発明によるリンク列マッピング装置等によれば、モデルのリンク列を自動的に任意のロボットのリンク列にマッピングすることができるようになる。その結果、マッピングのための変換式等を人手で作成しなくてもよいことになる。また、モデルが想定外の動作をしたとしても、ロボットリンク列情報を算出できるようになる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態によるリンク列マッピング装置の構成を示すブロック図
【図２】同実施の形態によるリンク列マッピング装置の動作を示すフローチャート
【図３】同実施の形態におけるモデルのリンク列の一例を示す図
【図４】同実施の形態におけるロボットのリンク列の一例を示す図
【図５】同実施の形態におけるロボットの関節の角度の一例を示す図
【図６】同実施の形態における正規化されたモデル及びロボットのリンク列の一例を示す図
【図７】同実施の形態におけるモデル及びロボットのリンク列の動作の一例を示す図
【図８】同実施の形態におけるコンピュータシステムの外観一例を示す模式図
【図９】同実施の形態におけるコンピュータシステムの構成の一例を示す図
【発明を実施するための形態】
【００１５】
以下、本発明によるリンク列マッピング装置について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。本実施の形態によるリンク列マッピング装置は、モデルのリンク列をロボットのリンク列にマッピングするため、モデルのリンク列上の複数の点と、ロボットのリンク列上の複数の点との各距離に応じた目的関数が小さくなるように、ロボットのリンク列の各関節の角度を求めるものである。
【００１６】
図１は、本実施の形態によるリンク列マッピング装置１の構成を示すブロック図である。本実施の形態によるリンク列マッピング装置１は、受付部１１と、記憶部１２と、正規化部１３と、特定部１４と、算出部１５と、ノイズ除去部１６と、出力部１７とを備える。
【００１７】
受付部１１は、モデル５のリンク列に含まれる各リンクの位置に関する情報であるモデルリンク列情報を受け付ける。モデル５は、例えば、人間であってもよく、人間以外の動物やロボットなどであってもよい。なお、リンク列マッピング装置１は、例えば、モデル５の動きをロボット６にまねさせるためのマッピングを行うものであるため、モデル５は、動きのあるものであることが好適である。このモデル５は、リンク列のマッピングの写像元となる対象である。モデル５は、マッピング対象となる１以上のリンク列を有していることが好適である。例えば、モデル５が人間である場合には、四肢のそれぞれがリンク列となる。また、人間の頭から腰までを一つのリンク列と考えてもよい。モデルリンク列情報は、連結された複数のリンクの全体（例えば、両肩の中心から手先までのリンク列など）の情報であってもよく、その連結された複数のリンクの一部（例えば、肘から手先までのリンク列など）の情報であってもよい。また、モデルリンク列情報は、手先や足先などの端部、すなわち関節ではない端部を有するリンク列の情報であってもよく、または、肩から手首までのリンク列のように関節から関節までのリンク列の情報であってもよい。また、本実施の形態では、モデルリンク列情報が、分岐を含まないリンク列の情報である場合について主に説明するが、モデルリンク列情報は、分岐を含むリンク列の情報であってもよい。モデルリンク列情報は、結果としてモデル５のリンク列に含まれる各リンクの位置が分かる情報であれば、どのような情報であってもよい。モデルリンク列情報は、例えば、各リンクの両端の位置を示す情報であってもよく、各リンクの長さと関節におけるリンク間の角度とを示す情報であってもよい。各リンクの両端の位置を示す情報は、各関節の位置を示す情報を含んでいてもよく、さらにリンク列の端部の位置を示す情報を含んでいてもよい。本実施の形態では、モデルリンク列情報が、リンク列の関節の位置を示す情報と、端部の位置を示す情報とを含んでいる場合について主に説明する。その位置は、モデル５のリンク列について設定されている座標系における位置である。その座標系は、モデル５が存在する実空間の座標系であってもよく、モデル５のリンク列に関する位置の取得された仮想空間の座標系であってもよく、その他の座標系であってもよい。
【００１８】
モデルリンク列情報は、例えば、モーションキャプチャの技術によって取得されてもよい。モーションキャプチャは、例えば、モデル５に装着されたマーカの位置を検出することによって行われてもよく、または、モデル５の撮影画像を用いて行われてもよい。マーカを用いて行われるモーションキャプチャは、例えば、光学式のモーションキャプチャであってもよく、機械式のモーションキャプチャであってもよく、磁気式のモーションキャプチャであってもよい。また、撮影画像を用いてモーションキャプチャを行う場合に、例えば、モデル５との距離を測定することなどによって、撮影画像を用いたモーションキャプチャの精度を向上させるようにしてもよい。撮影画像を用いたモーションキャプチャを行う装置として、例えば、ＫＩＮＥＣＴ（登録商標）や、ＲｅａｌＳｅｎｓｅなどを用いてもよい。
【００１９】
リンク列のマッピングがリアルタイムで行われる場合には、受付部１１は、例えば、モデルリンク列情報を時系列に沿って繰り返して、一定または不定の時間間隔で受け付けることが好適である。すなわち、受付部１１が受け付けたモデルリンク列情報によって、モデル５のリンク列の動きが分かることが好適である。なお、モデルリンク列情報自体が、モデル５のリンク列に関する時系列に沿った情報であってもよい。一方、リンク列のマッピングがリアルタイムで行われない場合には、受付部１１は、例えば、モデル５のリンク列に関する複数のモデルリンク列情報を一括して受け付けてもよく、または、モデルリンク列情報を一つずつ受け付けてもよい。また、モデル５が２以上のリンク列を有する場合に、受付部１１は、モデル５のリンク列ごとにモデルリンク列情報を受け付けてもよい。本実施の形態では、モデル５が人間であり、その人間の腕に関するリンク列のモデルリンク列情報が定期的にリアルタイムでモーションキャプチャ装置２からリンク列マッピング装置１に入力され、受付部１１で受け付けられる場合について主に説明する。また、受付部１１が複数のリンク列にそれぞれ対応する複数のモデルリンク列情報を受け付ける場合には、そのモデルリンク列情報には、対応するリンク列を識別する情報（例えば、右腕のリンク列である旨等）が含まれていてもよい。また、受付部１１は、モデルリンク列情報と共に、モデル５の向きを示す情報（例えば、モデル５の顔の向きを示す情報など）をも受け付けてもよい。そのモデル５の向きを示す情報を用いることによって、モデルリンク列情報がモデル５のどのリンク列に対応するのかを知ることができるようになる。
【００２０】
なお、受付部１１は、例えば、有線または無線の通信回線を介して送信されたモデルリンク列情報を受信してもよく、所定の記録媒体（例えば、光ディスクや磁気ディスク、半導体メモリなど）から読み出されたモデルリンク列情報を受け付けてもよい。なお、受付部１１は、受け付けを行うためのデバイス（例えば、モデムやネットワークカードなど）を含んでもよく、または含まなくてもよい。また、受付部１１は、ハードウェアによって実現されてもよく、または所定のデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
【００２１】
記憶部１２では、ロボット６のリンク列における関節の可動域を示す情報である関節可動域情報が記憶される。その関節可動域情報には、可動域に制限のあるすべての関節に関する情報が含まれていることが好適である。例えば、ロボット６のリンク列におけるリンク１０１，１０２の間の関節Ｐｉの角度が、図５のようにθ1i、θ2i、θ3iで示される場合に、関節可動域情報は、θ1i、θ2i、θ3iのうち、可動域に制限のある１以上の角度に関する範囲を示す情報であってもよい。例えば、角度θ1iの範囲が、
α1i≦θ1i≦β1i
である場合には、関節可動域情報に含まれる角度θ1iに関する情報は、その角度θ1iに関する下限値α1iと、上限値β1iとであってもよい。なお、可動域に制限のない関節や軸については、関節可動域情報によって可動域が示されなくてもよい。また、図５では、リンク１０１，１０２の間の関節Ｐｉが３個の軸を有している場合について示しているが、関節の軸数は問わない。関節の軸数は、例えば、１個、２個、３個のいずれかであってもよく、４個以上であってもよい。また、その関節の軸の方向についても任意である。また、２以上の軸を有する関節においては、各軸の順序、例えば、リンク１０１側からリンク１０２側について、どのような順序で各軸が設けられているのかを示す情報が記憶部１２で記憶されていてもよい。
【００２２】
本実施の形態では、ロボット６がヒューマノイドロボットである場合について主に説明するが、そうでなくてもよい。ロボット６は、例えば、犬や猫、鳥、魚、蛇、昆虫などの動物型ロボットであってもよく、その他の形状のロボットであってもよい。なお、そのロボット６は、１以上の動作可能なリンク列を有しているものとする。その動作可能なリンク列は、例えば、複数のモータによってそれぞれ駆動される複数の関節によって連結されたリンク列であってもよい。また、そのロボット６は、通常、玩具用のロボット、すなわちエンタテイメントロボットであるが、そうでなくてもよい。また、写像元であるモデル５のリンク列におけるリンク数ＬＮ１と、写像先であるロボット６のリンク列におけるリンク数ＬＮ２との多少は問わない。例えば、モデル５のリンク数ＬＮ１は、ロボット６のリンク数ＬＮ２より多くてもよく、少なくてもよく、両リンク数ＬＮ１，ＬＮ２は等しくてもよい。なお、ロボット６のリンク列についても、モデル５のリンク列と同様に座標系が設定されているものとする。その座標系は、ロボット６が存在する実空間の座標系であってもよく、ロボット６のリンク列に関する位置関係を示すための仮想空間の座標系であってもよく、その他の座標系であってもよい。
【００２３】
記憶部１２では、関節可動域情報以外の情報が記憶されていてもよい。例えば、ロボット６のリンク列における各リンクの長さを示すリンク長さ情報が記憶部１２で記憶されてもよい。そのリンク長さ情報と、ロボット６のリンク列における各関節の角度とを用いることによって、ロボット６のリンク列の位置を特定できることは、ロボットの順運動学として知られている。また、例えば、ロボット６のリンク列における各関節の軸の方向に関する情報が記憶部１２で記憶されてもよい。また、モデル５のリンク列においてあらかじめ決められた複数箇所を示す情報や、その複数箇所に対応する、ロボット６のリンク列における複数箇所を示す情報が記憶部１２で記憶されていてもよい。また、ロボット６のリンク列に、直線以外の形状のリンクが含まれる場合には、そのリンクの形状を示す情報が記憶部１２で記憶されていてもよい。また、後述するノイズ除去部１６におけるローパスフィルタの時定数等が記憶部１２で記憶されていてもよい。
【００２４】
記憶部１２に情報が記憶される過程は問わない。例えば、記録媒体を介して情報が記憶部１２で記憶されるようになってもよく、通信回線等を介して送信された情報が記憶部１２で記憶されるようになってもよく、または、入力デバイスを介して入力された情報が記憶部１２で記憶されるようになってもよい。記憶部１２での記憶は、ＲＡＭ等における一時的な記憶でもよく、または、長期的な記憶でもよい。記憶部１２は、所定の記録媒体（例えば、半導体メモリや磁気ディスク、光ディスクなど）によって実現されうる。
【００２５】
正規化部１３は、モデル５のリンク列の長さと、ロボット６のリンク列の長さとを正規化する。通常、モーションキャプチャ装置２から受け取るモデルリンク列情報によって示されるモデル５のリンク列の長さと、ロボット６のリンク列の長さとは異なっている。したがって、正規化部１３は、両者の長さを一致させる処理である正規化を行う。その正規化において、モデル５のリンク列の長さ、及びロボット６のリンク列の長さは、「１」にされてもよく、または、他の値にされてもよい。本実施の形態では、前者の場合について主に説明する。なお、リンク列の長さとは、リンク列の一端から他端までの各リンクの長さの合計である。モデル５及びロボット６のリンク列の長さを１に正規化する場合には、正規化部１３は、例えば、モデル５のリンク列の長さを算出し、モデル５のリンク列における各座標値をその算出したリンク列の長さで割ることによって正規化を行ってもよく、ロボット６のリンク列の長さを算出し、ロボット６のリンク列における各リンクの長さをその算出したリンク列の長さで割ることによって正規化を行ってもよい。なお、例えば、モデルリンク列情報によって、モデル５のリンク列における各リンクの両端の位置が示される場合には、正規化部１３は、その情報を用いて各リンクの長さを算出して合計することによって、モデル５のリンク列の長さを算出することができる。また、例えば、モデルリンク列情報によって、モデル５のリンク列における各リンクの長さと角度とが示される場合には、正規化部１３は、各リンクの長さを合計することによって、モデル５のリンク列の長さを算出することができる。また、例えば、記憶部１２においてロボット６のリンク列における各リンクの長さが記憶されている場合には、正規化部１３は、その各リンクの長さを合計することによって、ロボット６のリンク列の長さを算出することができる。また、正規化部１３は、モデル５のリンク列の座標系と、ロボット６のリンク列の座標系との少なくとも一方の座標系の単位を変更することによって、正規化を行ってもよい。例えば、正規化部１３は、両座標系において、モデル５のリンク列の長さと、ロボット６のリンク列の長さが１になるように座標系の単位を変更することによって、正規化を行ってもよい。
【００２６】
正規化部１３は、この正規化の処理の際に、モデル５のリンク列の基端と、ロボット６のリンク列の基端との両方が原点となる座標系を設定してもよい。そして、その座標系において、後段の特定部１４や算出部１５の処理が行われてもよい。具体的には、正規化部１３は、モデル５のリンク列の座標系と、ロボット６のリンク列の座標系とのそれぞれについて、リンク列の基端が原点となるように平行移動などの座標変換を行い、両座標系を同一のものにするため、少なくとも一方の座標系について回転等の座標変換を行ってもよい。なお、両座標系の向きが一致している場合には、回転等の座標変換は行わなくてもよい。本実施の形態では、モデル５及びロボット６のリンク列の位置を示す最終的な座標系として、ｘｙｚ直交座標系が設定される場合について主に説明する。なお、リンク列の基端とは、例えば、人間の腕や足に対応するリンク列における胴体側、すなわち手先や足先の反対側（すなわち、本体側）の端点のことである。例えば、蛇に対応するリンク列のように本体が存在しない場合には、いずれかの端部、例えば尾側または頭側の端部を基端とみなしてもよい。なお、基端と反対側の端点を先端と呼ぶこともある。また、ロボット６のリンク列における各リンクの長さが変わることはないため、ロボット６のリンク列に関する正規化は、１回行われるだけであってもよい。一方、モデル５のリンク列における各リンクの長さは、モデルリンク列情報の取得方法によっては、時間的に変化することもあり得る。そのように、モデル５のリンク列における各リンクの長さが変わりうる場合には、受付部１１がモデル５のリンク列に関する情報を受け付けるごとに、モデル５のリンク列に関する正規化が行われることが好適である。一方、モデル５のリンク列における各リンクの長さが変わらない場合には、例えば、正規化部１３が、モデル５のリンク列に関する正規化を１回行い、その正規化後の座標系等をモーションキャプチャ装置２に渡すことによって、それ以降は、正規化されたモデルリンク列情報が受け付けられるようになってもよい。なお、特定部１４や算出部１５が用いるモデル５やロボット６の座標値は、正規化部１３によって正規化された後の座標値である。また、正規化が行われ、両リンク列の基端が原点とされた後には、モデル５のリンク列の位置と、ロボットリンク列の位置とは、一の座標系において示されることが好適である。本実施の形態では、正規化が行われ、両リンク列の基端が原点とされた後に、モデル５及びロボット６の位置が上述のｘｙｚ直交座標系によって示される場合について主に説明する。
【００２７】
特定部１４は、受付部１１によって受け付けられたモデルリンク列情報を用いて、モデル５のリンク列におけるあらかじめ決められた複数箇所の座標値を特定する。なお、その座標値の特定は、正規化部１３による正規化の行われた後の座標値の特定である。また、本実施の形態では、その座標値が上述のｘｙｚ直交座標系における座標値である場合について主に説明する。モデル５のリンク列におけるあらかじめ決められた複数箇所とは、モデル５のリンク列の両端点の間をあらかじめ決められた比で内分する複数箇所である。すなわち、その複数箇所は、リンク列の両端間をあらかじめ決められた割合で分割する複数の点に応じた箇所である。したがって、この複数箇所は、リンク列の関節の位置とは関係なく決められる。また、この複数箇所の個数は、ロボット６のリンク列における連結箇所の数よりも多いことが好適である。リンク列における連結箇所とは、リンク列においてリンクとリンクとを接続する箇所のことである。また、通常、リンク列における連結箇所の数に１を足した値が、そのリンク列におけるリンク数となるため、複数箇所の個数は、ロボット６のリンク列におけるリンク数以上であることが好適であると言い換えることもできる。また、その複数箇所の位置は、均等に設けられてもよく、またはそうでなくてもよい。また、その複数箇所には、モデル５のリンク列における一端または両端が含まれていてもよく、そうでなくてもよい。また、リンク列の両端点の間をあらかじめ決められた比で内分する複数箇所とは、リンク列を直線状に伸ばした場合に、両端点の間をあらかじめ決められた比で内分する複数箇所であると考えてもよい。その複数箇所の各々を基準点と呼ぶこともある。また、座標値を特定するとは、その特定した座標値を記録媒体に蓄積することであってもよい。
【００２８】
算出部１５は、特定部１４によって座標値の特定された複数箇所と、その複数箇所にそれぞれ対応するロボット６のリンク列における複数箇所との各距離に応じた目的関数が小さくなるように、ロボット６のリンク列に含まれる各リンクの位置に関する情報であるロボットリンク列情報を算出する。ここで、モデル５のリンク列における複数の基準点に対応するロボット６のリンク列における複数箇所の各々も基準点と呼ぶことがある。特定部１４によって特定された、モデル５のリンク列における複数箇所にそれぞれ対応するロボット６のリンク列における複数箇所とは、例えば、ロボット６のリンク列の両端点の間をあらかじめ決められた比で内分する複数箇所であってもよい。そのあらかじめ決められた比は、モデル５のリンク列における複数箇所に関するあらかじめ決められた比と同じであってもよく、または、異なっていてもよい。後者の場合には、例えば、人間であるモデル５の動きが、ロボット６における大げさな動きとなるようにモデル５のリンク列における複数の基準点と、ロボット６のリンク列における複数の基準点とが決定されてもよい。いずれの場合であっても、複数箇所の個数が、ロボット６のリンク列におけるリンク数以上であるときには、ロボット６のリンク列における各リンクに少なくとも１箇所が存在するように、その比が設定されてもよい。モデル５のリンク列に関するあらかじめ決められた比と、ロボット６のリンク列におけるあらかじめ決められた比とが同じである場合には、モデル５のリンク列及びロボット６のリンク列において、同じ比の基準点が対応する基準点となる。一方、両者の比が異なる場合には、モデル５のリンク列における複数の基準点と、ロボット６のリンク列における複数の基準点とは、基端側から順番にそれぞれ対応するものとする。
【００２９】
特定部１４によって特定された複数箇所と、その複数箇所にそれぞれ対応するロボット６のリンク列における複数箇所との各距離は、特定されたある基準点と、その基準点に対応するロボット６のリンク列における基準点との距離である。その各距離に応じた目的関数は、各距離が大きくなるほど値が大きくなる関数であってもよい。具体的には、その目的関数は、各距離の二乗を加算したものであってもよい。その場合には、最小二乗法を用いたマッピングが行われることになる。また、その目的関数は、各距離の絶対値を加算したものであってもよい。その場合には、最小絶対値法を用いたマッピングが行われることになる。なお、各距離が大きくなるほど値が大きくなるその他の目的関数が用いられてもよいことは言うまでもない。各距離は、正規化後の距離、すなわち、正規化された座標値を用いて計算された距離である。また、各距離は、モデル５及びロボット６のリンク列の基端を原点にした座標系における座標値に応じた距離、すなわち、その座標値を用いて計算された距離である。また、目的関数が小さくなるようにロボットリンク列情報を算出することは、目的関数が小さくなるようにロボット６のリンク列の位置を算出することである。通常、ロボット６のリンク列における各リンクの長さは一定であるため、ロボット６のリンク列における各関節の角度によって、ロボット６のリンク列の位置を特定できる。したがって、ロボット６のリンク列の位置を算出することは、そのリンク列における各関節の角度を算出することであってもよい。その場合には、ロボットリンク列情報は、ロボット６のリンク列における各関節の角度を示す情報であってもよい。リンク列の基端も関節である場合には、そのロボットリンク列情報には、その基端である関節の角度も含まれてもよい。一方、ロボットリンク列情報は、関節の角度以外の情報であってもよい。例えば、ロボットリンク列情報は、ロボット６のリンク列における各リンクの両端の位置を示す情報であってもよく、ロボット６のリンク列における複数の基準点の各座標値であってもよい。ロボットリンク列情報が、ロボット６のリンク列における複数の基準点の各座標値である場合に、その複数の基準点の各座標値によってリンク列の位置を一意に特定できることが好適である。本実施の形態では、ロボットリンク列情報が、ロボット６のリンク列における各関節の角度を示す情報である場合について主に説明する。その場合に、ロボットリンク列情報では、例えば、関節を識別する情報と、その関節における角度を示す情報とが対応付けられていてもよく、関節の軸を識別する情報と、その軸における角度を示す情報とが対応付けられていてもよい。また、ロボットリンク列情報を算出する際に、ロボット６のリンク列の基端の位置を固定してもよく、または、そうでなくてもよい。本実施の形態では、前者の場合について説明する。なお、後者の場合には、ロボット６のリンク列の基端の位置を示す情報もロボットリンク列情報に含まれてもよい。
【００３０】
目的関数が小さくなるようにロボットリンク列情報を算出する場合に、算出部１５は、最適化問題を解く任意のアルゴリズムを用いることができる。なお、その最適化問題を解く際には、局所最適となるように解いてもよく、大域最適となるように解いてもよい。本実施の形態では、最適化問題を局所最適となるように解く場合について主に説明する。例えば、算出部１５は、目的関数の導関数を用いるアルゴリズムである勾配法によって目的関数が小さくなるようにロボットリンク列情報を算出してもよく、目的関数の導関数を用いないアルゴリズムによって目的関数が小さくなるようにロボットリンク列情報を算出してもよい。また、算出部１５は、記憶部１２で記憶されている関節可動域情報の示す可動域内において、目的関数が小さくなるようにロボットリンク列情報を算出する。すなわち、算出部１５は、関節可動域情報を制約条件として、最適化問題を解いてもよい。また、目的関数が小さくなるようにロボットリンク列情報を算出するとは、目的関数が最小となるようにロボットリンク列情報を算出することであってもよく、目的関数が最小に近くなるようにロボットリンク列情報を算出することであってもよい。ここで、目的関数が最小となるとは、目的関数が厳密な意味で最小値になることであってもよく、または、目的関数が最小値に十分近くなることであってもよい。目的関数が小さくなるようにロボットリンク列情報を算出する際に、例えば、ニュートン法などの反復処理を繰り返し、完全に収束する前に処理を終了することによってロボットリンク列情報を算出した場合には、目的関数を厳密な意味で最小にするロボットリンク列情報を算出したことにはならないが、目的関数が最小値に十分近くなるようにロボットリンク列情報を算出したことになると言える。また、目的関数が小さくなるようにロボットリンク列情報を算出している際に、次のモデルリンク列情報が受付部１１で受け付けられた場合には、算出部１５は、その時点のロボットリンク列情報を後段のノイズ除去部１６に渡し、新たに受け付けられたモデルリンク列情報に応じたロボットリンク列情報の算出を行ってもよい。その場合であっても、算出部１５は、目的関数が最小に近くなるようにロボットリンク列情報を算出していることになる。そのように、算出部１５が、目的関数が最小になるように逐次的に処理を行っている途中にその処理を終了した場合に、その終了時点のロボットリンク列情報が、目的関数が小さくなるように算出されたロボットリンク列情報であると考えてもよい。
【００３１】
なお、算出部１５が目的関数を小さくする処理を行うモデル５のリンク列とロボット６のリンク列とは、あらかじめ決められていてもよく、または、そうでなくてもよい。後者の場合には、例えば、あらかじめ決められたルールに従って、モデル５のリンク列に対応するロボット６のリンク列を特定するようにしてもよい。具体的には、モデル５が人間であり、ロボット６がヒューマノイドロボットである場合には、頭部に近いリンク列同士を対応するリンク列とする、というルールが存在してもよく、頭部に近く、頭部の向き（例えば、頭部の顔の向き）に対して右側（あるいは左側）のリンク列同士を対応するリンク列とする、というルールが存在してもよい。このルールにより、腕のリンク列を対応付けることができる。また、頭部から遠いリンク列同士を対応するリンク列とする、というルールが存在してもよく、頭部から遠く、頭部の向きに対して右側（あるいは左側）のリンク列同士を対応するリンク列とする、というルールが存在してもよい。このルールにより、足のリンク列を対応付けることができる。
【００３２】
ノイズ除去部１６は、ロボットリンク列情報に含まれる高周波のノイズ成分を除去する。例えば、モーションキャプチャ装置２によってモデルリンク列情報を取得する際に、そのモデルリンク列情報に高周波のノイズ成分が含まれることがある。その場合には、結果としてロボットリンク列情報にも高周波のノイズ成分が含まれることになるため、ノイズ除去部１６によってそのノイズ成分を除去することが好適である。ノイズ除去部１６は、例えば、ローパスフィルタであってもよい。ノイズ除去部１６は、例えば、算出部１５によって算出されたロボットリンク列情報に移動平均処理を行うことによって、ローパスフィルタとして機能してもよい。そのローパスフィルタの時定数として、ノイズ除去部１６は、記憶部１２で記憶されているものを読み出して用いてもよい。
【００３３】
出力部１７は、ロボットリンク列情報に応じたロボット６のリンク列の各関節の角度に関する情報を出力する。そのロボットリンク列情報は、ノイズ除去部１６によって高周波のノイズ成分が除去されたロボットリンク列情報である。リアルタイムでマッピングの処理が行われる場合には、出力部１７は、その情報を時系列に沿って繰り返して、一定または不定の時間間隔で出力してもよい。この場合には、例えば、モデル５の動きにあわせて、ロボット６が動作するようになる。一方、リアルタイムでマッピングの処理が行われない場合には、出力部１７は、情報を順次、出力してもよく、または、一括してまとめて出力してもよい。この場合には、例えば、モデル５の過去の動きと同様の動きを、ロボット６が再生するようになってもよい。また、ロボット６が２以上のリンク列を有する場合には、出力部１７は、ロボット６のリンク列ごとに情報を出力してもよい。ロボットリンク列情報が、ロボット６のリンク列の各関節の角度に関する情報である場合には、出力部１７は、ロボットリンク列情報をそのまま出力してもよい。ロボットリンク列情報がロボット６のリンク列の位置を示す情報である場合には、出力部１７は、そのロボットリンク列情報を、ロボット６のリンク列の各関節の角度に関する情報に変換して出力する。例えば、図５において、リンク１０１，１０２の位置が分かっている場合に、関節Ｐｉの各軸に関する角度を特定する方法はすでに公知であるため、その方法を用いて、ロボットリンク列情報を、ロボット６のリンク列の各関節の角度に関する情報に変換することができる。ロボット６のリンク列の各関節の角度に関する情報とは、各関節の角度を示す情報であってもよく、結果として、各関節の角度を知ることができる情報であってもよい。
【００３４】
ここで、この出力は、出力対象の情報がロボット６で結果として受け付けられるのであれば、どのような出力であってもよく、例えば、ロボット６への有線または無線の通信回線を介した送信でもよく、記録媒体への蓄積でもよく、他の構成要素への引き渡しでもよい。なお、出力部１７によって、記録媒体への情報の蓄積や、他の構成要素への情報の引き渡しが行われた場合であっても、その情報が最終的にロボット６に到達するようになることが好適であることは言うまでもない。また、出力対象の情報が、ロボット６で受け付けられるまでに、適宜、フォーマットの変換等の処理が行われてもよいことは言うまでもない。なお、出力部１７は、出力を行うデバイス（例えば、送信デバイスなど）を含んでもよく、または含まなくてもよい。また、出力部１７は、ハードウェアによって実現されてもよく、または、それらのデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
【００３５】
次に、リンク列マッピング装置１の動作について図２のフローチャートを用いて説明する。
（ステップＳ１０１）正規化部１３は、ロボット６のリンク列に関する正規化を行う。
【００３６】
（ステップＳ１０２）受付部１１は、モデルリンク列情報を受け付けたかどうか判断する。そして、モデルリンク列情報を受け付けた場合には、ステップＳ１０３に進み、そうでない場合には、モデルリンク列情報を受け付けるまで、ステップＳ１０２の処理を繰り返す。
【００３７】
（ステップＳ１０３）正規化部１３は、ステップＳ１０２で受け付けられたモデルリンク列情報に対応するモデル５のリンク列に関する正規化を行う。
【００３８】
（ステップＳ１０４）特定部１４は、ステップＳ１０３で正規化されたモデル５のリンク列におけるあらかじめ決められた複数箇所の座標値をそれぞれ特定する。
【００３９】
（ステップＳ１０５）算出部１５は、ステップＳ１０４で座標値が特定された複数箇所と、その複数箇所にそれぞれ対応するロボット６のリンク列における複数箇所との各距離に応じた目的関数が小さくなるように、ロボットリンク列情報を算出する。
【００４０】
（ステップＳ１０６）ノイズ除去部１６は、ステップＳ１０５で算出されたロボットリンク列情報に含まれる高周波のノイズ成分を除去する。
【００４１】
（ステップＳ１０７）出力部１７は、高周波のノイズ成分の除去されたロボットリンク列情報に応じたロボット６のリンク列の各関節の角度に関する情報を出力する。そして、ステップＳ１０２に戻る。
【００４２】
なお、図２のフローチャートにおいてリアルタイムの処理を行う場合には、ステップＳ１０５において、ロボットリンク列情報を算出している際に、モデルリンク列情報を受け付ける処理を並列して実行し、モデルリンク列情報を受け付けるとステップＳ１０５の処理を中断し、その時点のロボットリンク列情報に応じた出力（ステップＳ１０６，Ｓ１０７）を行うと共に、新たに受け付けられたモデルリンク列情報に応じた処理を実行するようにしてもよい。また、モデル５やロボット６が、マッピング関係にあるリンク列を複数有している場合には、リンク列マッピング装置１は、各リンク列について、ステップＳ１０２〜Ｓ１０７の処理を繰り返して実行してもよく、並列して実行してもよい。具体的には、モデル５の両手、両足のリンク列をロボット６の両手、両足にマッピングする場合には、ステップＳ１０２〜Ｓ１０７の処理が、４個のリンク列について繰り返して、または並列して処理されるようにしてもよい。また、図２のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
【００４３】
次に、本実施の形態によるリンク列マッピング装置１の動作について、具体例を用いて説明する。この具体例では、モデル５のリンク列が人間の腕であり、ロボット６のリンク列がヒューマノイドロボットの腕である場合について説明する。すなわち、人間の腕が、ヒューマノイドロボットの腕にマッピングされる場合について説明する。この具体例では、モデル５のリンク列におけるリンク数をｎとし、ロボット６のリンク列におけるリンク数をＮとする。ｎ，Ｎはそれぞれ１以上の整数である。
【００４４】
図３は、人間であるモデル５のリンク列５ａの一例を示す図である。マッピング対象のリンク列５ａは、リンク５１〜５３で構成されており、関節である端点ｐ０は両肩の中心であり、関節ｐ１は肩であり、関節ｐ２は肘であり、端点ｐ３は手先である。なお、図３では、説明を簡単にするため、手首の関節を省略している。図３において、ｐ０〜ｐ３の座標をそれぞれｘｙｚ直交座標系における（ｘ0，ｙ0，ｚ0）、（ｘ1，ｙ1，ｚ1）、（ｘ2，ｙ2，ｚ2）、（ｘ3，ｙ3，ｚ3）とする。また、リンク５１〜５３の長さをそれぞれｄ1，ｄ2，ｄ3とする。図３では、リンク数ｎ＝３である。
【００４５】
図４は、ヒューマノイドロボットであるロボット６のリンク列６ａの一例を示す図である。マッピング先のリンク列６ａは、リンク６１，６２で構成されており、関節である端点Ｐ０は肩であり、関節Ｐ１は肘であり、端点Ｐ２は手先である。図４において、Ｐ０〜Ｐ１の座標をそれぞれＸＹＺ直交座標系における（Ｘ0，Ｙ0，Ｚ0）、（Ｘ1，Ｙ1，Ｚ1）、（Ｘ2，Ｙ2，Ｚ2）とする。また、リンク６１，６２の長さをそれぞれＤ1，Ｄ2とする。このＤ1，Ｄ2は、記憶部１２で記憶されているものとする。また、関節Ｐiにおける関節の角度をθ1i，θ2i，…，θkiiとする。なお、ｋｉは、関節Ｐiにおける軸数を示す１以上の整数である。ｉ＝０，１である。図４では、リンク数Ｎ＝２である。
【００４６】
ｘｙｚ直交座標系、及びＸＹＺ直交座標系は共に、モデル５やロボット６に設定されるローカル座標系であり、ｘｙｚ軸がそれぞれＸＹＺ軸に対応するようになっているものとする。例えば、ｚ軸及びＺ軸が体軸方向に設定されており、ｘ軸及びＸ軸が前後方向に設定されており、ｙ軸及びＹ軸が左右方向に設定されていてもよい。なお、体軸方向とは、人間やヒューマノイドロボットの立位での上下方向のことである。
【００４７】
正規化部１３は、まず、ロボット６のリンク列の正規化を行う（ステップＳ１０１）。具体的には、正規化部１３は、記憶部１２で記憶されているリンクの長さＤ1等を用いて、次式のように、リンク列の長さＤを算出する。
【数１】
0005892531.tif 000002
【００４８】
次に、正規化部１３は、Ｐ０が原点になるようにＸＹＺ直交座標系を平行移動させる。具体的には、（Ｘi，Ｙi，Ｚi）を（Ｘi−Ｘ0，Ｙi−Ｙ0，Ｚi−Ｚ0）にしてもよい。ただし、ｉ＝０〜Ｎである。また、その平行移動後のＸＹＺ直交座標系において、各座標値に１／Ｄを掛けることによって、ロボット６のリンク列の長さが１になるようにする。具体的には、（Ｘi，Ｙi，Ｚi）を（Ｘi／Ｄ，Ｙi／Ｄ，Ｚi／Ｄ）としてもよい。なお、その平行移動の処理と、１／Ｄを掛ける処理との順序は問わない。また、正規化部１３は、記憶部１２で記憶されているリンクの長さＤ1等についても、１／Ｄを掛けることによって正規化する。以下の説明では、（Ｘi，Ｙi，Ｚi）、Ｄiは、平行移動と正規化との行われた後の座標、リンクの長さであるとする。
【００４９】
その後、受付部１１がモデルリンク列情報を受け付けたとする（ステップＳ１０２）。そのモデルリンク列情報は、モデル５のリンク列における各リンクの両端の位置を示す情報、すなわち、（ｘ0，ｙ0，ｚ0）、（ｘ1，ｙ1，ｚ1）、…、（ｘn，ｙn，ｚn）であるとする。すると、正規化部１３は、モデル５のリンク列の正規化を行う（ステップＳ１０３）。具体的には、正規化部１３は、モデルリンク列情報を用いて、各リンクの長さｄ1〜ｄnを、次式のように算出する。
【数２】
0005892531.tif 000003
【００５０】
その後、正規化部１３は、算出したリンクの長さｄ1等を用いて、次式のように、リンク列の長さｄを算出する。
【数３】
0005892531.tif 000004
【００５１】
次に、正規化部１３は、ｐ０が原点になるようにｘｙｚ直交座標系を平行移動させる。具体的には、（ｘi，ｙi，ｚi）を（ｘi−ｘ0，ｙi−ｙ0，ｚi−ｚ0）にしてもよい。ただし、ｉ＝０〜ｎである。また、その平行移動後のｘｙｚ直交座標系において、各座標値に１／ｄを掛けることによって、モデル５のリンク列の長さが１になるようにする。具体的には、（ｘi，ｙi，ｚi）を（ｘi／ｄ，ｙi／ｄ，ｚi／ｄ）としてもよい。なお、その平行移動の処理と、１／ｄを掛ける処理との順序は問わない。また、正規化部１３は、算出したリンクの長さｄ1等についても、１／ｄを掛けることによって正規化する。以下の説明では、（ｘi，ｙi，ｚi）、ｄiは、平行移動と正規化との行われた後の座標、リンクの長さであるとする。この具体例では、ｘｙｚ直交座標系におけるモデル５の向きと、ＸＹＺ直交座標系におけるロボット６の向きとが一致しているため、それぞれの座標系について平行移動と正規化とを行った後には、モデル５及びロボット６の座標値をｘｙｚ直交座標系で示すことにする。すなわち、平行移動及び正規化後の（Ｘi，Ｙi，Ｚi）等は、ｘｙｚ直交座標系における座標値であるとする。
【００５２】
この具体例では、モデル５及びロボット６のリンク列をｍ個に分割する箇所の距離に応じた目的関数を用いるものとする。すなわち、モデル５のリンク列においてあらかじめ決められた複数箇所が、ｍ−１個であるとする。また、モデル５のリンク列において、そのｍ−１個の箇所は、リンク列の長さを１とした場合に、基端側からの長さがｇ1，ｇ2，…，ｇm-1となる位置であるとする。例えば、モデル５のリンク列が均等にｍ個に分割される場合には、ｇi＝ｉ／ｍとなる。なお、ｇ0＝０，ｇm＝１とする。また、ｇiに対応する基準点の座標を、（ａi，ｂi，ｃi）とする。また、ｍは２以上の整数である。
【００５３】
また、モデル５のリンク列におけるｍ−１個の箇所に応じたロボット６のリンク列におけるｍ−１個の箇所も、リンク列の長さを１とした場合に、基端側からの長さがＧ1，Ｇ2，…，Ｇm-1となる位置であるとする。例えば、ロボット６のリンク列が均等にｍ個に分割される場合には、Ｇi＝ｉ／ｍとなる。なお、Ｇ0＝０，Ｇm＝１とする。また、Ｇiに対応する基準点の座標を、（Ａi，Ｂi，Ｃi）とする。また、前述のように、ｇi＝Ｇiであってもよく、または、そうでなくてもよい。また、ｇ1〜ｇm-1やＧ1〜Ｇm-1は、記憶部１２で記憶されていてもよい。
【００５４】
特定部１４は、記憶部１２からｇ1〜ｇm-1を読み出し、それらを用いてモデル５のリンク列における複数箇所の座標値を特定する（ステップＳ１０４）。具体的には、
【数４】
0005892531.tif 000005
となるｇiが存在する場合に、特定部１４は、そのｉについて、（ｘj-1，ｙj-1，ｚj-1）と、（ｘj，ｙj，ｚj）とを両端とするリンクの長さを１としたときの（ｘj-1，ｙj-1，ｚj-1）からの長さが、
【数５】
0005892531.tif 000006
である点を、ｉ番目の基準点（ａi，ｂi，ｃi）とする。そのように、上記式を満たすｇiに応じた箇所（ａi，ｂi，ｃi）を特定する処理を、ｊ＝１〜ｎについて行うことによって、モデル５のリンク列におけるあらかじめ決められた複数箇所のそれぞれの座標値を特定することができる。その特定した座標値（ａi，ｂi，ｃi）は、図示しない記録媒体に蓄積されてもよい。なお、ｄ0＝０としている。
【００５５】
ここで、基準点（ａi，ｂi，ｃi）に対応するロボット６のリンク列における基準点（Ａi，Ｂi，Ｃi）を特定する方法について説明する。モデル５のリンク列の場合と同様に、
【数６】
0005892531.tif 000007
となるＧiが存在する場合に、そのｉについて、（Ｘj-1，Ｙj-1，Ｚj-1）と、（Ｘj，Ｙj，Ｚj）とを両端とするリンクの長さを１としたときの（Ｘj-1，Ｙj-1，Ｚj-1）からの長さが、
【数７】
0005892531.tif 000008
である点が、ｉ番目の基準点（Ａi，Ｂi，Ｃi）となる。そのように、上記式を満たすＧiに応じた箇所（Ａi，Ｂi，Ｃi）を特定する処理を、ｊ＝１〜Ｎについて行うことによって、ロボット６のリンク列におけるあらかじめ決められた複数箇所のそれぞれの座標値を特定することができる。その特定した座標値（Ａi，Ｂi，Ｃi）は、図示しない記録媒体に蓄積されてもよい。なお、Ｄ0＝０としている。
【００５６】
なお、ロボット６のリンク列においては、リンクの先端側の端点の位置を、そのリンクの基端側の端点の位置と、その基端側の端点における関節の角度とを用いて表すことができる。例えば、次式のようになる。なお、ｉ＝１〜Ｎであり、関数Ｆiは、関節Ｐｉの角度θ1i，θ2i，…，θkiiを引数とし、Ｐｉに対するＰ（ｉ＋１）の相対的な位置を示す関数である。
（Ｘi，Ｙi，Ｚi）＝（Ｘi-1，Ｙi-1，Ｚi-1）＋Ｆi-1（θ1i-1，θ2i-1，…，θk(i-1)i-1）
【００５７】
したがって、各座標値（Ａj，Ｂj，Ｃj）は、各関節Ｐｉの角度を用いて表すことができるため、例えば、次式のように表すことができる。なお、ｊ＝１〜ｍ−１である。また、（Ａj，Ｂj，Ｃj）の位置に応じて、関数Ｇjの引数は変わりうるが、次式では、引数が最も多い場合について記載している。この関係はロボット６のリンク列における複数の箇所が変更されない限り変わらないため、特定部１４は、モデル５のリンク列における複数の箇所の座標値を特定する際に、ロボット６のリンク列における複数の箇所を示す次式を算出し、その算出した結果を記憶部１２または図示しない記録媒体に蓄積してもよい。
（Ａj，Ｂj，Ｃj）＝Ｇj（θ10，θ20，…，θk00，θ11，θ21，…，θk11，…，θ1N-1，θ2N-1，…，θk(N-1)N-1）
【００５８】
その後、算出部１５は、目的関数Ｅを最小にするロボットリンク列情報を算出する（ステップＳ１０５）。具体的には、次式の目的関数Ｅは、各関節の角度θ10，θ20，…，θk00，θ11，θ21，…，θk11，…，θ1N-1，θ2N-1，…，θk(N-1)N-1を引数とする関数となる。そのため、算出部１５は、次式の目的関数Ｅが最小となる各関節の角度θ10，θ20，…，θk00，θ11，θ21，…，θk11，…，θ1N-1，θ2N-1，…，θk(N-1)N-1を算出し、その算出結果であるロボットリンク列情報をノイズ除去部１６に渡す。
【数８】
0005892531.tif 000009
【００５９】
上記目的関数Ｅは、例えば図６において、基準点ｐｓ１と基準点ＰＳ１との距離の二乗、基準点ｐｓ２と基準点ＰＳ２との距離の二乗、基準点ｐｓ３と基準点ＰＳ３との距離の二乗、基準点ｐｓ４と基準点ＰＳ４との距離の二乗を足しあわせたものとなる。なお、リンク列の両端点も基準点である場合には、その距離も目的関数に含めるようにしてもよい。その場合には、上記目的関数Ｅの式において、総和をｊ＝０からｊ＝ｍまでにすればよいことになる。なお、（ａ0，ｂ0，ｃ0）＝（ｘ0，ｙ0，ｚ0）であり、（ａm，ｂm，ｃm）＝（ｘn，ｙn，ｚn）であり、（Ａ0，Ｂ0，Ｃ0）＝（Ｘ0，Ｙ0，Ｚ0）であり、（Ａm，Ｂm，Ｃm）＝（ＸN，ＹN，ＺN）であるとする。図６においては、正規化後のリンク列５ａ，６ａを示しているため、両リンク列５ａ，６ａの長さは等しくなっており、また、基端側の端点ｐ０，Ｐ０が一致している。そのように、リンク列の基端を一致させる場合には、ｊ＝０における基準点間の距離は０であるため、上記目的関数において、総和をｊ＝１からｊ＝ｍまでにしてもよい。
【００６０】
なお、上記目的関数Ｅにおいて、（ａi，ｂi，ｃi）は、特定部１４によって特定された座標値であり、（Ａi，Ｂi，Ｃi）は、各関節の角度θ10，θ20，…，θk00，θ11，θ21，…，θk11，…，θ1N-1，θ2N-1，…，θk(N-1)N-1で表される。したがって、その目的関数Ｅを最小にする角度θ10，θ20，…，θk00，θ11，θ21，…，θk11，…，θ1N-1，θ2N-1，…，θk(N-1)N-1を勾配法によって求める場合には、例えば、目的関数Ｅを角度θ10等で偏微分し、角度θ10等について目的関数Ｅが極小値となる位置をそれぞれ求めてもよい。
【００６１】
ノイズ除去部１６は、算出部１５から受け取ったロボットリンク列情報から高周波のノイズ成分を除去し、その除去した結果のロボットリンク列情報を出力部１７に渡す（ステップＳ１０６）。なお、そのノイズの除去を移動平均処理によって行う場合には、ノイズ除去部１６は、あらかじめ決められた個数の最新のロボットリンク列情報を一時的に記憶していてもよい。
【００６２】
出力部１７は、ノイズ除去部１６から受け取ったロボットリンク列情報をロボット６に出力する（ステップＳ１０７）。その結果、ロボット６は、リンク列の各関節が、ロボットリンク列情報に含まれる角度となるように各関節のモータ等を制御する。そのようにすることで、モデル５のリンク列の形状と、ロボット６のリンク列の形状とが似たものになる。また、そのような動作が繰り返されることによって、ロボット６がモデル５の動作をまねるように制御できるようになり、ロボット６をミラーロボットとして動作させることができるようになる。
【００６３】
そのミラーロボットとしてのロボット６の動作の一例について具体的に説明する。図７で示されるように、モデル５が、腕に対応するリンク列５ａを、下向きの位置５ａ−１から、側方の位置５ａ−２を経由して、上向きの位置５ａ−３にまで、矢印ＡＲ１のように動かしたとする。その一連の動作において、腕はねじられていないものとする。すなわち、関節ｐ０，ｐ１においては、図６の紙面に垂直な方向の軸を中心とする回転のみが行われたとする。一方、ロボット６の腕に対応するリンク列６ａは、下向きの位置６ａ−１から腕をねじることなく上げることができるのは、側方の位置６ａ−２までであったとする。すると、ロボット６の腕をねじることなく側方の位置６ａ−２から上向きの位置６ａ−３までのマッピングを行うことができなくなる。そこで、モデル５のリンク列が側方の位置５ａ−２から上向きの位置５ａ−３にまで移動する際には、目的関数Ｅを最小にするため、算出部１５は、関節Ｐ０において腕を１８０°ねじるようにロボットリンク列情報を算出することになる。したがって、目的関数Ｅを最小にするようにロボット６のリンク列６ａを動作させる場合には、そのリンク列６ａは、下向きの位置６ａ−１から側方の位置６ａ−２まで腕をねじることなく矢印ＡＲ２のように動き、その後、矢印ＡＲ３の方向に１８０°回転された後に、側方の位置６ａ−２から上向きの位置６ａ−３まで、矢印ＡＲ４のように動くことになる。その結果、上向きの位置５ａ−３，６ａ−３において、モデル５の手の平は外向きとなり、ロボット６の手の平は内向きとなる違いはあるが、両者の腕の形状を似たものとすることができる。
【００６４】
なお、上述の説明において、写像元のモデル５のリンク列におけるリンク数が、ロボット６のリンク列におけるリンク数以上である場合には、リンク列における複数の箇所の個数や位置を適切に設定することによって、ロボット６のリンク列の形状が一意に決定されうる。一方、写像元のモデル５のリンク列におけるリンク数が、ロボット６のリンク列におけるリンク数未満である場合には、ロボット６のリンク列の形状が一意に決定されないこともある。ロボット６のリンク列の形状が一意に決定されないとは、目的関数Ｅを最小にする複数の異なるロボットリンク列情報を算出できることである。そのような場合には、算出部１５は、例えば、ランダムにロボットリンク列情報を算出してもよく、または、ロボットリンク列情報を一意に決定するための制約条件を用いて、ロボットリンク列情報を算出してもよい。その制約条件は、例えば、直前のロボット６のリンク列からの変化が最も少なくなるようにすることであってもよい。その変化は、関節の角度の変化であってもよく、または、リンク列における特定の位置の変化であってもよい。その特定の位置は、関節であってもよく、先端であってもよく、その他の点であってもよい。また、それ以外の制約条件を用いて目的関数Ｅを小さくするためのロボットリンク列情報を算出するようにしてもよい。写像元のモデル５のリンク列におけるリンク数が、ロボット６のリンク列におけるリンク数以上である場合であっても、ロボット６のリンク列の形状が一意に決定されないときには、上述の説明と同様にしてロボットリンク列情報を算出してもよい。
【００６５】
以上のように、本実施の形態によるリンク列マッピング装置１によれば、モデル５のリンク列をロボット６のリンク列にマッピングするための変換式等を人手で作成しなくても、ロボット６のリンク列が、モデル５のリンク列と似た動作を行うように、モデル５のリンク列の形状をロボット６のリンク列にマッピングすることができる。そのため、その変換式を作成する労力が不要になるというメリットがある。また、そのような変換式を用いた場合には、モデル５が想定外の動きを行うことなどによって、ロボット６のリンク列への変換に失敗し、ロボット６の動きが途中で停止することもあるが、本実施の形態のようにマッピングを行うことによって、そのような事態を回避することができる。また、ロボット６のリンク数がモデル５のリンク数よりも少ない場合や、ロボット６の関節の可動域がモデル５の関節の可動域よりも狭い場合、すなわち、完全なミラーリングのためのマッピングを行うことができない場合であっても、ロボット６の動きをモデル５の動きに似せることができるようになる。また、ノイズ除去部１６を備えることにより、ロボットリンク列情報における高周波ノイズを除去することができ、例えば、モデルリンク列情報に混入した高周波ノイズの影響を低減することができるようになる。
【００６６】
また従来、ヒューマノイドロボットのリンク数や関節の可動域に合うように、人間の動きがキャプチャーされることもあった。具体的には、ロボットの腕のリンク数が１個である場合には、人間の腕においても、１個のリンクに関する動きのみがキャプチャーされることがあった。その場合には、ヒューマノイドロボットの種類ごとに専用のモーションキャプチャを行うようにセッティングする必要があった。一方、本実施の形態によるリンク列マッピング装置１では、モデルリンク列情報からロボットリンク列情報へのマッピングを自動的に行うため、モーションキャプチャ装置２は、汎用のモーションキャプチャを行う装置であってもよい。したがって、専用のモーションキャプチャを行わなくてもよいというメリットもある。
【００６７】
なお、本実施の形態では、リンク列マッピング装置１がノイズ除去部１６を備えている場合について説明したが、高周波のノイズ成分を除去しない場合には、リンク列マッピング装置１は、ノイズ除去部１６を備えていなくてもよい。例えば、モデルリンク列情報に高周波のノイズ成分が含まれていないことが明らかな場合などには、リンク列マッピング装置１はノイズ除去部１６を備えなくてもよい。
【００６８】
また、本実施の形態では、正規化部１３がモデル５のリンク列の基端と、ロボット６のリンク列の基端を座標系の原点にする場合について説明したが、そうでなくてもよい。両基端が原点になっていない状況で目的関数を用いたロボットリンク列情報の算出を行ってもよく、はじめから両基端が原点となるように各リンク列の座標系が設定されていてもよい。
【００６９】
また、本実施の形態では、モデル５のリンク列の長さと、ロボット６のリンク列の長さとを正規化する場合について説明したが、そうでなくてもよい。例えば、両長さが一緒になるように設定されている場合、例えば、モデルリンク列情報におけるリンク列の長さと、ロボット６のリンク列の長さとが同じになるように決まっている場合などには、正規化の処理を行わなくてもよい。その場合には、リンク列マッピング装置１は、正規化部１３を備えていなくてもよい。
【００７０】
また、本実施の形態では、記憶部１２に関節可動域情報が記憶されている場合について説明したが、そうでなくてもよい。例えば、関節の可動域に制限のない場合には、関節可動域情報が記憶部１２で記憶されていなくてもよい。また、関節可動域情報が記憶部１２において記憶されていない場合には、算出部１５は、関節可動域情報に関する制約条件のない状況において、目的関数が小さくなるようにロボットリンク列情報を算出することになる。
【００７１】
また、本実施の形態において、上述のように、モデルリンク列情報を用いてロボットリンク列情報を算出し、そのロボットリンク列情報に応じた出力を行う一連の処理は、リアルタイムで行われてもよく、または、そうでなくてもよい。
【００７２】
また、本実施の形態では、モデル５やロボット６のリンク列に分岐のない場合について説明したが、リンク列に分岐が含まれていてもよい。モデル５やロボット６のリンク列に分岐が含まれる場合には、例えば、分岐点において、複数のリンク列に分割し、分岐のない各リンク列について上述の処理を行ってもよく、または、分岐を有するリンク列に対して、上述の処理を行ってもよい。
【００７３】
また、本実施の形態では、ロボット６をミラーロボットとして動作させるためのマッピングを行う場合について主に説明したが、そうでなくてもよい。例えば、モデル５の腕のリンク列を、ロボット６の足のリンク列にマッピングし、モデル５の足のリンク列を、ロボット６の腕のリンク列にマッピングするようにしてもよい。また、人間であるモデル５の腕のリンク列を、蛇型のロボット６の頭から尾までのリンク列にマッピングしてもよい。
【００７４】
また、上記実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、または、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
【００７５】
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う２個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、または、その情報の受け渡しを行う２個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
【００７６】
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、算出したり、送信したり、受信したりした情報や、各構成要素が処理で用いる閾値や数式、アドレス等の情報等は、上記説明で明記していなくても、図示しない記録媒体において、一時的に、または長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、または、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、または、図示しない読み出し部が行ってもよい。
【００７７】
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いる閾値やアドレス、各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していなくても、ユーザが適宜、それらの情報を変更できるようにしてもよく、または、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
【００７８】
また、上記実施の形態において、リンク列マッピング装置１に含まれる２以上の構成要素が通信デバイスや入力デバイス等を有する場合に、２以上の構成要素が物理的に単一のデバイスを有してもよく、または、別々のデバイスを有してもよい。
【００７９】
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、または、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをＣＰＵ等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、記憶部や記録媒体にアクセスしながらプログラムを実行してもよい。なお、上記実施の形態におけるリンク列マッピング装置１を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータを、モデルのリンク列に含まれる各リンクの位置に関する情報であるモデルリンク列情報を受け付ける受付部、受付部によって受け付けられたモデルリンク列情報を用いて、モデルのリンク列におけるあらかじめ決められた複数箇所の座標値を特定する特定部、特定部によって特定された複数箇所の座標値と、複数箇所にそれぞれ対応するロボットのリンク列における複数箇所の座標値との距離に応じた目的関数が小さくなるように、ロボットのリンク列に含まれる各リンクの位置に関する情報であるロボットリンク列情報を算出する算出部、算出部によって算出されたロボットリンク列情報に応じたロボットのリンク列の各関節の角度に関する情報を出力する出力部として機能させるためのプログラムである。
【００８０】
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を取得する取得部や、情報を出力する出力部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には少なくとも含まれない。
【００８１】
また、このプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体（例えば、ＣＤ−ＲＯＭなどの光ディスクや磁気ディスク、半導体メモリなど）に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。
【００８２】
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、または分散処理を行ってもよい。
【００８３】
図８は、上記プログラムを実行して、上記実施の形態によるリンク列マッピング装置１を実現するコンピュータの外観の一例を示す模式図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
【００８４】
図８において、コンピュータシステム９００は、ＣＤ−ＲＯＭドライブ９０５を含むコンピュータ９０１と、キーボード９０２と、マウス９０３と、モニタ９０４とを備える。
【００８５】
図９は、コンピュータシステム９００の内部構成を示す図である。図９において、コンピュータ９０１は、ＣＤ−ＲＯＭドライブ９０５に加えて、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１１と、ブートアッププログラム等のプログラムを記憶するためのＲＯＭ９１２と、ＭＰＵ９１１に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するＲＡＭ９１３と、アプリケーションプログラム、システムプログラム、及びデータを記憶するハードディスク９１４と、ＭＰＵ９１１、ＲＯＭ９１２等を相互に接続するバス９１５とを備える。なお、コンピュータ９０１は、ＬＡＮやＷＡＮ等への接続を提供する図示しないネットワークカードを含んでいてもよい。
【００８６】
コンピュータシステム９００に、上記実施の形態によるリンク列マッピング装置１の機能を実行させるプログラムは、ＣＤ−ＲＯＭ９２１に記憶されて、ＣＤ−ＲＯＭドライブ９０５に挿入され、ハードディスク９１４に転送されてもよい。これに代えて、そのプログラムは、図示しないネットワークを介してコンピュータ９０１に送信され、ハードディスク９１４に記憶されてもよい。プログラムは実行の際にＲＡＭ９１３にロードされる。なお、プログラムは、ＣＤ−ＲＯＭ９２１、またはネットワークから直接、ロードされてもよい。また、ＣＤ−ＲＯＭ９２１に代えて他の記録媒体（例えば、ＤＶＤ等）を介して、プログラムがコンピュータシステム９００に読み込まれてもよい。
【００８７】
プログラムは、コンピュータ９０１に、上記実施の形態によるリンク列マッピング装置１の機能を実行させるオペレーティングシステム（ＯＳ）、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能やモジュールを呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム９００がどのように動作するのかについては周知であり、詳細な説明は省略する。
【００８８】
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【００８９】
以上より、本発明によるリンク列マッピング装置等によれば、モデルのリンク列を自動的に任意のロボットのリンク列にマッピングできるという効果が得られ、例えば、ヒューマノイドロボットなどをミラーロボットとして動作させるための装置等として有用である。
【符号の説明】
【００９０】
１  リンク列マッピング装置
２  モーションキャプチャ装置
１１  受付部
１２  記憶部
１３  正規化部
１４  特定部
１５  算出部
１６  ノイズ除去部
１７  出力部
【要約】
【課題】モデルのリンク列を自動的に任意のロボットのリンク列にマッピングできるリンク列マッピング装置を提供する。
【解決手段】リンク列マッピング装置１は、モデルのリンク列に含まれる各リンクの位置を示すモデルリンク列情報を受け付ける受付部１１、モデルリンク列情報を用いて、モデルのリンク列におけるあらかじめ決められた複数箇所の座標値を特定する特定部１４、特定された複数箇所と、その複数箇所にそれぞれ対応するロボットのリンク列における複数箇所との各距離に応じた目的関数が小さくなるように、ロボットのリンク列に含まれる各リンクの位置に関する情報であるロボットリンク列情報を算出する算出部１５、算出されたロボットリンク列情報に応じたロボットのリンク列の各関節の角度に関する情報を出力する出力部１７を備える。
【選択図】図１【図１】
0005892531.tif 000010
【図２】
0005892531.tif 000011
【図３】
0005892531.tif 000012
【図４】
0005892531.tif 000013
【図５】
0005892531.tif 000014
【図６】
0005892531.tif 000015
【図７】
0005892531.tif 000016
【図８】
0005892531.tif 000017
【図９】
0005892531.tif 000018