start-jsk / rtmros_tutorials

Tutorials for rtmros packages
6 stars 61 forks source link

HRP2JSKNTでHRP3HandもRvizに表示したい #72

Closed mmurooka closed 10 years ago

mmurooka commented 10 years ago

RvizにHRP2JSKNTのRobotModelを表示するときに、 HRP3Handも表示されるようにしたいです。

今はcolladaモデルがrobot_descriptionとしてセットされていて、 これには手はついていないです。

どのような方針がよろしいでしょうか。

garaemon commented 10 years ago

/joint_statesに全ての関節角度を出すのが良いと思います。

2014年7月22日火曜日、Masaki Murookanotifications@github.comさんは書きました:

RvizにHRP2JSKNTのRobotModelを表示するときに、 HRP3Handも表示されるようにしたいです。

今はcolladaモデルがrobot_descriptionとしてセットされていて、 これには手はついていないです。

どのような方針がよろしいでしょうか。

— Reply to this email directly or view it on GitHub https://github.com/start-jsk/rtmros_tutorials/issues/72.

from iPhone

mmurooka commented 10 years ago

1. robot_descriptionとして使うハンド付きモデルをどのように生成するか 2. 全関節の/joint_stateをどのようにpublushするか の2つの問題があることに気づきました.

/joint_statesに全ての関節角度を出すのが良いと思います。

は,どのようにやりましょう. 指関節の/joint_statesだけ,別ノードがpublishするようになるのでしょうか.

k-okada commented 10 years ago

はい.そういう方式(atlasのシミュレータもそうなっていなかったっけ?)がいいとおもいます.

mmurooka commented 10 years ago

gazebo上のatlasやHRP2はそうなっています. この場合,https://github.com/start-jsk/rtmros_gazebo/issues/97 のような問題が生じてしまうので, https://github.com/jsk-ros-pkg/jsk_pr2eus/pull/40 が必要になります. 今はclosedなところにあるHRP3HandControllerというrtcがハンドを動かしていますが, このプログラムがハンドの/joint_statesをpublishすべきということで合っていますでしょうか.

robot_descriptionについてはどうしましょうか. 今はハンドなしcolladaモデルをrobot_descriptionにセットしていますが, ハンド付きのurdfを作ってそれをrobot_descriptionにするようにするのでしょうか. もしかしてロボット本体とハンドで別のrosparamにするという選択肢もあるのでしょうか.

k-okada commented 10 years ago

今はclosedなところにあるHRP3HandControllerというrtcがハンドを動かしていますが, このプログラムがハンドの/joint_statesをpublishすべきということで合っていますでしょうか.

冗長ですがHandCotrollerROSBridgeをつくって,corba->rosと変換するものを作るというのが 他のものと比べた時(システム構成図を書いた時には)美しく見えますね.クローズドなところにあるし, そのまま/joint_statesをpublishしてもいいけど,

もしかしてロボット本体とハンドで別のrosparamにするという選択肢もあるのでしょうか.

そうですね.ハンド有りモデルにした時にどれぐらい影響力(副作用)あるかな.hrpsys系はModelLoaderをみるので, そこはハンドなしのwrl/colladaでOKとして,ROS系でモデルでなにか変わる所,たとえばrobot_state_publisherは robot_descriptionみているから,robot_descriptionにハンドをいれるか,ハンドを別のparamに入れたらその分 state_publisherを入れないと行けないね.

ちょっと,どっちにしたらいいか正解はわからない.ハンドが変わっていく(robotiq, righthand)ことを考えると別にしておいたほうがいいか.

2014-07-23 1:57 GMT+09:00 Masaki Murooka notifications@github.com:

gazebo上のatlasやHRP2はそうなっています. この場合,start-jsk/rtmros_gazebo#97 https://github.com/start-jsk/rtmros_gazebo/issues/97 のような問題が生じてしまうので, jsk-ros-pkg/jsk_pr2eus#40 https://github.com/jsk-ros-pkg/jsk_pr2eus/pull/40 が必要になります. 今はclosedなところにあるHRP3HandControllerというrtcがハンドを動かしていますが, このプログラムがハンドの/joint_statesをpublishすべきということで合っていますでしょうか.

robot_descriptionについてはどうしましょうか. 今はハンドなしcolladaモデルをrobot_descriptionにセットしていますが, ハンド付きのurdfを作ってそれをrobot_descriptionにするようにするのでしょうか. もしかしてロボット本体とハンドで別のrosparamにするという選択肢もあるのでしょうか.

