まず,ここにあるODEのFAQを読んでからコメントお願いします.
ODE質問・要望8!のコメントが100件を超えましたので,新しい質問や要望はこちらにお願いします! ご質問の内容を詳しく説明して頂けると的確に回答できますので,時間を節約できると思います.
また、私のコメントやご自分の努力により問題が解決された場合に、問題の原因がわかれば投稿して頂くと大変助かります。その情報はODEの初心者にとって重要なものです。ある程度たまりましたらFAQに掲 載したいと思いますのでご協力のほどよろしくお願いします。
コメント
またまた質問があります。
ヒンジジョイントを用いて2脚ロボットを製作しています。
ヒンジジョイントの力制御なんですが、膝関節に力を加えて膝を曲げていき、力を一気に解放することで前方に跳躍させたいのですが、どうしたらいいでしょうか?
いつもお世話になっていますが、今回もよろしくお願いします。
新年あけましておめでとうございます。
またお聞きしたいことが2つほどできましたので,勝手ながら質問させていただきます。
1つ目の質問ですが、
特定の物体に力を加えたときの挙動を見るため, dBodyAddTorque(body, x, y, z);を使用したのですが,思ってもない方向に力が加わってしまいます。
地面の上に直方体を生成して、その直方体に力を加えたのですが、x軸方向に力を加えるとなぜかy軸方向に直方体が動き,逆にy軸方向に力を加えるとx軸方向に動きます。
そしてz軸方向に力を加えると正負関係なく地面についた状態でゆっくりと回転してしまいます。
2つ目の質問ですが、
カプセル型の物体の端と別の物体とヒンジで固定すると、振り子のように動きますが、関節に摩擦が存在しないためいつまでも動き続けてしまいます。
そこで貴書のp33の摩擦モデルを使い,自然に止まるようにしたはずなのですが、一切動きに変化がありません。kp
2つとも特にエラーが出ていないので、問題点が分からず非常に困っています。このようなことが起きてしまう原因に心当たりがありましたらぜひともアドバイスよろしくお願いします。
こんにちは。
今、
ODEを使って車を円軌道、もしくは楕円軌道を描くように動かそうとしています。
そこで、ヒンジ2を使っているのですが、
Axis1の角度を変えて車の軌道を曲げることができなくて困っています。
具体的にどのように設定すればいいのでしょうか?
本を見たのですが、ちょっと良く分からなかったのでアドバイスいただけると助かります。
新年早々すみません。
ビルドして実行をしたところ、ビルドはできたのですが、下記のエラーが出てしまい、描画できませんでした。どうすれば解決できるのでしょうか?
ODE INTERNAL ERROR1
assertion”bNormalizationResult” failed in _dNormalize4()[../../include/ode/odemath.h]
よろしくお願いします。
はじめまして、logmanと申します。
こちらのサイトや先生の本(簡単!実践!ロボットシミュレーション)を参考に、ある制御プログラムを書いているのですがもう少しのところで行き詰っているので質問させてください。
細い棒の先にボール(球体)を乗せて、それを落とさないように棒をうまく動かすという制御プログラムを書いています。(倒立振子の様な感じです。)
ボールの姿勢を取得する時に、dBodyGetRotation(dBodyID, R) の形で書いているのですが、これだと
『’dBodyGetRotation’ : 関数に 2 個の引数を指定できません。』
となり、姿勢をうまく取得できません。
ボールのX,Y軸方向の傾きに対し、棒を動かして制御するように書いているので、それぞれのX,Y軸での傾きΘ、φを得る必要があるのですが、この場合はどのように書けばよいでしょうか。
ご教授お願いいたします。
こんにちは。初心者です。
今、簡単!実装!ロボットシミュレーションを読ませていただいているのですが、わからないところがあります。
p33の力制御のところなのですが、「操作量uから摩擦トルクtrqを引いた値をジョイントに与えるトルクとする」とあるのですが、ジョイントに与えるトルクがなんでu-trqになるのかがよくわかりません。
どういうことなのでしょうか?よろしくお願いします。
はじめましてこんにちわ。HAと申します。
質問させていただきたいのですが、
あるベクトルがあった時、そのベクトルを法線ベクトルとする
面の姿勢行列(絶対座標系で)を算出したいのですが、どうしたらよいでしょうか?
dRFrom2Axes()を使って、始点ベクトルと、終点ベクトルから算出した
姿勢行列は絶対座標系ではないようです。
ご指導よろしくお願いします。
この間は質問に答えていただきありがとうございました。
おかげで順調にプログラムを作れていたのですが、ちょっとした問題がでてきたため質問させていただきます。
demo_buggyの場合、タイヤと地面の位置を話した状態でバギーを生成していたのですが、それをタイヤと地面がギリギリあたらない位置(タイヤと地面の距離を0.01に設定)で生成したところ、開始時にバギーが少しはねるようになってしまいました。
ある程度離せば跳ねなくなるのですが、できることなら地面に接地した状態から始めたいと考えています。地面とタイヤは最悪離してもいいのですが、関節で繋がってはいないけど触れている(くいこんではいけないのでジオメトリは必要)物体も後々必要になってくるので、質問させていただきました。
物体同士に生じる反力は何によって起こるものなのでしょうか?なにか解決策がありましたら教えていただけたら幸いです。
初めまして。yamといいます。
コンピュータ言語の初心者なのでエラーの対処に困っています。
ODE本のP169~170にあるプログラム6.3の50行目のdsDrawBoxについてです。
どうしてもその部分だけ、
『1 番目の引数を ‘const dReal *’ から ‘const float []’ に変換できません。(新しい機能 ; ヘルプを参照)』となりビルドをすることができません。
解決法を教えて頂けないでしょうか。
ちなみにvisualC++を使い、ODE0.11.1を使っています。
お忙しい時期に申し訳ありませんが、
よろしくおねがいします。
今までは問題なく動作していたロボットアームが急に爆発してしまい,それ以降何度デバッグしても同じ現象が起きてしまうのですが,これは何が原因なのでしょうか?
(他のプログラムでもcommandを受け付けなくなるといった不具合が出ています.)
対処法などございましたら教えて頂きたいと思います.
まったくわからないので投稿させていただきました.
差動駆動型のロボット(前2輪,後1輪)でシミュレーションをしているのですが
摩擦の設定がまったくわかりません.
例えば,右車輪を動かして(左車輪は動かさず)
車体をその場で回転させたいのに,
左車輪が回転はしていないのですが滑っているように動いてしまいます.
なにか改善策はありますか?
ODE初心者です。いろいろとこのサイトを参考にODEをやらせてもらっていますが、質問があります。
今、6脚ロボットの跳躍シミュレーションをしようと考えているのですが、ODE上で可能なのでしょうか?
イメージとしてはバッタのジャンプのような形でシミュレーションできたらと考えています。
サンプルプログラムにはその場でホッピングするものはありましたが、前方へ跳躍できるようにしたいのです。
まだ構想を練っている段階で、具体的なところを決めていなくてアバウトな質問になってしまい申し訳ないのですが、返信よろしくお願いします。
ODEで色々シュミレートさせてもらってます。
質問なんですが、教科書にマニピュレータの運動学による位置座標や姿勢表示というのがありましたが、それの色々なデータを取って学習しているんですが、どうしても、ステップが早すぎて?かわかりませんが、重複したデータが重なりすぎて、データが膨大になってしまいます。キーボードで動かした関節角分動いた際のデータだけをとっていきたいのですが、良い方法かアドバイスお願いします。
(このままでは荒削りなデータとろうとしてもかなり細かくなります)
以前は失礼しました.
今回は違う件での質問なのですが,
ロボットアームに投球動作を行わせてボールを投げさせているのですが,
このアームに狙ったところを狙って投げるということは可能でしょうか?
初心者です。自作のプログラムをビルドして実行したところ、ビルドには成功したのですが、コマンドプロンプトがでてきて、以下のようなエラーが表示されてしまい、先に進みません。どういしたらよいのでしょうか?
ODE INTERNAL ERRER2
Bad argument(s) in dGeomSetBody()
どなたかよろしくお願いします。
自分で作ったプログラムをビルドしているのですが、以下のようなエラーがたくさん出てしまってビルドできません。
stray ‘\128’ in program|
stray ‘\128’ in program|
どうすれば解決できるのかわからないので、どなたか助けてください!!
返信ありがとうございます.
プログラム自体はODE本のプログラム6.3で
そのプログラムに本サイトに掲載されていたfeedbackプログラムを
入れているだけなのですが.
この場合は特別な設定などが必要なのでしょうか?
meltdownさん,
ご質問ありがとうございます.
すみませんが,この情報だけでは原因を特定できません.
プログラムミスのような気がしますが...
でむ
初めて質問させていただきます.
私は現在ロボットアームをODE上で作成しているのですが,
そのアームの各関節にかかるトルクを知るためにfeedback関数を使用し
デバッグするとfeedback->t1[NUM]にエラーが出て「式が評価できません」
と表示されます.これは何が悪いのでしょうか?
はじめまして,ODE初心者でいつもサイトを参考にさせていただいてる者です.いきなりで申し訳ありません.質問があるのですが,ジオメトリの速度を設定したいのですが方法が分かりません,何かよい方法はありませんか?お願いします.
初心者ですみません。下記の内容について教えてください。
ODE0.11.1のインストール法 (Visual C++ 2008 EE)で•B. ODEのダウンロード についての事なのですが、■以下のようにコマンドを打ち込む.カットアンドペースト の場合は以下の文字列を使用し,自分で打ち込む場合は2個の-(マイナス)文字がつながって見えるので,下画像を参照して注意深く打ち込んでください.
■ cd c:\ode-0.11.1\build ■ premake4 –with-demos 又は、ホームページのように打ち込んでいるのですが、Visual C++2008用のディレクトリが生成される.
となっているのですが、ディレクトリが生成されません。
コマンドプロンプトでC:¥Users¥jun>となっていてホームページのようにC:¥odeのように書き換えることが出来ずにいます。どのようにすればcドライブのodeに変更できるのでしょうか?教えて下さい。こんな基本的なことを聞いてすみません。
ODE内で干渉時に物体間に働く力を抜き出す方法はありますか?(AddForceなどでユーザが加える力ではなく,シミュレーション内で物体を拘束するために働いている力です)
例えば,床においてある物体が床から受ける垂直抗力などです.
現在dJointGetFeedback()を使い,各接触点に働く力の和をとっていますがうまくいっていません.和をとる以外の方法はありますか?
3自由度のマニピュレータでシミュレーションを色々してるんですが、サンプルから改良してますが、どうしてもマニピュレータがグルグル勝手に回りだしたりするのですが。。。
連続から急に不連続になってしまうのはわかるのですが、キーボード操作ではなく全自動で様々な動きを見たいのでキー制御なしではどうしたらいいでしょうか
関節についての質問です。
ヒンジ関節とスライダー関節を組み合わせた関節を作りたい
と思っています。ヒンジ関節のaxisとbodyの距離が
スライダー関節で変化するというイメージです。
ODEでは関節どうしを拘束することができないので
物体1-ヒンジ関節-物体2-スライダー関節-物体3
とするればよいことはわかるのですが,
この関節を1つの関節とみたいので,物体2は質量ゼロの仮想的物体
としたいのですが、ODEではできないようでした。
何かいい方法はありませんか?
こんにちは
調べてもなかなか分からないので教えてください.
ジョイントの種類に関わらず,ジョイントの数が40個を超すとビルドは通ってもプログラムが実行できないような気がします.
ODEにはジョイントの数などに制限があるのでしょうか?それとも私のプログラミングが間違っていて実行できないだけでジョイントの数は関係ないのでしょうか?
こんにちは。kanaと申します。
いつもこちらのHPで勉強させていただいております。
早速質問なのですが,ODEでプログラムを実行した際,「ODE Message 2: zero length vector(c:\略\src\rotation.cpp:113)」というメッセージが出てしまいます。
dReal型のとある変数に0を入れたためにこのメッセージが出るようです。メッセージが出てもプログラム自体は実行できますが,表示されないようにする方法はないのでしょうか(0以外の値を入れればいいと思うのですが,プログラム上,0が代入されることもあるので・・・)?
もしかしたらODEに直接関係ない質問かもしれませんが,よろしくお願いします。
LCP internal error s<=0について
このエラーが起きた後ではおきない場合と比べシミュレーションの結果が変わってきますか?よろしくお願いします.
4脚ロボットの歩行シミュレーションのプログラムを改造して6本足の蜘蛛のような感じにしたいと考えています。
今、脚を6本にすることは成功したのですが、歩行がうまくいかず脚2本のひざの関節より下が飛んでいってしまいます。
解決方法、アドバイスなどわかる人教えてください。
度々失礼します, 振り子に関しての件再びご質問があります.この前の質問で単振り子に関してはステップ数を小さくすることにより減衰しなくなりました.
二重振り子も同じようにしてある程度起こらなくなったのですが,30分程度では減衰せずに最初と同じように大きく振れ, カオス的な感じが見れるのですが, 3時間ほど経過した状態ではやはり目に見えてふり幅が小さくなり減衰してしまいました.
やはり, 二重振り子という特殊状況化ではある程度こうなってしまうのは仕方のないことなのでしょうか, よろしくお願いします.
http://brain.cc.kogakuin.ac.jp/~kanamaru/Chaos/DP/
最初の30分ほどはほぼこちらと同じ動きをします.
ご自分で作成されたプログラムということで,どのようにtexturepath.hをインクルードしているかわかりませんが,
#include “texturepath.h”の場合は,texturepath.hをodeのdemoから自分のソースコードと同じディレクトリにおいてください.
なお,texturepath.hの中身をみると
パスを ”../../drawstuff/textures”で指定しているので,ソースコードの2つ上のディレクトリ(フォルダ)にdrawstuffがないとエラーになります.
でむ
こんにちわ。歩行プログラム頑張ってやってみようと思います。
と、その前に『簡単!Visual C++ 2008 EEを使った自作ODE0.11.1プログラムのビルド法』を参考に自作のプログラムを動かしてみたのですが、『fatal error C1083: include ファイルを開けません。’texturepath.h’: No such file or directory』というエラーが出てしまいました。
ちなみに参考にしたプログラムは『amotor.cpp』です。
『簡単!…』のほうは『hello.cpp』を例にしていたので『texturepath.h』の文が無かっため動きました。
‘texturepath.h’とはなんですか?
長文すみません。回答お願いします。
前回、2つのボディを合体させる件について質問したのですが、
「固定」というジョイントを用いたのですが、シミュレーションには良くないと
本に記載されているのですが、どう良くないのでしょうか?
また、他の良い方法はありますか?
よろしく、お願いします。
はじめまして、AHと申します。
ジョイントについて質問なのですが、2つのボディを合体させる(例えば、直方体と球を合体させたマッチ棒のようなもの)ときにはどのようにしたら良いのでしょうか?
ご指導、お願いいたします。
物体(1cm四方の立方体)にdBodySetForceで力を加えて物体の運動状態をシミュレートしているのですが,同じ条件で力を加えても位置が毎回多少ずれます(0.3mmほど)
この程度の誤差は仕方がないのでしょうか?
もし正確にシミュレートを行うパラメータがあるのでしたら教えてください.