ODE講座27: 関節初期角度の設定法 C/C++統合開発環境Code::Blocks8.02のインストール (Windows)
7 月 03

まず,ここにあるODEのFAQを読んでからコメントお願いします.

ODE質問・要望5!のコメントがちょうと100件になりましたので,新しい質問や要望はこちらにお願いします! ご質問の内容を詳しく説明して頂けると的確に回答できますので,時間を節約できると思います.

また、私のコメントやご自分の努力により問題が解決 された場合に、問題の原因がわかれば投稿して頂くと大変助かります。その情報はODEの初心者にとって重要なものです。ある程度たまりましたらFAQに掲 載したいと思いますのでご協力のほどよろしくお願いします。

投稿:08年07月03日

35 Responses to “ODE質問・要望募集6!”

  1. demu MonsterID Icon demu Says at 2008-09-07 :

    鉄さん,

    コメントありがとうございます.

    興味深い御指摘なので調べてみたいのですが,9月9日からロボット学会がありその準備のため調べる時間がありません. 開発中のdrawstuff互換ライブラリについてお話する予定ですがあまり進んでいません...

    さて,ウェブでは以下のサイトが少し関係ありそうですが試していないのでわかりません.

    http://homepage1.nifty.com/herumi/prog/prog90.html

    上のページにあるWindowsの演算精度をLinuxと同じ64ビットに変更したらどうなりますか?

    また,Windows上ではVC++とgccの値は異なるでしょうか?

    お時間があれば試して結果を教えて頂けるとありがたいです.

    でむ

  2. 鉄 MonsterID Icon Says at 2008-09-06 :

    でむさん。度々申し訳ありません。

    先ほど,ode-src-0.8.zipをインストールし直してtest_basketの例で
    バスケットボールの各ステップごとの位置を取得したところ,
    やはりVC++とLinuxとでセンサの取得結果の違いがでました。

    これは,OSの違いから来るものなのでしょうか?

  3. 鉄 MonsterID Icon Says at 2008-09-06 :

    でむさん.はじめまして.

    さっそく質問なのですが,VC++とLinuxとで同じプログラムをコンパイルしたところ,微妙に違う計算結果が現れました.

    違う計算結果と言っても,似た値は出力されているのですが,これはどのようなことが原因で起こっているのでしょうか?

    ちなみに,このサイトに乗っているセンサの取得実験で確かめました.

  4. demu MonsterID Icon demu Says at 2008-09-06 :

    toshiさん,

    すみませんが,VC#は使ったことがないのでわかりません.

    でむ

  5. toshi MonsterID Icon toshi Says at 2008-09-05 :

    demuさん初めまして.

    これからODEを使って研究を行うのですが,VC++ではなく,VC#を使おうと考えています。
    VC#でODEを使えるようにする方法を教えてください.

  6. yama MonsterID Icon yama Says at 2008-08-28 :

    でむさん、

    さっそく返事をいただき、ありがとうございました。

    教えて頂いたODE Wikiのページも読んでみました。
    OPCODEとGIMPACTをライブラリにしているので、直接使っているのかと思っていました。
    Trimeshを使った場合以外は使用していないようですね。

    また質問させて頂きます。

  7. demu MonsterID Icon demu Says at 2008-08-28 :

    Yamaさん,

    はじめまして!

    ODEでは,AABBしかサポートしていません.つまり,ご自分で実装するしかありません.

    なお,衝突検出空間としては,dSimpleSpace, dQuadTreeSpace, dHashSpace, dSAPSpaceを選択可能です.衝突検出に関してはODE Wikiの次のページを是非1読願います.

    http://opende.sourceforge.net/mediawiki-1.6.10/index.php/How_Collision_Detection_Works

    でむ

  8. demu MonsterID Icon demu Says at 2008-08-28 :

    じろうさん,

    Windows Vista Business, Visual C++ 2008 EEでは問題なくビルドできました.ご使用の環境を教えてください.

    でむ

  9. yama MonsterID Icon yama Says at 2008-08-27 :

    でむさん,こんにちは.

    初めて質問します。
    OBBによる衝突検出を試したいのですが、どのようにしたらよいでしょうか。
    よろしくお願いします。

  10. じろう MonsterID Icon じろう Says at 2008-08-26 :

    でむさん,ご指摘ありがとうございます.

    ですが,問題の箇所を修正しても同じエラーが出てきてしまいました(><;)

    重ねての質問になってしまうのですが,
    ポリゴンの描画に使用しているdsDrawTriangleで描画される三角形に
    表や裏といった概念はあるのでしょうか?
    dsDrawTriangleで描画した図形で
    思い通りに面が描かれている部分とそうでない部分があったので・・・

  11. demu MonsterID Icon demu Says at 2008-08-26 :

    じろうさん,

    ソースコードを拝見しましたが,ODEの問題ではなく配列の宣言に問題があるようです.

    でむ

  12. demu MonsterID Icon demu Says at 2008-08-26 :

    tetuさん,

    良い本をご紹介頂きありがとうございます.ODEは剛体の動力学計算エンジンなので,人体を剛体近似できない場合の運動解析に利用するのは難しいかもしれません.

    また,初音ミクの挙動がおかしいという現象は見ていないのでわかりませんが,恐らく衝突検出の部分だと思われます.ODEは衝突ライブラリとしてOPCODEを標準として使っていますが,GimpactやOPCODEを改善したものもビルドのオプションで利用できるので試してみてはいかがでしょうか?

    それでも,だめな場合は,ODEの本家メーリングリストに投稿すると次のバージョンでは改善するかもしれません.ODEはオープンソースなので,利用者がフィードバックすると益々良くなります.

    でむ

  13. 勉強中 MonsterID Icon 勉強中 Says at 2008-08-25 :

    申し訳ありません、以前に質問したのですが解決しました。
    dInitODE();
    dCloseODE();
    をmain関数に入れることでERRORはなくなり解決しました。

  14. じろう MonsterID Icon じろう Says at 2008-08-25 :

    demuさん

    ソースプログラムを送付しました.
    よろしくお願いします.

  15. 勉強中 MonsterID Icon 勉強中 Says at 2008-08-25 :

    ODE0.9で動いていた、自分で作成したcppファイル(segwey.cpp)をode0.10.1で動かそうとしたのですが、
    ODE INTEANAL ERROR 2
    colliders array not initialized in dcollide()
    と表示され動きません。
    これを回避するにはどうしたらいいでしょうか?

    よろしくお願いします。

  16. demu MonsterID Icon demu Says at 2008-08-25 :

    じろうさん,

    連絡先のメールアドレスにお願いします.

    でむ

  17. じろう MonsterID Icon じろう Says at 2008-08-25 :

    demuさん,返事が遅れてすみません.

    趣味で作ったプログラムなのでソースの公開は問題ありません.
    送付先は”連絡先のメールアドレス”でよろしいですか?

  18. tetu MonsterID Icon tetu Says at 2008-08-24 :

    ODEで、人体の力学計算が、まったく手つかずというのはあまりに惜しい。
    人体の運動学の教科書とかも手に取ってみて、
    http://www.ishiyaku.co.jp/search/details.cfm?bookcode=215320
    3DCGの動作がどうしておかしいのか考えてほしいです。
    初音ミクとかね。

  19. demu MonsterID Icon demu Says at 2008-08-22 :

    じろうさん,

    私も原因を知りたいので,差支えがなければソースコードを送って頂けますか?
    差支えがある場合は,その部分を取り除いて送ってください.

    基本的にはこのページで公開します.

    でむ

  20. じろう MonsterID Icon じろう Says at 2008-08-18 :

    キャストの件ですが,
    (const dReal *)で引数をキャストしても同様のエラーが出てきました.

    floatでpos[3]とR[12]を定義して,dBodyGetPositionとdBodyGetRotationを代入するといった無理やりな方法で一応は実行できるようになりました.

    サンプルプログラムは問題なく実行できました.

    今後も原因を究明していこうとは思います.

  21. demu MonsterID Icon demu Says at 2008-08-16 :

    たくさん、

    私が試したときはデータ実行防止が働かなかったので原因がよくわかりません。

    データ実行防止(DEP)を無効にする方法はネットを探すといろいろありますが、原因がわからないのでお勧めはできません。自己責任でお願いします。

    コントロールパネル→システムとメンテナンス→システム→システムの詳細設定→パフォーマンス→設定→データの実行防止→重要なWindowsのプログラム及びサービスついてのみ有効にする(T)にチェックを入れる

    でむ

  22. たく MonsterID Icon たく Says at 2008-08-15 :

    でむさん,はじめまして

    インストールについて教えていただきたいことがあります。
    講義 Visual C++ 2008 Expression Editionに沿ってインストールしましたが、
    データ実行防止が働いて、demo_basket.exeの起動に失敗してしまいました。
    使用環境は以下のとおりです。
    OS:vista
    CPU:intel core2 duo

    起動させる良い方法はないものでしょうか。

    よろしくお願いします。

  23. じろう MonsterID Icon じろう Says at 2008-08-13 :

    でむさん,早速のお返事ありがとうございます.

    お盆期間は大学の電源が落とされているため,現在は試せる環境がありません.
    来週の月曜日には,経過報告できると思います.

  24. demu MonsterID Icon demu Says at 2008-08-13 :

    じろうさん,

    初めまして

    (const dReal *)で引数をキャストしてください。

    エラーがでるということは、ODE本のサンプルプログラムもエラーがでますか? 私が、Visual C++ 2008 EEで試したときは問題はなかったと記憶していますが…

    でむ

  25. じろう MonsterID Icon じろう Says at 2008-08-12 :

    でむさん,はじめまして.
    今年度から研究にODEを導入して現在勉強中の者です.

    描画についての質問なのですが,
    dsDrawSphere,dsDrawCylinderを使用したときに

    ”1 番目の引数を ‘const dReal *’ から ‘const float []‘ に変換できません.(新しい機能 ; ヘルプを参照)
    指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です.”

    といったエラーメッセージが出てきてしまい実行できなくなってしまいます.
    引数としてはdBodyGetPosition(torso.body)などを使用しています.
    monoBot.cppなどのdsDrawSphereを使用している他のプログラムはちゃんと実行できます.
    開発環境はVisual Stadio 2005 Professional です.

    お忙しいと思いますが,どうぞよろしくお願いいたします.

  26. demu MonsterID Icon demu Says at 2008-08-04 :

    tadaさん,

    つくば市へ出張していて返事が遅くなりました.

    さて,問題は全部解決したのでしょうか?

    でむ

  27. tada MonsterID Icon tada Says at 2008-08-02 :

    先ほどの質問は解決しました。
    dInitODE(); と dCloseODE();
    をメイン関数にいれてあげればいいだけでした。

  28. tada MonsterID Icon tada Says at 2008-08-02 :

    プログラム2.5(ホッピングロボットを作ろう)においてビルドは成功するのですが、
    ”colliders array not initialized (c:\ode-0.10.0\ode\src\colision_kernel.cpp:256)”
    というエラーが出てしまいます。
    どのようにすれば解決するのでしょうか?
    ご指導ください。

  29. tada MonsterID Icon tada Says at 2008-08-01 :

    先ほどの問題は単にソースコードの間違いでした。

    矢継ぎ早で申し訳ありませんがジョイントをHingeからその他(Ballなど)に変更する時、                 ”識別子が見つかりませんでした” 
    となりコンパイルエラーとなってしまいます。どうすればよいのでしょうか?教えてください。

  30. tada MonsterID Icon tada Says at 2008-08-01 :

    画像を表示する際
    ”Bad argument(s)(c:\ode-0.10.0\src\collision_kernel.cpp:462)”
    なる表示が出てしまいます。ビルドは成功してるのにどうしてこのようになってしまうのでしょうか?

  31. おで MonsterID Icon おで Says at 2008-07-17 :

    でむさん、ご返答ありがとうございます。
    返事が遅くなってすいません。

    わかりました。ありがとうございます。

    また質問させてもらうかもしれませんが、そのときはまたお願いします。

  32. demu MonsterID Icon demu Says at 2008-07-04 :

    かつさん,

    おはようございます.

    dWorldStep(dWorldID World, dReal stepsize)のstepsizeはシミュレーションを進める時間なので実時間とは直接関係ありません.

    シミュレーションの時間と実時間を同一精度で終わらせるためには,シミュレーションの1ステップに要する実時間とstepsizeの時間を同じにする必要があります.

    つまり,1ステップ(衝突検出,動力学計算,制御,描画等を全て含む)の時間を毎回計測し,それとstepsizeとの時間差分だけSleep()などを使って時間を調整すれば良いでしょう.

    以上です.

    でむ

  33. mif805 MonsterID Icon mif805 Says at 2008-07-03 :

    demuさん,こんにちは.

    ODE講座12のトルクセンサのプログラムで,x軸周りのトルクの表示をfeedback->t1[0]からfeedback->t2[0]に変更するとTx=4.9となるのはなぜでしょうか?軸周りに力がつりあうのならば,Tx=9.8となるのではないかと思うのですが.ただ単に私に物理のセンスがないだけでしょうか(^ ^;)

  34. demu MonsterID Icon demu Says at 2008-07-03 :

    おでさん,

    ODEは動力学計算エンジンなので,そのようなAPIはありません.回答したキーボードの入力はODEではなく,drawstuffというODE付属の3Dグラフィクスライブラリの機能です.

    なお,PCから加速度センサの値を読めれば,その情報をODEで作成したワールドに反映することは可能だとは思います.

    こんな回答でよろしいですか.

    でむ

    >ご回答ありがとうございます。
    >言葉が足りなくてすいません。キーボードからの操作はできているのですが、
    >加速度センサーなどを使ってPCの外部からも操作出来るんですか?

  35. かつ MonsterID Icon かつ Says at 2008-07-03 :

    でむさん,こんにちは.

    計算周期(ステップ)について質問があります.
    P11にありますが,ODEで設定している0.01秒(10ms)というのは,あくまで計算上のステップであり,実時間とはリンクしない,
    つまり,計算負荷が軽く・PCのスペックが高ければ計算それだけ計算スピードは早くなるわけですよね.

    そこで質問なんですが,計算周期(タイミング)をWindowsタイマか何かを参照して,実時間のタイミングで計算させることはできるのでしょうか?
    もちろん高い精度は無理でしょうが,10秒のシミュレーションを約10秒で終わらせることができたら良いなと思い質問しました.

    よろしくお願いします.

Leave a Reply

カウンタ (since 2008-1-11)