Big News for ODE唯䞀の匱点が解決される

2008-02-12
By

ODE (Open Dynamics Engine)のメヌリングリストを芋おいたら積分噚に次のルンゲ-クッタが実装されそうです。これはビッグニュヌスです。ODEは今たで高速で安定性がありリヌズナブルな挙動を瀺すこずが特城でした。逆に蚀えば粟床が必芁な分野では䜿甚しない方が良いずいうこずです。これはODEのナヌザガむドにも曞いおありたすし拙著にも明蚘しおいたす。

ずころがこのビッグニュヌスにより唯䞀の匱点が解決される可胜性があるのです。ロボット研究者も益々利甚できる機䌚が増えるこずでしょう。

ここからは専門的になるので初心者は決しお読たないでください笑い。


ODEは積分法ずしおは準陰積分法(semi-implicit integration)を採甚しおいたす。準陰積分法は陰積分埌退積分ず陜積分前進積分が混圚しおいる手法です。具䜓的には拘束力に関しおは陰積分が適甚され倖力に関しおは陜積分が適甚されおいたす。珟時点では陜積分ずしお䞀次のオむラヌ積分を甚いおいたす。

ODEでは拘束力蚈算にAnitescuの方法を甚いおいるため䞀次の陰積分が組み蟌たれた運動方皋匏ず拘束条件を連立しおLCP問題に垰着させおいたす。そのため拘束力の蚈算は陰積分で求めおいたす。この拘束ベヌス法はODE特有の方法ずいうより極めお広く䜿われおいる方法のようです。䟋えばMathEngineHavok, PhysX, OpenHRP3Springheadなど 

ODEの陰積分拘束蚈算の蚈算粟床に関しおはBoeingずBraunlによるずODEはPhysX, Novodex, Bullet, JigLib, Newton, Tokamak, True Axisず比范した結果䞀番良い ようです。ただしdWorldStep()を䜿う堎合です。粟床が必芁な堎合はdWorldQuickStep()を䜿わないでください。

なおこの論文では結論ずしお倚くのテストで䞀番は入れ替わっおいるので甚途に合った蚈算゚ンゞンを遞ぶのが良いず述べおいたす。

私のそのずおりだず思いたす。ただその論文のテストではODEのパラメヌタが適切に蚭定されおいないように思えるので党䜓的にモット良い結果になるず思いたすが 

最埌に物理蚈算゚ンゞンの性胜は時ず䌎に倉わりたす。研究者が優れたアルゎリズムを毎幎発衚しおいるので結局はマン・パワヌの勝負になるでしょう。2000幎前半たで䞀䞖を颚靡したMathEngineからODEやPhysXが産たれたした。最近ではNVIDIAがAGEIA PhysXを買収しIntelがHavokを買収しおいたす。ODEがこれから生き残るためにはLinuxのようにナヌザや利甚する䌁業を増やすこずでしょう。demura.netが少しでもそのお圹に立おれば幞いです。

参考文献
A. Boeing and T. Braunl, Evaluation of real-time physics simulation systems, Proceedings of the 5th international conference on Computer graphics and interactive techniques in Australia and Southeast Asia, P.281-288, (2007)

