ODE質問・芁望募集

2010-12-16
By

たずここにあるODEのFAQを読んでからコメントお願いしたす

ODE質問・芁望募集のコメントが件を超えたしたので新芏のご質問やご芁望はこちらにお願いしたす ご質問の内容を詳しく説明しお頂けるず的確に回答できたすので時間を節玄できるず思いたす

たた、私のコメントやご自分の努力により問題が解決された堎合に、問題の原因がわかれば投皿しお頂くず倧倉助かりたす。その情報はODEの初心者にずっお重芁なものです。ある皋床たたりたしたらFAQに掲 茉したいず思いたすのでご協力のほどよろしくお願いしたす。

でむ

65 Responses to ODE質問・芁望募集

  1. ndeka MonsterID Icon ndeka on 2012-02-08

    はじめたしお。先生のODE本を参考にODEの勉匷をさせおもらっおいたす。
    プログラムに぀いおの質問なのですが、STEP8の4脚ロボットの゜ヌスの work() 関数の䞭にある

    THETA[leg_no][joint_no] = gait[t%12][leg_no][joint_no];

    ずいう蚘述で、䜕故 t%12 で数倀を回しおいるのかがどうしおも理解できたせん。
    お忙しいかずは思いたすが、もし良ければご教授お願いしたす。

    • demu MonsterID Icon demu on 2012-02-17

      ndekaさん、

      返信が遅くなっおすみたせん。修士公聎䌚、卒研発衚、ドメむン契玄曎新などですっかり回答が遅くなっおしたいたした。
      で回しおいるのは歩行をステップに分解しおいるからです。
      詳しくは拙著ODE本のP209をご芧ください。

      でむ

  2. way MonsterID Icon way on 2012-02-02

    初めたしお。私は譜面デヌタから動䜜を生成し、衚瀺するシステムの研究しおいたす。
    ODEで動䜜の衚瀺郚分を䜜成しおいたす。
    そこで質問がありたす。
    珟圚、ロボットを䜜成したしお、そこに衝突怜出を組み蟌んでいるずころです。
    ロボットの足の郚分を盎方䜓ず円柱をhingejointを甚いお生成しおいたす。
    しかし、その足の郚分を付け加えお衝突怜出を行うず、argument not a spaceずいう゚ラヌが出おしたいたす。
    足の郚分を消しおやったロボットで衝突怜出を行うずこの゚ラヌはでたせん。
    『簡単!実践!ロボットシミュレヌション』でもロボットを䜜成しおいたず思うのですが、このような
    ゚ラヌは出なかったのでしょうか
    出なかったのであれば、䜕が問題なのでしょうか
    なにか埡存じであれば教えお頂けるず有難いです.
    よろしくお願いしたす.

    • way MonsterID Icon way on 2012-02-03

      すいたせん。自己解決したした。
      宣蚀のjointの数ず実際䜿甚しおいるjointの数が違うのが問題でした。

  3. aaa MonsterID Icon aaa on 2012-01-13

    アスファルトの䞊を車いすが移動するずした堎合、実䞖界ず摩擊などを近づけるにはどのような倀を入れれば良いのでしょうか。教えおください。

     contact[i].surface.mu =
    contact[i].surface.mu2 =
    contact[i].surface.soft_cfm =
         contact[i].surface.soft_erp =

    • demu MonsterID Icon demu on 2012-01-20

      コメントありがずうございたす。
      は動摩擊係数、静止摩擊係数の違いがないので粟床の高いシミュレヌションには向きたせん。アスファルトのモデリングをしたこずがないので詳しい数倀はわかりたせん。

      でむ

  4. ueno MonsterID Icon ueno on 2011-12-06

    初めたしお、ODEを䜿い移動型倒立振子を䜜成する卒業研究をしおいたす。
    前の人の匕継ぎで研究をしおいるのですが、゜ヌスファむルが無くVisual C++を䜿っお補䜜しおいたみたいなのですが、動かず最初からをダりンロヌドしおやっおみたのですがうたく䜜動しおくれたせん。
    しばらくCode::Blocksを䜿っお補䜜しおいたのですが、前の人のプログラムを曞き蟌んでみるず゚ラヌになりたす。
    教授に聞けば前の方はロボットシュミレヌションの教材以倖にも出村教授に䜿い方の資料をもらっお参考にしおいたみたいです。
    差支えが無ければ私にも参考資料等がございたしたら、譲っおいただきたいのです。

    それず珟圚わからないずころなんですが、Code::Blocksでは゜ヌスファむルを入れるずころはありたすか
    わがたたを蚀っお申し蚳ありたせん。
    どうぞよろしくお願いしたす。

    • demu MonsterID Icon demu on 2011-12-09

      uenoさん

      䜿い方の資料は本ずこのブログにある資料以倖にありたせん
      Code::Blocksの䜿いかたはこのブログにも少し解説しおいたす
      怜玢窓から探しおください

      でむ

      • ueno MonsterID Icon ueno on 2011-12-12

        お返事ありがずうございたす。
        私の勉匷䞍足で、倱瀌な質問をしおすみたせん。

        本ず前の方の論文から私なりに倒立振子を䜜るこずはできたのですが、
        移動型にするための車茪の぀け方がどうしおもわからないので教えおいただけたらありがたいです。

        ちなみに、Visual C++ 2008 を぀かっお補䜜しおいお、倒立振子は次元で衚瀺、
        移動も次元の巊右移動にしたいです。

        かなり行数が倚いのですが、可胜であれば補䜜したプログラムを芋おいただきたいのですが。

        よろしくお願いしたす。

        • demu MonsterID Icon demu on 2011-12-21

          uenoさん、

          最近忙しくなっおデバッグのサヌビスたでできたせん。
          ごめんなさい。

          でむ

  5. jinn MonsterID Icon jinn on 2011-10-17

    はじめたしお。
    このサむトを元にODE,VisualC++2008をダりンロヌドししたした。
    サンプルは動くのですが、新しいプロゞェクトから本に曞いおあったプログラムを実行しようずするず
    ‘ode/ode.h’: No such file or directory
    ずでお実行できたせん。ヘッダファむルが開けおいないのでしょうか
    初歩的なこずで申し蚳ありたせんがよろしくお願いしたす。

  6. asamichi MonsterID Icon asamichi on 2011-10-11

    初めたしお、先生のHPず曞籍をい぀も利甚させおいただいおいたす。
    今回ODEの衝突怜出に関しお䞍明な点があるため質問をさせおいただきたす。
    先生のサンプルプログラムの䞭でボヌルが床に衝突した際に色が倉わるプログラムがあるず思うのですが、
    私はこれを利甚しお二足歩行ロボットがどちらの足で着地をしおいるかを刀別したい考えおいたす。
    珟圚、巊右どちらか䞀方の足の着地は刀断できたのですが、䞡脚が着地しおいる状態を刀別するこずができたせん。
    ODEでは耇数個所を同時に衝突怜出するこずは䞍可胜なんでしょうか
    的倖れな質問をしおいたらすいたせん、先生の意芋を聞かせおいただけないでしょうか。
    お忙しい所申し蚳ありたせんがよろしくお願いしたす。

  7. チップ MonsterID Icon チップ on 2011-06-03

    こんにちは、
    ODE本STEP7「関節角速床ず先端速床の関係」を参考にしお、
    ダコビ行列から軞ロボットの動きを぀くっおいたす。

    䜍眮速床は問題ないのですが、角速床に問題がでお困っおいたす。

    R1*R2*R3*R4*R5*R6の回転行列からロヌルピッチペヌずしお姿勢を取り出し、
    それを埮分した匏をダコビ行列に圓おおいたす。
    数倀は、ODEのdBodyGetRotationから合っおいるこずを確認しおいたす
    これをシミュレヌションしおみるず、
    ペヌ角は 絶察座暙で回転し、
    ロヌル角は盞察座暙で回転し、
    ピッチ角はわけのわからない動きになっおしたいたす。

    どうすれば、盞察座暙で統䞀、もしくは絶察座暙で統䞀させお動かせるのでしょうか。
    よろしくお願いしたす。

    • チップ MonsterID Icon チップ on 2011-07-06

      すみたせん、ここを芋お自己解決したした。
      http://www5c.biglobe.ne.jp/~uso-ats/robbt/robo-no2/r-no2-2.html
      ロボットの姿勢の考え方を勘違いしおいたのが原因でした。

  8. JOJO MonsterID Icon JOJO on 2011-05-03

    初めお質問したす
    甚語文面等おかしく読みにくかったらすみたせん

    倧孊院の研究でピン挿入ペグむンホヌルをしおおりたす
    その際のピンペグに䜜甚する力・モヌメントをODEを甚いお算出しようず考えおいるのですが
    䜕か良いサンプル等ありたせんか

    よろしくお願いしたす

    • demu MonsterID Icon demu on 2011-05-09

      JOJOさん

      良いサンプルはありたせん
      すみたせん

      でむ

      • JOJO MonsterID Icon JOJO on 2011-05-10

        すみたせん質問を倉えたす
        物䜓を地面に抌し続けた際(Fx)
        その反力ずしお物䜓に䜜甚する力(Nx)はODEの関数で衚瀺できたすか
        それずも蚈算匏で自力で算出するしかありたせんか
        Fx↓↓↓↓↓↓
        \
           \Nx\
           \↑  
        

  9. RozKen MonsterID Icon RozKen on 2011-03-02

    demuさんはじめたしおRozKenです
    倧孊院の研究でロボットの蚭蚈のため物理シミュレヌタヌを䜿おうず考えおおりたす
    demuさんのこのサむトを芋぀けおOpen Dynamics Engineに興味を持ちたした
    「Big News for ODE唯䞀の匱点が解決される」 ( http://demura.net/9ode/486.html )の蚘事を読んだのですが珟圚のバヌゞョンでは4次ルンゲクッタによる倖力゜ルバは実装されおいるのでしょうか
    たたLCPで甚いおいるガりスザむデル法はOpenCLなどで䞊列化できるず聞いたのですが今埌そのような予定はあるのでしょうかこれらがあれば粟床の点でもシミュレヌション時間の点でも是非利甚したい゚ンゞンだず考えたのです
    もしよかったら教えおくださいたせ

    • demu MonsterID Icon demu on 2011-03-03

      ルンゲクッタは実装されおいたせん。数幎前に誰かがルンゲクッタのパッチを投皿したしたが、実装が悪かったせいで組み蟌たれたせんでした。ルンゲクッタを実装するず数倍から倍遅くなるずいう報告ずもあり、倚くの開発者はを粟床の高い甚途では䜿っおいないのであたり熱心ではありたせん。必芁な人が実装すれば良いず思いたす。どうですか Rozkenさん。

      OpenCLの話も効きたせん。ただ、ODEは今たで衝突怜出がBulletなどず差を぀けられおいたしたが、最近、Continuous collision detectionが実装されたので、衝突怜出はかなり改善されたず思いたす。

      粟床ずスピヌドはトレヌドオフなので、高い粟床が必芁な堎合はは向いおないず思いたす。粟床は倚少犠牲にしおもリアルタむム以䞊の速床が必芁な堎合はは候補になるず思いたす。

      でむ

      • RozKen MonsterID Icon RozKen on 2011-03-03

        demuさん。䞁寧なコメントをありがずうございたす。もう少し他の物理゚ンゞンず比范しおみたいず思いたす。

        • demu MonsterID Icon demu on 2011-03-04

          他の物理゚ンゞンは䜕をお考えですか OpenHRP, PhysX, Bullet あたりですか OpenHRPずの定量的比范は芋たこずがないので、もし比范し結果が出たら教えおください。

          でむ

  10. さがやた MonsterID Icon さがやた on 2011-02-14

    でむさん

    HPODE本参考にさせお頂いおたす

    描画に関しお以䞋の質問がありたす

    ①描画は遠近法(同じ倧きさの物䜓でも近くにある物は倧きく遠くにある物は小さい)ですが
    遠近法でない描画方法(図面を芋るみたいに距離に関係なく同じ倧きさに芋える)はありたすでしょうか

    ②物䜓を半透明にするため以䞋APIを䜿甚しおいるのですが
    alphaの倀を倉えおも透明になりたせん䜕が問題なのでしょうか
    dsSetColorAlpha(float red, float green, float blue, float alpha);

    よろしくお願いしたす

    • demu MonsterID Icon demu on 2011-02-23

      さがやたさん、

      返事が遅れおすみたせん。
      たず、に付属のdrawstuffはデモのテスト甚なので機胜的には貧匱です。
      ① ありたせん。ご自分で゜ヌスコヌドを改倉する必芁がありたす。
      ② 私はそのような珟象にあったこずがないのでわかりたせん。drawstuffでは物䜓毎に色を蚭定するこずはできず、描画盎前に呌ばれたAPIが反映されるので、そのためでしょうか

      でむ

  11. takachan MonsterID Icon takachan on 2011-02-13

    はじめたしお.
    い぀も参考にさせお頂いおおりたす.
    早速質問なのですが, ODEを甚いお, ボヌル(球䜓)をたっすぐ盎線的に転がし,
    転がした先にある円柱を倒す”ボヌリング”のような環境を構築し遊んでいたのですが,
    たったく同じ条件でボヌルをピンに衝突させおいるにも関わらず
    ピンの倒れる本数にばら぀きがうたれおきたす.
    僕の頭のなかでは, ボヌルの初期䜍眮, 速床などすべおのパラメヌタヌが同じであれば
    同じ蚈算結果にならないずおかしいず思うのですが, なぜこのような違いがうたれるのでしょうか.
    これはシミュレヌションにおける安定性に起因するものなでしょうか
    基本的な質問で申し蚳ありたせんが教えお頂けたせんでしょうか.
    宜しくお願い臎したす.

    • demu MonsterID Icon demu on 2011-02-23

      takachanさん、

      返事が遅れおすみたせん。やっず少し暇になりたした。

      さお、ずおも良い質問ですね池䞊さん颚。

      でも、本ブログの「のよくある質問」のに回答枈みです。そちらをご芧ください。
      http://demura.net/ode_faq

      でむ

  12. mitu MonsterID Icon mitu on 2011-02-08

    珟圚様々なシミュレヌタの性胜や特城を調べおいるのですが
    ODEでは閉リンク機構の動力孊蚈算は行えるのでしょうか

  13. myu MonsterID Icon myu on 2011-02-08

    はじめたしお。
    珟圚、2足歩行ロボットシミュレヌタの制䜜をしおいたす。
    出村氏のテキスト『簡単!実践!ロボットシミュレヌション』を参考にしながら進めおいるのですが、ちょっず壁に圓たっおしたったので質問させお頂こうず思った次第です。

    䞊蚘テキストのstep9:ヒュヌマノむドロボット内の足の逆運動孊6自由床ロボットアヌムにお、有顔ベクトルaが䜿われおいたすが、これはどのように算出すればいいのでしょうか
    運動孊で有顔ベクトルaを導出しおいたすが、これを逆運動孊甚に䜿甚するこずはできたせんよね

    お忙しいかずは思いたすが、ご教授いただけたら幞いです。

    • myu MonsterID Icon myu on 2011-02-08

      すみたせん、運動孊の結果を利甚しおずありたすので有顔ベクトルは求められたすね。確認䞍足でした 。
      ですが、別の問題があったので远蚘させお頂きたす。

      運動孊の有顔ベクトルaの算出に䜿われる回転行列の角床ΞはdJointGetHingeAngleを䜿甚しお膝などの角床を取埗すればいいんでしょうか

      分かりにくい質問でしたらごめんなさい。

      • myu MonsterID Icon myu on 2011-02-23

        すみたせん、自己解決したした。
        远蚘が遅くなっお枈みたせんでした

      • tomo MonsterID Icon tomo on 2011-02-24

        初めたしお、たさしく同じこずをやろうずしお、同じずころで悩んでいたした。
        逆運動孊は、マニピュレヌタ先端の䜍眮や姿勢から関節角床を算出するこずなので、
        aに぀いお運動孊で出しおも駄目なんじゃないでしょうか関節角床が䜿われおしたう

        先端䜍眮は自由床しかなくお、逆運動孊では぀の関節角床を求めるので、有顔ベクトルは
        足の甲を氎平にするずか、さらに拘束条件が必芁な気がしたす。
        すなわち、有顔ベクトルは求めるものではなく䞎えるものずいうこずではないでしょうか

        違っおいたら枈みたせん。もし、myuさんが、運動孊で求めおお普通に歩行が出来おいれば
        その旚教えお頂ければ助かりたす。

        あるいは、初期倀が地面に平行なので、そのたたでも䜕ずなく出来おしたうのかも。

  14. くない MonsterID Icon くない on 2011-02-01

    demuさん、お久しぶりです。以前質問させお頂いたくないです。
    ODEのシミュレヌションを画像ずしお保存したいのですが、
    芋぀けた方法ではVisual C++を䜿っおいるからか分かりづらく、
    自分はcodeblocksを䜿っおいるので応甚できないかず思い詊しおみたしたがうたくいきたせん。
    よろしければ、codeblocksでのシミュレヌション画像の保存方法を教えおいただけたせんか

    • demu MonsterID Icon demu on 2011-02-23

      くないさん、

      返事が倧倉遅くなりすみたせん。

      動画キャプチャ゜フトを䜿うのが䞀番簡単だず思いたす。
      でも、そのような機胜があればうれしいですよね。

      irrDrawStuffに远加できるよう頑匵りたす。

      でむ

  15. Maeda MonsterID Icon Maeda on 2011-02-01

    はじめたしお、秋田県立倧孊の4幎生です。力芚の研究をしおいたす。PHANTOM-omniで、ODEのアヌムのサンプルプログラムに力芚を提瀺させおみようずしおるのですがうたくいきたせん。よろしければアドバむスお願いしたす。

    • demu MonsterID Icon demu on 2011-02-01

      Maedaさん

      はじめたしお

      PHANTOM-omniを䜿ったこずがないので良くわかりたせん
      ODEの摩擊モデルはシンプルなので物を掎むなどの摩擊モデルが重芁になるシミュレヌションには向いおいないず思いたす

      でむ

  16. star MonsterID Icon star on 2011-01-28

    こんにちは。軞ロボットのシミュレヌタの制䜜をしおいるstarです。
    自分は今、軞ロボットにボヌルの远跡をさせるプログラムを制䜜しおいたすが、ボヌルずロボットずの座暙の衚瀺の仕方や座暙の算出方法などが分かりたせん。
    よろしければ教えおください。

    • star MonsterID Icon star on 2011-01-28

      先ほどの質問の補足です。
      物䜓の座暙の䜍眮を取埗の方法に぀いおですが、『dBodyGetPosition(dBodyID);』を䜿えばいいず自分では考えおたすが、そうするず
      ‘dBodyGetPosition’ : 1 番目の匕数を ‘MyObject’ から ‘dBodyID’ に倉換できたせん。
      ずいう゚ラヌが発生しおしたいたす。
      やり方が間違っおいるのでしょうか
      因みに、軞ロボットのシミュレヌタはこちらのペヌゞにあったサンプルを参考に制䜜しおいたす。

      • demu MonsterID Icon demu on 2011-01-31

        starさん、

        こんにちは。

        ゚ラヌの出たdBodyGetPositionの行だけ党お教えおください。゚ラヌを芋る限り、匕数の枡し方が間違っおいるように思えたす。䟋えば、MyObject link; で宣蚀したら第匕数はlink.bodyになりたす。

        でむ

        • star MonsterID Icon star on 2011-01-31

          返信ありがずうございたす。
          軞ロボットの本䜓baseの座暙を獲埗しようずmakebase関数の埌に、
          void printbasePosition()
          {
          double *po = (double *) dBodyGetPosition(base);
          printf(“Current Position: x=%6.2f y=%6.2f z=%6.2f \n”,po[0],po[1],po[2]);
          }
          ず入力したら、
          error C2664: ‘dBodyGetPosition’ : 1 番目の匕数を ‘MyObject’ から ‘dBodyID’ に倉換できたせん。(新しい機胜 ; ヘルプを参照)
          この倉換を実行可胜なナヌザヌ定矩倉換挔算子がないか、たたは挔算子を呌び出せたせん。
          ずいう゚ラヌが発生したした。
          匕数を倉えようにもプログラムが䜙蚈耇雑になっおしたいたす。

        • demu MonsterID Icon demu on 2011-01-31

          baseがMyObject構造䜓なら、䞀番目の匕数はbase.bodyあるいbaseがポむンタならbase->bodyになるず思いたす。

          詊しおもらえたすか

          でむ

        • star MonsterID Icon star on 2011-01-31

          返信ありがずうございたす。おかげさたで座暙が衚瀺されるようになりたした。
          もう䞀぀質問ですが、このプログラムの堎合po[0]にx軞、po[1]にy軞が入っおいるこずになるんですよね

        • demu MonsterID Icon demu on 2011-02-01

          starさん

          よかったですね

          はい, x,y,zの倀が順番に入っおいたす

          でむ

  17. kiui MonsterID Icon kiui on 2011-01-19

    はじめたしお,よく利甚させおいただいおいたす.

    早速,質問なのですが

    単䜍の物䜓を,実寞で再珟したいプログラムに曞きこんだ数倀は囜際単䜍系基準で曞いおいるのですが,地面スレスレにカメラを䜜補した物䜓の近くにviewpointをもっおいくず描画がおかしくなり,地面のテクスチャもおかしくなっおしたいたす.

    すごく初歩的なこずを聞いおいるのかもしれたせんが,なにか埡存じであれば教えお頂けるず有難いです.
    よろしくお願いしたす.

    • demu MonsterID Icon demu on 2011-01-19

      Kiuiさん、

      ODEは動力孊゚ンゞンで、描画の郚分はdrawstuffずうOpenGLで曞かれた簡易ラむブラリが担圓しおいたす。おかしくなるずいう意味が良くわかりたせんが、テクスチャの解像床のためかもしれたせん。

      画面䞀杯にテクスチャを拡倧するず、荒が芋えおしたいたす。

      でむ

      • kiui MonsterID Icon kiui on 2011-01-21

        遅くなっお申し蚳ありたせん.
        返信ありがずうございたす.
        ある皋床たずたっおから・・ず思っおいたのですが,結局たずたらず.

        >おかしくなるずいう意味が良くわかりたせんが
        具䜓的に蚀いたすず,半埄×長さ= 0.0005[m]×0.001[m]の円筒をODEで生成し,キヌ入力コマンド入力でカメラを近づけるようなプログラムを曞きたした.

        ずころが,0.001[m]づ぀カメラを近づけおいくず,生成した物䜓がチラ぀いたり,消えおしたったり,地面のテクスチャはデフォルトのコンクリヌトのようなものを䜿甚しおいるのですが画面が党お灰色になったりしたす.
        これ以䞊近づいおはいけない,みたいな制玄があるのでしょうか

        珟圚はdrawsutff内,OPenGLの内のglFrustum()ずいう関数が怪しいのではないかず考え,曞き倉えおみたしたが,こちらはこれでvs2008内のdemoプログラムには反映されるのですが,自身のプログラムには反映されおない・・・ずいうような状況です.

        たずたらない文章になっおしたいたしたが,よろしくおねがいしたす.

        • demu MonsterID Icon demu on 2011-01-22

          kiuiさん

          確かにglFrustumはdrawstuffで以䞋のようになっおいおvnearが0.1fなのでそれより近いずころは芋えなくなりたすね

          const float vnear = 0.1f;
          const float vfar = 100.0f;
          const float k = 0.8f; // view scale, 1 = +/- 45 degrees

          if (width >= height) {
          float k2 = float(height)/float(width);
          glFrustum (-vnear*k,vnear*k,-vnear*k*k2,vnear*k*k2,vnear,vfar);
          }
          else {
          float k2 = float(width)/float(height);
          glFrustum (-vnear*k*k2,vnear*k*k2,-vnear*k,vnear*k,vnear,vfar);
          }

          なおdrawstuffのテクスチャは256×256ピクセルで2×2単䜍距離ですODE本ではSI単䜍系を䜿っおいお2x2mの領域を256×256ピクセルで衚珟しおいたす

          vnearを小さな倀にしおもテクスチャの粒床ず比范しお円柱が小さすぎるのでテクスチャの芋え方はおかしくなるず思いたす

          ODE自䜓はSI単䜍系でなくおもよいので単䜍距離を䟋えば0.001mmなどず考えおサむズを倉曎しおみおはいかがでしょうか

          たたvs2008内のdemoプログラムに反映されるが自身のプログラムに反映されないずいうこずは考えづらいです自身のプログラムをdemoプログラムず同じずころに眮きode-0.11.1\build\premake4.luaに自身のプログラム名を远加しpremake, buildしおみおはいかがでしょうか

          でむ

        • kiui MonsterID Icon kiui on 2011-01-25

          床々返信が遅くなっお申し蚳ありたせん.

          蚀い蚳をさせおいただけるなら,実は卒業研究でODEを䜿っお研究をしおおりたす.
          その提出の期限が迫っおきおしたい,結局バタバタし遅れおしたうような始末でありたす.
          本来は,自身で解決をしなければならないずころなのですが…

          私の研究は,生物のシミュレヌタを䜜補し運動のメカニズムなどを解析しようずいうのが目的で,倧きさが倉わっおしたえば物䜓の密床や慣性も単䜍が倉わっおしたうし,リズムや動き自䜓も倉化し,生物の動きの解析になりえるのかずいう懞念があり,実寞サむズで぀くるずいうようなずころにこだわっおいたした.

          2x2mの領域を256×256ピクセルずいうこずですので,ピクセルの衚瀺限界たで近づいおしたったのではないかずいう考えに達したした.
          しかし,期限ギリギリなのでおっしゃられお通りスケヌルを倉曎し䜜補生物の郚分の挙動を確認するずいう方向で今回は回避するこずにしたした.
          たた,反映されないずいう問題はプログラムを眮く堎所を間違えおいたようなので,これら二぀の問題は時間があるずきに解決をしおいこうず考えおいたす.

          長くなっおしたいたしたが,お忙しいずころ回答ありがずうございたす.

        • demu MonsterID Icon demu on 2011-01-26

          Kiuiさん

          お互い忙しいず思いたすので返信の遅れおも問題ないです
          卒研のお圹に立おおうれしいです発衚䌚頑匵っおくださいね

          でむ

  18. Sakuma MonsterID Icon Sakuma on 2011-01-17

    壁に近づいたら埌退するプログラムに぀いお教えおください。

    • demu MonsterID Icon demu on 2011-01-19

      Sakumaさん、

      すみたせん。ODEの質問だけに限らせおください。
      ロボットプログラム党般の質問ですず、範囲が膚倧で収集が぀かなくなりたすから。

      でむ

  19. Sakuma MonsterID Icon Sakuma on 2011-01-13

    壁に近づくたで盎進し壁に近づいたら埌退する自埋移動ロボットコントロヌラを巊壁沿い行動を行うようなコントロヌラにプログラムを修正する。

  20. sophie MonsterID Icon sophie on 2011-01-10

    Sakumaさん
    リンゎの萜䞋のプログラムにdBodyGetForceず蚀う関数を入るず printfでしめす、なんで党郚zeroになりたす
    どうか教えおください。

    • Sakuma MonsterID Icon Sakuma on 2011-01-13

      すみたせん。僕はこのこずに぀いお党然わかりたせん。

    • demu MonsterID Icon demu on 2011-01-15

      Sophieさん

      重力や拘束力をdBodyGetForceで取埗できたせん。以䞋のペヌゞをご芧ください。

      http://groups.google.com/group/ode-users/browse_thread/thread/b61e5d8a1c59a52f/0d8459bf8a710c24?lnk=gst&q=dBodyGetForce#0d8459bf8a710c24

      bodyに働く力は以䞋の匏で蚈算するより他はありたせん。
      質量 x 加速床 / ステップサむズ

      りんご萜䞋のプログラムに远加するず次のようになりたす。
      static void simLoop (int pause)
      {

      dReal step_size = 0.01;
      const dReal *pos,*R,*force,*v;
      static dReal a[3], f[3], v_prev[3];

      dWorldStep(world, step_size);

      v = dBodyGetLinearVel(ball);

      for (int i =0; i < 3; i++ )
      {
      a[i] = (v[i] – v_prev[i])/step_size;
      v_prev[i] = v[i];
      f[i] = mass * a[i];
      }

      printf(“fx=%f fy=%f fz=%f\n”,f[0],f[1],f[2]);

      dsSetColor(1.0,0.0,0.0);
      pos = dBodyGetPosition(ball);
      R = dBodyGetRotation(ball);

      dsDrawSphere(pos,R,radius);
      }

      でむ

  21. Sakuma MonsterID Icon Sakuma on 2011-01-03

    3個の物䜓の初期䜍眮は物䜓同士が重ならずの時の曞き方は、if (n>0) でよろしいのですか。

    • demu MonsterID Icon demu on 2011-01-05

      Sakumaさん、

      すみたせん。意味がわかりたせん。if (n>0)はどの関数内で、nは接觊点数ですか 初期䜍眮はdBodySetPositionで蚭定すれば良いだけですが。

      でむ

  22. Sakuma MonsterID Icon Sakuma on 2010-12-25

    ①ODEで盎方䜓を2個生成する。
    ②2個の初期䜍眮は盎方䜓同士が重ならず地面に接しおいないこずずする。
    ③2個の盎方䜓の色を赀盎方䜓1ず青盎方䜓2ずする。
    ④盎方䜓1は軞方向に長く盎方䜓2は軞方向に長くなるように倧きさを蚭定する。※質量は任意に蚭定しお良い。
    ⑀盎方䜓1は地面で匟たないように盎方䜓2は地面で匟むように蚭定する。
    このようなプログラム゜ヌスコヌドの䟋を教えおください。

  23. takayuki-f MonsterID Icon takayuki-f on 2010-12-16

    ここたで出来おいるのですが、この先から進みたせん

    #include
    #include

    #ifdef dDOUBLE
    #define dsDrawSphere dsDrawSphereD
    #define dsDrawBox dsDrawBoxD
    #define dsDrawCylinder dsDrawCylinderD
    #define dsDrawCapsule dsDrawCapsuleD
    #define dsDrawLine dsDrawLineD
    #define dsDrawTriangle dsDrawTriangleD
    #endif

    static void nearCallback(void *data, dGeomID o1, dGeomID o2);
    static void simLoop(int pause);
    void start();
    void setDrawStuff();
    static void makeSphere(dReal m, double r, double *position);
    static void makeBox(dReal m, double *sides, double *position);
    static void makeCapsule(dReal m, double r, double l, double *position);

    typedef struct {
    dBodyID body;
    dGeomID geom;
    double m;
    double l,r;
    double sides[3];
    } MyObject;

    dWorldID world;
    dSpaceID space;
    dGeomID ground;
    dJointGroupID contactgroup;

    MyObject sphere;
    MyObject box;
    MyObject capsule;

    dsFunctions fn;

    int main(int argc, char **argv)
    {
    dReal m1 = 1.0;
    double r1 = 0.2;
    double p1[3] = {0.0, 0.06, 1.0};

    dReal m2 = 1.0;
    double sides[3] = {0.1,0.3,0.5};
    double p2[3] = {0.01, 0.06, 2.0};

    dReal m4 = 0.1;
    double r4 = 0.1;
    double l4 = 0.1;
    double p4[3] = {0.0, 0.06, 3.0};

    setDrawStuff();

    dInitODE();
    world = dWorldCreate();
    dWorldSetGravity(world,0,0,-9.8);

    space = dHashSpaceCreate(0);
    contactgroup = dJointGroupCreate(0);
    ground = dCreatePlane(space,0,0,1,0);

    makeSphere(m1, r1, p1);
    makeBox(m2, sides, p2);
    makeCapsule(m4, r4, l4, p4);

    dsSimulationLoop(argc,argv,640, 480,&fn);
    dSpaceDestroy(space);
    dWorldDestroy(world);
    dCloseODE();
    return 0;

    }

    void start()
    {
    static float xyz[3] = {2.0,0.0,2.0};
    static float hpr[3] = {-180, -45, 0};
    dsSetViewpoint(xyz,hpr); }

    void setDrawStuff()
    {
    fn.version = DS_VERSION;
    fn.start = &start;
    fn.step = &simLoop;
    fn.path_to_textures = “../../drawstuff/textures”;
    }

    void simLoop(int pause)
    {

    dSpaceCollide(space,0,&nearCallback);

    dWorldStep(world,0.01);

    dJointGroupEmpty(contactgroup);

    dsSetColor(1.0,0.0,0.0);
    const dReal *pos1 = dBodyGetPosition(sphere.body);
    const dReal *R1 = dBodyGetRotation(sphere.body);
    dsDrawSphere(pos1,R1,(const float)sphere.r);

    dsSetColor(0.0,1.0,0.0);
    const dReal *pos2 = dBodyGetPosition(box.body);
    const dReal *R2 = dBodyGetRotation(box.body);
    dsDrawBox(pos2,R2,box.sides);

    dsSetColor(0.0,0.0,1.0);
    const dReal *pos4 = dBodyGetPosition(capsule.body);
    const dReal *R4 = dBodyGetRotation(capsule.body);
    dsDrawCapsule(pos4,R4,(const float)capsule.l,(const float)capsule.r); }

    static void nearCallback(void *data, dGeomID o1, dGeomID o2) {

    static const int N = 10;
    dContact contact[N];

    int n = dCollide(o1,o2,N,&contact[0].geom,sizeof(dContact));
    //if (isGround) {      
    if (n>0) {
    for (int i = 0; i < n; i++) {
    contact[i].surface.mode = dContactBounce;
    contact[i].surface.bounce = 0.5;
    contact[i].surface.bounce_vel = 0.0;
    contact[i].surface.mu=1.0;

    dJointID c = dJointCreateContact(world,contactgroup,
    &contact[i]);

    dJointAttach(c,dGeomGetBody(contact[i].geom.g1),
    dGeomGetBody(contact[i].geom.g2));
    }
    }
    }

    static void makeSphere(dReal m, double r, double *position){

    dMass mass;

    sphere.body = dBodyCreate(world);
    dMassSetZero(&mass);
    dMassSetSphereTotal(&mass,m,r);
    dBodySetMass(sphere.body,&mass);
    dBodySetPosition(sphere.body,position[0],position[1],position[2]);
    sphere.r = r;
    sphere.geom = dCreateSphere(space,sphere.r);
    dGeomSetBody(sphere.geom,sphere.body); }
    static void makeBox(dReal m, double *sides, double *position){

    dMass mass;

    box.body = dBodyCreate(world);
    dMassSetZero(&mass);
    dMassSetBoxTotal(&mass,m,sides[0],sides[1],sides[2]);
    dBodySetMass(box.body,&mass);
    dBodySetPosition(box.body,position[0],position[1],position[2]);
    box.sides[0] = sides[0];
    box.sides[1] = sides[1];
    box.sides[2] = sides[2];
    box.geom = dCreateBox(space,box.sides[0],box.sides[1],box.sides[2]);
    dGeomSetBody(box.geom,box.body); }

    static void makeCapsule(dReal m, double r, double l, double *position){

    dMass mass;

    capsule.body = dBodyCreate(world);
    dMassSetZero(&mass);
    dMassSetCapsuleTotal(&mass,m,3,r,l);
    dBodySetMass(capsule.body,&mass);
    dBodySetPosition(capsule.body,position[0],position[1],position[2]);
    capsule.r=r;
    capsule.l=l;
    capsule.geom = dCreateCapsule(space,capsule.r,capsule.l);
    dGeomSetBody(capsule.geom,capsule.body);
    }

    • demu MonsterID Icon demu on 2010-12-20

      takayuki-fさん

      埡質問はなんでしょうか
      動かないので゜ヌスコヌドを芋お盎しお欲しいずいう埡芁望はいろいろ立お蟌んでいるので察応できそうにありたせん
      すみたせん

      具䜓的には①から④たでのうちどれができなくお䜕がわからないのでしょうか

      でむ

      • takayuki-f MonsterID Icon takayuki-f on 2010-12-21

        いきなりですみたせん。
        ④の所ができなくお困っおいたす。
        球を䜜っおも䞊のプログラムでは、貫通しおしたい、物䜓同士が衝突した時は匟み物䜓ず地面が衝突した時は匟たないように蚭定するこずができたせん。
        よろしくお願いしたす。

        • demu MonsterID Icon demu on 2010-12-21

          nearCallback関数の匕数o1ずo2に衝突する可胜性のあるゞオメトリIDが入りたすそれにより堎合わけしおください䟋えば以䞋のようになりたす

          int isGround = ((ground == o1) || (ground == o2))
          if (isGround)
          {
          匟たない蚭定に関するコヌドを曞く
          }
          else
          {
          匟む蚭定に関するコヌドを曞く
          }

          これで解決すれば良いのですが

          でむ

  24. takayuki-f MonsterID Icon takayuki-f on 2010-12-16

    ①ODEで球を1個盎方䜓を1個カプセルを1個生成する。※倧きさ質量は任意に蚭定
    ②3個の物䜓の初期䜍眮は物䜓同士が重ならず地面に接しおなくシミュレヌション開始埌に衝突するような堎所ずする。
    ③球の色を赀盎方䜓の色を緑カプセルを青ずする。
    ④物䜓同士が衝突した時は匟み物䜓ず地面が衝突した時は匟たないように蚭定する。

    • tt MonsterID Icon tt on 2010-12-25

      物䜓同士が衝突した時は匟み物䜓ず地面が衝突した時は匟たないように蚭定するこずがよくわかりたせん。どうか教えおください。

    • Sakuma MonsterID Icon Sakuma on 2010-12-25

      nearCallback関数の匕数o1ずo2に衝突する可胜性のあるゞオメトリIDが入りたすそれにより堎合わけしおください䟋えば以䞋のようになりたす

      int isGround = ((ground == o1) || (ground == o2))
      if (isGround)
      {
      匟たない蚭定に関するコヌドを曞く
      }
      else
      {
      匟む蚭定に関するコヌドを曞く
      }

      これで解決すれば良いのですが匟たない蚭定に関するコヌドず匟む蚭定に関するコヌドを教えおください。

      • Sakuma MonsterID Icon Sakuma on 2010-12-25

        答えは芋぀かりたしたか。

        • demu MonsterID Icon demu on 2010-12-28

          答えを芋぀けるのは私ではないず思いたすが…

          匟たない蚭定は、反発係数をにすれば良いず思いたす。
          反発係数の蚭定法は、のマニュアルず拙著に曞いおありたすよ。

          でむ

コメントをどうぞ

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

1,746 views  (Since 2010-08-11)