ODE質問・要望募集2!

ODEの質問・要望募集のコメント総数が50件を超えました.本当にありがとうございます.コメントが長くなり読みづらくなりましたので新たな質問・要望は最新のODE質問・要望募集○!に投稿してください.

なお,延び延びになっていた初心者用ODE本の原稿脱稿が9月末となりました.できるだけ良い本にしたいので説明して欲しいところがあればコメントして頂ければありがたいです.

 さっそく,以下に掲載したうえのさんのご質問に回答していきたいと思います.

こんばんは。

物体と物体のコンタクト時での
FDir1(direction1)の設定についての質問です。

 動いてる細長い板(Trimesh)の縦長の面を常に
FDir1に設定したいのですがどのようにしたら
いいのか悩んでいます。
(目的は板の方向を元にしてその時々の
mu2を設定することです。)

まず板の姿勢をdBodyGetRotationで
獲得し、その情報からFDir1[0] ~ [2]を
設定しようとしたのですがうまくいかない状況です。

①FDir1の型はdVector3ということなのですが
これはオイラー角での姿勢表現で
3つのパラメーターを用いているのでしょうか?

②動いている物体を元にしてFDir1を設定するには
やはりdBodyGetRotation が有効なのでしょうか?

②もしかして、そもそもFDir1を動いている
物体に合わせて変える、ということは
一般的ではないのでしょうか?

以上、ちょっとわかりにくい文章かつ、
初歩的な質問ですがよろしく御願いします。m(__)m

うえの

 

 

うえのさん,毎度ありがとうございます.

①の回答:fdir1は第1摩擦方向で,単位ベクトルかつ接触点の法線方向と垂直でなければなりません.成分は3つあり,その単位ベクトルのx,y,z軸成分です.また,これを設定するためにはdContactFdir1のフラグを立てておく必要があります.

②の回答: いろいろな方法があるかとは思いますが姿勢を知るにはdBodyGetRotationかdBodyGetQuaternionを通常使用すると思います.その他,ボディにヒンジジョイントがあるなら軸の方向ベクトルを利用することもできます.

③の回答: 一般的かどうかわかりませんが,全方向移動ロボットのシミュレータを作成するときにfdir1を設定したことがあります.

以上です. 

Comments

Posted by でむ

けんすけさん、

解決して何よりです。

ちなみに、ODE本は初校が終わりました。これから再校、三校があり、書店に並ぶのはゴールデンウイーク明けになりそうです。

Posted by でむ

ゆうさん、

ご質問ありがとうございます。
返事が遅くなりすみません。ボールがバットにくっつくという意味を教えて頂けますか?
両者をfixedジョイントか何かで完全に結合させるということですか?

また、物理のご質問についてはこのコーナーでは対応できませんので、学校の先生にお聞きください。なお、剛体をシミュレートしたい場合は、soft_erp = 1.0, soft_cfm = 0.0並びにグローバルのERP、CFMも同様に設定してください。

Posted by けんすけ

ありがとうございます.
dJointSetHingeParam(dJointID, dParamFMax, fmax);
を残していたのがいけなかったのですね.解決いたしました.
マニュアルを読むより,testプログラムを見る方がよさそうです.

ODE本楽しみにしておりますー.

Posted by でむ

けんすけさん、

dJointAddHingeTorque();はdBodyAddTorque()をよび出しているだけでモータとは関係ありません。

力制御の場合は以下の2行を削除してください。
dJointSetHingeParam(dJointID, dParamVel,u);
dJointSetHingeParam(dJointID, dParamFMax, fmax);

1行目を削除しただけではdParamFMaxが有効になっており、しかもdParamVelの初期値が0なのでジョイントはfmax以上の力がかかるまで動きません。ちなみにdParamFMaxの初期値も0です。

上記のことはode/src/joint.cppを読めばわかります。オープンソースって本当にいいですね。

Posted by けんすけ

こんにちは.いつもお世話になっております.
早速ですが,

dJointSetHingeParam(dJointID, dParamVel,u);

