fkanehiro / choreonoid_ros_pkg

0 stars 10 forks source link

adds to new feature of the collisions data output #75

Closed hmatsushita closed 7 years ago

hmatsushita commented 7 years ago

接触情報の出力を追加しました。

以下のコマンドで取得することが可能です。

$ rostopic echo /choreonoid/[world name]/contacts/physics

出力は以下のメッセージタイプを使用しています。

http://docs.ros.org/jade/api/gazebo_msgs/html/msg/ContactState.html

fkanehiro commented 7 years ago

出力情報が正しいどうかを確認するために、1辺の長さが1mで重さが1kgの立方体をz=0の平面上に落とした場合の出力内容を教えてください。 それともう少し複雑なシミュレーション実行時にWorldRosItem有りの場合と無しの場合でどの程度のオーバヘッドがあるか確認して下さい。

hmatsushita commented 7 years ago

出力情報の検証について承知いたしました。 これまでのご指摘の内容および、Travis CI 環境でのビルドエラーを含め対応いたしますので、暫しお時間をください。

hmatsushita commented 7 years ago

詳細な調査は実施しておりませんが、Travis CI 環境でのビルドエラーにつきましては、simtrans のビルドに失敗している事が原因のようです。

ローカル環境で HEAD ブランチの simtrans をビルドしたところ、同様のエラーが生じました。

byte-compiling build/bdist.linux-x86_64/egg/simtrans/sdf.py to sdf.pyc
  File "build/bdist.linux-x86_64/egg/simtrans/sdf.py", line 215
    am.effortlimit = [float(limit.find('effort').text]
                                                     ^
SyntaxError: invalid syntax
fkanehiro commented 7 years ago

修正しました。

hmatsushita commented 7 years ago

ご対応ありがとうございます。 問題が解決されている事を確認いたしました。

hmatsushita commented 7 years ago

大変遅くなりましたが、改修を実施いたしました。 1m 辺で質量 1Kg の箱を平面上へ落とした際の、それぞれの出力を以下に記します。

fkanehiro commented 7 years ago
hmatsushita commented 7 years ago

collision?_name で gazebo が 3 つとなっているのは、URDF モデルの contact センサの指定において、任意の collision 名の指定が可能となっており、ここで指定した collision 名がリンク名の後に追加されている事によります。 現状の choreonoid への実装では、collision 名の指定を考慮していなかったため、ご指摘の差異が生じております。 WorldRosItem のプロパティで collision 名の指定を可能とする (\<link name>=\<collision name>, ... のような形式)、もしくは collision 名のサフィックスを指定可能とし自動生成した collision 名 (リンク名 + サフィックス) を付与する等の対応が考えられますが、いかがいたしましょう。

重心位置につきましては試行いたします。 ご教示ありがとうございます。

hmatsushita commented 7 years ago

collision 名の指定を省略した場合、リンク名の後に collision が付与されるようです。

hmatsushita commented 7 years ago

ボックスの重心位置を 0.48, 048, -0.48 へ変更し、落とす位置を x=1.0, y=1.0 へずらした設定でシミュレーションを実行いたしました。

いずれの接触座標もボックスと床の接触面内に収まっている事、指定した重心位置に掛かる力が集中している事を確認いたしました。

fkanehiro commented 7 years ago

total_torqueが違うのでなにか間違っているようです。

hmatsushita commented 7 years ago

ご確認および、ご指摘ありがとうございます。 調査・修正いたします。

hmatsushita commented 7 years ago

total_torque の結果に差異が生じている件ですが、モデルの重心位置を原点から変更した場合、choreonoid と gazebo の挙動に違いがあり結果に差異が出ております。 具体的には、重心位置を原点から変更した場合、choreonoid は重心位置に近い接触座標の force, torque の値が変化しますが、gazebo は重心位置に近い接触座標の force の値は変化するものの torque の値に大きな変化がなく、この事が原因で差異が生じております。

choreonoid の torque の値が先に添付したデータと異なるのは、モデルの momentsOfInertia の設定が gazebo (URDF) のモデルに設定した値と異なっており、これを修正した事によるものです。 不手際があり申し訳ございません。

自身の感覚としましては、重心が掛かっている接触点の torque が変化する choreonoid の方が正しい挙動のように見受けられますが、実際のところはどうなのでしょうか。

ご指摘、ご指示など頂ければ幸いです。 よろしくお願いいたします。

fkanehiro commented 7 years ago

どちらが正しいかはその定義(どの座標系で力・トルクを出ししているか)によるので一概には言えません。まずは、重心と落とす位置を一度に変えずに片方だけ変えるとどうなるか見てみてはどうでしょうか。

hmatsushita commented 7 years ago

承知いたしました。 もう少しバリエーションを増やして確認作業を実施いたします。

hmatsushita commented 7 years ago

すみません。 total_torque の件ではありませんが、collision?_name のフォーマット違いについてはいかがいたしましょうか。

fkanehiro commented 7 years ago

合わせられるところは合わせたほうがよいと思います。

hmatsushita commented 7 years ago

collision?_name の件についても承知いたしました。 安直ではありますが、取り急ぎ '::collision' の文字列をリンク名に続けて付与いたしました。

fkanehiro commented 7 years ago

マニュアルの更新もお願いします。

hmatsushita commented 7 years ago

マニュアルの更新、承知いたしました。

crankler commented 5 years ago

How can you get the true time stamp from this kind of topic in ROS ?