Open fkanehiro opened 10 years ago
From yk.at....@gmail.com on March 18, 2013 18:31:27
Owner: kei.ok...@gmail.com
From kei.ok...@gmail.com on March 18, 2013 19:29:56
これ,作って見ましたが,やっぱ必要あるでしょうか? 今,やろうとしているのは, http://code.google.com/p/hrpsys-base/issues/detail?id=69 関連だと思いますが, まず,HrpsysSeqStateROSBridge のROS側のインターフェースをどうするか,ということがあるかと思います. いまはfullbody_controllerを作っていますが,これ以外にlarm_controller, rarm_controllerを作るというのでいいでしょうか.その場合,その情報は誰が持っていて作り出しますでしょうか? https://code.ros.org/trac/wg-ros-pkg/browser/stacks/pr2_robot/trunk/pr2_controller_configuration/pr2_arm_controllers.yaml?rev=39922 のようなyamlをつくるか,あるいは,openraveのmanipulaotrのようにモデルの中に書き込む方式になるかと思います.
HRP4Cの場合 dae, eusのモデルはmanipulator的な情報をもっています.xmlは持っていません.( https://openrtp.jp/redmine/issues/2155)にリクエストを作りました. 現実的なのはyamlにかいてHrpsysSeqStateROSBridgeでそれを読んで,必要なコントローラ(JointTrajectoryAction)をつくってその時に,サービスでaddJointGroupをする,という流れになるでしょうか.
Attachment: addJointGroupFromConfig.patch
From kei.ok...@gmail.com on March 18, 2013 19:39:41
HRP4C.conf に以下が追加されていることを想定しています.
joint_groups : larm : L_SHOULDER_P,L_SHOULDER_R,L_SHOULDER_Y, L_ELBOW_P, L_WRIST_Y, L_WRIST_R, rarm : R_SHOULDERP,R\ SHOULDER_R,R_SHOULDER_Y, R_ELBOW_P, R_WRIST_Y, R_WRIST_R
From yk.at....@gmail.com on March 18, 2013 19:57:24
確かにROSの側の対応で良い気がしてきています。
その場合、HrpsysSeqStateROSBridgeを複雑にする方向ではなくて、joint_trajectoryをSeqStateROSBridgeから切り離して、 joint_trajectoryのactionだけを処理するノードを書いて、パラメータ(yaml)で fullbody用、larm用、rarm用、(head, torso, larm_torso, rarm_torso, ....)の各ノードを作るのはどうでしょうか? モデルを各ノードで持つことになるので、メモリ的にはきついかもしれませんが、それ以外はあまり依存していないようにも見えるのですがどうでしょうか? その方針でよければ少しコードはできつつあります。
From kei.ok...@gmail.com on March 18, 2013 20:20:20
それがいいと思います.ノードは1つでいい気がしますが.複数作るメリットはなにかあるでしょうか.
From yk.at....@gmail.com on March 20, 2013 19:57:04
非同期に動くのでノードも複数かなと思いましたが、 それほど同時に呼ばれるわけではないのであまり意味はないです。
yamlファイルを読んで一つのノードで複数のjoint_trajectory_actionを上げるノード HrpsysSeqJointTrajectoryBridgeを作りました。 addJointGroupを実行するタイミングがコネクトの後の必要があって、onActivatedの中で jointTrajectoryActionを開始しています。 これ以外は、SeqStateROSBridgeと同様な構成です。
プログラムの中で一つ機能がわからないものとしては、bodyに関節角度を入力して、 body->calcForwardKinematics(); を実行していますが、これを実行すると何が起こっているのでしょうか? この後で関節角度を読みだしたりしているのですが、入力したものと同じものが 出てきているようです。
From kei.ok...@gmail.com on March 20, 2013 20:26:29
非同期に動くのでノードも複数かなと思いましたが、 それほど同時に呼ばれるわけではないのであまり意味はないです。
action serverを作って,registerGoalCallbackで登録されているので,同時に 呼ばれても大丈夫になっているのではないでしょうか.
プログラムの中で一つ機能がわからないものとしては、bodyに関節角度を入力して、 body->calcForwardKinematics();
リンクの位置姿勢を更新していると思います.関節角度の入出力だけだと必要ないと思います.
細かいけどなんとなくHrpsysJointTrajectoryROSBridge? もっと細かくみると,HrpsysSeqROSBridgeとHrpsysStateROSBridgeなのかな.まぁ,いまはコミットされているものでいいか.
From kei.ok...@gmail.com on March 24, 2013 18:34:52
issue 69 でhrpsys側も対応したとおもうので,HrpsysSeqRosBridge経由で複数アームが個別に動くと思います.urkoがHIRONXでarm navigation 経由のいいサンプルを持っていると思うので,それで動作確認してcloseにしましょう.
From yk.at....@gmail.com on March 18, 2013 19:53:34
seqでgroupを作る方法で、serviceで設定する以外に、 configであらかじめ設定する方法が欲しいです。
Original issue: http://code.google.com/p/hrpsys-base/issues/detail?id=70