-
Notifications
You must be signed in to change notification settings - Fork 28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
enable to read custom limb name from .yaml file #249
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-coords
、-vector
以外に、sensors
replace_xmls
といったキーがあります。https://github.com/start-jsk/rtmros_tutorials/blob/303e2bf87d1f6582017c4fe2a145db5d1ce99bca/hrpsys_ros_bridge_tutorials/models/hrp2jsknts.yaml#L73
これらのキーを除かないと、hrpsys_ros_bridge_tutorialsをbuildしたときに、
というエラーがでます。
今後どんなキーが追加されるか分からないので、#232 のようにyamlファイルに
limbs:
を追加し、使用するlimbの一覧を取得できるようにした方がよいのではないでしょうか。There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
k-okada#1 に一つの修正案を作成しました。お役に立てれば幸いです。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
それぞれの役割について.
sensors
は、collada2eus
とadd_sensor_to_collada.py
で使われています.rosrun euscollada collada2eus -I ./HRP2JSKNTS.urdf -C ./hrp2jsknts.yaml -O /tmp/hrp2jsknts.l
とすると、yamlからセンサ情報を読んでセンサ情報を含んだeusモデルが生成されます。(この機能はrtmros系では使用されていません.)rosrun euscollada add_sensor_to_collada.py ./HRP2JSKNTS_WH.urdf -O /tmp/HRP2JSKNTS_WH_SENSORS.urdf -C ./hrp2jsknts.yaml
とすると、yamlからセンサやエンドエフェクタの位置を読んで、センサやエンドエフェクタの位置にセンサの質量0のリンクがついたURDFが生成されます。(この機能はrtmros系でも使用されていますが、https://github.com/start-jsk/rtmros_common/blob/57053f52d7deb5044607ab5ec12843dc6094514c/hrpsys_ros_bridge/src/HrpsysSeqStateROSBridge.cpp#L43 と機能が重複しているので、どちらか一方があれば十分だと思います。)replace_xmls
は、add_sensor_to_collada.py
で使われています。rosrun euscollada add_sensor_to_collada.py ./HRP2JSKNTS_WH.urdf -O /tmp/HRP2JSKNTS_WH_SENSORS.urdf -C ./hrp2jsknts.yaml
とすると、yamlの記述に従ってURDFのxmlのノードを追加・置換することで、gazeboシミュレーション用のパラメータの情報を追加します。(この機能はrtmros系でも使用されていますが、gazeboのシミュレーションを利用している人は少なくなっています)補足情報として、
rarm:
等は、https://github.com/start-jsk/rtmros_common/blob/master/hrpsys_ros_bridge/scripts/controller_config_converter.py でも使われています。rosrun hrpsys_ros_bridge controller_config_converter.py hrp2jsknts.yaml hrp2jsknts_controller_config.yaml
とすると、yamlの記述に従ってcontroller_config.yamlを生成します。(この機能はrtmros系でも使用されています)1)2)について
2点明確化・訂正させていただきます。
limbのデフォルト値を
rleg,lleg,rarm,larm,head,torso
としてあるので、従来通りrleg,lleg,rarm,larm,head,torsoしか使わない場合には、limb:に記述を追加する必要はありません。そのため、larm: を書くだけの場合にはlimb: に追加する必要はありません。hand:等を追加したい場合にはlimb: に追加しないといけないです。add_sensor_to_collada.py
は、sensors:
-end-coords:
links:
relpace_xmls:
といったキーを使っているため、一つのファイルに書く必然性はあります。hand:等を追加したい場合にlimb: に書かないといけないのは冗長だと僕も思います。また、現状の必要ないルール、必然性の無いファイル構成については、僕もB4の頃から同様の感想を抱いていました。そのため、自分は後方互換性等の責任を負う立場ではないこともあり、直して良いのでしたらどんどん直していきたいと思っていますし、自分用の個人ソフトウェアでは既にそうしています。一方で、後方互換性等を考えてなるべく今動いているプログラムをそのまま使えるようにすることを目指すなら、k-okada#1 のようにせざるをえないのかなあと思います。そこは、後方互換性等の責任を負う立場である @k-okada 先生にご判断いただきたいと考えております。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sensors
については、rtmros系とは異なる経路でモデルを変換するhttps://github.com/makabe0510/robot_assembler/blob/80fc1577f8ca3e0a684fa8af77dc8ea38b5de0b7/sample/SAMPLE_HUMANOID.urdf.euscollada.yaml#L57-L63 などでも使われています。There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
HIRONXJSKのgazeboシミュレーションもこの用途で
replace_xmls
を使っています。https://github.com/start-jsk/rtmros_tutorials/blob/303e2bf87d1f6582017c4fe2a145db5d1ce99bca/hrpsys_ros_bridge_tutorials/models/hironxjsk.yaml#L92-L223
https://github.com/start-jsk/rtmros_tutorials/blob/master/hironx_tutorial/doc/index.rst#hironxjsk-picking-demo
他のrtmros系ロボットに比べると、比較的最近まで動いていたかと思います(学校来れるようになってからあまり使ってませんが・・・)。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
だとすると,yamlにsensors 入っていても問題ないのでは?となると,問題はreplace_xmlsでいいかな.
ちなみにこれは何をしているんだろう?
https://github.com/start-jsk/rtmros_tutorials/blob/303e2bf87d1f6582017c4fe2a145db5d1ce99bca/hrpsys_ros_bridge_tutorials/models/hrp2jsknts.yaml#L158-L167
で,
{L,R}LEG_LINK{5,6}
のmass/ixx
を0にしている?これはもとのwrlでは
1e-03/1e-02
とあってコレオノイドはこのパラメータで動くけど,gazeboは0にしているのかなhttps://github.com/start-jsk/rtmros_tutorials/blob/303e2bf87d1f6582017c4fe2a145db5d1ce99bca/hrpsys_ros_bridge_tutorials/models/hironxjsk.yaml#L92-L223
みると逆か.コメントは重要だね.
はその通りなので,
ちなみにこの変換は wrl -> collada -> urdf ? wrl -> urdf 誰が
8.07e-05
の値を入れている collada_urdf か何かで以下のルールを入れると解消する?2)massの最小値は1e-3
nextageはこれで良さそう.HRP2は
はwrlにはない情報なのかな?指みたいに小さい物体の対応なのかな?
必要ないデータを読み込むのはかなり抵抗があるんだけど,
add_sensor_to_collada.py
-Cの引数を任意個とれるようにして,とできると,euscollada 的には嬉しいけど,副作用大きすぎるだろうか?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
こちらに関しては、ros/collada_urdf#35 で
transmission_interface
を出力できるようにしたのですが、この時点ではstart-jsk/rtmros_gazebo#247 の問題があって最新のcollada_urdfを使えなかったのと、HIRONXJSK以外のロボットにもtransmission_interface
を強制するのはアグレッシブすぎると感じたのですがhttps://github.com/start-jsk/rtmros_common/blob/57053f52d7deb5044607ab5ec12843dc6094514c/hrpsys_ros_bridge/cmake/compile_robot_model.cmake#L127 まで引数を渡す方法がすぐには実装できず、力尽きてしまった状態です。start-jsk/rtmros_gazebo#247 は治っていると思うので、HIRONXJSK以外のロボットにも
transmission_interface
を強制することにして、collada_urdf_jsk_patchでcollada_urdfの1.12.13を使うようにすれば(今は1.12.12)temp patch消せる気がしますが、そうしてみますか?wrl -> collada -> urdf だと思います。
これは、KawadaからもらったCADモデルから入っています。
https://github.com/start-jsk/rtmros_hrp2/blob/3ab613691eb742669c45c11458b95f047e463e63/hrp2_models/HIRONX/HIRONXmain.wrl#L373
真値かと言われると微妙な気もします。
これに関しては、あくまでgazebo用の最小値なので、やるならcollada_urdfに何かの引数を与えるとこのルールが適用されるみたいにするのが適切ですかね。
ただ、この値に関してはかなり怪しくて、ロボット全体の質量によって変わるような気がしていて、この値をロボットに関わらず画一的に適用するのはよくない気がしています。
例えば、https://answers.ros.org/question/288237/robot-arm-is-broken-link-by-link-in-gazebo/ では0.0001で動いたと報告されているのですが、HIRONXJSKでこうすると動きませんでした(ロボットがgazebo上で分解しました)。
個人的にはこれはありな気がします。何か重大な問題を見落としてるかもしれないですが・・・。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
gazeboのシミュレーションに所望の挙動をさせるためのパラチューンと、gazeboのシミュレーションに必要な設定です。
前者については、シミュレーションに所望の挙動をさせるために必要なパラメータは、シミュレーションアルゴリズムやロボットの形状、行わせる動作ごとに異なることが多いので、大本のwrlファイルを修正したりモデル変換時に一括でルールを入れれば解消するというものではありません。理想的なシミュレータが発明されない限りは、個別に設定してやらざるをえないと思います。後者については、gazebo_ros_controlを使うかrtmros_gazeboを使うのかによって、必要な設定が異なります。
ここではgazebo用にイナーシャの値を大きくしています。choreonoidでもこのパラメータでは動かないので、別の場所で修正しています。基本的には、もとのwrlには実機の制御用に実機の値を入れるべきだろうと思います。
HIRONXはgazebo_ros_controlを使うのでその通りですが、https://github.com/start-jsk/rtmros_tutorials/blob/303e2bf87d1f6582017c4fe2a145db5d1ce99bca/hironx_tutorial/models/HIRONXJSK.gazebo.xacro#L8 脚型がある場合はhrpsysをgazeboと使うためにrtmros_gazeboを使うので、設定が異なります。 https://github.com/start-jsk/rtmros_tutorials/blob/303e2bf87d1f6582017c4fe2a145db5d1ce99bca/hrpsys_gazebo_tutorials/robot_models/HRP2JSKNTS/HRP2JSKNTS.urdf.xacro#L5
wrl かと思います。 https://github.com/start-jsk/rtmros_hrp2/blob/3ab613691eb742669c45c11458b95f047e463e63/hrp2_models/HIRONXJSK/HIRONXJSKmain.wrl#L401
gazeboで、指みたいに小さいリンクが、比較的小さな力で物体と接触するときに、安定してシミュレーションするためのパラメータです。足のようにやや大きいリンクが地面と大きな力で接触するときには、異なるパラメータが必要になります。多点接触のように、指みたいに小さいリンクが、外界と大きな力で接触するときには異なるパラメータが必要になります。odeの限界という感があります。
特定のシミュレーター・動作に固有のデータを同じファイルに書くのには違和感を感じるため、
./hrp2jsknts.yaml ./hrp2jsknts-replace-xml.yaml
と分けるのは嬉しいです。下に書くような懸念点がありますが、どうにかなる範囲だと思います。https://github.com/search?q=org%3Astart-jsk+replace_xmls%3A&type=code
https://github.com/search?p=1&q=org%3Ajsk-ros-pkg+replace_xmls%3A&type=Code
を検索すると、rtmros_common, rtmros_tutorialsと、腱駆動で使われているようです。僕の知識不足のため、腱駆動は副作用が分かりません。rtmros_common, rtmros_tutorialsについては、全部変えることはそこまで難しくなく、その結果問題が発生した場合に対応するのも難しくありません。ただ、rtmros_commonで定義されているcmakeのマクロをrtmros_tutorialsで使う関係で、過渡期にはrtmros_commonのaptを使うかsourceを使うかによる混乱が予想されます。また、rtmros_common, rtmros_tutorialsはブランチを切っているOBが多いので(僕は切っていません)、それらのブランチのビルドを通すには
git merge origin master
をしないといけなくなり、そういうブランチはだいたいorigin/masterとconflictしているので十分に理解した人でないとgit merge origin master
ができない、という問題もあります。あと、add_sensor_to_collada.pyは
links:
というキーもとれて、以前は利用されていた形跡があります。今利用しているコードは見つけられませんでした。https://github.com/start-jsk/rtmros_choreonoid/blob/49da4ca7d8a1b1ad244f28b2ec3859be6f764607/hrpsys_ros_bridge_jvrc/models/jaxon_jvrc.yaml#L118