のように関節の速度制御を行ってるところを,トルク制御を行うようにしたいと思い,

dJointAddHingeTorque(djointID,u);

のように変更したのですが,制御されません(動きません).
この他に変更,追加すべき箇所があるのでしょうか?
よろしくお願いいたします.

Posted by ゆう

はじめまして、ゆうといいます。

学校で剛体の運動を習っていて、その中の問題にバットでボールを打つときの撃力の問題がありました。
そこでODEを使ってどうなるのか実験したいのです。
問題は重力が無いと仮定して、直径10cm、長さ1m、質量1kgの円柱をバットに見立てて宙に浮かべます。
直径5cm、質量100gのボールを1.8m離れた所から0.5Nの力を掛けて、円柱にぶつけます。
バットにボールが当たったとき、バットにボールがくっつくというふうにしたいのですが以下のプログラムでは
バットにボールがくっついてくれません。
どのようにすればバットにボールがくっつくのでしょうか?

static void nearCallBack(void *data,dGeomID o1,dGeomID o2)
{
static const int N = 4;
int i;

dContact contact[N];
for(i = 0; i < N;i++){
contact[i].surface.mode = dContactBounce | dContactSoftCFM;
contact[i].surface.mu = dInfinity;
contact[i].surface.bounce = 0.0; // (0.0~1.0) 反発係数は0から1まで
contact[i].surface.bounce_vel = 0.0; // (0.0~1.0) 反発係数は0から1まで
contact[i].surface.soft_cfm = 0.0001;
}

int n = dCollide(o1,o2,N,&contact[0].geom,sizeof(dContact));

for(i = 0; i < n;i++)
{
dJointID c = dJointCreateContact(world,contactgroup,&contact[i]);
// 接触している2つのgeometryをコンタクトジョイントで拘束
dJointAttach (c,dGeomGetBody(contact[i].geom.g1),
dGeomGetBody(contact[i].geom.g2));
}
}


また、長さの6分の1あたりがバットの芯だと思います。
芯に当たった場合がバットが一番早く回転し、ぶつかった後のボールは
速度が無くなると思っていたのですが、実際にはそうではないようです。
動画を作ってみましたので、もし良かったら教えてください。

ダウンロードキーワード:1234
http://www4.axfc.net/uploader/14/so/N14_23469.mpg.html


ODE講座いつも楽しみにしています。
ODE本も頑張ってください!

Posted by でむ

T.Kさん

コメントありがとうございます。
ODE本については、初校が出版社から届いて校正をしている真っ最中です。4月出版を目指しています。

また、ODEについては最近の変更の多くが、ポリゴンの衝突検出の部分で、0.8から衝突検出ライブラリにOPCODEの他にGimpactも選択できるようになりました。今までポリゴンの衝突検出に難がありましたが、かなり改善されると思います。

Posted by Tk

ODEの解説書が日本に無いのは寂しい・・・と思っていたので、ODE本の出版には大いに期待しています。
ODE自体はVer0.8ということもあり、まだ「不完全」な部分があるようです。
早く1.0をリリースして欲しい・・・などとラッセル氏に期待したいところです。

Posted by でむ [TypeKey Profile Page]

CohCohさん、

初めまして。でむです。

ODE講座18にご質問の回答を書きましたので参考にしてください。説明が短いのでわからないことがあれば、ODE講座18のコメント欄に書き込みをお願いします。

Posted by CohCoh

はじめましてCohCohと申します.
早速ですが幾つか質問をさせて下さい.

ODEでシミュレーションを行い,
そのシミュレーション結果を元に最適化計算を行って
目的の値を得るというプログラムを作成したのですが,

=====================================
開始

適当な値を初期値として設定

その値を元にODEでシミュレーション(A)

シミュレーション結果を評価関数に入れ計算

評価関数の計算結果を元に,
ODEシミュレーターに渡す値を更新

評価関数の値が十分小さくなるまで,
(A)に戻り繰り返す。

評価関数の値が十分小さくなったら,
その時ODEシミュレーターに与えた値をプロット

