(57)【要約】【課題】ユーザが手動で設定等を行わなくても、複数のモータによって駆動される複数の回転軸の位置関係を取得できる位置関係取得装置を提供する。【解決手段】位置関係取得装置１は、複数のモータによってそれぞれ駆動される複数の回転軸を有するロボット２におけるモータを制御するモータ制御部１１と、複数の回転軸にそれぞれ設けられた複数の角速度センサによって取得された角速度を受け付ける受付部１２と、複数の回転軸を１個ずつモータ制御部１１によって回転させた際に受付部１２によって受け付けられた複数の角速度センサのそれぞれの角速度を用いることによって、回転軸の位置関係を取得する位置関係取得部１３とを備える。【選択図】図１
2018089759.tif 000002
【特許請求の範囲】
【請求項１】
複数のモータによってそれぞれ駆動される複数の回転軸を有するロボットにおける前記モータを制御するモータ制御部と、
前記複数の回転軸にそれぞれ設けられた複数の角速度センサによって取得された角速度を受け付ける受付部と、
前記複数の回転軸を１個ずつ前記モータ制御部によって回転させた際に前記受付部によって受け付けられた前記複数の角速度センサのそれぞれの角速度を用いることによって、前記回転軸の位置関係を取得する位置関係取得部と、を備えた位置関係取得装置。
【請求項２】
前記ロボットは、前記複数の回転軸にそれぞれ対応する複数の関節によって連結された複数のリンクを有するリンク列を備えたものであり、
前記位置関係は、前記リンク列における前記回転軸の位置関係であり、
前記位置関係取得部は、ある回転軸が回転した際に他の回転軸に設けられた角速度センサによって取得された角速度が第１及び第２の値である場合に、回転した回転軸は、第１の値の角速度が取得された１以上の回転軸と、第２の値の角速度が取得された１以上の回転軸との間に存在すると判断する、請求項１記載の位置関係取得装置。
【請求項３】
前記位置関係取得部は、前記リンク列の先端の回転軸が回転した際の他の回転軸に設けられた角速度センサによって取得された角速度が、閾値より小さい場合には当該先端が自由端であると判断し、閾値より大きい場合には当該先端が接地端であると判断する、請求項１または請求項２記載の位置関係取得装置。
【請求項４】
前記位置関係取得部によって取得された前記回転軸の位置関係を用いて、前記ロボットの種類を判定する判定部をさらに備えた、請求項１から請求項３のいずれか記載の位置関係取得装置。
【請求項５】
請求項１から請求項４のいずれか記載の位置関係取得装置と、
前記複数の角速度センサ、前記複数のモータ、及び前記複数のモータによってそれぞれ駆動される複数の回転軸を有するロボットと、を備えたロボットシステム。
【請求項６】
複数のモータによってそれぞれ駆動される複数の回転軸を有するロボットにおける前記モータを制御することによって、前記複数の回転軸を１個ずつ回転させるモータ制御ステップと、
前記モータ制御ステップによって前記複数の回転軸を１個ずつ回転された際に、前記複数の回転軸にそれぞれ設けられた複数の角速度センサによって取得された角速度を受け付ける受付ステップと、
前記複数の回転軸を１個ずつ回転させた際の前記複数の角速度センサのそれぞれの角速度を用いることによって、前記回転軸の位置関係を取得する位置関係取得ステップと、を備えた位置関係取得方法。
【請求項７】
コンピュータを、
複数のモータによってそれぞれ駆動される複数の回転軸を有するロボットにおける前記モータを制御するモータ制御部、
前記複数の回転軸にそれぞれ設けられた複数の角速度センサによって取得された角速度を受け付ける受付部、
前記複数の回転軸を１個ずつ前記モータ制御部によって回転させた際に前記受付部によって受け付けられた前記複数の角速度センサのそれぞれの角速度を用いることによって、前記回転軸の位置関係を取得する位置関係取得部として動作させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットが有する複数の回転軸の位置関係を取得する位置関係取得装置等に関する。
【背景技術】
【０００２】
従来、産業用ロボット等においては、リンク列（マニピュレータ）における複数のモータと、複数の関節との対応関係はあらかじめ分かっている。したがって、各モータによってどの回転軸が回転されるのかを検出する必要はなかった。
【０００３】
一方、ユーザがエンターテインメントロボットを自作する際には、そのロボットが有する複数のモータと複数の回転軸との関係をユーザが手動で設定する必要があった。そうでなければ、ロボットを制御する際に、どのモータを制御すればどの回転軸が回転するのかが分からなくなるからである。
なお、エンターテインメントロボットに関連する特許文献として、例えば、次の特許文献１がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５８９２５３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述のように、ユーザがモータと回転軸との関係を手動で設定する作業は非常に煩雑であった。また、その設定を間違えた場合には、ロボットが正確に動作しないことになり、また、どこが間違ったのかを見つける作業も初心者のユーザには過大な作業になるという問題があった。
【０００６】
本発明は、上記課題を解決するためになされたものであり、複数のモータによってそれぞれ駆動される複数の回転軸を有するロボットにおいて、回転軸の位置関係を取得することができる位置関係取得装置等を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明による位置関係取得装置は、複数のモータによってそれぞれ駆動される複数の回転軸を有するロボットにおけるモータを制御するモータ制御部と、複数の回転軸にそれぞれ設けられた複数の角速度センサによって取得された角速度を受け付ける受付部と、複数の回転軸を１個ずつモータ制御部によって回転させた際に受付部によって受け付けられた複数の角速度センサのそれぞれの角速度を用いることによって、回転軸の位置関係を取得する位置関係取得部と、を備えたものである。
このような構成により、ユーザが手動で設定等を行わなくても、複数のモータによって駆動される複数の回転軸の位置関係を取得することができる。その結果、ユーザの利便性が向上されることになる。また、ユーザが設定する場合と比較して、誤設定の可能性を低くすることができ、その結果、ロボットが適切に動作するようになる。
【０００８】
また、本発明による位置関係取得装置では、ロボットは、複数の回転軸にそれぞれ対応する複数の関節によって連結された複数のリンクを有するリンク列を備えたものであり、位置関係は、リンク列における回転軸の位置関係であってもよい。
このような構成により、ロボットの有するリンク列における各回転軸の並びを取得することができるようになる。
【０００９】
また、本発明による位置関係取得装置では、位置関係取得部は、ある回転軸が回転した際に他の回転軸に設けられた角速度センサによって取得された角速度が第１及び第２の値である場合に、回転した回転軸は、第１の値の角速度が取得された１以上の回転軸と、第２の値の角速度が取得された１以上の回転軸との間に存在すると判断してもよい。
このような構成により、回転する回転軸に対して、同じ側に存在する各回転軸の角速度が同じになることを利用して、回転軸の位置関係を取得することができる。
【００１０】
また、本発明による位置関係取得装置では、位置関係取得部は、リンク列の先端の回転軸が回転した際の他の回転軸に設けられた角速度センサによって取得された角速度が、閾値より小さい場合には先端が自由端であると判断し、閾値より大きい場合には先端が接地端であると判断してもよい。
このような構成により、リンク列の先端が自由端であるのか、接地端であるのかを判断することができるようになる。
【００１１】
また、本発明による位置関係取得装置では、位置関係取得部は、隣接する２個の回転軸の間の相対的な角度をも取得してもよい。
このような構成により、取得された隣接する２個の回転軸の間の相対的な角度を用いることによって、例えば、ロボットのより詳細な情報を知ることができるようになる。その情報は、例えば、順運動学によってリンク列の先端の位置を算出する際に、または、逆運動学によってリンク列の各関節の角度を算出する際に用いられてもよい。
【００１２】
また、本発明による位置関係取得装置では、位置関係取得部によって取得された回転軸の位置関係を用いて、ロボットの種類を判定する判定部をさらに備えてもよい。
このような構成により、ロボットの種類を自動的に判定することができるようになる。
【００１３】
また、本発明による位置関係取得装置では、判定部によって判定されたロボットの種類に応じた動作プロファイルを取得するプロファイル取得部をさらに備え、モータ制御部は、プロファイル取得部によって取得された動作プロファイルを用いて複数のモータを制御してもよい。
このような構成により、例えば、判定対象のロボットがヒューマノイドロボットである場合に、それに対応した動作プロファイルを用いることによって、判定対象のロボットが、ヒューマノイドロボットらしく振る舞うように制御することができるようになる。
【００１４】
また、本発明による位置関係取得装置では、モータ制御部によってある回転軸が回転された際の回転軸のトルクと、回転軸よりも先端側のリンク列における角速度センサによって取得された角速度とを用いて、回転軸に対する回転軸より先端側のリンク列に関する慣性モーメントを算出する慣性モーメント算出部をさらに備え、モータ制御部は、慣性モーメント算出部によって算出された慣性モーメントを用いて複数のモータを制御してもよい。
このような構成により、より適切なモータのフィードバック制御を行うことができるようになる。
【００１５】
また、本発明によるロボットシステムは、上記位置関係取得装置と、複数の角速度センサ、複数のモータ、及び複数のモータによってそれぞれ駆動される複数の回転軸を有するロボットと、を備えたものである。
【００１６】
また、本発明による位置関係取得方法は、複数のモータによってそれぞれ駆動される複数の回転軸を有するロボットにおけるモータを制御することによって、複数の回転軸を１個ずつ回転させるモータ制御ステップと、モータ制御ステップによって複数の回転軸を１個ずつ回転された際に、複数の回転軸にそれぞれ設けられた複数の角速度センサによって取得された角速度を受け付ける受付ステップと、複数の回転軸を１個ずつ回転させた際の複数の角速度センサのそれぞれの角速度を用いることによって、回転軸の位置関係を取得する位置関係取得ステップと、を備えたものである。
【発明の効果】
【００１７】
本発明による位置関係取得装置等によれば、ユーザが手動で設定等を行わなくても、複数のモータによって駆動される複数の回転軸の位置関係を取得することができるようになり、ユーザの利便性が向上される。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施の形態によるロボットシステムの構成を示す図
【図２】同実施の形態による位置関係取得装置の動作を示すフローチャート
【図３】同実施の形態におけるモータユニットの一例を示す図
【図４】同実施の形態における回転軸の回転に応じた角速度に関する説明図
【図５】同実施の形態におけるロボットの各関節を示す図
【図６】同実施の形態における回転対象の回転軸と、検出された角速度との関係の一例を示す図
【図７Ａ】同実施の形態における取得された回転軸の位置関係の一例を示す図
【図７Ｂ】同実施の形態における取得された回転軸の位置関係の一例を示す図
【図７Ｃ】同実施の形態における取得された回転軸の位置関係の一例を示す図
【図８】同実施の形態におけるコンピュータシステムの外観一例を示す模式図
【図９】同実施の形態におけるコンピュータシステムの構成の一例を示す図
【発明を実施するための形態】
【００１９】
以下、本発明による位置関係取得装置について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。本実施の形態によるロボットシステムは、ロボットと、そのロボットにおいて複数のモータによって駆動される複数の回転軸の位置関係を取得する位置関係取得装置とを備えたものである。
【００２０】
図１は、本実施の形態によるロボットシステム１０の構成を示す図である。本実施の形態によるロボットシステム１０は、位置関係取得装置１と、ロボット２とを備える。ロボット２は、複数のモータと、その複数のモータによってそれぞれ駆動される複数の回転軸と、その複数の回転軸にそれぞれ設けられた複数の角速度センサとを有するものである。そのロボット２は、複数の回転軸にそれぞれ対応する複数の関節によって連結された複数のリンクを有する１以上のリンク列を備えたものであってもよい。本実施の形態では、この場合について主に説明する。なお、本実施の形態では、ロボット２がヒューマノイドロボットである場合について主に説明するが、そうでなくてもよい。ロボット２は、例えば、犬や猫、鳥、魚、蛇、昆虫などの動物型ロボットであってもよく、その他の形状のロボットであってもよい。また、そのロボット２は、通常、玩具用のロボット、すなわちエンターテインメントロボットや、サービスロボット、家庭用ロボット等であるが、そうでなくてもよい。また、ロボット２の各回転軸は、リンク列の関節以外のものを動作させてもよい。例えば、回転軸は、車輪や無限軌道などの走行部の回転軸であってもよく、回転翼の回転軸であってもよい。例えば、前者の場合には、ロボット２は移動ロボットとなり、後者の場合には、ロボット２は飛行ロボットとなる。飛行ロボットは、例えば、ヘリコプターや、３個以上の回転翼（ロータ）を有するマルチコプターであってもよい。マルチコプターは、例えば、４個の回転翼を有するクワッドロータであってもよく、その他の個数の回転翼を有するものであってもよい。なお、移動ロボットや飛行ロボットであるロボット２も、リンク列を有していてもよい。
【００２１】
図３は、ロボット２が有するモータユニット５０の一例を示す図である。モータユニット５０の筐体内にはモータが収容されており、そのモータによって回転板５１が回転されることになる。そして、その回転板５１にリンク等を接続することによって、モータによってリンク等を駆動することができるようになる。なお、モータは、例えば、減速機等を介して回転板５１を回転させてもよい。また、その回転板５１には、角速度センサ５２が装着されている。その角速度センサ５２は、通常、回転板５１の回転軸に対して偏心して設けられることが好適である。回転板５１に関する角速度も取得できるようにするためである。一方、回転板５１に関する角速度を取得する必要がない場合には、回転軸上に角速度センサ５２が設けられていてもよい。その角速度センサ５２は、２次元方向の角速度（例えば、回転板５１の面方向の回転に関する角速度）を取得できるものであってもよく、３次元方向の角速度を取得できるものであってもよい。本実施の形態では、後者の場合について主に説明する。なお、本実施の形態では、図３で示されるモータユニット５０によってリンク列の各関節が駆動される場合について主に説明するが、そうでなくてもよい。例えば、モータによって駆動される回転軸に直接、リンク列のリンクを接続してもよく、また、その回転軸の近傍であるリンクの一部に、角速度センサを装着してもよい。いずれの場合であっても、ロボット２が有する各回転軸において、角速度センサによって角速度が取得されることが好適である。すなわち、角速度センサが、回転軸の近くに配設されることが好適である。また、ロボット２において、モータの軸が回転軸と同軸であってもよく、または、そうでなくてもよい。後者の場合には、例えば、モータの軸の回転がギヤ、またはプーリーとベルト等を介して回転軸に伝達されてもよい。そのような場合には、例えば、ギヤやプーリーなどが回転板であると考えてもよい。なお、モータユニット５０において、回転軸の角度、すなわち回転板５１の角度を取得できるようになっていてもよい。回転軸の角度は、例えば、エンコーダによって取得されてもよく、角速度センサ５２によって取得された角速度を積分することによって取得されてもよく、その他の方法によって取得されてもよい。なお、図３では、モータユニット５０が回転板５１を有する場合について示しているが、そうでなくてもよい。モータユニット５０は、モータによって回転される、回転板５１以外の部材を有していてもよい。その場合には、その部材に、リンク等が接続されることによって、モータによってリンク等が駆動されてもよい。また、モータ及び角速度センサ５２を有するモータユニット５０が用いられる場合には、そのモータと、角速度センサ５２とが紐付けられることになる。したがって、ある角速度センサ５２と、その角速度センサ５２の設けられている回転軸を回転させるモータとの対応を知ることができる。なお、モータユニット５０が用いられない場合であっても、同様に、角速度センサと、モータとが紐付けられていることが好適である。すなわち、角速度センサと、その角速度センサの設けられている回転軸を回転させるモータとの対応が分かるようになっていることが好適である。各角速度センサが、どの回転軸（関節）に対応するものであるのかが分かるようになっていることが好適だからである。
【００２２】
位置関係取得装置１は、モータ制御部１１と、受付部１２と、位置関係取得部１３と、判定部１４と、プロファイル取得部１５と、記憶部１６と、慣性モーメント算出部１７とを備える。位置関係取得装置１は、ロボット２の回転軸の位置関係を取得するだけのものであってもよく、または、ロボット２の動きを制御するロボット制御装置を兼ねていてもよい。本実施の形態では、後者の場合について主に説明する。また、位置関係取得装置１は、ロボット２と別途、設けられていてもよく、ロボット２に装着されていてもよい。後者の場合には、位置関係取得装置１とロボット２とが一体として構成されていてもよい。
【００２３】
モータ制御部１１は、ロボット２におけるモータを制御する。モータ制御部１１は、例えば、各回転軸が所望の角度となるようにモータをフィードバック制御してもよい。その場合に、モータ制御部１１は、各回転軸で取得された角度を用いてもよい。また、モータ制御部１１は、例えば、モータのサーボ制御等を行ってもよい。
【００２４】
受付部１２は、複数の回転軸にそれぞれ設けられた複数の角速度センサによって取得された角速度を受け付ける。なお、受け付けられる複数の角速度は、それぞれ、どの回転軸に設けられた角速度センサで取得されたのかが分かるようになっていることが好適である。例えば、上記のように、モータと角速度センサとが対応付けられている場合には、受付部１２で受け付けられる角速度と、モータとの関係も分かることになる。また、受付部１２は、受け付けを行うためのデバイスを含んでもよく、または含まなくてもよい。また、受付部１２は、ハードウェアによって実現されてもよく、または所定のデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
【００２５】
位置関係取得部１３は、複数の回転軸を１個ずつモータ制御部１１によって回転させた際に受付部１２によって受け付けられた複数の角速度センサのそれぞれの角速度を用いることによって、回転軸の位置関係を取得する。回転軸の位置関係は、リンク列における回転軸（関節軸）の位置関係であってもよい。また、ロボット２のリンク列に含まれる回転軸に関する位置関係は、回転軸のリンク関係や、回転軸の並びと考えることもできる。リンク列における回転軸の位置関係は、例えば、リンク列の一端から他端までの回転軸の並び順であってもよい。また、回転軸の位置関係は、回転軸の配置関係であると考えてもよい。具体的には、図４で示されるように、ある回転軸Ｐ１０３が回転し、他の回転軸Ｐ１０１，Ｐ１０２，Ｐ１０４，Ｐ１０５が固定されている場合には、回転する回転軸Ｐ１０３を挟んで、一方はある角速度ω１で回転し、他方は別の角速度ω２で回転することになる。通常、ある回転軸を回転させた場合に、その回転軸におけるモータの本体側とモータの軸側、すなわち、回転軸によって相対的に回転する両側がまったく同じ構造、重量等であることはないため、一方の側が他方の側に比べてより回転しやすくなり、その結果、その一方の側の角速度の方が大きくなるからである。なお、図４では、説明を簡単にするため、回転軸Ｐ１０１，Ｐ１０２の角速度をω１、回転軸Ｐ１０４，Ｐ１０５の角速度をω２としているが、回転軸Ｐ１０１，Ｐ１０２の角速度は、誤差の範囲内で同じであればよく、回転軸Ｐ１０４，Ｐ１０５の角速度も、誤差の範囲内で同じであればよい。このように、位置関係取得部１３は、ある回転軸Ｐ１０３が回転した際に他の回転軸Ｐ１０１，Ｐ１０２，Ｐ１０４，Ｐ１０５に設けられた角速度センサによって取得された角速度が第１の値ω１及び第２の値ω２である場合に、回転した回転軸Ｐ１０３は、第１の値ω１の角速度が取得された１以上の回転軸Ｐ１０１，Ｐ１０２と、第２の値ω２の角速度が取得された１以上の回転軸Ｐ１０４，Ｐ１０５との間に存在すると判断することができる。したがって、位置関係取得部１３は、ある回転対象の回転軸を回転させ、その際に受け付けられた回転対象以外の回転軸における角速度を用いることによって、回転対象の回転軸が、それ以外の回転軸に関する第１のグループと、第２のグループとの間に存在すると判断することができる。そして、位置関係取得部１３は、回転対象の回転軸を、１個ずつ変更していくことによって、すべての回転軸について、同様の判断結果を取得する。その後、位置関係取得部１３は、その判断結果をあわせることによって、回転軸の位置関係を取得することができる。なお、位置関係取得部１３は、ある回転軸を回転させた際に他の回転軸において取得された複数の角速度を、公知のクラスタリング手法を用いて２個のグループに分け、角速度の第１のグループに対応する１以上の回転軸と、角速度の第２のグループに対応する１以上の回転軸との間に、回転対象の回転軸が存在すると判断してもよい。その場合には、例えば、第１のグループの角速度がω１となり、第２のグループの角速度がω２となるか、または、その逆になると考えてもよい。
【００２６】
なお、位置関係取得部１３がモータ制御部１１によってある回転軸を回転させる場合に、その回転は、一方向への回転であってもよく、または、往復回転であってもよい。後者の場合には、回転の範囲を小さくしてもよい。そのようにすることで、ロボット２の現在の姿勢や位置を大きく変化させることなく、回転軸の位置関係を取得できるようになる。例えば、ヒューマノイドロボットの足の回転軸を大きく変化させた場合には、ロボット２が倒れる可能性もあるため、そのような観点からは、回転対象の回転軸を、小さな範囲で往復回転させることが好適である。また、ある回転対象の回転軸を回転させた場合に、回転対象以外の回転軸において角速度センサ５２によって取得された角速度としては、例えば、回転対象の回転軸を回転させている期間に角速度センサ５２によって取得された角速度の最大値を用いるようにしてもよい。その最大値は、角速度の絶対値の最大値であってもよい。例えば、回転対象の回転軸の角度を、時間を引数に有する三角関数で変化させた場合には、角速度センサ５２によって取得される角速度も時間と共に変化することになる。したがって、最大値などのあらかじめ決められた角速度を、回転軸の位置関係の取得のために用いることが好適である。
【００２７】
リンク列は、通常、１以上のリンクを有している。リンク列が２以上のリンクを有している場合には、その２以上のリンクは、回転軸に対応する関節を介して連結されていてもよい。リンク列は、通常、基端と先端とを有している。例えば、ヒューマノイドロボットの腕に相当するリンク列の場合には、手先側が先端側となり、肩側が基端側となる。なお、例えば、ヒューマノイドロボットのように、ボディーに手足のリンク列が接続されているような場合には、リンク列の基端の回転軸には、複数の回転軸が隣接している、と考えることもできる。例えば、図５で示されるロボット２においては、腕に相当するリンク列の基端の回転軸Ｐ０は、他のリンク列の基端の回転軸Ｐ３，Ｐ６，Ｐ９に隣接していると考えてもよい。したがって、リンク列の基端は、複数のリンク列の基端にそれぞれ接続されている複数接続端であると考えてもよい。なお、リンク列の先端は、自由端である場合と、接地端である場合とがある。自由端とは、例えば、ヒューマノイドロボットの手先や、飛行ロボットの回転翼などのように、地面や床等に接していない先端のことである。接地端とは、例えば、ヒューマノイドロボットの足先や、走行ロボットの走行部などのように、地面や床等に接している先端のことである。なお、ここでは、リンク列の一端が基端であり、他端が自由端または接地端である先端である場合について説明したが、そうでなくてもよい。例えば、蛇型ロボットのように、リンク列の両端が先端であってもよい。蛇型ロボットの場合には、通常、その両側の先端は自由端となる。蛇型ロボットのように、両端が先端であるリンク列も含めると、リンク列は、第１の端が、基端、自由端、接地端のいずれかであり、第２の端が、自由端、接地端のいずれかとなる。したがって、リンク列を第１及び第２の端の組み合わせで分類すると６（＝２×３）種類存在することになるが、第１の端が自由端であり、第２の端が接地端であるリンク列と、第１の端が接地端であり、第２の端が自由端であるリンク列とが同じであると考えると、リンク列は５種類存在することになる。
【００２８】
ここで、リンク列の先端が自由端か接地端かを判断する方法について説明する。位置関係取得部１３は、リンク列の先端の回転軸が回転した際の他の回転軸に設けられた角速度センサによって取得された角速度が、閾値より小さい場合には先端が自由端であると判断し、閾値より大きい場合には先端が接地端であると判断してもよい。例えば、図５で示されるロボット２において、自由端の回転軸Ｐ２を回転させた場合には、手先のみが大きく動くことになり、その他の回転軸Ｐ１等は、あまり動かないことになる。一方、接地端の回転軸Ｐ５を回転させた場合には、通常、接地状態が変化することになるため、回転軸Ｐ５以外の回転軸がそれなりに動くことになる。そのため、位置関係取得部１３は、リンク列の先端の回転軸が回転した時の他の回転軸の角速度が、あらかじめ決められた閾値よりも小さい場合には、その回転対象の回転軸が自由端の回転軸であると判断し、あらかじめ決められた閾値よりも大きい場合には、その回転対象の回転軸が接地端の回転軸であると判断してもよい。なお、回転対象以外の回転軸の角速度が閾値と等しい場合には、位置関係取得部１３は、回転対象の回転軸が自由端の回転軸であると判断してもよく、または、接地端の回転軸であると判断してもよい。このようにして、リンク列の先端が自由端であるのか、接地端であるのかを判断することができるようになる。その結果、例えば、ヒューマノイドロボットにおいて、リンク列の先端が、手先であるのか、足先であるのかを区別することができるようになる。
【００２９】
位置関係取得部１３は、隣接する２個の回転軸の間の相対的な角度を取得してもよい。なお、第１の回転軸と第２の回転軸との間に、第１及び第２の回転軸の間の相対的な角度を変化させる別の回転軸が存在しない場合に、第１及び第２の回転軸は隣接する回転軸であるとしてもよい。例えば、図５のロボット２において、回転軸Ｐ１，Ｐ２は、隣接する回転軸であり、回転軸Ｐ０，Ｐ３も隣接する回転軸である。一方、回転軸Ｐ１，Ｐ３は、間に回転軸Ｐ１が存在するため、隣接する回転軸ではないことになる。その相対的な角度は、第１及び第２の回転軸に設けられた角速度センサによって、３次元の角速度を測定することによって取得することができる。例えば、第１の回転軸の回転時に、隣接する第２の回転軸に設けられた角速度センサによって３次元座標系における角速度を測定することによって、第２の回転軸に設けられた角速度センサに対する第１の回転軸の方向を知ることができる。通常、角速度の方向が、第１の回転軸の方向となる。ここで、隣接する２個の回転軸の一方を回転させた場合に、他方の回転軸の位置が移動するときと、移動しないときとがある。例えば、図５のロボット２において隣接する回転軸Ｐ１，Ｐ２について、回転軸Ｐ１を回転させると回転軸Ｐ２の位置は移動するが、回転軸Ｐ２を回転させても、回転軸Ｐ１の位置はほとんど移動しない。したがって、相対的な角度を取得する場合には、位置関係取得部１３は、隣接する２個の回転軸のうち、回転により他方の回転軸の位置を移動させることができる方の回転軸を回転対象とすることが好適である。そのような回転対象の回転軸は、リンク列の先端が自由端である場合には、通常、隣接する２個の回転軸のうち、基端側の回転軸となり、リンク列の先端が接地端である場合には、通常、先端側の回転軸となる。また、第２の回転軸に設けられた角速度センサに対する第２の回転軸の方向は分かっているものとする。その結果、第１の回転軸と、第２の回転軸との相対的な角度を取得することができるようになる。なお、第２の回転軸に設けられた角速度センサに対する第２の回転軸の方向が分かっていない場合であって、モータユニット５０が図３で示されるものである場合には、例えば、第２の回転軸を回転させ、その第２の回転軸に設けられた角速度センサ５２によって３次元の角速度を取得することによって、第２の回転軸に設けられた角速度センサに対する第２の回転軸の方向を知ることができる。第２の回転軸が回転板５１に垂直に取り付けられている場合には、その回転板５１に設けられた角速度センサによって取得された角速度の方向が、第２の回転軸の方向となる。また、第２の回転軸において角速度が取得される時点の第２の回転軸の角度を、第１及び第２の回転軸の間の相対的な角度を取得する際に用いてもよい。その第２の回転軸の角度は、上述のように、例えば、エンコーダを用いることによって、または、第２の回転軸における角速度を積分することによって取得することができる。
【００３０】
なお、位置関係取得部１３によって取得された位置関係を示す情報は、記憶部１６や、図示しない記録媒体で記憶されてもよい。また、位置関係取得装置１は、取得された角速度のうち、あらかじめ決められた閾値以上の角速度のみを用いるようにしてもよい。そのため、例えば、受付部１１は、その閾値以上の角速度のみを受け付け、その閾値より小さな角速度を「０」にしてもよい。上述のように、角速度の最大値が用いられる場合には、角速度の最大値が所定の閾値より小さいときに、その角速度が「０」にされてもよい。また、位置関係取得装置１は、位置関係取得部１３によって取得された回転軸の位置関係を出力する出力部（図示せず）を備えていてもよい。その出力は、例えば、表示デバイスへの表示でもよく、所定の機器への通信回線を介した送信でもよく、プリンタによる印刷でもよく、記録媒体への蓄積でもよい。なお、出力部は、出力を行うデバイス（例えば、通信デバイスや表示デバイスなど）を含んでもよく、または含まなくてもよい。また、出力部は、ハードウェアによって実現されてもよく、または、それらのデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
【００３１】
判定部１４は、位置関係取得部１３によって取得された回転軸の位置関係を用いて、ロボット２の種類を判定する。判定部１４は、例えば、位置関係の特徴と、それに対応するロボットの種類とを対応付ける対応情報を用いて、ロボット２の種類を判定してもよい。判定部１４は、回転軸の位置関係として、リンク列の種類を用いてもよい。そのリンク列の種類は、リンク列を端部の回転軸の種類の組み合わせで分類した上記５種類であってもよい。具体的には、あるロボット２が、自由端と基端とを有する２個のリンク列、及び接地端と基端とを有する２個のリンク列を有している場合には、判定部１４は、そのロボット２をヒューマノイドロボットと判定してもよい。また、あるロボット２が、接地端と基端とを有する４個のリンク列を有している場合には、判定部１４は、そのロボット２を４足歩行の動物型ロボットと判定してもよい。また、あるロボット２が、接地端と基端とを有する４個のリンク列、及び自由端と基端とを有する１個のリンク列を有している場合には、判定部１４は、そのロボット２を、尻尾付きの４足歩行の動物型ロボットと判定してもよい。また、あるロボット２が、両端が自由端である１個のリンク列を有している場合には、判定部１４は、そのロボット２を蛇型ロボットと判定してもよい。判定部１４は、例えば、ロボット２の種類を、「ヒューマノイドロボット」「動物型ロボット」等のように判定してもよく、または、「脚が３軸、手が３軸のヒューマノイドロボット」「足が４軸、手が２軸のヒューマノイドロボット」「前足が４軸、後ろ足が３軸の動物型ロボット」等のように判定してもよい。後者の場合には、ロボット２の種類にリンク列の軸数（関節数）も含まれることになる。なお、このような判定を行う場合には、位置関係取得部１３による位置関係の取得が行われる際に、ロボット２が、通常の状態で載置面に載置されることが好適である。例えば、ヒューマノイドロボットや動物型ロボットは、立位において位置関係の取得が行われ、移動ロボットや飛行ロボットは、移動や飛行の行える状態で位置関係の取得が行われてもよい。適切な判定を実現できるようにするためである。また、回転軸が、車輪などの走行部の回転軸である場合や、回転翼の回転軸である場合にも、同様にして、判定部１４は、ロボット２の種類を判定することができる。例えば、あるロボット２が、それぞれが自由端である４個の回転軸を有している場合には、判定部１４は、そのロボット２を、４個の回転翼を有する飛行ロボットと判定してもよい。また、例えば、あるロボット２が、それぞれが接地端である４個の回転軸を有している場合には、判定部１４は、そのロボット２を、４個の車輪を有する移動ロボットと判定してもよい。また、判定部１４による判定結果は、図示しない記録媒体で記憶されてもよい。
【００３２】
プロファイル取得部１５は、判定部１４によって判定されたロボット２の種類に応じた動作プロファイルを取得する。プロファイル取得部１５は、判定結果に応じた動作プロファイルを、例えば、ネットワークを介してサーバ等にアクセスすることによってダウンロードしてもよく、または、図示しない記録媒体にアクセスすることによって読み出してもよい。その動作プロファイルは、例えば、ロボット２の動作と、その動作を行う際の複数の回転軸の具体的な回転とを対応付ける情報であってもよい。ロボット２の動作とは、例えば、ロボット２の前進、後退、右方向への方向転換、左方向への方向転換等であってもよく、また、ロボット２のその他の動作（例えば、右手を挙げる、左手を挙げるなど）であってもよい。動作を行う際の複数の回転軸の具体的な回転とは、例えば、複数の回転軸に関する回転量と、各回転軸の回転のシーケンスとを含む制御内容であってもよい。なお、各回転軸はモータによって駆動されるため、動作プロファイルは、各モータの制御内容を示す情報であると考えてもよい。例えば、ロボット２がヒューマノイドロボットや動物型ロボットである場合には、ロボット２を前進させるためにも、複数の回転軸の複雑な回転制御が必要になる。したがって、ロボット２の種類ごとに、例えば、前進に関する複数の回転軸の制御内容、後退に関する複数の回転軸の制御内容、右方向転換に関する複数の回転軸の制御内容、左方向転換に関する複数の回転軸の制御内容が動作プロファイルとしてあらかじめ設定されており、プロファイル取得部１５は、その設定されている動作プロファイルから、判定部１４によって判定されたロボット２の種類に応じた動作プロファイルを取得してもよい。また、モータ制御部１１は、プロファイル取得部１５によって取得された動作プロファイルを用いて複数のモータを制御してもよい。例えば、モータ制御部１１は、取得された動作プロファイルを用いて、ロボット２を前進させる場合には、前進に対応する動作プロファイルに応じて各回転軸を制御し、ロボット２を右方向転換させる場合には、右方向転換に対応する動作プロファイルに応じて各回転軸を制御してもよい。なお、判定部１４によって、リンク列の軸数を含まないロボット２の種類、例えば、「ヒューマノイドロボット」「動物型ロボット」等の種類の判定が行われる場合には、動作プロファイルによって示されるリンク列の軸数と、ロボット２のリンク列の軸数とが異なることもあり得る。そのような場合には、例えば、特許第５８９２５３１号公報に記載されているリンク列マッピング方法等を用いて、動作プロファイルのリンク列を、実際のロボット２のリンク列に変換して用いるようにしてもよい。プロファイル取得部１５は、取得した動作プロファイルを、記憶部１６に蓄積してもよい。その動作プロファイルをモータ制御部１１が使用して動作できるようにするためである。
【００３３】
記憶部１６には、動作プロファイル等の情報が記憶されてもよい。また、位置関係取得部１３によって取得された回転軸の位置関係を示す情報等も記憶部１６で記憶されてもよい。記憶部１６に情報が記憶される過程は問わない。例えば、記録媒体を介して情報が記憶部１６で記憶されるようになってもよく、通信回線等を介して送信された情報が記憶部１６で記憶されるようになってもよく、または、入力デバイスを介して入力された情報が記憶部１６で記憶されるようになってもよい。なお、動作プロファイルは、例えば、プロファイル取得部１５によって記憶部１６に蓄積されてもよい。記憶部１６での記憶は、ＲＡＭ等における一時的な記憶でもよく、または、長期的な記憶でもよい。記憶部１６は、所定の記録媒体（例えば、半導体メモリや磁気ディスクなど）によって実現されうる。
【００３４】
慣性モーメント算出部１７は、モータ制御部１１によってある回転軸が回転された際の回転軸のトルクと、回転軸よりも先端側のリンク列における角速度センサによって取得された角速度とを用いて、回転軸に対する回転軸より先端側のリンク列に関する慣性モーメントを算出する。ここで、トルクＴと、慣性モーメントＪと、角加速度αとの関係は次式のようになる。
Ｔ＝Ｊ×α
【００３５】
慣性モーメント算出部１７は、角速度センサによって取得された角速度を時間で微分することによって角加速度αを取得することができる。また、既知の特性のモータを使用している場合には、モータに与える電流と、その電流に応じたモータのトルクとの関係を用いることによって、慣性モーメント算出部１７は、モータ制御部１１がモータに与える電流を知ることによって、モータのトルクＴを取得することができる。したがって、慣性モーメント算出部１７は、トルクＴと角加速度αとを用いることによって、慣性モーメントＪ（＝Ｔ／α）を算出することができる。なお、慣性モーメント算出部１７は、回転軸ごとに、慣性モーメントＪを算出してもよい。また、その慣性モーメントＪは、ある関節軸における先端側のリンク列の慣性モーメントであってもよい。なお、慣性モーメント算出部１７によって各回転軸の慣性モーメントＪが算出された場合には、モータ制御部１１は、慣性モーメント算出部１７によって算出された慣性モーメントを用いて複数のモータを制御してもよい。慣性モーメントを用いてモータを制御するとは、ロボット２を動作させる際のＰＩＤ（Proportional Integral Differential）制御などのフィードバック制御に、その慣性モーメントを用いることであってもよい。なお、通常、このようにして慣性モーメントを算出することができるのは、先端が自由端であるリンク列である。したがって、慣性モーメント算出部１７は、先端が自由端であるリンク列に含まれる回転軸についてのみ、この慣性モーメントを算出する処理を行ってもよい。
【００３６】
次に、位置関係取得装置１の動作について図２のフローチャートを用いて説明する。
（ステップＳ１０１）モータ制御部１１は、他の回転軸を固定した状態（すなわち、回転させない状態）で、ある回転軸を回転させる。
【００３７】
（ステップＳ１０２）受付部１２は、ある回転軸が回転された際の他の回転軸に設けられた角速度センサから、それぞれ角速度を受け付ける。なお、ステップＳ１０１，Ｓ１０２は、通常、同時に行われることになる。すなわち、モータ制御部１１によってある回転軸が回転されている時の角速度が、受付部１２によって受け付けられることになる。受付部１２によって受け付けられた角速度は、図示しない記録媒体で記憶されてもよい。その記憶される角速度は、例えば、ある時点の角速度であってもよく、角速度の時間変化を示すものであってもよく、角速度の最大の絶対値であってもよい。
【００３８】
（ステップＳ１０３）位置関係取得部１３は、すべての回転軸について、ステップＳ１０１，Ｓ１０２の処理を行ったかどうか判断する。そして、すべての回転軸について処理を行った場合には、ステップＳ１０４に進み、そうでない場合には、ステップＳ１０１に戻り、まだ回転させていない回転軸に関する回転を行うようにする。
【００３９】
（ステップＳ１０４）位置関係取得部１３は、回転対象の回転軸ごとに、他の回転軸を２個のグループに分類する。その分類において、回転対象の回転軸を回転させた際に取得された他の回転軸における角速度が用いられる。すなわち、この処理は、回転対象の回転軸ごとに、他の回転軸の角速度を分類することと同様であると考えることもできる。この処理の詳細については後述する。
【００４０】
（ステップＳ１０５）位置関係取得部１３は、ステップＳ１０４の結果を用いて、リンク列の先端の回転軸を特定する。回転軸を特定するとは、例えば、回転軸の識別子を蓄積することであってもよい。特定対象が先端の回転軸である場合には、例えば、回転軸の識別子が、先端である旨に対応付けて蓄積されてもよい。
【００４１】
（ステップＳ１０６）位置関係取得部１３は、ステップＳ１０５において、またはステップＳ１０５及びＳ１０６において特定された、１以上の回転軸を有するリンク列の基端側につながる回転軸を特定する。この特定によって、それまでに特定されたリンク列が、一つの回転軸分だけ延びることになる。したがって、この特定が繰り返されることによって、例えば、一列のリンク列が特定されることになる。なお、このステップＳ１０６において、１個の回転軸を特定できないこともある。その場合には、回転軸の特定を行わないでステップＳ１０７に進んでもよい。
【００４２】
（ステップＳ１０７）位置関係取得部１３は、先端側の回転軸につながる回転軸の特定を終了するかどうか判断する。そして、終了する場合には、ステップＳ１０８に進み、そうでない場合には、ステップＳ１０６に戻る。なお、位置関係取得部１３は、例えば、ステップＳ１０６で最後に特定した回転軸が先端の回転軸である場合や、ステップＳ１０６において１個の回転軸を特定できなかった場合（すなわち、リンク関係に分岐が生じる場合）には、回転軸の特定を終了すると判断してもよい。
【００４３】
（ステップＳ１０８）位置関係取得部１３は、ステップＳ１０５で特定された先端の回転軸のうち、まだステップＳ１０６における特定の処理を行っていない回転軸があるかどうか判断する。そして、そのような回転軸がある場合には、ステップＳ１０６に戻り、その回転軸について、ステップＳ１０６の処理を行い、そうでない場合には、ステップＳ１０９に進む。
【００４４】
（ステップＳ１０９）位置関係取得部１３は、ステップＳ１０５〜Ｓ１０８において特定されたリンク列の基端の接続関係を取得する。このようにして、回転軸の並びを示すリンク列と、リンク列の基端の接続関係とによって、ロボット２の全体の回転軸の位置関係が取得されたことになる。その位置関係は、図示しない記録媒体に蓄積されてもよい。
【００４５】
（ステップＳ１１０）位置関係取得部１３は、先端の回転軸が自由端であるのか、接地端であるのかを判断する。その判断結果は、図示しない記録媒体に蓄積されてもよい。
【００４６】
（ステップＳ１１１）位置関係取得部１３は、隣接する回転軸の間の相対的な角度を取得する。その相対的な角度は、図示しない記録媒体に蓄積されてもよい。
【００４７】
（ステップＳ１１２）判定部１４は、位置関係取得部１３によって取得された位置関係等を用いて、ロボット２の種類を判定する。その判定結果は、図示しない記録媒体に蓄積されてもよい。
【００４８】
（ステップＳ１１３）プロファイル取得部１５は、判定部１４によって判定されたロボット２の種類を用いて、ロボット２の動作で用いる動作プロファイルを取得する。その取得された動作プロファイルは、記憶部１６に蓄積されてもよい。その動作プロファイルは、モータ制御部１１による制御に用いられてもよい。
【００４９】
（ステップＳ１１４）慣性モーメント算出部１７は、各回転軸について、慣性モーメントＪを算出する。なお、ステップＳ１０２において、角速度の時間変化を示す情報が記憶されている場合には、慣性モーメント算出部１７は、その情報を用いて角加速度を算出することができる。一方、そのような情報が記憶されていない場合には、慣性モーメント算出部１７は、慣性モーメントＪを算出するために各回転軸を回転させ、それに応じて取得された角速度の時間変化を用いることによって、角加速度を算出してもよい。慣性モーメント算出部１７によって算出された慣性モーメントＪは、図示しない記録媒体に蓄積され、モータ制御部１１による制御に用いられてもよい。なお、慣性モーメント算出部１７は、例えば、先端が自由端であるリンク列に含まれる回転軸についてのみ、慣性モーメントの算出を行ってもよい。
【００５０】
なお、図２のフローチャートでは、すべての回転軸を回転させる場合について説明したが、そうでなくてもよい。例えば、位置関係を取得したい回転軸が限定される場合には、その回転軸のみを回転させるようにしてもよい。また、ステップＳ１１１における隣接する回転軸の相対的な角度の取得において、位置関係取得部１３は、隣接する回転軸の一方を回転させるようにモータ制御部１１を制御し、その回転に応じて受付部１１で受け付けられた角速度を用いて相対的な角度を取得してもよい。また、図２のフローチャートにおける処理の順序は一例であり、同様の結果を得られるのであれば、各ステップの順序を変更してもよい。また、図２のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
【００５１】
次に、位置関係取得部１３が回転軸の位置関係を取得する具体的な方法について説明する。ここでは、ロボット２が、図５で示される１２個の回転軸（関節）Ｐ０〜Ｐ１１を有しているものとする。そして、位置関係取得部１３は、回転軸Ｐ０から順番に、各回転軸を回転させ（ステップＳ１０１〜Ｓ１０３）、それに応じて受け付けられた他の回転軸の角速度を、角速度の絶対値の大きい回転軸と、角速度の絶対値の小さい回転軸とに分類する（ステップＳ１０４）。例えば、回転軸Ｐ０が回転された場合には、手のリンク列の手先側の回転軸Ｐ１，Ｐ２の回転に対して、ボディー側の回転軸Ｐ３等の回転は、小さいことになる。したがって、位置関係取得部１３は、各角速度センサで取得された角速度の絶対値に応じて、図６で示されるように、各回転軸を１個のグループまたは２個のグループに分類する。なお、図６の１番目のレコードでは、角速度の大きい回転軸として、回転軸Ｐ１，Ｐ２が分類されており、角速度の小さい回転軸として、回転軸Ｐ３〜Ｐ１１が分類されている。そのレコードにおいて、同じ分類に属する回転軸の角速度、具体的には、回転軸Ｐ１，Ｐ２に対応する角速度や、回転軸Ｐ３〜Ｐ１１に対応する角速度は、通常、誤差の範囲内で等しいものとする。また、それらの角速度として、前述のように、受け付けられた角速度の絶対値の最大値を用いてもよい。なお、回転対象が回転軸Ｐ２である場合には、回転軸Ｐ０，Ｐ１，Ｐ３〜Ｐ１１のすべての角速度が、あらかじめ決められた閾値よりも小さかったとする。すると、位置関係取得部１３は、図６で示されるように、それらの回転軸Ｐ０，Ｐ１，Ｐ３〜Ｐ１１を、角速度の絶対値の小さい回転軸に登録する。一方、回転対象が回転軸Ｐ５である場合には、回転軸Ｐ０〜Ｐ４，Ｐ６〜Ｐ１１のすべての角速度が、あらかじめ決められた閾値よりも大きかったとする。すると、位置関係取得部１３は、図６で示されるように、それらの回転軸Ｐ０〜Ｐ４，Ｐ６〜Ｐ１１を、角速度の絶対値の大きい回転軸に登録する。このようにして、各回転軸を回転させることに応じて、位置関係取得部１３は、回転対象の回転軸ごとに、他の回転軸を２個のグループに分類した結果と取得する。
【００５２】
次に、位置関係取得部１３は、図６で示されるグループの分類結果を用いて先端の回転軸を特定する（ステップＳ１０５）。具体的には、図６において、回転軸を含まないグループがある場合に、位置関係取得部１３は、そのグループを有するレコードの回転対象の回転軸を先端の回転軸としてもよい。また、図６において、１個の回転軸のみを含むグループがある場合に、位置関係取得部１３は、その１個の回転軸を先端の回転軸としてもよい。したがって、位置関係取得部１３は、例えば、回転軸Ｐ２，Ｐ５，Ｐ８，Ｐ１１を先端の回転軸として特定することができる。その後、位置関係取得部１３は、特定した先端の回転軸に隣接する回転軸を順番に特定していく（ステップＳ１０６〜Ｓ１０８）。具体的には、図６において、先端の回転軸のみを含むグループがある場合に、位置関係取得部１３は、そのグループを有するレコードの回転対象の回転軸を、先端の回転軸に隣接する回転軸としてもよい。したがって、位置関係取得部１３は、例えば、回転対象が回転軸Ｐ１であるレコードを参照して、回転軸Ｐ２に、回転軸Ｐ１が隣接すると判断することができる。その後、図６において、特定した先端側のリンク列のみを含むグループがある場合に、位置関係取得部１３は、そのグループを有するレコードの回転対象の回転軸を、先端側のリンク列に隣接する回転軸としてもよい。したがって、位置関係取得部１３は、例えば、回転対象が回転軸Ｐ０であるレコードを参照して、リンク列Ｐ１−Ｐ２（この表記では、右端の回転軸が先端の回転軸であるとする。）に、回転軸Ｐ０が隣接すると判断することができる。なお、図６において、特定した先端側のリンク列のみを含むグループがない場合には、位置関係取得部１３は、リンク列につながる回転軸の特定を終了してもよい。例えば、位置関係取得部１３は、図６において、リンク列Ｐ０−Ｐ１−Ｐ２のみを含むグループがないため、そのリンク列Ｐ０−Ｐ１−Ｐ２の基端側につながる１個の回転軸は存在しない、すなわち、回転軸Ｐ０が基端の回転軸であると判断し、そのリンク列に関する回転軸の特定を終了する。この場合には、回転軸Ｐ０の基端側には、分岐が存在することになる。このような処理を繰り返すことによって、位置関係取得部１３は、４個のリンク列Ｐ０−Ｐ１−Ｐ２，Ｐ３−Ｐ４−Ｐ５，Ｐ６−Ｐ７−Ｐ８，Ｐ９−Ｐ１０−Ｐ１１を特定することができる。
【００５３】
その後、位置関係取得部１３は、４個のリンク列における基端の回転軸の接続関係を取得する（ステップＳ１０９）。具体的には、図６において、あるリンク列Ｐ０−Ｐ１−Ｐ２のすべての回転軸を含むグループがある場合に、位置関係取得部１３は、そのグループを有するレコードの回転対象の回転軸を、そのリンク列Ｐ０−Ｐ１−Ｐ２の基端の回転軸Ｐ０に接続されている回転軸の候補とする。例えば、位置関係取得部１３は、回転軸Ｐ３〜Ｐ１１を、回転軸Ｐ０に接続されている回転軸の候補とする。また、位置関係取得部１３は、基端の回転軸に接続されている回転軸の候補のうち、リンク列の基端である回転軸を、最終的に、基端の回転軸に接続されている回転軸とする。例えば、位置関係取得部１３は、回転軸Ｐ０に接続されている回転軸の候補Ｐ３〜Ｐ１１のうち、リンク列の基端である回転軸Ｐ３，Ｐ６，Ｐ９を、回転軸Ｐ０に接続されている回転軸とする。位置関係取得部１３は、この処理を、各リンク列について行うものとする。そのようにして、例えば、位置関係取得部１３は、基端の回転軸Ｐ０，Ｐ３，Ｐ６，Ｐ９がそれぞれ互いに接続されているという接続関係を取得することができる。このようにして、ロボット２の回転軸の最終的な位置関係が取得されることになる。
【００５４】
また、位置関係取得部１３は、各リンク列における先端の回転軸が自由端であるのか、接地端であるのかを判断する（ステップＳ１１０）。図６において、位置関係取得部１３は、リンク列の先端の回転軸が回転対象であるレコードに含まれる空集合のグループが角速度の大きい回転軸のグループである場合には、その先端の回転軸を自由端と判断し、その空集合のグループが角速度の小さい回転軸のグループである場合には、その先端の回転軸を接地端と判断する。したがって、位置関係取得部１３は、回転軸Ｐ２，Ｐ８を自由端と判断し、回転軸Ｐ５，Ｐ１１を接地端と判断する。
【００５５】
なお、位置関係取得部１３は、例えば、図７Ａ，図７Ｂで示されるように、回転軸の位置関係を取得してもよい。図７Ａは、リンク列Ｐ０−Ｐ１−Ｐ２の回転軸の位置関係を示しており、図７Ｂは、リンク列Ｐ３−Ｐ４−Ｐ５の回転軸の位置関係を示している。図７Ａ，図７Ｂでは、各回転軸に対して隣接する第１の端側の回転軸と、第２の端側の回転軸とを示している。図７Ａ，図７Ｂでは、第１の端が先端であり、第２の端が基端である場合について示している。具体的には、図７Ａの１個目のレコードでは、回転軸Ｐ２に対して隣接する先端側の回転軸は存在せず、その回転軸Ｐ２が自由端であり、回転軸Ｐ２に対して隣接する基端側の回転軸が回転軸Ｐ１であることが示されている。また、図７Ａの２個目のレコードでは、回転軸Ｐ１に対して隣接する先端側の回転軸が回転軸Ｐ２であり、回転軸Ｐ１に対して隣接する基端側の回転軸が回転軸Ｐ０であることが示されている。また、図７Ａの３番目のレコードでは、回転軸Ｐ０に対して隣接する先端側の回転軸がＰ１であり、回転軸Ｐ０に対して隣接する基端側の回転軸が回転軸Ｐ３，Ｐ６，Ｐ９であること、すなわち、回転軸Ｐ０が基端の回転軸であることが示されている。また、回転軸Ｐ０に隣接する基端側の回転軸が回転軸Ｐ３，Ｐ６，Ｐ９であることが示されることによって、リンク列の接続関係も示されることになる。図７Ｂについても同様である。なお、図７Ａ，図７Ｂの記載では、リンク列の各回転軸について先端側と基端側との隣接回転軸を示しているため、冗長になっている。したがって、その冗長性をなくすために、例えば、リンク列の各回転軸について、第１の端側（先端側）のみ、または第２の端側（基端側）のみの隣接回転軸を示すようにしてもよい。その場合であっても、リンク列の端の回転軸については、自由端や接地端、基端であることが特定されていることが好適である。また、図７Ｃは、蛇型ロボットのように、両端が自由端であるリンク列における回転軸の位置関係を示す情報である。図７Ｃで示されるように両端が自由端である場合、または、両端が接地端である場合には、第１及び第２の端の両方とも、基端ではないことになる。
【００５６】
また、位置関係取得部１３は、ステップＳ１０２で受け付けられた角速度を用いて、回転対象の回転軸と、その回転軸に隣接する回転軸との相対的な角度をそれぞれ取得する（ステップＳ１１１）。なお、ある回転軸に隣接する回転軸は、上記のようにして取得された各回転軸の位置関係を用いることによって特定することができる。
【００５７】
その後、判定部１４は、位置関係取得部１３によって取得された回転軸の位置関係、及び、回転軸の位置関係とロボットの種類とを対応付ける情報を用いて、図５で示されるロボット２の種類をヒューマノイドロボットと判定する（ステップＳ１１２）。その判定は、例えば、上述のように、各リンク列の種類を用いて行われてもよい。
【００５８】
プロファイル取得部１５は、判定部１４による判定結果を用いて、その判定結果のロボット２の種類であるヒューマノイドロボットに応じた動作プロファイルを、図示しないサーバから取得し、記憶部１６に蓄積する（ステップＳ１１３）。また、慣性モーメント算出部１７は、ステップＳ１０２で受け付けられた角速度の時間変化を示す情報を用いることによって、または、モータ制御部１１によって各回転軸を回転させ、それに応じて受付部１２によって受け付けられた角速度の時間変化を用いることによって、自由端のリンク列に含まれる各回転軸の慣性モーメントを算出する（ステップＳ１１４）。その慣性モーメントは、ＰＩＤ制御等で用いられるために、モータ制御部１１に設定されてもよい。
【００５９】
以上のように、本実施の形態による位置関係取得装置１によれば、回転軸の位置関係を自動的に取得することができる。したがって、ユーザがそれらを手作業で設定する必要がなくなり、ユーザの利便性が向上されることになる。また、ユーザが手作業で設定した場合には誤設定になる可能性もあるが、位置関係取得装置１によって位置関係を取得することによって、そのような誤設定の可能性を低減させることができる。
【００６０】
なお、本実施の形態では、慣性モーメントを算出する場合について説明したが、そうでなくてもよい。慣性モーメントを算出しない場合には、位置関係取得装置１は、慣性モーメント算出部１７を備えていなくてもよい。
【００６１】
また、本実施の形態では、ロボット２の種類に応じた動作プロファイルを取得する場合について説明したが、そうでなくてもよい。動作プロファイルを取得しない場合には、位置関係取得装置１は、プロファイル取得部１５を備えていなくてもよい。動作プロファイルを取得しない場合には、モータ制御部１１は、例えば、逆運動学によって、リンク列の先端の位置に応じた各回転軸の角度を算出し、その算出した角度に応じて各回転軸を制御してもよい。その場合には、例えば、回転軸間の長さは、あらかじめ決められていてもよい。具体的には、ロボット２の各リンク列は、あらかじめ決められた長さを有するリンクを連結させることによって構成されたものであってもよい。
【００６２】
また、本実施の形態では、ある回転軸を回転させた際に、その回転軸を挟んで一方の側の回転軸と、他方の側の回転軸との角速度が異なる場合について説明したが、両側の回転軸が偶然、同じになる場合も考えられる。例えば、図４において、回転軸Ｐ１０３を回転させ、他の回転軸が固定されている場合に、各回転軸で取得される角速度がω１＝ω２となることも考えられる。その場合には、上記のように回転軸の位置関係を取得すると、回転軸Ｐ１０３が、端の回転軸と判断されることになり、不適切な位置関係の取得となってしまう。したがって、図６において、回転対象の回転軸がＰ２，Ｐ５，Ｐ８，Ｐ１１であるレコードのように、一方のグループに含まれる回転軸が存在しない場合には、回転対象の回転軸が端の回転軸であるかどうかを確認するようにしてもよい。その確認は、例えば、次の（１）または（２）のようにして行うことができる。
【００６３】
（１）回転軸を回転させることによる確認方法
この場合には、ある回転対象の回転軸が端の回転軸であると暫定的に判断された際に、回転対象以外のすべてまたは一部の回転軸の角度を少しだけ変えた後に、再度、回転対象の回転軸を回転させることによって各回転軸における角速度を測定する。そして、再度の測定においても、１回目の測定と同様に、一方のグループに含まれる回転軸が存在しない場合には、その回転対象の回転軸が端の回転軸であると最終的に判断してもよい。なお、再度の角速度の測定を、回転対象以外の回転軸の角度の変更の程度を変えながら複数回、行ってもよい。そして、すべての測定において、一方のグループに含まれる回転軸が存在しない場合には、その回転対象の回転軸が端の回転軸であると判断してもよい。なお、再度の測定によって両グループに含まれる回転軸が存在することになった場合には、その取得された角速度の小さい回転軸のグループや角速度の大きい回転軸のグループに含まれる回転軸を用いることによって、リンク列における各回転軸の位置関係を適切に取得することができるようになる。
【００６４】
（２）回転軸の隣接関係を用いた確認方法
ある回転軸を回転させた際に、偶然、両側の各回転軸において取得された角速度が同じになった場合には、その回転対象の回転軸を端として、その回転軸に隣接する回転軸は存在しないことになる。具体的には、図４において、回転対象の回転軸Ｐ１０３が端の回転軸ではないにも関わらず、ω１＝ω２となり、回転軸Ｐ１０３を回転させた際の角速度の小さいグループに含まれる回転軸が存在しなかった場合には、他の回転軸を回転させたとしても、回転軸Ｐ１０３のみを一方のグループ（角速度の小さい回転軸のグループまたは角速度の大きい回転軸のグループ）に含む回転軸は存在しないことになる。したがって、そのことによって、その回転軸Ｐ１０３が端の回転軸ではないことが分かる。このように、回転対象の回転軸Ｐ１０３が端の回転軸でないことが分かった場合には、その回転軸以外の回転軸において各回転軸の位置関係（すなわち、リンク列における回転軸の隣接関係）を特定し、その特定した位置関係を用いて、回転軸Ｐ１０３における隣接関係を特定するようにしてもよい。具体的には、次のようにして回転軸Ｐ１０３における隣接関係を取得してもよい。回転軸Ｐ１０３を回転対象として、ω１＝ω２となる場合には、その回転軸Ｐ１０３を含むリンク列の両端は、自由端である可能性が高いと考えられる。したがって、回転軸Ｐ１０３以外において、リンク列Ｐ１０２−Ｐ１０１と、リンク列Ｐ１０４−Ｐ１０５とを特定することができる。また、回転軸Ｐ１０３を回転対象とした場合に角速度の取得された回転軸は、回転軸Ｐ１０１，Ｐ１０２，Ｐ１０４，Ｐ１０５であるため、そのことは、リンク列Ｐ１０２−Ｐ１０１の基端側の回転軸Ｐ１０２と、リンク列Ｐ１０４−Ｐ１０５の基端側の回転軸Ｐ１０４との間に回転軸Ｐ１０３が存在することを除外していない。したがって、この場合には、リンク列Ｐ１０１−Ｐ１０２−Ｐ１０３−Ｐ１０４−Ｐ１０５が特定されてもよい。より具体的には、ある回転軸を回転対象とした際に取得された複数の回転軸と、２個のリンク列について、それぞれ先端側から順番に特定された複数の回転軸とが一致する場合には、位置関係取得部１３は、その回転対象の回転軸は、２個のリンク列の基端側の回転軸の間に存在すると判断してもよい。
【００６５】
また、本実施の形態では、ロボット２の種類を判定する場合について説明したが、そうでなくてもよい。ロボット２の種類を判定しない場合には、位置関係取得装置１は、判定部１４を備えていなくてもよい。
【００６６】
また、本実施の形態では、位置関係取得部１３が、隣接する２個の回転軸の間の相対的な角度も取得する場合について説明したが、そうでなくてもよい。また、本実施の形態では、位置関係取得部１３が、リンク列の先端の回転軸が自由端であるのか接地端であるのかを判断する場合について説明したが、そうでなくてもよい。
【００６７】
また、本実施の形態による位置関係取得装置１によって、各リンク列における回転軸の並び順や、各リンク列の先端側が自由端であるのか接地端であるのかについて取得することができたとしても、複数のリンク列の位置関係までは分からないこともあり得る。例えば、ロボット２がヒューマノイドロボットである場合に、各リンク列が腕であるのか、足であるのかは分かっても、右腕であるのか左腕であるのかについては、分からないこともある。その場合には、例えば、ロボット２の各腕を実際に動かすことによって、あるリンク列が右腕であるのか、左腕であるのかを手動で設定するようにしてもよい。そのような場合であっても、リンク列における回転軸の並び順は自動的に取得できるため、その設定をユーザが手動で行う場合と比較して、ユーザの利便性を向上させることができ、また、誤設定の可能性も低減できることになる。
【００６８】
なお、上記実施の形態では、位置関係取得装置がスタンドアロンである場合について説明したが、位置関係取得装置は、スタンドアロンの装置であってもよく、サーバ・クライアントシステムにおけるサーバ装置であってもよい。後者の場合には、出力部や受付部は、通信回線を介して入力を受け付けたり、情報を出力したりしてもよい。
【００６９】
また、上記実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、または、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
【００７０】
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う２個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、または、その情報の受け渡しを行う２個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
【００７１】
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりした情報や、各構成要素が処理で用いる閾値や数式、アドレス等の情報等は、上記説明で明記していなくても、図示しない記録媒体において、一時的に、または長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、または、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、または、図示しない読み出し部が行ってもよい。
【００７２】
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いる閾値やアドレス、各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していなくても、ユーザが適宜、それらの情報を変更できるようにしてもよく、または、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
【００７３】
また、上記実施の形態において、位置関係取得装置に含まれる２以上の構成要素が通信デバイスや入力デバイス等を有する場合に、２以上の構成要素が物理的に単一のデバイスを有してもよく、または、別々のデバイスを有してもよい。
【００７４】
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、または、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをＣＰＵ等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、記憶部や記録媒体にアクセスしながらプログラムを実行してもよい。なお、上記実施の形態における位置関係取得装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータを、複数のモータによってそれぞれ駆動される複数の回転軸を有するロボットにおけるモータを制御するモータ制御部、複数の回転軸にそれぞれ設けられた複数の角速度センサによって取得された角速度を受け付ける受付部、複数の回転軸を１個ずつモータ制御部によって回転させた際に受付部によって受け付けられた複数の角速度センサのそれぞれの角速度を用いることによって、回転軸の位置関係を取得する位置関係取得部として動作させるためのものである。
【００７５】
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を取得する取得部や、情報を受け付ける受付部、情報を出力する出力部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には少なくとも含まれない。
【００７６】
また、このプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体（例えば、ＣＤ−ＲＯＭなどの光ディスクや磁気ディスク、半導体メモリなど）に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。
【００７７】
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、または分散処理を行ってもよい。
【００７８】
図８は、上記プログラムを実行して、上記実施の形態による位置関係取得装置１を実現するコンピュータの外観の一例を示す模式図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
【００７９】
図８において、コンピュータシステム９００は、ＣＤ−ＲＯＭドライブ９０５を含むコンピュータ９０１と、キーボード９０２と、マウス９０３と、モニタ９０４とを備える。
【００８０】
図９は、コンピュータシステム９００の内部構成を示す図である。図９において、コンピュータ９０１は、ＣＤ−ＲＯＭドライブ９０５に加えて、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１１と、ブートアッププログラム等のプログラムを記憶するためのＲＯＭ９１２と、ＭＰＵ９１１に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するＲＡＭ９１３と、アプリケーションプログラム、システムプログラム、及びデータを記憶するハードディスク９１４と、ＭＰＵ９１１、ＲＯＭ９１２等を相互に接続するバス９１５とを備える。なお、コンピュータ９０１は、ＬＡＮやＷＡＮ等への接続を提供する図示しないネットワークカードを含んでいてもよい。
【００８１】
コンピュータシステム９００に、上記実施の形態による位置関係取得装置１の機能を実行させるプログラムは、ＣＤ−ＲＯＭ９２１に記憶されて、ＣＤ−ＲＯＭドライブ９０５に挿入され、ハードディスク９１４に転送されてもよい。これに代えて、そのプログラムは、図示しないネットワークを介してコンピュータ９０１に送信され、ハードディスク９１４に記憶されてもよい。プログラムは実行の際にＲＡＭ９１３にロードされる。なお、プログラムは、ＣＤ−ＲＯＭ９２１、またはネットワークから直接、ロードされてもよい。また、ＣＤ−ＲＯＭ９２１に代えて他の記録媒体（例えば、ＤＶＤ等）を介して、プログラムがコンピュータシステム９００に読み込まれてもよい。
【００８２】
プログラムは、コンピュータ９０１に、上記実施の形態による位置関係取得装置１の機能を実行させるオペレーティングシステム（ＯＳ）、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能やモジュールを呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム９００がどのように動作するのかについては周知であり、詳細な説明は省略する。
【００８３】
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【００８４】
以上より、本発明による位置関係取得装置等によれば、ユーザが手動で設定等を行わなくても、複数のモータによって駆動される複数の回転軸の位置関係を取得できるという効果が得られ、ロボットにおける回転軸の位置関係を取得する装置等として有用である。
【符号の説明】
【００８５】
１  位置関係取得装置
２  ロボット
１０  ロボットシステム
１１  モータ制御部
１２  受付部
１３  位置関係取得部
１４  判定部
１５  プロファイル取得部
１６  記憶部
１７  慣性モーメント算出部
５２  角速度センサ
【図１】
2018089759.tif 000003
【図２】
2018089759.tif 000004
【図３】
2018089759.tif 000005
【図４】
2018089759.tif 000006
【図５】
2018089759.tif 000007
【図６】
2018089759.tif 000008
【図７Ａ】
2018089759.tif 000009
【図７Ｂ】
2018089759.tif 000010
【図７Ｃ】
2018089759.tif 000011
【図８】
2018089759.tif 000012
【図９】
2018089759.tif 000013