8 Responses to Big News for ODE唯䞀の匱点が解決される

  1. demu MonsterID Icon demu on 2008-09-22

    skasaiさん

    ご存知だず思いたすがODEで評䟡するずきにCFMずERPの倀に泚意しおください完党な剛䜓ずしおシミュレヌションするためにはERPを1.0CFMを0.0ずしなければなりたせん

    たた粟床ずしおはdWorldStep()がdQuickStep()より粟床が高くdWorldStep()の匕数は積分の時間刻み幅です

    でむ

  2. skasai MonsterID Icon skasai on 2008-09-22

    demu さんアドバむスをありがずうございたす

    ScilabずODEの蚈算結果には差異が無いず蚘述したしたがその考察は間違いのようです
    差をずっただけですず埮小な差異(誀差)ず蚀えるず思いたすが「誀差率 = (Scilab-ODE) / Scilab」で評䟡するずずおもずおも倧きい倀です60秒間の蚈算では誀差率でプラスマむナス100を超えおしたう時もありたした

    ずいうこずで先の゚ントリヌは間違いず思いたすのでここに蚂正させおいただきたす

    ODEの蚈算粟床の評䟡方法ずその結果に぀いおはずおも興味あるずころですので少しず぀詊みたいず思っおいたす

  3. demu MonsterID Icon demu on 2008-09-20

    skasaiさん

    コメントありがずうございたす。

    さおODEの粟床が悪いずされおいる点は倖力の蚈算に䞀次のオむラヌ法を䜿っおいるこずだずいわれおいたす。それ以倖の拘束力に関しおは他の倚くの動力孊蚈算゚ンゞンず同じように接觊問題をLCP問題に定匏化し解いおいたす。

    理論的にはODEが他の蚈算゚ンゞンず比范しお粟床が悪い点はオむラヌ法ずルンゲクッタずの差がメむンだず考えられたす。詳しくは定量的に動力孊蚈算゚ンゞンの粟床の差を調査した䞊の参考文献を読んでください。Googleで芋぀かるず思いたす。それによるずPhysXよりは粟床が良いずのこずでしたがOpenHRP3ずの比范はありたせんでした。

    ODEずOpenHRP3の粟床に関する定量的な評䟡は必芁だず垞々考えおいたすがOpenHRP3の䜿い方が分からないこずずODEにルンゲクッタが実装される予定なのでそれが枈んでから評䟡しようず考えおいたした。なおODE0.10.1ではただルンゲクッタは実装されおいたせん。

    skasaiさんのご質問の答えになっおいたせんがODEの評䟡は理論倀他の動力孊蚈算゚ンゞン䟋えばOpenHRP3)ずの比范倖力ず拘束力接觊力に分け曎にdWorldStep(), dWorldQuickStep()などに堎合分けするずいろいろなこずが分かるず思いたす。ルンゲクッタの実装の状況に関しおはODEのメヌリングリストに投皿しお聞いおみるず良いでしょう。

    でむ

  4. skasai MonsterID Icon skasai on 2008-09-19

    お䞖話になっおいたす

    ODE 0.10.1 を䜿甚しおいたす
    その蚈算誀差を定量的に把握したいず思っお長さ1mの䞀様な棒を端点を固定軞においた振子を蚈算させおみたした固定軞にはHingeを䜿甚しおいたす

    振れ角Ξの初期倀を1rad角速床Ξdotを0ずし5秒間動䜜させΞずΞdotの結果を埗たした

    䞀方でScilabでFehlbergのRunge-Kuttaを甚いお運動方皋匏を解きΞずΞdotを求めODEの結果ず比范したした

    その結果それらには差異が無くおODEのΞもΞdotもちゃんず蚈算されおいるよう感じたす

    ODEの蚈算誀差を評䟡する目的ずしお振子の運動の解析は䞍十分なのでしょうかそれずもODEのこのバヌゞョンでは蚈算粟床が向䞊しおいるずみるべきでしょうか

    ご意芋をいただけたらありがたいです

  5. demu MonsterID Icon demu on 2008-02-19

    Cさん

    長文のコメントありがずうございたすりェブサむトを開蚭しおいるずコメントがないず寂しいものですから

    さお数倀蚈算の発散を抑えるためにはステップサむズを小さくすれば良いですその代償ずしお速床が遅くなりたす

    たた䞻慣性モヌメントの話は倖力蚈算が顕著に働く䟋ですODEは倖力蚈算が䞀次のオむラヌ法なので倖力が繰り替えし顕著に働く堎合は数倀蚈算が発散したす

    最埌にフリヌの動力孊蚈算゚ンゞンの話ですがOpen HRP3は月から自由にダりンロヌドできるようになるず聞いおいたすただ速床はODEより遅いず予想されたすODEでもオむラヌ積分をα版次ルンゲクッタに倉曎するず数倍遅くなるずいう報告がありたす

    粟床ず速床はトレヌドオフの関係にあるのでアプリケヌションの芁求性胜に合わせた方法を䜿うずいうのが䞀般的なあたり圹に立たない回答だず思いたす

    珟実的にはロボワンのヒュヌマノむドロボットは剛性が䞍足しおいたすしモヌタのギアなどのガタツキなどありたすロボットが剛䜓ずしお扱えないので剛䜓動力孊蚈算゚ンゞンで厳密に蚈算しおも珟実ずは違うのではないでしょうか぀たりでプログラムのバグや抂略解を探し埌は実機で

    産総研のPrometなどのように剛性の高いヒュヌマノむドはOpen HRP3を䜿わなければいけないず思いたすがラゞコンサヌボず1mmぐらいのアルミ板ラゞコンサヌボで䜜った手䜜りのヒュヌマノむドは実機で動かすのが䞀番でしょう

    でむ

  6. C MonsterID Icon C on 2008-02-17

    お返事ありがずうございたす。

    そしお、この話(新しい蚈算理論やその䞭身)自䜓が私の理解力を越えおいるのでこれ以䞊入り蟌むこずができたせん。^^
    なんせ、玹介しおいただいおいる初心者向けの解説すら線圢代数を初めずする数孊的基瀎知識の無さから手に負えないで難枋しおいたす。
    demuさんの本の匏すら入り口から読みこなせない氎準です。

    demuさんが玹介されおいる範囲内だず思うのですが、
    ODEでは、モヌメント差の倧きな物䜓の回転で発散しやすいずいう話ですが、
    粟床も含めお、時間の刻みを十分に小さくするこずで性胜向䞊したり
    発散を抌さえたり出来ないのでしょうか

    玠人考えですがモヌメント差の倧きな物䜓以䞋「棒」が回転するずきに
    無数に存圚する質量の点の運動ベクトルは、物䜓の圢状ずしおの拘束が無ければ
    砂のように拡散しおいきたすよね
    そこで、砂の䞀粒が棒ずいう構造物に䞎える力で埗る高校数孊皋床の
    単玔物理を、棒を構成する砂粒の数だけ重ね合わせお、埮小時間の
    棒の姿勢倉化を埗るっお感じなんでしょうか

    あず、珟圚、ROBO-ONE on PCなどで、ロボットの物理シミュレヌションが
    ありたすが、䜿甚できるツヌルが参加期間䞭限定なので、
    通垞の開発には応甚できない䞍䟿さがありそうですね。
    以前は商品に解析゜フトは無くおもCADがあったようですが、
    今回はCADも無かったようです。

    今埌はアマチュア歩行ロボットも、珟圚のアニメ歩行叀兞制埡理論じゃなくお、
    運動孊を利甚した蚈算歩行に向かっおいくず思うのですが、
    末端のナヌザヌでも経枈的障害無しに䜿えるツヌルが無いのが問題ず
    思われたす。

    ODEが棒状の回転に匱い・・の問題の皋床はやっおみないず分からない事だずは
    思うのですが、demuさんの蚀われるロボットのフィヌルドでの粒床での
    ODEを、なんずか歩行制埡に運甚する事は出来そうにないでしょうか

    珟実問題、珟実の歩行ロボットは、ガタや剛性からの揺れなどもあっお、
    わけのわからない倖乱を抌さえる最埌のツメは、
    振動をフィルタヌにかけお呚期や遅れを含めた䞊で補正しおいく
    泥臭い凊理で抌さえ蟌むこずに成るず思われたす。

    そういう意味でもを求める粟床の運動孊でなくずも、
    どうせ実物はずは離れたずころにあるのでたでを
    ODEで予枬しお、残りの20%を泥臭く抌さえ蟌むずいうふうなプランの䞊での
    ODEでの可甚性が気になりたす。

    たずえば別のアプロヌチ。ODEで蚈算しやすいロボットモデルが
    あれば、そうしおしたうずか、䞀歩䞞ごずだず駄目なら、
    駄目にならない氎準たで時間か構造を分解しお蚈算匷床を避けおしたうずか・・。

    高粟床な歩行蚈算ではHRPなどがあるようですが、今はDL公開しおいないですし、
    なんずいうか、ヒュヌマノむド甚ずしお瞛った汎甚性や、
    こうしお公開しないずいった長期的な䞍安定性はちょっず嫌ですよね。

  7. demu MonsterID Icon demu on 2008-02-14

    Cさん、

    栞心を突いたリプラむありがずうございたす。

    ODEはただ枯れおいなくおODEの改良は日々進んでいるずいう意味です。ルンゲクッタは叀兞的な方法ですがの匱点の䞀぀であった蚈算粟床を向䞊させるこずが期埅されたす。

    ODEは準陰積分法を䜿っおいたす。拘束力蚈算には陰積分、倖力には䞀次のオむラヌ法を今のずころ䜿っおいたす。陰積分は数倀蚈算を安定化するので良いのですが、オむラヌ法は発散させたす。しかも、蚈算誀差が倧きいので、それが顕著になりたす。

    ODEのマニュアルに曞いおたすが、䞻慣性モヌメントの差が倧きい剛䜓现長いものなどを回転させるず、数倀蚈算が発散し、回転が加速し続け、どこかぞ飛んでいく珟象が芋られたす。

    ODEで陰積分を䜿っおいる理由はStewartずTrinkleの方法を䜿っおいるからです。圌らの方法は拘束力を求めるために運動方皋匏ず積分が陰に埋め蟌たれた速床に関する拘束条件を連立しお解いおいるためです。

    これは今では特別な方法ずいうわけではなくいろいろな蚈算゚ンゞンで䜿われおいる䞀般的な方法ずのこずです。

    Stewartの方法に぀いおは以䞋が良く匕甚されおいたす。
    D.Stewart and J.Trinkle: An Implicit Time-stepping Scheme for Rigid Body Dynamics with inelastic collisions and Coulomb Friction, International Journal of Neumerical Methods in Engineering, 1996.

    たた
    Kenny Erlebenのドクタヌ論文が参考になるず思いたす。
    Kenny Erleben, Stable, Robust, and Versatile Multibody Dynamics Animation, Ph.D. dissertation, University of Copenhagen, 2004.

    なおdemura.netは初心者向けにODEの情報を発信しおいたすのでこれ以䞊専門的なこずはご本家様のメヌリングリストでお聞きになられるず良いず思いたす。

    でむ

  8. C MonsterID Icon C on 2008-02-13

    はじめたしお。
    党然分かっおないのですが、次のルンゲ-クッタが実装されたこずず、
    埌半の準陰積分法、陰積分・陜積分などの様々な蚈算方匏にはそれぞれに
    最適な方法があっおどんどん進化しおたすねヌ。ずいうのはどう繋がっおいるのでしょうか

    次のルンゲ-クッタが実装されたこずで、最適な蚈算方匏が぀増えたずいう事でしょうか
    次のルンゲ-クッタが実装されたこずで、準陰積分法より先進的な性胜を獲埗したのでようか

    ちょっず怜玢したら日本語の論文が芋぀かりたした。
    http://haselab.hi.mce.uec.ac.jp/files/pubs/01078_pdf_Tazaki_Hasegawa_gcad2006.pdf

    この分野は党くの玠人なんですが、シミュレヌションでの安定性ずは
    離散時間ず誀差の共振みたいなもののようですね。

    昔、BASICでブロック厩しを䜜ったずきにボヌルが狭いずころで反射したずきに、
    離散時間埌には、壁やブロックに埋たった状態から次の時間が発生しお
    その次もおかしな所で・・っお感じでむメヌゞ通りに動かないバグを思い出したした。
    そんな感じなのでしょうか。

    埌退積分ずいうは、この埋たる芁玠を無くすものなのでしょうか

    理論を远い蟌む力がないので良く分からないのですが、
    拘束条件に察しお準陰積分法条件で陰積分ず陜積分を䜿い分けるを䜿うのは、
    安定化のためには塗り絵で枠からはみ出ずに、塗りシロが残っおもいいから塗る。
    みたいなものなのかなず創造しながら読みたした。

    アホな投皿ですみたせん。笑っおやっおください。m(_ _)m

コメントをどうぞ

メヌルアドレスが公開されるこずはありたせん。

2,766 views  (Since 2010-08-11)