(57)【特許請求の範囲】
【請求項１】
リンクを関節で接続して構成されるリンク機構において、動力学的に関節加速度を求める方法であって、
（１）個々のリンクがばらばらの状態から関節を１つずつ順次追加していき、関節を追加する毎に、追加した関節で発生する拘束力を求める第１のステップと、
（２）第１のステップとは逆の順序で関節を除いていき、切断関節の確定した拘束力を用いて次に切断する関節の拘束力を確定する処理を繰り返すことによって、各関節における最終的な拘束力を計算する第２のステップと、
（３）第１のステップ及び第２のステップで求めた各リンクの関節の拘束力を総合した、各リンクに働く外力を用いて、リンクの加速度を計算する第３のステップと、
（４）第３のステップで求めた各関節の両側のリンクの加速度を用いて、関節加速度を計算する第４のステップと、
からなることを特徴とするリンク機構において動力学的に関節加速度を求める方法。
【請求項２】
前記第１のステップにおいて、関節を処理する順序を適切に選択することで、任意数のプロセッサを用いた並列計算を行う請求項１記載のリンク機構において動力学的に関節加速度を求める方法。
【請求項３】
前記第１のステップにおいて、リンク間の各関節において働く拘束力を、仮想仕事の原理に基づいて導出する請求項１記載のリンク機構において動力学的に関節加速度を求める方法。
【請求項４】
前記第１のステップにおいて、リンク間の各関節において働く拘束力を、あらかじめ選ばれた１個以上のリンクに作用する力と、その力によってリンクにおいて発生する加速度との関係を表す慣性行列を用いて導出する請求項１記載のリンク機構において動力学的に関節加速度を求める方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、リンクを関節で接続して構成されるリンク機構における動力学的計算法に関し、特に、リンク機構の関節値、関節速度および関節トルクが与えられたときに関節加速度を計算する順動力学計算法に好適に用いることができるリンク機構において動力学的に関節加速度を求める方法に関するものである。
【０００２】
【従来の技術】
従来から、剛体リンク機構の順動力学計算は、オフラインでの機構解析や制御系設計に用いられることが多かったが、ロボットの応用範囲が広がるにつれ多自由度のモデルをインタラクティブな動作が可能な速度でシミュレートすることが求められるようになってきている。このような剛体リンク機構の順動力学計算は、ロボットの動力学シミュレーションのほか、動力学を用いたヒューマノイドロボットやヒューマンフィギュアの運動作成などにも応用されている。いずれの分野においても、関節トルク入力や計算結果の画面表示などのインターフェースを外部に付加したソフトウェアとして利用されている。
【０００３】
このような剛体リンク機構の順動力学計算の例として、以下の文献１〜３が知られている。
文献１：Anderson,K.S. and Duan,S: "Highly Parallelizable Low Order Algorithm for the Dynamics of Complex Multi-Rigid-Body Systems," AIAA Journal of Guidance, Control and Dynamics, 2000.
文献２：Featherstone,R.: "A Divide-and-Conquer Articulated-Body Algorithm for Parallel O(log(n)) Calculation of Rigid-Body Dynamics," International Journal of Robotics Research, vol.18, no.9, pp.867-892, 1999.
文献３：Fijany,A. and Sharf,I. and D'Eleuterio,G.M.T.: "Parallel O(logN) Algorithms for Computation of Manipulator Forward Dynamics, IEEE Transactions on Robotics and Automation, vol.11, no. 8, pp.389-400, 1995.
【０００４】
【発明が解決しようとする課題】
上述した文献１〜３の技術は、いずれも並列計算により剛体リンク機構の順動力学計算を高速に行うことを目的としており、Ｎ個のリンクがあるときＯ（Ｎ）個のプロセスを使って計算時間がＯ（ｌｏｇＮ）となる。しかし、これらの方法には、収束計算により近似値を求める方法で厳密値は計算できない（文献１の問題）、直列計算と並列計算でアルゴリズムが大きく異なる（文献２の問題）、閉リンク機構など複雑な機構への適用が難しい（文献３の問題）などの問題があった。
【０００５】
本発明の目的は上述した課題を解消して、開リンク機構・閉リンク機構を含む剛体リンク機構の順動力学計算を高速に行うことのできるリンク機構において動力学的に関節加速度を求める方法を提供しようとするものである。
【０００６】
【課題を解決するための手段】
本発明のリンク機構において動力学的に関節加速度を求める方法は、リンクを関節で接続して構成されるリンク機構において、動力学的に関節加速度を求める方法であって、（１）個々のリンクがばらばらの状態から関節を１つずつ順次追加していき、関節を追加する毎に、追加した関節で発生するその時点でリンク間の関節において働く拘束力を求める第１のステップと、（２）第１のステップとは逆の順序で関節を除いていき、切断関節の確定した拘束力を用いて次に切断する関節の拘束力を確定する処理を繰り返すことによって、各関節における最終的な拘束力を計算する第２のステップと、（３）第１のステップ及び第２のステップで求めた各リンクの関節の拘束力を総合した、各リンクに働く外力を用いて、リンクの加速度を計算する第３のステップと、（４）第３のステップで求めた各関節の両側のリンクの加速度を用いて、関節加速度を計算する第４のステップと、からなることを特徴とするものである。
【０００７】
本発明では、個々のリンクがばらばらの状態から関節を１つずつ追加していき、最終的に目的のリンク機構を組み立てている。また、最後の関節以外は後で追加された関節の影響が反映されていないので、リンク機構全体を考慮するために、逆の順序で関節を切断していく分解の作業が必要となる。これら一連の第１のステップ〜第４のステップを実行することで、リンク数が非常に多いリンク機構の動力学シミュレーションがリアルタイムに近い速度で実行できるようになる。
【０００８】
なお、組立中に現れる一部のリンクからなるリンク機構を以下「部分リンク機構」と呼ぶこととする。また、本発明において「拘束力」とは、関節においては、許された方向以外の運動を拘束する（打ち消す）ために働く力を意味する。
【０００９】
本発明の好適な具体例としては、第１のステップにおいて、関節を処理する順序を適切に選択することで、任意数のプロセッサを用いた並列計算を行うこと、第１のステップにおいて、リンク間の各関節において働く拘束力を、仮想仕事の原理に基づいて導出すること、第１のステップにおいて、リンク間の各関節において働く拘束力を、あらかじめ選ばれた１個以上のリンクに作用する力と、その力によってリンクにおいて発生する加速度との関係を表す慣性行列を用いて導出することがある。いずれの場合も本発明をより好適に実施することができるため好ましい態様となる。
【００１０】
【発明の実施の形態】
本発明のリンク機構において動力学的に関節加速度を求める方法は、部分リンク機構の拘束力の計算（第１のステップ）、最終的な拘束力の計算（第２のステップ）、リンク加速度の計算（第３のステップ）、関節加速度の計算（第４のステップ）から構成されている。以下、各ステップ毎に説明する。
【００１１】
（１）部分リンク機構の拘束力の計算（第１のステップ）
全リンクがばらばらの状態から関節を１個ずつ追加し、一部の関節からなる２つのリンク機構を接続していく手順を繰り返し、最終的に全体のリンク機構を得る。図１の例では、関節ｉによって部分リンク機構ＡとＢを接続する。これによってできたリンク機構はそれ自体部分リンク機構であり、さらにリンクｌ、ｍ、ｎを介して他の部分リンク機構と接続されることになる。第１のステップでは、関節を追加する毎に、関節ｉで発生する拘束力ｆｉを求める。拘束力ｆｉを求めるためには、好ましくは仮想仕事の原理を使用する。
【００１２】
なお、閉リンク機構を構成する場合は、閉ループ内の１個のリンクについては同じ部分リンク機構の中での接続を行うことになる。すなわち、第１ステップにおいて関節を追加するときは、異なる２つの部分リンク機構を接続することを基本とするが、閉リンク機構の場合には、図２に示すように、同じ部分リンク機構内の２リンクを接続するように関節を追加することで対応することができる。
【００１３】
（２）最終的な拘束力の計算（第２のステップ）
第１のステップで全体のリンク機構における関節の拘束力を求めることができるが、最後の関節以外は後で追加された関節の影響が反映されていないので、リンク機構全体を考慮するために、逆の順序で関節を切断していく分解の作業が必要となる。それを実行するのが第２のステップである。すなわち、完全なリンク機構における拘束力をそれぞれの関節について計算する。これは、第１のステップでの操作とは逆の順序で関節を切断していき、切断関節の確定した拘束力を用いて次に切断する関節の拘束力を確定する処理を繰り返すことによって行う。図１の例では、関節ｌ、ｍ、ｎが切断され、拘束力が確定すると関節ｉの拘束力が確定できるので、続いて関節ｉを切断する。この操作が完了すると、全関節における拘束力が確定する。
【００１４】
（３）リンク加速度の計算（第３のステップ）
第１のステップ及び第２のステップにおいて、各リンクに働く外力をすべて求めることができるため、各リンクに働く拘束力を総合して、各リンクの加速度を計算する。
（４）関節加速度の計算（第４のステップ）
第３のステップで求めた各関節の両側のリンクの相対加速度を用いて、関節加速度を計算する。
【００１５】
上述した説明の第１のステップにおいて、関節を１個追加する毎に関節ｉで発生する拘束力ｆｉを求めるには、リンク機構としての慣性行列を考えることが好ましい。すなわち、関節を１個追加する毎に、関節ｉで働く拘束力と加速度の関係を表す慣性行列と関節ｉ、ｌ、ｍ、ｎで働く拘束力と加速との関係を表す慣性行列を求め、それらを利用する。以下、ここで用いる慣性行列についてさらに詳細に説明する。
【００１６】
図３に示すようなリンク機構において、リンク１、２に対して力およびモーメントｆ１、ｆ２を作用させたときに、リンク１、２で発生する加速度および角加速度をａ１、ａ２とするとき、ｆ１、ｆ２とａ１、ａ２の関係は以下の式（１）のように表される。
【００１７】
【数１】
0003944566.tif 000002
【００１８】
ここでΓｉｊ（ｉ、ｊ＝１、２）がステップ１において計算される慣性逆行列であり、これの逆行列を計算することにより慣性行列が得られる。この慣性行列を用いると、リンク１、２が外部からの拘束を受けているときの拘束力の計算などに応用することができる。この慣性行列は、すべてのリンクの質量と慣性モーメントに加え、関節の拘束条件を考慮して計算されたものであり、個々のリンクの質量や慣性モーメントの単なる和ではない。リンクの質量・モーメントと関節の拘束を考慮した慣性行列の関係を示す単純な例として図４を挙げる。図４に示す例では、質量ｍ１のリンクと質量ｍ２のリンクとが左右に並進移動できるように関節で接続されている。このリンク機構において、質量ｍ１のリンクに力を加えたときの全体としての質量は、上下方向に移動させようとしたときは２つのリンクを同時に動かすことになるのでｍ１＋ｍ２となるのに対し、左右方向に移動させようとしたときは質量ｍ２のリンクが移動方向の拘束を受けないのでその質量を無視することができ、全体の質量はｍ１となる。
【００１９】
このようなリンク機構全体としての慣性行列は、リンク機構内で発生する拘束力を求める目的以外にも有用である。例えば、図５に示すようにリンク機構が環境など外部の物体と接触しているときには、接触力は外部の物体がリンクを引っ張る方向に働くことはできないという制約条件があるため、接触点における拘束力を計算して実際に接触力が発生しているかどうかを判定する必要がある。この場合は、接触しているリンクの運動、すなわち、ａ１、ａ２が拘束によって決まっているため、上述した数（１）を用いて接触力ｆ１、ｆ２を計算することができる。
【００２０】
以上のように、本発明のリンク機構において動力学的に関節加速度を求める方法は、閉ループを形成する場合を除き１個の関節を追加して異なる２つの部分リンク機構を接続する作業を繰り返し行う。接続前の部分リンク機構は力学的に独立であるから、それ以前の処理はそれぞれの部分リンク機構で並列に行うことができ、もしそれらの処理が別々のＣＰＵまたは計算機で行われているならば、全体の計算時間は部分リンク機構１つの場合と同じになり、計算時間の短縮が実現される。
【００２１】
図１の例では、関節ｉを追加する前の部分リンク機構ＡおよびＢにおける処理は並列に行ってよく、計算時間はどちらか一方のみを処理した場合と変わらない。このことから、十分な数のＣＰＵまたは計算機がある計算機環境の場合には、並列計算時の計算時間を最短にするために、途中で現れる部分リンク機構ができるだけ互いに独立になるようにスケジューリングを行うことが望ましい。
【００２２】
逆に、このようなスケジューリングを行うと各部分リンク機構が他の部分リンク機構と接続される関節（図１の関節ｌ、ｍ、ｎに相当する関節）の数が増加するが、これは２つの部分リンク機構を接続する時の計算量が増加することを意味する。したがって、ＣＰＵまたは計算機が１つしかなく直列計算しかできないような計算機環境には、このようなスケジューリングは適さず、各部分リンク機構が他の部分リンク機構と接続される関節ができるだけ少なくなるような順序で処理を行うのが望ましい。
【００２３】
８リンク７関節のシリアルリンク機構において、並列計算と直列計算に最適化された処理順序をそれぞれ図６（並列計算に最適化された処理順序）、及び、図７（直列計算に最適化された処理順序）に示す。図６及び図７を比較すると、１つの関節の追加に対する処理にかかる時間を同じとすると、計算にかかるステップが少ない分だけ図６に示す並列計算の方が図７に示す直列計算の場合と比べて格段に処理が速くなることがわかる。
【００２４】
計算プログラムを実際に利用する場合には、計算機環境に応じて別々のプログラムを用意するのは非現実的である。この点において、本計算法は直列計算と並列計算の原理的な差は全くなく、両者の間の切り替えは容易であるため、さまざまな計算機環境に対応したプログラム開発が可能である。
【００２５】
上述した本発明のリンク機構において動力学的に関節加速度を求める方法により、リンク数が非常に多いリンク機構の動力学シミュレーションがリアルタイムに近い速度で実行できるようになる。使用手順は以下の通りである。
・初期関節値、関節速度を設定する。
・計算をスタートする。計算中には時々刻々の関節トルクを入力する。
・１回の計算が終了すると、積分刻み幅分だけ進んだ時刻における状態が計算されるので、それらのデータを適宜取りだして制御などに利用する。
【００２６】
【発明の効果】
以上の説明から明らかなように、従来閉リンク機構を含む複雑な機構の動力学計算には非常に多くの計算を必要としたが、本発明の方法ではこれを高速に行うことができ、またリンク数の増加に伴う計算時間の増加が少ないため、数１００の自由度を持つリンク機構でも比較的短時間に動力学的計算を行うことができる。実際、複雑な機構にも適用可能な従来法に比べて、４０自由度程度の機構に対し直列計算時で計算時間が約１／３に短縮されることが確かめられている。さらに、各関節の加速度だけでなく、各関節における拘束力が直接計算されるので、力センサなどのシミュレーションにも応用することができる。
【００２７】
これまでは、動力学計算を直列計算する場合と並列計算する場合で全く異なる計算法を適用することが多かったが、本発明の方法はそれらを特に区別する必要はなく、関節の処理順序の変更だけでＣＰＵや計算機数の変化に対応でき、より汎用的なプログラム作成が可能となる。
【図面の簡単な説明】
【図１】本発明のリンク機構において動力学的に関節加速度を求める方法における部分リンク機構の接続を説明するための図である。
【図２】本発明のリンク機構において動力学的に関節加速度を求める方法における閉リンク機構の扱いを説明するための図である。
【図３】本発明のリンク機構において動力学的に関節加速度を求める方法におけるリンクの接続性を考慮したリンク機構の慣性行列を説明するための図である。
【図４】本発明のリンク機構において動力学的に関節加速度を求める方法における個々のリンクの質量とリンク機構としての質量の関係を説明するための図である。
【図５】本発明のリンク機構において動力学的に関節加速度を求める方法における外部から拘束を受けるリンク機構を説明するための図である。
【図６】本発明のリンク機構において動力学的に関節加速度を求める方法における並列計算に最適化された処理順序を説明するための図である。
【図７】本発明のリンク機構において動力学的に関節加速度を求める方法における直列計算に最適化された処理順序を説明するための図である。
【図１】
0003944566.tif 000003
【図２】
0003944566.tif 000004
【図３】
0003944566.tif 000005
【図４】
0003944566.tif 000006
【図５】
0003944566.tif 000007
【図６】
0003944566.tif 000008
【図７】
0003944566.tif 000009