終了
=====================================

という構造の為,
状態を描画するためにウィンドウを作成する,
dsSimulationLoop()
でのシミュレーションループでは最適化計算中に何度も,

ウィンドウを作成

シミュレーション

ウィンドウを閉じる

という, 実際必要なの計算とは関係ない部分の処理で,
大きく計算時間をロスしてしまいます。

そこで, シミュレーションの描画を行わず,
シミュレーションのループのみを実行する関数は,
ODEに備わっていないのでしょうか.
若しくは, 描画をOFFにする方法を御存じでしたら,
是非教えて下さい.

Posted by ミツルギ

お答えありがとうございます。
返信遅くなってしまい申し訳ありません。
力をループ毎にかけてやったら球が止まりました。よかったです。

Posted by でむ [TypeKey Profile Page]

ちかさん、

はじめまして。

衝突検出に関してはnearCallが重要なので、お手数ですがプログラム一式をtarやlzhなどで固めメールに添付して送付して頂けますか? メールアドレスはトップページのProfile→連絡先のメールアドレスにあります。

Posted by ちか

はじめまして。
これまで機構解析にDADSを使用していましたがODEを試してみようとはじめました。
だいたい使えるようになったので、複雑な形状にアタックしようと思いましたが
躓いてしまいました。お助けください。
一つのbodyに複数のジオメトリを持たせたいと思いいろんなものを参考に
次のようなプログラムを作成しましたが、物体は地面を貫通してしまいます。
ご指導をお願いします。

dBodyID body;
dGeomID geom;

static void makebody()
{
dGeomID geom_a,geom_b;
dMass m_a,m_b;
  dMassSetZero (&m1);
  body = dBodyCreate(world);
  dBodySetPosition(body,XO, YO, ZO);
  geom = dCreateGeomTransform (space);
  dGeomTransformSetCleanup (geom,1);
  geom_a = dCreateSphere (0,radius);
  geom_b = dCreateBox (0,SIZE[0],SIZE[1],SIZE[2]);
  dMassSetSphere (&m_a,mass,radius);
  dMassSetBox (&m_b,mass,SIZE[0],SIZE[1],SIZE[2]);
  dGeomTransformSetGeom (geom,geom_a);
  dGeomTransformSetGeom (geom,geom_b);
  dGeomSetPosition(geom_a,0,0,0);
  dGeomSetPosition(geom_b,0,0,0);
  dMassAdd (&m1,&m_a);
  dMassAdd (&m1,&m_b);
  dGeomSetBody (geom,body);
  dBodySetMass (body,&m1);
}

Posted by でむ [TypeKey Profile Page]

ミツルギさん、

今年もよろしくお願いします。

さて、私の知る限りODEには回転摩擦が実装されていないので、球は永遠に転がります。関節も同様に摩擦がありません。回転摩擦に関する部分は自分で実装しなければなりませんが、以下のODE Wiki のFAQ 3.15に同じ質問があり実装するうえで参考になりますので目をとおしてください。