— Reply to this email directly or view it on GitHub https://github.com/start-jsk/rtmros_tutorials/issues/72#issuecomment-49767555 .

garaemon commented 10 years ago

ハンド用のbridgeを作る、に+1です

2014年7月23日水曜日、Kei Okadanotifications@github.comさんは書きました:

今はclosedなところにあるHRP3HandControllerというrtcがハンドを動かしていますが, このプログラムがハンドの/joint_statesをpublishすべきということで合っていますでしょうか.

冗長ですがHandCotrollerROSBridgeをつくって,corba->rosと変換するものを作るというのが 他のものと比べた時(システム構成図を書いた時には)美しく見えますね.クローズドなところにあるし, そのまま/joint_statesをpublishしてもいいけど,

もしかしてロボット本体とハンドで別のrosparamにするという選択肢もあるのでしょうか.

そうですね.ハンド有りモデルにした時にどれぐらい影響力(副作用)あるかな.hrpsys系はModelLoaderをみるので, そこはハンドなしのwrl/colladaでOKとして,ROS系でモデルでなにか変わる所,たとえばrobot_state_publisherは robot_descriptionみているから,robot_descriptionにハンドをいれるか,ハンドを別のparamに入れたらその分 state_publisherを入れないと行けないね.

ちょっと,どっちにしたらいいか正解はわからない.ハンドが変わっていく(robotiq, righthand)ことを考えると別にしておいたほうがいいか.

2014-07-23 1:57 GMT+09:00 Masaki Murooka <notifications@github.com javascript:_e(%7B%7D,'cvml','notifications@github.com');>:

gazebo上のatlasやHRP2はそうなっています. この場合,start-jsk/rtmros_gazebo#97 https://github.com/start-jsk/rtmros_gazebo/issues/97 のような問題が生じてしまうので, jsk-ros-pkg/jsk_pr2eus#40 https://github.com/jsk-ros-pkg/jsk_pr2eus/pull/40 が必要になります. 今はclosedなところにあるHRP3HandControllerというrtcがハンドを動かしていますが, このプログラムがハンドの/joint_statesをpublishすべきということで合っていますでしょうか.

robot_descriptionについてはどうしましょうか. 今はハンドなしcolladaモデルをrobot_descriptionにセットしていますが, ハンド付きのurdfを作ってそれをrobot_descriptionにするようにするのでしょうか. もしかしてロボット本体とハンドで別のrosparamにするという選択肢もあるのでしょうか.

— Reply to this email directly or view it on GitHub < https://github.com/start-jsk/rtmros_tutorials/issues/72#issuecomment-49767555>

.

— Reply to this email directly or view it on GitHub https://github.com/start-jsk/rtmros_tutorials/issues/72#issuecomment-49823431 .

from iPhone

snozawa commented 10 years ago

冗長ですがHandCotrollerROSBridgeをつくって,corba->rosと変換するものを作るというのが 他のものと比べた時(システム構成図を書いた時には)美しく見えますね.

私もbridgeに1+です。 理想としては、ハンドが別物だとすると、ロボット本体のseq, RobotHardware, iobがあるのと同様に ハンド用seq, RobotHardwre, iobがあってもいいかもしれません。 関連するissueをはります

そうですね.ハンド有りモデルにした時にどれぐらい影響力(副作用)あるかな.hrpsys系はModelLoaderをみるので, そこはハンドなしのwrl/colladaでOKとして,ROS系でモデルでなにか変わる所,たとえばrobot_state_publisherは robot_descriptionみているから,robot_descriptionにハンドをいれるか,ハンドを別のparamに入れたらその分 state_publisherを入れないと行けないね.

ハンドがつながるべきかどうかは、使うプログラムの中でつながる必要があるかいなか、判断するのはいかがでしょうか。 gazeboなどsimulatorはつながっている必要があるので、ハンド・本体がつながったモデルになってる必要がありますね。 一方で、動作生成(hrpsys-baseの中でのIKなど)ではハンドと本体は別でもほぼ問題ないため、 ハンドなしwrl/colladaとハンド単体wrl/colladaを使うので問題ないきがします。

joint_statesをかんがえるとどちらでしょうか。 この値を参照するときに、ハンド・本体でjoint_statesがつながっている必要ないのであれば、 別にするのはかなり有力だと思います。

snozawa commented 10 years ago

クローズドなところにあるし, そのまま/joint_statesをpublishしてもいいけど,

加えて、コントローラPCの体内でROSが走らないこともあるので、やはりRTCがjoint_staesをpublishするよりbridge作戦が有効に思います。

