ODE質問・要望募集8!

ここのコメントが100件を超えましたので,新しい質問や要望はODE質問・要望募集9!にお願いします!ここのコメントはクローズしました。

でむ

116 Comments
  1. はじめまして、こんばんは
    デバックについて、質問なのですが
    cmd.exe の起動中にエラーが発生しました。
    というエラーがでます。
    どうしたらよいのでしょうか?
    宜しければ、ご回答よろしくお願いします。

  2. お助けください。
    実行中のODEの状態を「別フォーム」にグラフや数値表示で確認できるようにしたいのですが
    別フォーム(ウィンドー)のクリエイトの仕方がわかりません。
    何方か宜しくご教授くださいませ。
    因みに環境はVisualC++2008EEです。
    宜しくお願いいたします。

  3. お久しぶりです。
    本もこのサイトも研究の参考にさせていただいております。
    ありがとうございます。

    しかしまだまだ自分の勉強不足で、けんせいちゃんを歩かせることができません。

    kensei.cppのどの部分をどのように変えるとけんせいちゃんは歩いてくれますか?
    できればジャンプするけんせいちゃんの他に歩くけんせいちゃんのプログラムもアップしていただけるとありがたいです。

    ご回答お願いします。

  4. こんにちわ,度々失礼します.今度ODEで二重振り子のシミュレーションに関して研究することにしたのですが, 減衰のあるバージョンとないバージョンを作りたいのですが,摩擦力を無くすにはどうすればよいでしょうか.あとODEがどのような微分方程式を解いているかは元になった論文を読み込むしかないですかね?

  5. はじめまして!
    自分でodeのプログラムをcode::blocksで書いて
    そのままビルドしようとしたのですが
    ode.hやdrawstuffのヘッダを認識してくれませんでした。
    プロジェクトの場所もODEのフォルダ内にしているのですが、
    なぜか反応してくれません。何か良い解決方法があれば教えてくれませんか?

  6. 初めまして.ODEを利用してヘビ型ロボットの研究を行なっているものです.

    早速質問をさせていただきたいのですが,ODEを64bitのOSで動作させることは可能でしょうか?

    ご回答よろしくお願いいたします.

  7. 連続の質問申し訳ありません。接触点について教えてください。

    接触点数とは、「接触物体同士の接触した頂点の数」と考えていいのでしょうか?

    以前の「質問募集7」で
    「2つの剛体が衝突を繰り返し細かく振動する場合があります.」
    とありましたが、このことについてもう少し詳しく教えてください。どのようなときにおきるのか、どういう原因でおきるのかが知りたいです。

  8. はじめまして、最近ODEの勉強を始めました初心者です。
    質問させてください。

    ODE初級講座8( ERPとCFM)のsample3にERP=0.0を設定しても、バラバラ事件が発生せず,延々ジャンプが繰り返されてしまいます。
    他の部分はいじっていないのですが、これは環境が原因なのでしょうか?

    また、ODE本も参考にさせていただいているのですが、プチプロ1.1ヘビロボットや1.2膝関節を作ろうとして、円柱と円柱の間にヒンジジョイントを接続してみても、関節が曲がらずに地面に突き刺さってしまいます。
    回転軸は(1,0,0)で設定しています。

    考えられる原因などありましたらアドバイスいただければ幸いです。
    よろしくお願いいたします。

  9. 回転に関する質問です.よろしくお願いします.

    ある物体のyaw回転量を調べるために,dGeomGetRotationでyaw角を出力しています.

    このとき出力されているyaw角は世界座標でのX軸Z軸に対する,物体の面の法線の角度差でしょうか?説明が下手ですいません.

  10. こんにちはdemuさん
    あまのすけです.
    先日はありがとうございました.
    またひとつ教えてください.

    まだODEをちゃんと使えていないので根本な質問で恐縮ですが,以下のような場合,ODEでシミュレータをつくることができますか?

    組立作業を行うマニピュレータとある物体が同一地面(作業平面)上にあったとします.
    地上にある物体を,持ち上げることなく地面に沿って運ぶ時,常にマニピュレータと地面と物体が接触していて,閉ループみたいになると思います.そのとき,移動方向が限られてきてマニピュレータにもいろいろと拘束が加わると思うのですが,問題なくシミュレーションできますか?
    曖昧な表現で伝わらなかったら申し訳ありません.
    わかる範囲で回答いただけますか.

  11. こんにちは,始めまして.
    さっそくですがODEで振り子をシミュレートしたいのですが紐部分を剛体ではなく実際の紐のようにたるみを出したいのですがどうすればよろしいでしょうか?

  12. こんにちは。ODE本活用させていただいております。
    ODEを使って建設機械の解析を行っています。大体うまく解析できるようになったのですが、要素数が多く解析に時間が掛かるようになってしまいました。そこでVisual Studio2008TeamSystemに含まれるプロファイラを使ってどの部分で計算に時間がかかっているかを調べたところdSolveL1とdSolveL1Tという関数であることを突き止めました。計算時間を短縮するため、この部分のソースコードを書き換えてOpenMPによるマルチスレッド化を試みました。何とかOpenMPによるマルチスレッド化はできたのですが、大域的部分をマルチスレッド化できませんでしたのでスレッド生成のオーバーヘッドが大きく、短くなるどころかかえって解析時間が長くなってしまいました。そこで、dSolveL1とdSolveL1Tという関数が連立方程式を解いているのであれば、SuperLUかOpneCVを使って書き換えればと思い、受け渡しされる引数の構造と計算結果を解析中に書き出してみました。しかし、この観察からこれらの関数は連立方程式を解いているようではないことがわかりました。前置きが長くなってしましましたがLCPを解く上でこのdSolveL1とdSolveL1Tという関数がどんな計算をしているのかもしご存じであればご教授願いたいと思います。また、解析速度を改善するための方策をご存知でしたらこれについてもよろしくお願いします。

  13. でむさん

    体験航海,楽しそうですね.

    最近PS3でODEを動かしてみようと挑戦しています.
    premake4 –help
    を実行すると,
    cannot execute binary file
    となります.
    コマンドがtabで補完できるし,pathの設定は大丈夫だと思うのですが...

    環境は,PS3とyellow dog linux 6.1です.

    アドバイスをお願いします.

  14. demuさん
    あまのすけです

    迅速なお返事ありがとうございます.
    新しいVC++を使う方法でやってみたいと思います.
    また,なにかありましたら質問させていただきます.
    ありがとうございました.

  15. demuさん
    はじめまして,最近研究でODEを導入しようと検討中の学生です.
    demuさんの本を読み,分かりやすく,ODEの魅力も十分に感じ,ぜひ使いたいです.そのためにいくつか教えていただけますか.
    プログラムについて初心者ですので,おかしな表現があるかもしれませんが,以下の3点についてよろしくお願いします.

    1.ODEをVC++6.0で起動する方法を教えてください.
    2.ODEと他のAPI,ライブラリを併用できますか?
    3.現在,VC++6.0上でSmart Collision SDKと呼ばれる干渉計算ライブラリを使って作成したプログラムがあるのですが,そのプログラムにODEを導入することができますか?(ODEとSmart Collision SDKを併用できますか?)

  16. demuさん,こんにちは.

    IrrlichtとODEを組み合わせようと思って,他のサイトでのサンプルプログラムを動かそうと思ったのですが,エラーが出てしまいました.

    そのエラーが,「未解決のトークン~”extern “C”~」と「未解決の外部シンボル”extern “C”~」というものばかりでした.

    extern “C”のエラーは,CとC++が一緒に使われているときに出るエラーだと思っていたのですが,ODEはどちらにも対応しているのですよね?

    includeのヘッダーファイルを見ても
    #ifdef __cplusplus
    extern “C” {
    #endif
    で全ての関数が囲ってあったので,なぜエラーが出るのかわかりません.

    原因がわかれば教えてもらえないでしょうか?
    よろしくお願いします.

  17. ODE本の方にテクスチャを変えるのに,
    サポートサイトからグリッドテクスチャを
    ダウンロードしてくださいとありましたが,
    どこに置いてあるのか分かりません.

    教えて頂けますでしょうか.

  18. すみません、自己解決しました。
    ただBoxのジオメトリを生成してないだけでした。

  19. はじめまして。
    ODE本のサンプルなど動かしたりしているのですが、わからないことがあり質問させていただきます。

    直方体で蛇ロボットを作ろうとしているのですがdWorldStep(world,0.01);を入れると画面にロボットが映らなくなってしまいます。
    dWorldStep(world,0.01);を抜くとロボットは表示されますが、もちろん動きません。
    ジョイントの制御が間違っているかもしれませんがdWorldStep(world,0.01);を入れないと確認もできません。

    どういう原因が考えられるでしょうか?
    ご回答よろしくお願いします。

  20. すみませんODEは関係ありませんでした。
    他のサイトを調べたら解決できました。
    お騒がせしてすみません。

  21. bさん,

    はじめまして.

    すみませんが,ODEのプログラムをファイル分割の意味がよくわかりません.もう,少し具体的に教えて頂けませんか.

    ODEとファイル分割は関係していないと思うのですが...

    でむ

  22. 初めまして、ODEを使って研究を行っているものです。
    最近ODEのプログラムをファイル分割しようしているのですがうまくいきません。
    いい方法を知っていたらよろしくお願いします。

  23. ぽったーさん,

    お久しぶりです.

    博多は良い街ですね.

    さて、御指摘ありがとうございます。dReal dJointGetUniversalAngle1Rateの件は4刷では修正しています.なお,ヒューマノイドの股関節をユニバーサルジョイントで実装しようと昔(4,5年前かな)しましたが,思うように制御できなかったので止めた経験があります.それ以来,ユニバーサルジョイントは使っていません.

    使用されてみて問題がなければ教えて頂ければありがたいです.

    でむ

  24. demuさん,

    何度もスミマセン.

    ODE本の第1版を使用しています.
    p.87のユニバーサルジョイントの角速度を取得するAPIは

    dReal dJointGetUniversalAngleRate1
    dReal dJointGetUniversalAngleRate2

    ではなく,

    dReal dJointGetUniversalAngle1Rate
    dReal dJointGetUniversalAngle2Rate

    が正しいようです.

  25. demuさん,

    先程のユニバーサルジョイントの件ですが,
    u_joint = dJointCreateUniversal(world, contactgroup);

    u_joint = dJointCreateUniversal(world, 0);
    とすることで解決できたようです.

    お騒がせしました.
    また分からない点がでたら質問させていただきます.

  26. demuさん,おひさしぶりです.
    博多はいかがでしたか?

    ユニバーサルジョイントについて質問があります.

    2本のリンクをユニバーサルジョイントと接続して,
    dJointAddUniversalTorques()
    を用いて関節にトルクを入力すると,コンパイルは通るのですが,実行時にエラーが出てしまいます.

    ジョイント生成は

    u_joint = dJointCreateUniversal(world, contactgroup);
    dJointAttach(u_joint, mylink[0].body, mylink[1].body);

    dJointSetUniversalAnchor(u_joint, 0.0, 0.0, 0.5);
    dJointSetUniversalAxis1(u_joint, 0, 1, 0);
    dJointSetUniversalAxis2(u_joint, 0, 0, 1);

    としています.
    何か設定が足りないのでしょうか?

    お忙しいかと思いますが,宜しくお願いします.

  27. すみません。
    何度も確認したのですが記載ミスでした。
    お騒がせしました。

  28. ありがとうございます.demuさん
    linuxの方は
    #define dsDrawSphere dsDrawSphereDが定義されていませんでした.

    codeblocsの方はワークスペースの保存をしっかりとしていませんでした。
    設定した後保存がされていませんでした。

    質問ですが
    コンパイルは通りましたが実行すると
    Bad argument(s) in dBodyGetPosition()と表示され実行できません。
    要望募集6にあるdInitODE();とdClodseODE();を入れても変わりません。
    他の要因はありますか?

  29. tatsuyaさん,

    >cannot convert `const dReal*’ to `const double*’ for
    >argument `1′ to `void dsDrawSphereD(const double*, const double*, float)’

    このエラーの原因はいくつかあります.
    1.ODEを倍精度でインストールしていない
    2. #define dsDrawSphere dsDrawSphereDが定義されていない

    上の問題はありませんか? それでも解決しない場合は(const double *)でキャストしてください. 

    また,codeblocksでコンパイルする方法は以下に書いていますので,そのとおりやれば問題ありません.ode.h, drawstuff.hを特別にコピーして別の場所におく必要はありません.このブログにあるどこの記事のとおりやったが,このようなエラーが出るというようにコメント頂けたら原因もわかると思います.
    http://demura.net/tutorials/ode2

    最後にODEはできるだけ最新版を使われることをお勧めします..0.9と比較して0.11.1は衝突検出などが改善され大きく進化しています.

    これで解決すれば良いのですが,質問があれば気軽にお願いします.

    でむ

  30. すみません.linuxのodeはversion0.5を止め,version0.9がインストールされています.

  31. お忙しい中ありがとうございます.
    二つ質問があります.
    linuxの方は2、3度入れ直しました.
    現在は本に書いてあるプログラムを動かそうとしています.
    1つ目.
    ODEの良く見掛けるエラーにありますが
    cannot convert `const dReal*’ to `const double*’ for
    argument `1′ to `void dsDrawSphereD(const double*, const double*, float)’
    は具体的にどのような対処をすればよいでしょうか?

    すみません.codeblocksの方はDebugDoubleLibが原因でした.
    DebugsignalLibを選んだのだと思います.最初のDebugと
    最後のLibが同じであったので何度も確認したのですが間違えたのだと
    思います.
    codeblocksはwindowsに入っているのですが本通りのプログラムを
    書き,コンパイルしようとしています.
    2つ目
    codeblocksでコンパイルするにはode.h&drawstuff.hを何処におけばよいのでしょうか?

    そもそも使いかたが違うのでしょうか?

    長々とすみません.御回答お願いします.

Comments are closed.