How do I stop things from rolling off into infinity, or pendulums from swinging forever?
(http://opende.sourceforge.net/wiki/index.php/FAQ#How_do_I_stop_things_from_rolling_off_into_infinity.2C_or_pendulums_from_swinging_forever.3F)

Posted by ミツルギ

あけましておめでとうございます。

球体を転がしてみると止まらずにどっかに行ってしまうのですがこれは
nearCallbackの変数の値がおかしいのでしょうか?力や速度を掛け続けているようではなく、
動いてる物体にボールが衝突して、ボール反射して転がっていく感じです。
他の物体は止まります。球体はそういった仕様なのでしょうか?

Posted by でむ [TypeKey Profile Page]

sunaさん、

すみません。ロボコンマガジンのODEプチキャンプの原稿に追われてお返事が遅れました(まだ執筆中)。
どのサンプルプログラムで実行環境は何ですか?

Posted by suna

こんにちは。

いつも、simulation test environment v0.02の画面に灰色の縞模様が出て、画面が一部隠れてしまいます。
今までは気にしていなかったのですが、何ででしょうか?

Posted by うえの

でむさん、ご返信ありがとうございます!

2番目の動画キャプチャの方ですが、早速
窓の杜に行ってみて「カハマルカの瞳」を試してみたところ、
実現できました!
ありがとうございます。

1番目の方の質問はすこしわかりにくくなってすいませんでした。
dWorldQuickStep(world, 0.05)とした時、
1ステップ(0.05秒)毎にSimloopは1回呼び出されるとして、
nearcallbackは何回呼び出されるでしょうか?
と言い換えられるかもしれません。

今回もわかりにくい(もしくは的外れな質問をしているかもしれない・・・)ですが、
お答えいただければ幸いです。(^^;;

Posted by でむ [TypeKey Profile Page]

うえのさん

お久しぶりです.あなたの投稿記事がSpam Filterにひっかかり迷惑投稿に入っていたので返事が遅くなりました.

さて,1番目の質問がよくわかりません.
dWorldStep(world, 0.05)はシミュレーションを1ステップ0.05秒だけ進めます.
この計算にかかる時間は計算機の処理能力に依存するので,その環境で計測しない限りわかりません.

2番目の質問は動画キャプチャソフトを利用すればよいです.
いろいろあるようですが,窓の杜から「カハマルカの瞳」をダウンロードできます.お勧めかどうかはわかりませんが,試したところ動画をキャプチャできました.

御参考になれば良いのですが...

Posted by でむ [TypeKey Profile Page]

よっちゃん

投稿ありがとうございます.
AIBOの3DデータはAIBO SDEのウェブサイト(http://openr.aibo.com/)からERS-7の3Dデータ(lightwaveフォーマット)を使っています.

ODEに付属しているdrawstuffライブラリはOpenGLをベースにしているので,OpenGLで扱いやすいフォーマットに変換できればよいわけです.

AIBOシミュレータを作ったときは,Crossroads 3Dというフリーソフトがあったのでそれを利用していました.残念ながら最近はリンクが切れてダウンロードできません.

なんらかのファイルフォーマット変換ソフトを使ってOpenGLにフレンドリーなファイルフォーマットに変換すればdrawstuffで描画が可能になります.

ODEは動力学計算ライブラリなので,シミュレーションの描画に関しての開発はほとんどされていません.コミュニティ的にも開発する意向はないようです.


Posted by うえの

こんばんは。お久しぶりです!
毎度申し訳ありませんが、今回も2つ質問させてください。

1、nearcallbak、simloopの1秒間における呼び出し回数

void nearcallback{
  ①    ・・(略)・・
for(i=0; i<MAX_CON; i++){
contact[i].surface.mode= ・・・
      ・・(略)・・
}
}
void Simloop{
      ・・(略)・・
dSpaceCollide(space, 0, &nearcallback))
if(!pause) dWorldQuickStep(world, 0.05)
 ②    ・・(略)・・
}

dWorldQuickstepで、ステップサイズを0.05、
反復回数(iterations)をデフォルトの20とした時に
①と②の場所が、何秒毎に実行されるかを教えてください。
(または1秒毎に何回呼び出しされるか)
②が、0.05秒毎でステップ、dSpaceCollideも0.05秒毎でステップだと
思っていましたが、違うようでした。
(fprintf等を入れてみて何らかの値を出力するように実験してみたところ、
同じ時間で①が②のちょうど8倍の行になりました。)
加速度を求めたり、最終的なグラフに
使用するために詳細が知りたいのでよろしくお願いします。


2、シミュレーション結果(drawstaff)を動画として保存したいのですが
何かいい方法はご存知でしょうか?
「simulation test environment v0.02」のウインドウを
そのまま動画ファイルとして保存できたら嬉しいです。。
これは直接ODEの質問とは関係ないかもしれませんが、
何かいいアドバイスがあればよろしくおねがいします!


1、の質問がちょっとわかりにくいかもしれませんが、
以上、お時間のある時お答えいただけたら嬉しいです。

Posted by よっちゃん [TypeKey Profile Page]

でむさん、こんにちは。
いつもこちらのサイトを参考にさせて頂いております。

質問なのですが、

本サイトに掲載されているかっこいいアイボのモデルはどのように作られているのでしょうか?
3D-CADか何かのデータからモデルを構築するようなことが可能なのでしょうか?
できればCADから作れればありがたいのですが(^^;

もしかすると初歩的な質問なのかもしれませんが、お答え頂けたら幸いです。

Posted by でむ [TypeKey Profile Page]

Jimmyさん,

ODE講座12:トルクセンサを作ろう!にサンプルコードを掲載しましたので参考にしてください.

Posted by jimmy

こんにちは。ちょっと質問があるですがよろしいでしょうか?

jointのトルクと力のdataを取りたいですが。
ODEのmanualを読んでもよく分からないです。
やり方教えていただけませんか?もしsampleが
あればうれしいです。

よろしくお願いします。

Posted by でむ

sunaさん,

ODEは剛体動力学計算エンジンなので,流体力学のシミュレーションには使えません. 空気抵抗などのパラメータはありません.

でむ

Posted by suna

またまた質問ですが、
空気抵抗を設定するには、どうしたらいいのですか?

Posted by でむ

sunaさん,

よかったですね.解決して何よりです.

来春4月に出版する(講義に使用するので間に合わせなければならない)予定のODE本の原稿締め切りが11月10日なので,今それにかかりきりです.ロボコンマガジンの連載も抱え,ODE講座はなかなか更新できませんが時間を作り充実させますので今後ともよろしくお願いします.

Posted by suna

ありがとうございます。
うまくいきました。

MSYSのインストールのときにコマンドプロンプトで、
c:/mingw

c:¥mingw
としていました。
http://www2.atwiki.jp/ccw/pages/5.htmlで気が付きました。

今後のODE講座も期待しています。

Posted by でむ

sunaさん、

$ ls /mingw/binを実行してNo such file or directoryと表示されるということは、インストールが何らかの原因でうまく終了していないことが考えられます。

以下のサイトの記事が参考になるかもしれません。
http://www2.atwiki.jp/ccw/pages/34.html

また、gccやmakeを別にインストールするときはc:\mingwの下に展開してください。

これで解決すればよいのですが...

Posted by suna

1は、確実にやりました。
2は、
No such file or directory
と、見つからないようです。

別でインストールする場合は、どこに保存したら良いですか?

Posted by でむ

sunaさん、

詳しく現状を教えてください。
1. MinGWインストール時にChoose CompomentsでMinGW base tools, g++ compiler, MinGW makeにチェックボックスにチェックをいれましたか?
2. 以下のコマンドを実行して、gcc、g++が見つかりますか?
$ ls /mingw/bin

1を確実に実行して、2でgccとg++が見つからない場合は、私にはその原因がわかりません。その場合は、mingwのサイト(http://www.mingw.org/download.shtml)からCurrentにあるgccとmakeを別にダウンロードしてインストールするか, うまくいっている人のc:\MinGW以下を丸ごとコピーされたらいいかと思います。

Posted by suna

何回やってもダメです。

Posted by でむ

sunaさん、

遅くなってすみません。
恐らく開発環境がインストールされていないと思います。
開発環境がインストールされていたら以下のコマンドを実行するとgcc.exeやg++.exeが見つかります。

mingwインストールのChoose Compomentsで確実にMinGW base tools, g++ compiler, MinGW makeにチェックをいれたかもう一度確認して頂けますか?
チェックの入れ忘れが原因だと思うのですが...

$ ls /mingw/bin

コマンド実行結果
addr2line.exe* g++.exe* mingw32-g++.exe* ranlib.exe*
ar.exe* gcc.exe* mingw32-gcc-3.4.2* readelf.exe*
as.exe* gccbug* mingw32-gcc.exe* size.exe*
c++.exe* gcov.exe* mingw32-make.exe* strings.exe*
c++filt.exe* gdb.exe* mingwm10.dll* strip.exe*
cpp.exe* gprof.exe* nm.exe* windres.exe*
dlltool.exe* ld.exe* objcopy.exe*
dllwrap.exe* mingw32-c++.exe* objdump.exe*

Posted by suna

やってみたら、なにも表示されませんでした。
インストールしなおしても、同じでした。

Posted by でむ

sunaさん、

MINGW32のコンソールを開いて以下のコマンドを実行し、その結果を教えてください。
$ which gcc

私の場合は /mingw/bin/gccとなりました。何も表示されないのならg++コンパイラーがインストールされていないのでもう一度mingwをインストールしてください。

Posted by suna

mingwは、このぺージに載っている通りに
インストールしました。

Posted by でむ

suna様

makeする環境を教えていただけませんか?
そのエラーですと、CのコンパイラーがPATHの通っているところにないようです。

開発環境はインストールされましたか?例えば、mingwですと、g++ compilerとmingw makeをインストール時に選択しなければいけません。

Posted by suna

はじめまして。

./configure --enable-double-precision

の時、
error: no acceptable C compiler found in $PATH
See `config.log' for more details.

となって、上手く出来ません。
どうしたら良いでしょうか?
教えてください.

Posted by でむ

田窪様

コメントありがとうございます.Visual Studio 2005 ExpressはフリーになりVisual Studioアカデミック版もとても安価になったので,Visual Studioのインストール法も紹介しないとだめだと思っていました.田窪様の記事は多くの方にご参考になっていると思います.

では,今後ともよろしくお願いします.


Posted by 田窪

でむら様
私の名前が出ていたのでコメントさせていただきます.
私のHPにでむら様のHPに載っていたソースと同じものを載せてしまい申し訳ございません.
初めにお断りしてから載せるべきでした.
Vitual Studioでのコンパイルの例を示したいと考え拝借させていただいておりました.
よろしければこのまま掲載をさせていただきたいのですがよろしいでしょうか.
ご快諾いただけると幸いです.
→キーマ様
「ode.dllファイルが開けません」というエラーですが,私のパソコンの場合はシステムの環境変数のPATHへ下記のディレクトリを追加すると消えました.
C:\Program Files\ode-0.6\lib\debugdll
ODE-0.7+VisualStudio2005では,上記のパスでは解決されない場合があり,下記のフォルダを追加すると解決した例がございました.
C:\Program Files\ode-0.7\bin
ご参考になると幸いです.

Posted by でむ

KENさん,

本の執筆は遅れ気味です...

さて,解決おめでとうございます.
さしつかえなければ,何が原因でどのように対処したらエラーが直ったか教えて頂ければ,非常に参考になると思います.

Posted by KEN

すいません,自己解決いたしました.

ODEの本,楽しみにしております.

Posted by たこやき

でむさん,ありがとうございました.姿勢角にもいろいろな定義があるということですね.
今後もよろしくお願いします!

Posted by でむ

KENさん

圧力センサのご質問ありがとうございます。

あまりにも情報が少なくてこれだけではよくわかりません。もう少し具体的に教えて頂けたら回答できるかもしれませんが、今月末、ODE本原稿の締め切りなのでお返事は遅くなると思います。

Posted by でむ

たこやきさん

回転行列を中身を調べたところ、たこやきさんのおっしゃるとおりdRFromEulerAnglesはcraigのロボティクスにあるZ-Y-Xオイラー角を転置したものになっていますね。

色々調べたところこれは間違いというよりオイラー角の表記にいろいろ流儀があり、NASA Standard Aerospace流ではないかと思います。

以下のサイトをご覧ください。
1.http://oemagazine.com/fromTheMagazine/nov05/tutorial.html
2.http://www.euclideanspace.com/maths/geometry/rotations/euler/index.htm

本家のメーリングリストで確かめてみてはいかがでしょうか?

Posted by ぽったー

でむさん,こんにちは.ぽったーです.

ode-0.7とcygwinの件,ありがとうございます.

私がバグとりとかとんでもない...
いつかそうなるように,今はでむさんのHPを見ながら日々自分のプログラムのバグとりです(笑)

興味本位の質問なんですが,drawstaffを使わなければcygwinでも問題ないそうですね.
参考までに,drawstaff以外で3D表示のためのAPI(?),ライブラリ(?)にはどんなものがありますか?

Posted by ken

こんにちは.いつもお世話になっております.

ODE講座16 圧力センサを作ろう!を参考に,2足歩行ロボットの足首の圧力を測定しようとしているのですが,z方向の圧力は適切に求められてるようなのですが,x方向の圧力がありえないような桁の数字になってしまいます.
どんな原因が考えられるでしょうか?

Posted by でむ

ポッターさん

CygwinでのODE0.7のインストールについてのご質問ですね。

ODE0.6,0.7ではODEライブラリのコンパイル可能ですが、テストプログラムはコンパイルできません。私のサンプルプログラムもコンパイルできません。
drawstuffをcygwinで実行するときに問題が起きるようです。つまり、画面の3D表示にdrawstuffを使わなければ問題ありません。もともとdrawstuffはテストプログラムの表示用で、いわばオマケです。

なお、そのバグの詳しい原因を私は調べていないのでわかりません。メーリングリストではCygwinの実装が悪いという人もいます。開発者には知られたバグなのでそのうち直るかもしれません。

ポッターさん お時間があればそのバグを直してODEに貢献してみませんか?

Posted by でむ

キーマさん

返事が遅くなりすみません。
Visual Studioでのインストールについてのご質問ですが、私は使ったことがないので全くわかりません。ごめんなさい。

もし、わかったら投稿して頂けませんか?

田窪さんのホームページに参考となりそうな記事はありますので吉報をお待ちしています。
http://www-arailab.sys.es.osaka-u.ac.jp/~takubo/howto_ode.html

Posted by ぽったー

でむさん,こんにちわ.ぽったーです.

ODE-0.7に関する質問です.

何度かトライしたのですが,確かにOED-0.7はcygwinでのインストールができませんね.
テストプログラムがコンパイルできないとありますが,テストプログラムのみコンパイルできないのでしょうか?
それとも,インストールはできても,他のプログラム(例えばでむさんのプログラム)のコンパイルもできないのでしょうか?

そもそもMSYS,MinGWとcygwinは何が違って,このような結果になるのでしょうか?

あまりODEと関係のない質問ですみません.

ODEの本,もうすぐですね.楽しみにしてますよ~

Posted by たこやき

御回答ありがとうございます.

dRFromEulerAnglesでオイラー角を設定して物体に姿勢を反映させようとすると,明らかにテキストのzyxオイラー角と違う姿勢を示します.(自分はCubeで試しました)

さらに,GetRotationで回転行列の中身を表示させてみても,zyxオイラー角のものとは異なりました.

さらに,転値した行列で同様なことを確かめてみると,「zyxオイラー角」の姿勢を取ることが確認できました.

ということは,やはり回転行列がおかしいのでは~~?でむさんも実際に動かして確かめてくれませんか?

Posted by キーマ

初めまして。
つい先日よりODEを勉強し始め、こちらのサイトを参考にさせて頂いております。

非常に初歩的な質問で恐縮なのですが、
ODEをVisualStudio(2005)で実行する方法はあるのでしょうか?
サンプルに付いていた2005ソリューションを開き、プロジェクトの設定を真似したのですが、
「ode.dllファイルが開けません」という警告が出て実行が出来ない状態です。(コンパイルは通ります)
dllのあるディレクトリへのパスはちゃんと変更してあります。

とても馬鹿な質問であるとは思いますが、お答え頂けたら幸いです。

Posted by たこやき

関数dRFromEulerAngles(R,phi, theta, psi);
について。
以前より、疑問に思っていたのですが、上記の関数を使うと、「右手系,z-y-xオイラー角」の挙動を示しません。(回転行列を確かめてみても明らか)
ちなみに実行すると、「左手系,z-y-x固定角」の挙動を示します。

そこで、rotaotion.cppの中身をのぞいてみたところ。。。オイラー角の定義が以下のようになっていました。

_R(0,0) = cpsi*ctheta;
_R(0,1) = spsi*ctheta;
_R(0,2) =-stheta;
_R(1,0) = cpsi*stheta*sphi - spsi*cphi;
_R(1,1) = spsi*stheta*sphi + cpsi*cphi;
_R(1,2) = ctheta*sphi;
_R(2,0) = cpsi*stheta*cphi + spsi*sphi;
_R(2,1) = spsi*stheta*cphi - cpsi*sphi;
_R(2,2) = ctheta*cphi;

これって変ですよね?
z-y-xオイラー角の回転行列の転置になってしまっている気がします。
すなわち、_R(1,0)→_R(0,1)という具合に変更しなければ正しい動きをしないのでは?

なお、回転行列に関しては、
ロボティクスJhon J.Craig訳を参考にしました。

Posted by でむ

高橋さん,

力学に関する本とはどの程度のレベルなのでしょうか?
大学初級,中級,大学院レベル

Posted by うえの

こんにちは。
早急のご回答、ありがとうございます!

x、y、z成分の単位ベクトルだったんですね!
ちょっと難しく考えすぎてしまってました。(^^;

それぞれのご回答を元にして引き続き頑張ってみます。

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

Posted by 高橋

力学に関する書籍・参考書を紹介して頂けないでしょうか。よろしくお願いします。

Posted by ひろ

座標は,実際に位置センサを動かして,レセプターがその相対座標を読み取ったものを用いています.
得られた座標値をもとにSetPositionで描画しているため,本来ではありえない場所に描画しているものと思われます.(接触を検知する前に貫通してしまう)

例えば,物体を描画する前に,物体間が貫通してしまうような場所かどうかを判定する機能とかあれば解決するのですが...

P.S
ODE0.7のインストール方法ありがとうございました!さっそくやってみます.

Posted by でむ

ひろさん,

すみません.情報量が少なく難解すぎて回答できません.具体的に何をやりたいか教えて頂ければイメージがわくかもしれませんが?

入力される座標値は実際の物理現象に従ったもので,ODE上の物体はそれをシミュレートしているのでしょうか?
また,不連続とは何ms間隔で,ODEのtime stepはどの程度にしていますか?

では 

Posted by ひろ

こんにちは、先日は明確な解答どうもありがとうございました。
またしても、質問させてください。

座標値を直接入力して描画した物体Aと,他の静止物体Bとの接触を検知(
物体Aが物体Bを押す等)しようとしているのですが,
物体Aが物体Bにめりこむ,あるいは貫通するような現象が生じうまく行きません・・・
座標入力値が不連続であったりするため入力デバイス側に問題があるのは明らかですが
ODE側からこのような問題を解決するアプローチがあれば教えて欲しいです!むちゃな質問でごめんなさいー

Search
Entries
ODE本の宣伝
ODEを使い仮想空間でロボットを動かそう!本ウェブの連載から誕生.ODEのマニュアル機能有. よろしくお願いします。

Open Dynamics Engine
下記のサイトから購入できます.
amazon
7&Y icon

最近のコメント

でむ on ODE質問・要望募集2!: けんすけさん、 解
でむ on ODE質問・要望募集2!: ゆうさん、 ご質問
けんすけ on ODE質問・要望募集2!: ありがとうございます
でむ on ODE質問・要望募集2!: けんすけさん、
けんすけ on ODE質問・要望募集2!: こんにちは.いつもお
ゆう on ODE質問・要望募集2!: はじめまして、ゆうと
でむ on ODE質問・要望募集2!: T.Kさん コメン
Tk on ODE質問・要望募集2!: ODEの解説書が日本
でむ on ODE質問・要望募集2!: CohCohさん、
CohCoh on ODE質問・要望募集2!: はじめましてCohC
カウンタ (since 2007-5-20)