mmurooka commented 10 years ago

加えて、コントローラPCの体内でROSが走らないこともあるので、やはりRTCがjoint_staesをpublishするよりbridge作戦が有効に思います。

これは決定的な要因ですね.bridge作戦が良さそうです.

この値を参照するときに、ハンド・本体でjoint_statesがつながっている必要ないのであれば、

joint_statesをかんがえるとどちらでしょうか。 この値を参照するときに、ハンド・本体でjoint_statesがつながっている必要ないのであれば、 別にするのはかなり有力だと思います。

基本的なことかと思いますが, 別にした場合はRviz上で腕を動かした時に手が付いて来るものでしょうか.何か追加の変更が必要でしょうか.

YoheiKakiuchi commented 10 years ago

モデルの話ですが、 robot_state_publisher (/joint_states -> /tfに変換、 /robot_descriptionを必要とする)となっていて、 ハンドが入ったモデル(urdf or collada)を用意しないのなら、 /lhand_robot_description, lhand_robot_state_publisher を作って、armの先端からhandへのtfを出す という作戦になります。この場合、ハンドの出す/joint_statesは/lhand_joint_statesでも問題ない(とくに何も変わらない)。

もしかしてロボット本体とハンドで別のrosparamにするという選択肢もあるのでしょうか.

これが前者の作戦ですね。

ハンドが入ったモデルを用意する場合は、robot_descriptionもひとつになるので、/joint_statesに複数が トピックを出すしかないです。これも、robot_state_publisherを拡張して複数の/joint_statesを受けられるように するという作戦もありますが。(joint_state_publisherはそうなっている) この場合、wrlのレベルでつながったものを作っても問題ないのかな? ハンド用のjoint_idを後ろの方(体のjoint_idが終わってから)に振っておけば問題ない? 現状でこのようになっているロボット(関節)はあるんだっけ?

garaemon commented 10 years ago

tfをしゃべるノードの数は少なくしたいので、robot_state_publisherは一つでrobot_descriptionも一つがいいと思います

garaemon commented 10 years ago

robot_state_publisherを拡張して複数の/joint_statesを受けられるように するという作戦もありますが

robot_state_publisherがひとつ、robot_descriptionがひとつ、複数のsensor_msgs/JointState/joint_statesに流れてくる、というのは現状うごかないのですか?

mmurooka commented 10 years ago

tfをしゃべるノードの数は少なくしたいので、robot_state_publisherは一つでrobot_descriptionも一つがいいと思います

ということで,ハンド付きのモデルを作ってみましょうか.

wrlのレベルでつながったものを作っても問題ないのかな?

wrlかurdfかどちらがいいでしょうか. urdfならrtmros_gazeboでやっていてすぐできそうです. HRP2の本体,HRP3Handのurdfは既にhrpsys_ros_bridge_tutorials/modelsの下にできるようになっているので, xacroファイルをhrpsys_ros_bridge_tutorials/modelsの下に置いてハンド付きurdfが生成されるようにするのがよろしいでしょうか.

garaemon commented 10 years ago

urdfならrtmros_gazeboでやっていてすぐできそうです.

ならurdfで始めたらよいのではないでしょうか。

xacroファイルをhrpsys_ros_bridge_tutorials/modelsの下に置いてハンド付きurdfが生成されるようにするのがよろしいでしょうか.

sounds good

YoheiKakiuchi commented 10 years ago

robot_state_publisherがひとつ、robot_descriptionがひとつ、複数のsensor_msgs/JointStateが/joint_statesに流> れてくる、というのは現状うごかないのですか?

これは動くと思います。

garaemon commented 10 years ago

robot_state_publisherがひとつ、robot_descriptionがひとつ、複数のsensor_msgs/JointStateが/joint_statesに流> れてくる、というのは現状うごかないのですか?

これは動くと思います。

robot_state_publisherを拡張して複数の/joint_statesを受けられるように するという作戦もありますが。

これはどういう意味でしょうか?

mmurooka commented 10 years ago

xacroファイルをhrpsys_ros_bridge_tutorials/modelsの下に置いてハンド付きurdfが生成 されるようにするのがよろしいでしょうか.

sounds good

https://github.com/start-jsk/rtmros_tutorials/pull/74 でやりました. デフォルトでrobot_descriptionとしても使われます.

mmurooka commented 10 years ago

いったんcloseします. robot_descriptionはハンド付きモデルができるようになったので, 残りのtodoは

冗長ですがHandCotrollerROSBridgeをつくって,corba->rosと変換するものを作る

です.