start-jsk / rtmros_common

OpenRTM - ROS interoperability packages
http://wiki.ros.org/rtmros_common
12 stars 52 forks source link

Add end effector frame to robot model #585

Open mmurooka opened 10 years ago

mmurooka commented 10 years ago

https://github.com/start-jsk/rtmros_tutorials/pull/102#issuecomment-60722058

YoheiKakiuchi commented 10 years ago

エンドエフェクタはどうやって表されていればいいかな?

以下が現状

urdf的には,名前が決まったfixed_jointでつながれたリンクを付けられれば現状と同じになる. VRMLにjoint_idをマイナスにして書いておいたらいいという提案はどうだろうか?

garaemon commented 10 years ago
snozawa commented 10 years ago

目的は、

でいいでしょうか。

できれば、破綻しない方法かつ現実的な作業量で終わる方法がいいと思います。 ばくぜんとですが、どこかのモデルファイルに後付けする方法よりは、極力モデル変換のフローの中でちゃんとサポートしてあげるのがいいです。

現実的な、のためにちょっと目的をブレークダウンするとすれば、

になりそう。後者は、robot_state_publisherがTFを出すのがベストというかんじでしょうか。 そうするとチョイスは前者のどこに書いておくか、になりそう。

一個調べきれてなくて教えてほしいですが、 colladaのmanipulatorタグに書いておくとよかたりしますか? 具体的には、

  1. colladaのmanipulatorタグにかいておいて、robot_state_publisherだしたらmanipulatorの座標系がTFにでてくるかどうか?
  2. 上記ができない場合、colladaのmanipulatorタグにかいておいたものを変換したら、robot_state_publisherでエンドエフェクタTFをだしてくれるようなurdfを出力してくれそうか?(ちょっと前みたらでてなさそう、xacroにする必要あり?)

が知りたいです。 もし1か2のどちらかができるのであれば、colladaのmanipulatorタグにエンドエフェクタ情報をかきさえすれば

と、かんたんで破綻しない線にのせられそう。 [1] https://github.com/fkanehiro/hrpsys-base/issues/232

garaemon commented 10 years ago

https://github.com/start-jsk/rtmros_tutorials/pull/102 でとりあえずtfは出せているので、これを採用すると、 次はrobot_state_publisherが出すと嬉しい、というのになります。 tfを出すプログラムは極力少なくしたい、というのがあるので、@snozawa さんの言うとおり、 何処に入れるか、という問題になりますね。

YoheiKakiuchi commented 10 years ago

tfが出るだけでいいなら,これでいいのではないか?(試してはいない)

YoheiKakiuchi commented 10 years ago
  1. colladaのmanipulatorタグにかいておいて、robot_state_publisherだしたらmanipulatorの座標系がTFにでてくるかどうか?
  2. 上記ができない場合、colladaのmanipulatorタグにかいておいたものを変換したら、robot_state_publisherでエンドエフェクタTFをだしてくれるようなurdfを出力してくれそうか?(ちょっと前みたらでてなさそう、xacroにする必要あり?)

書くプログラムとしては1.と2.はほぼ同じですね. 前にも書いたように,urdfとしてはfixed jointでつながった質量,形状を持たないリンクを付けることになるので.

garaemon commented 10 years ago

tfが出るだけでいいなら,これでいいのではないか?(試してはいない)

そうなると,VRMLのそのリンクを呼んで,eusのモデルを作る,とかが必要ですね.

YoheiKakiuchi commented 10 years ago

tfで出て欲しいframe_idは、larm_end_coordsのような書式でいいのかな?

ちょっと考えてみると、エンドエフェクタ情報とは何か

manipulatorは定義上、limbに対して1つではない。 定義通りに使う必要はあまりないかもしれない。 daeのmanipulatorは export-colladaの引数で与えることができる。

manipulatorのurdfのリンクへの変換は、単純では manipulatorの名前をlarm_end_coordsにして、urdfにmanipulatorをlinkとして変換するので良いか?

この場合、yamlのend-coordsも廃止、もしくは、larm-end-coords -> daeのmanipulator名を書くようにする。

garaemon commented 10 years ago

eusのIKもなにか変わりそうな気がするのですが、気のせいですか?