Open orikuma opened 9 years ago
https://github.com/start-jsk/rtmros_tutorials/blob/master/hrpsys_ros_bridge_tutorials/catkin.cmake#L257
でDEPEND
を書いてはいるのですが,
ターゲットをmakeするルールを書かないとエラーになってしまうんですね.
hrp2jsknt_ros_bridge.launchやHRP3HAND_R.urdfをmakeするルールはうまく書けるでしょうか.
取り敢えずgen_hand_attached_hrp2_model.shでビルド前に依存するモデルが生成されるまで待つことでcaktin_makeが通るようになりましたが, これは正しい解決策ではないように思います.
問題としては
ということで, 排他制御のようなことをするかcmakeによるconfiguration時に依存するファイルの生成規則を網羅的にtargetとして記述することが出来れば良さそうなのですが, 方法がよくわかりませんでした. より良い解決策をご存じの方は教えていただけますと幸いです.
それと{robotmodel}_WH.urdfはHRP23HAND_L/R.urdfに依存しているようですがgen_hand_attached_hrp2_model.shにはハンドモデルの情報が渡されていないようです. これは正しいのでしょうか? > @mmurooka
launchがconfigure_fileで生成されているためtargetにならず生成規則が定義されない
launchに依存しているものがありますか? launchに依存するのは、なんとなくおかしそうに思います。
gen_hand_attached_hrp2_model.shを見ると{robotname}_ros_bridge.launchのCOLLADA_FILEをsedで置換するために依存しているようです.
全体的に、ちょっと複雑にしすぎてる気がするので、もとファイルが何で、どういう変換をして、そのためどういう依存関係が必要で、と整理しましょう
すくなくとも、launchは同じcmakeでつくってるにもかかわらず、一旦かきだして、そのあとsedして、それのためにwaitが必要で、と脱線している気がします すくなくとも、この点だけに関しては、最初のlaunch書き出しでcolladafileを設定できるようにならないか、吟味しましょう
@snozawa さん
やりたいことは, HRP2JSKNTでHRP3HandもRvizに表示したい( https://github.com/start-jsk/rtmros_tutorials/issues/72 )だったのですが, どのようにするのがよかったのか相談させてください.
(i)ハンドのjoint_statesを出す (ii) ハンド付きのHRP2モデルをつくってrobot_descriptionにする をやる必要があって,
(ii)のためのPRが https://github.com/start-jsk/rtmros_tutorials/pull/74 ですが, @orikuma さんにご指摘頂いたエラーが出るようになってしまっていました.
このPRの中でやっていることは,以下の3つです. (a) HRP2JSKNTのurdfモデルからL/RARM_LINK6を無くす (b) xacro( https://github.com/start-jsk/rtmros_tutorials/blob/master/hrpsys_ros_bridge_tutorials/models/HRP2JSKNT.urdf.xacro )でHRP2JSKNTのurdfモデルとHRP3HAND_L/RのurdfモデルをくっつけてHRP2JSKNT_WH.urdfとして出力する (c) ros_bridgeを挙げるlaunchファイルで設定するrobot_descriptionを,HRP2JSKNT.daeではなく,HRP2JSKNT_WH.urdfに変える (a)-(c)を既存のcompile_robot_model.cmakeを書き換えずにやるために, 生成されたファイルを後から書き換える作戦で,以下を準備して呼ぶようにしていました. https://github.com/start-jsk/rtmros_tutorials/blob/master/hrpsys_ros_bridge_tutorials/models/gen_hand_attached_hrp2_model.sh これを呼ぶ際に依存するのは,HRP2JSKNT.urdf,HRP3HAND_L/R.urdf,hrp2jsknt_ros_bridge.launch,です,というのが以下の2つの回答になります.
それと{robotmodel}_WH.urdfはHRP3HAND_L/R.urdfに依存しているようですがgen_hand_attached_hrp2_model.shにはハンドモデルの情報が渡されていないようです. これは正しいのでしょうか? > @mmurooka
launchに依存しているものがありますか? launchに依存するのは、なんとなくおかしそうに思います。
ただ,以下のような他のやり方もあった気がして,もしかしたらそちらのほうがよかったのかも,とも思います.
compile_robot_model.cmake を書き換えて,後からxacroやsedをしないでいいようにする
そうですね。 他、依存する3ファイルのうちhrp2jsknt_ros_bridge.launchに関しては、 (何がベストかは一旦おいておいて)選択肢として次があります。
あとh、ハンドをつける部分に関しては、VRMLの時点でつける以外の方法も確率しておくといいとおもうので、 今回もその線でかんがえてみましょう。 例えば、STAROや次ロボットなど、元のVRMLファイルにないようなハンドのを後づけしたくなります。
まず付け方ですが、
(a) HRP2JSKNTのurdfモデルからL/RARM_LINK6を無くす
ロボットの手首リンクを削除せず、手首リンクを残しつつ、 ハンドはfixed jointのようなものでその先端に接続する、のは可能かな? RARM_LINK6 => (fixed joint) => HAND_PALM => ... というかんじ HRP2JSKNTの場合は幸い削除ですみますが、STAROなどの場合は、手首リンクの 先端にハンドを後付けできるとうれしいかも。
ロボットの手首リンクを削除せず、手首リンクを残しつつ、 ハンドはfixed jointのようなものでその先端に接続する、のは可能かな?
可能です. xacroファイルに以下を書いておけばうまくいくはずです. ロボット本体のurdfのインクルード, ハンドのurdfのインクルード, ロボット本体とハンドを繋げるfixed joint
HRP2は,ARM_JOINT6がロボット本体側とハンド側の両方にあるので, リンクを消す必要があって,xacroだけでは対処できるsedを使っています.
HRP2は,ARM_JOINT6がロボット本体側とハンド側の両方にあるので
これは、リンクの名前がかぶってるという話だっけ? 同じ形状もあるんだっけ? ハンドのモデルの方を、ARM_JOINT6の先に変更してリンク名を変更すればいいのかな?
すみません,JOINT6ではなくLINK6でした. たぶんJOINTは被っていなかったと思います.
LINK6については, ハンドモデルとロボット本体モデルで形状が異なって, ロボット本体モデルのLINK6は手首で切れている形状で, ハンドモデルのLINK6は,手の甲の部分まで入っているような形状で, ロボット本体モデルのLINK6がハンドモデルのLINK6に含まれるようになっています.
ロボット本体モデルのLINK6は手首で切れている形状で, ハンドモデルのLINK6は,手の甲の部分まで入っているような形状で, ロボット本体モデルのLINK6がハンドモデルのLINK6に含まれるようになっています.
この、ハンド側の形状を変更するのに何か問題があるんだっけ? 理解としては、LINK6(本体モデル)とLINK6(ハンドモデル)に共通部分がある と思っているのだけど、ハンドモデルから共通部分を抜いて、名称を変更するという作戦はどうかな?
この、ハンド側の形状を変更するのに何か問題があるんだっけ?
VRMLかcolladaのメッシュファイルを直接編集して,共通部分を取り除く作業になりそうで, 一度きりの作業なので頑張って上手くできたらそれでもよさそうですが,結構大変なのかなと思っていました.
fixed jointでつながってるロボットの形状がかぶっていると、gazeboで問題があるんだっけ? (自己干渉してることになる、とか)
gazeboではとりあえず問題ないような気がします.
少なくとも現状のデフォルトでは,自己干渉を見ないようになっているので大丈夫なはずで, 自己干渉を見るようにするとどうなるかは,やってみないと分からないです.
gazebo以外で問題ないところはあるかな? ないのであれば、
でいいのではないでしょうか?
HRP2の場合は, リンク名が被っているので, いずれにしてもsedでリンク名を変えることが必要になります.
ちらと見ましたが,メッシュの編集はそれほど難しくなくできると思います. リンク名もハンドのwrl修正するだけじゃないのかな?
ロボットの手首側もハンド側も編集なしで、そのままfixed jointで接続してつかう
リンク名もハンドのwrl修正するだけじゃないのかな?
はい,そういう意味ならそうでした. メッシュの編集が問題なさそうなら,これでsedはいらなくなりますね.
ついでに以下の25行目のように, https://bitbucket.org/osrf/drcsim/src/f9100a51e04db50dcdd7a823b74ccafa78449d98/drcsim_gazebo/launch/atlas.launch?at=default#cl-25 実行時にその場でxacroを走らせてrobot_descriptionにするのが, 流行りみたいなので,そうすればmake時にはxacroをやる必要もなくて, さらに,以下のような仕様にしてしまえば,launchファイルも書き換える必要がなくなって, 結局make時には何もしなくてよくなります.
launchの引数を与える sedしている部分はhrp2jsknt_ros_bridge.launchの外から与えられるもののあので、上記の変更でなくて、実行時にhrp2jsknt_ros_bridge.launchの引数でHRP2JSKNT_WH.urdfを与えてもいいですね。
というのもスマートでありかもしれないですね.
実行時にその場でxacroを走らせてrobot_descriptionにするのが, 流行りみたいなので,そうすればmake時にはxacroをやる必要もなくて, さらに,以下のような仕様にしてしまえば,launchファイルも書き換える必要がなくなって, 結局make時には何もしなくてよくなります.
に沿って,https://github.com/start-jsk/rtmros_tutorials/pull/96 でmake時にxacroとlaunchの書き換えをやらないようにしました. これでhttps://github.com/start-jsk/rtmros_tutorials/pull/86 は必要なくなったと思います.
以下の(b)と(c)がなくなったことになって,残りは(a)だけですがこれはおおもとのVRMLの変更が必要そうです.
(a) HRP2JSKNTのurdfモデルからL/RARM_LINK6を無くす (b) xacro( https://github.com/start-jsk/rtmros_tutorials/blob/master/hrpsys_ros_bridge_tutorials/models/HRP2JSKNT.urdf.xacro )でHRP2JSKNTのurdfモデルとHRP3HAND_L/RのurdfモデルをくっつけてHRP2JSKNT_WH.urdfとして出力する (c) ros_bridgeを挙げるlaunchファイルで設定するrobot_descriptionを,HRP2JSKNT.daeではなく,HRP2JSKNT_WH.urdfに変える
この件どうなったでしょうか. 最新のmaster(commit da3de85fa2787429dc434c9f6c250e6dd04a399e)では まだ--make-args -j1しないと以下のエラーが起こる気がします.
[ 60%] Generating /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNT_WH.urdf
/home/iori/ros/hydro/src/rtm-ros-robotics/openrtm_common/openhrp3/bin/export-collada /home/iori/prog/OpenHRP/etc/HRP2JSKNTS_for_OpenHRP3/HRP2JSKNTSmain.wrl was successfully exported to /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS.dae
/home/iori/ros/hydro/src/rtm-ros-robotics/openrtm_common/openhrp3/bin/export-collada /home/iori/prog/OpenHRP/etc/HRP2JSKNTS_for_OpenHRP3/HRP2JSKNTSmain.wrl was successfully exported to /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS.dae
[ 60%] [ 60%] Generating /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS.urdf, /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_meshes
Generating /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_L.urdf, /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_L_meshes
;; Adding gazebo description
;; Use assimp export
;; output file is: /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_L.urdf
;; mesh_prefix is: package://hrpsys_ros_bridge_tutorials/models/HRP3HAND_L_meshes
;; Mesh output directory is: /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_L_meshes
;; Input file is: /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_L.dae
Traceback (most recent call last):
File "/opt/ros/hydro/share/xacro/xacro.py", line 60, in <module>
xacro.main()
File "/opt/ros/hydro/lib/python2.7/dist-packages/xacro/__init__.py", line 657, in main
process_includes(doc, os.path.dirname(args[0]))
File "/opt/ros/hydro/lib/python2.7/dist-packages/xacro/__init__.py", line 270, in process_includes
raise XacroException("included file \"%s\" could not be opened: %s" % (filename, str(e)))
xacro.XacroException: included file "/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_R.urdf" could not be opened: [Errno 2] No such file or directory: '/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_R.urdf'
;; Adding gazebo description
;; Use assimp export
;; output file is: /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS.urdf
;; mesh_prefix is: package://hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_meshes
;; Mesh output directory is: /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_meshes
;; Input file is: /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS.dae
make[2]: *** [/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNT_WH.urdf] エラー 1
make[1]: *** [rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/CMakeFiles/HRP2JSKNT_xacro_model_generate.dir/all] エラー 2
make[1]: *** 未完了のジョブを待っています....
[ 60%] Generating /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS.urdf, /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_meshes
[ WARN] [1418569446.424804920]: could not find collada joint kmodel1/jointsid1000!
;; Adding gazebo description
;; Use assimp export
;; output file is: /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS.urdf
;; mesh_prefix is: package://hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_meshes
;; Mesh output directory is: /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_meshes
;; Input file is: /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS.dae
Traceback (most recent call last):
File "/opt/ros/hydro/share/xacro/xacro.py", line 60, in <module>
xacro.main()
File "/opt/ros/hydro/lib/python2.7/dist-packages/xacro/__init__.py", line 657, in main
process_includes(doc, os.path.dirname(args[0]))
File "/opt/ros/hydro/lib/python2.7/dist-packages/xacro/__init__.py", line 270, in process_includes
raise XacroException("included file \"%s\" could not be opened: %s" % (filename, str(e)))
xacro.XacroException: included file "/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_R.urdf" could not be opened: [Errno 2] No such file or directory: '/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_R.urdf'
make[2]: *** [/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNT_WH.urdf] エラー 1
make[1]: *** [rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/CMakeFiles/HRP2JSKNT_WH_SENSORS.urdf_generate.dir/all] エラー 2
[ WARN] [1418569446.610216411]: could not find collada joint kmodel1/jointsid1000!
[ WARN] [1418569446.662309304]: could not find collada joint kmodel1/jointsid1000!
[ 60%] Generating /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_body.urdf
sed: -e expression #1, char 1: 不明なコマンド: `,'
expr: 構文エラー
make[2]: *** [/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_body.urdf] エラー 1
make[1]: *** [rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/CMakeFiles/HRP2JSKNTS_model_generate.dir/all] エラー 2
[ 60%] Generating /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_body.urdf
[ 60%] Generating /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_WH.urdf
Traceback (most recent call last):
File "/opt/ros/hydro/share/xacro/xacro.py", line 60, in <module>
xacro.main()
File "/opt/ros/hydro/lib/python2.7/dist-packages/xacro/__init__.py", line 657, in main
process_includes(doc, os.path.dirname(args[0]))
File "/opt/ros/hydro/lib/python2.7/dist-packages/xacro/__init__.py", line 270, in process_includes
raise XacroException("included file \"%s\" could not be opened: %s" % (filename, str(e)))
xacro.XacroException: included file "/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_R.urdf" could not be opened: [Errno 2] No such file or directory: '/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_R.urdf'
make[2]: *** [/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_WH.urdf] エラー 1
make[1]: *** [rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/CMakeFiles/HRP2JSKNTS_xacro_model_generate.dir/all] エラー 2
make: *** [all] エラー 2
Invoking "make" failed
また, catkin_make --only-pkg-with-deps hrpsys_ros_bridge_tutorials --make-args -j1 しても, 以下のエラーでmakeが通らなくなっている気がします. attach_sensor_and_endeffector_to_hrp2jsk_urdfが問題の箇所のようですが, 解決するにはどうすればいいでしょうか.
Scanning dependencies of target pr2eus_roseus_ALL_GEN_OUTPUT_FILES_eus
[ 71%] Built target pr2eus_roseus_ALL_GEN_OUTPUT_FILES_eus
Scanning dependencies of target HRP2JSKNTS_WH_SENSORS.urdf_generate
[ 72%] Generating /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_WH_SENSORS.urdf
Traceback (most recent call last):
File "/home/iori/ros/hydro/src/jsk-ros-pkg/jsk_model_tools/euscollada/scripts/add_sensor_to_urdf.py", line 69, in <module>
main(sys.argv[1:])
File "/home/iori/ros/hydro/src/jsk-ros-pkg/jsk_model_tools/euscollada/scripts/add_sensor_to_urdf.py", line 63, in main
parent, child, input_file, output_file)
File "/home/iori/ros/hydro/src/jsk-ros-pkg/jsk_model_tools/euscollada/scripts/add_sensor_to_urdf.py", line 45, in updateURDF
xdoc = minidom.parse(input_file)
File "/usr/lib/python2.7/xml/dom/minidom.py", line 1920, in parse
return expatbuilder.parse(file)
File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 924, in parse
result = builder.parseFile(fp)
File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 211, in parseFile
parser.Parse("", True)
xml.parsers.expat.ExpatError: no element found: line 1, column 0
make[2]: *** [/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_WH_SENSORS.urdf] エラー 1
make[1]: *** [rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/CMakeFiles/HRP2JSKNTS_WH_SENSORS.urdf_generate.dir/all] エラー 2
make: *** [all] エラー 2
Invoking "make" failed
明日見てみます ちょっと待ってくださいね
2014年12月15日月曜日、orikumanotifications@github.comさんは書きました:
この件どうなったでしょうか. 最新のmaster(commit da3de85 https://github.com/start-jsk/rtmros_tutorials/commit/da3de85fa2787429dc434c9f6c250e6dd04a399e )では まだ--make-args -j1しないと以下のエラーが起こる気がします.
[ 60%] Generating /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNT_WH.urdf /home/iori/ros/hydro/src/rtm-ros-robotics/openrtm_common/openhrp3/bin/export-collada /home/iori/prog/OpenHRP/etc/HRP2JSKNTS_for_OpenHRP3/HRP2JSKNTSmain.wrl was successfully exported to /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS.dae /home/iori/ros/hydro/src/rtm-ros-robotics/openrtm_common/openhrp3/bin/export-collada /home/iori/prog/OpenHRP/etc/HRP2JSKNTS_for_OpenHRP3/HRP2JSKNTSmain.wrl was successfully exported to /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS.dae [ 60%] [ 60%] Generating /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS.urdf, /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_meshes Generating /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_L.urdf, /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_L_meshes;; Adding gazebo description;; Use assimp export;; output file is: /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_L.urdf;; mesh_prefix is: package://hrpsys_ros_bridge_tutorials/models/HRP3HAND_L_meshes;; Mesh output directory is: /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_L_meshes;; Input file is: /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_L.dae Traceback (most recent call last): File "/opt/ros/hydro/share/xacro/xacro.py", line 60, in
xacro.main() File "/opt/ros/hydro/lib/python2.7/dist-packages/xacro/init.py", line 657, in main process_includes(doc, os.path.dirname(args[0])) File "/opt/ros/hydro/lib/python2.7/dist-packages/xacro/init.py", line 270, in process_includes raise XacroException("included file \"%s\" could not be opened: %s" % (filename, str(e))) xacro.XacroException: included file "/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_R.urdf" could not be opened: [Errno 2] No such file or directory: '/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_R.urdf';; Adding gazebo description;; Use assimp export;; output file is: /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS.urdf;; mesh_prefix is: package://hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_meshes;; Mesh output directory is: /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_meshes;; Input file is: /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS.dae make[2]: * [/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNT_WH.urdf] エラー 1 make[1]: * [rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/CMakeFiles/HRP2JSKNT_xacro_model_generate.dir/all] エラー 2 make[1]: * 未完了のジョブを待っています.... [ 60%] Generating /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS.urdf, /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_meshes [ WARN] [1418569446.424804920]: could not find collada joint kmodel1/jointsid1000! ;; Adding gazebo description;; Use assimp export;; output file is: /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS.urdf;; mesh_prefix is: package://hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_meshes;; Mesh output directory is: /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_meshes;; Input file is: /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS.dae Traceback (most recent call last): File "/opt/ros/hydro/share/xacro/xacro.py", line 60, in xacro.main() File "/opt/ros/hydro/lib/python2.7/dist-packages/xacro/ init.py", line 657, in main process_includes(doc, os.path.dirname(args[0])) File "/opt/ros/hydro/lib/python2.7/dist-packages/xacro/init.py", line 270, in process_includes raise XacroException("included file \"%s\" could not be opened: %s" % (filename, str(e))) xacro.XacroException: included file "/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_R.urdf" could not be opened: [Errno 2] No such file or directory: '/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_R.urdf' make[2]: * [/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNT_WH.urdf] エラー 1 make[1]: *\ [rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/CMakeFiles/HRP2JSKNT_WH_SENSORS.urdf_generate.dir/all] エラー 2 [ WARN] [1418569446.610216411]: could not find collada joint kmodel1/jointsid1000![ WARN] [1418569446.662309304]: could not find collada joint kmodel1/jointsid1000!
[ 60%] Generating /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_body.urdf sed: -e expression #1, char 1: 不明なコマンド: `,' expr: 構文エラー make[2]: * [/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_body.urdf] エラー 1 make[1]: * [rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/CMakeFiles/HRP2JSKNTS_model_generate.dir/all] エラー 2 [ 60%] Generating /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_body.urdf [ 60%] Generating /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_WH.urdf Traceback (most recent call last): File "/opt/ros/hydro/share/xacro/xacro.py", line 60, in
xacro.main() File "/opt/ros/hydro/lib/python2.7/dist-packages/xacro/init.py", line 657, in main process_includes(doc, os.path.dirname(args[0])) File "/opt/ros/hydro/lib/python2.7/dist-packages/xacro/init.py", line 270, in process_includes raise XacroException("included file \"%s\" could not be opened: %s" % (filename, str(e))) xacro.XacroException: included file "/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_R.urdf" could not be opened: [Errno 2] No such file or directory: '/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_R.urdf' make[2]: * [/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_WH.urdf] エラー 1 make[1]: * [rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/CMakeFiles/HRP2JSKNTS_xacro_model_generate.dir/all] エラー 2 make: *\ [all] エラー 2 Invoking "make" failed また, catkin_make --only-pkg-with-deps hrpsys_ros_bridge_tutorials --make-args -j1 しても, 以下のエラーでmakeが通らなくなっている気がします. attach_sensor_and_endeffector_to_hrp2jsk_urdfが問題の箇所のようですが, 解決するにはどうすればいいでしょうか.
Scanning dependencies of target pr2eus_roseus_ALL_GEN_OUTPUT_FILES_eus [ 71%] Built target pr2eus_roseus_ALL_GEN_OUTPUT_FILES_eus Scanning dependencies of target HRP2JSKNTS_WH_SENSORS.urdf_generate [ 72%] Generating /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_WH_SENSORS.urdf Traceback (most recent call last): File "/home/iori/ros/hydro/src/jsk-ros-pkg/jsk_model_tools/euscollada/scripts/add_sensor_to_urdf.py", line 69, in
main(sys.argv[1:]) File "/home/iori/ros/hydro/src/jsk-ros-pkg/jsk_model_tools/euscollada/scripts/add_sensor_to_urdf.py", line 63, in main parent, child, input_file, output_file) File "/home/iori/ros/hydro/src/jsk-ros-pkg/jsk_model_tools/euscollada/scripts/add_sensor_to_urdf.py", line 45, in updateURDF xdoc = minidom.parse(input_file) File "/usr/lib/python2.7/xml/dom/minidom.py", line 1920, in parse return expatbuilder.parse(file) File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 924, in parse result = builder.parseFile(fp) File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 211, in parseFile parser.Parse("", True) xml.parsers.expat.ExpatError: no element found: line 1, column 0 make[2]: * [/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_WH_SENSORS.urdf] エラー 1 make[1]: * [rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/CMakeFiles/HRP2JSKNTS_WH_SENSORS.urdf_generate.dir/all] エラー 2 make: *\ [all] エラー 2 Invoking "make" failed — Reply to this email directly or view it on GitHub https://github.com/start-jsk/rtmros_tutorials/issues/84#issuecomment-66916271 .
from iPhone
こちらのissueですが,治った気がします. https://github.com/start-jsk/rtmros_tutorials/pull/326
@garaemon, @YoheiKakiuchi , @mmurooka (多分このあたりのcmakeのマクロを書いたと思われる開発者の方々) ところで,せっかくなのでこのあたり整理できればと思ったのですが,
やっていることはハンドをつけることと、センサーのtfをrobot_sate_publisherから出すためにurdfにつけることです。
JAXON系とHRP2系はリンク名などを与えられるようにすれば同じになると思います。JAXON系が古くてスクリプトになっていますが、中身は同じことをしています。
最終的に使っているのは WH_SENSORS.urdf だけですね。依存関係や並列実行に関してどうするのがいいかは @garaemon さんにおまかせします。
使っているのがWH_SENSORS.urdfだけであれば、そのファイルだけ最終的にできるようにすると、 cmakeの書き方も管理もラクですね。 (仮に他のファイルが中間生成になるとしても、add_sesnroxxx.pyの中だけでやって、cmakeレベルでは搭乗しないようにする)
これに関連して、@mmurookaさんと話して思いましたが、 このあたりのスクリプトでやってるのは、大部分collada_urdfにPR(もしくはcollada_urdf_jsk_patchにコミット)して、collada -> urdfの変換で正式にサポートするべきものな気がします。
ちなみに、VRMLとURDFの間はhttps://github.com/fkanehiro/simtrans みたいなのもありますね。
変換のひとつひとつのスクリプトをシンプルにするために,途中生成物としてhoge_WH.urdfができていますね.
collada_urdfに入れるのが正解かもしれないのですが,colladaをメンテナンスしていくモチベーションが個人的にはあまりないですね.OpenRAVEはcolladaですが,それならむしろvrml->urdf->colladaとしたいところです.
スクリプトはシンプルですが、生成物が多くて初見だとちょっと難しい+扱いが複雑で、ビルド・cmakeの依存関係の書き方が難しくなるきがします(このissueの日付から逆算すると、半年以上解決しないレベルの難しさ)。
collada_urdfに入れるのが正解かもしれないのですが,colladaをメンテナンスしていくモチベーションが個人的にはあまりないですね.OpenRAVEはcolladaですが,それならむしろvrml->urdf->colladaとしたいところです.
個人的にはcolladaを経由しない方向性は大賛成です。 ただ、一瞬でできる移行でもないきがするので、現状どんくらいいけてるかがチェックがいりそうですね。あまりちゃんとみられてませんが、https://github.com/fkanehiro/simtransはROSに依存しないようにかいてるかもしれなくで、逆にやばいのかもしれません。
そもそもの-j1じゃないとうまく行かない問題自体は解決できている気がしますが,依存関係は難しいですね.
collada_urdfをリッチにするのとcolladaをエイヤっと消してしまうのはどっちが楽なのでしょうか?
urdfは良い感じのpython parserがあるので,それを使うと楽にかけますね. colladaはとても難しい印象. OpenHRPにはvrml用のそういうスクリプトがあったりしませんか?
また,multisenseをくっつける,とかはurdfレベルでしかできないことですね.
だんだん思い出してきましたが,依存関係はopenhrpのmodelloaderがPCで一つしか上がらない問題をなんとか回避しようとしてのことでしたね
実機用とgazebo用のURDFを共通にする話ですが,
https://github.com/start-jsk/rtmros_common/blob/master/hrpsys_ros_bridge/cmake/compile_robot_model.cmake#L320 のcollada_urdfをcollada_urdf_jsk_patchにしたら, hrpsys_ros_bridge_tutorialsの下のモデルもgazeboに表示はできるようになりましたが,
gazebo上で動かすには, 追加で以下のような修正を各ロボットのURDFに行う必要があります. https://github.com/start-jsk/rtmros_tutorials/blob/master/hrpsys_gazebo_tutorials/robot_models/HRP2JSKNT/HRP2JSKNT_additional_urdf_setting.sh これもhrpsys_ros_bridge_tutorialsの下に移すしかないでしょうか. 内容はロボットごとに微妙にことなっていて, massやinertiaの小さすぎるリンクを直したり, 足裏の干渉モデルをボックスにしたり, 摩擦パラメータを変えたり,などをしています.
生成過程を単純にする話をしているところで, 一段とややこしくなってしまいそうです.
@garaemon , ちなみにとりあえず急ぎでしたら運用面でカバーする方法として, gazebo起動後に実機用のurdfでrobot_descriptionをロードし直すと, とりあえずやりたいことは出来る気がしています.
2015-06-26 17:36 GMT+09:00 Ryohei Ueda notifications@github.com:
openhrpのmodelloaderがPCで一つしか上がらない問題
これはもうなくなったはずです.
◉ Kei Okada
openhrpのmodelloaderがPCで一つしか上がらない問題 これはもうなくなったはずです.
今見たらかなりシンプルになっていますね.
https://github.com/start-jsk/rtmros_common/blob/master/hrpsys_ros_bridge/cmake/compile_robot_model.cmake#L320 のcollada_urdfをcollada_urdf_jsk_patchにしたら, hrpsys_ros_bridge_tutorialsの下のモデルもgazeboに表示はできるようになりましたが,
デフォルトをcollada_urdf_jsk_patchにして良いと思います
だんだん思い出してきましたが,依存関係はopenhrpのmodelloaderがPCで一つしか上がらない問題をなんとか回避しようとしてのことでしたね
これは最新openhrp3とcompile_robot_model.cmakeにしておくと、治っていると思います。 この半年くらい、hrpssy_ros_bridge_turorialsのmakeは安定してませんでしたが、常に同じ理由・一つの理由だけでなくて、 なんとなく依存関係がおかしい問題や-j 1でないと実行できない問題が重なってたんだと思います。
@mmurooka https://github.com/start-jsk/rtmros_tutorials/issues/84#issuecomment-115592871 どうしたらいいか判断が難しいポイントですが、例えば一つの判断基準は管理するファイルを減らす、です。 実機・シミュエータで同じurdfになるのであれば、そのほうがシンプルになる可能性があります。 とくにgazeboタグは実機の用途(ほぼrobot_desription)であればムシされるので、実機用urdfとこれまでしてたところにgazeboのものも、副作用ないはんいで追加してもよさげです。
今はcmakeはかなりシンプルになっているから,依存関係が複雑すぎるというのは見たらわかるレベルになっているんじゃないでしょうか?
個人的にはcollada_urdf
を良くしていくというモチベーションはあまりなくて,
それなら今のように後でurdfを変更していくスタイルか,
colladaを一気に消す(いちばんうしろに持ってくる)の方が良い気がしています.
colladaを一気に消すというのが時間がかかりそうというなら,後でurdfをいじるスタイルが一番手っ取り早いかと思います.
collada_urdfに色々と機能を入れていくと,vrml->colladaとcollada->urdfの2つを変更しなくてはいけなくて, 手間が多い気がします.
デフォルトをcollada_urdf_jsk_patchにして良いと思います
はい,https://github.com/start-jsk/rtmros_gazebo/issues/195#issuecomment-114314248 でも言われている通りそうするのですが, それだけでは,表示はできても動かせなくて
現状のまま移植すると, hrpsys_ros_bridge_tutorials/models に ***_additional_urdf_setting.sh というファイルがロボットの数だけできて, これをCMakeLists.txtの中で呼ぶ行を追加するようになってしまって, どうにか回避したいと思いました.
models/Jaxon.yamlに追加するのはどうだろうか
2015年6月26日金曜日、Masaki Murookanotifications@github.comさんは書きました:
デフォルトをcollada_urdf_jsk_patchにして良いと思います
はい,start-jsk/rtmros_gazebo#195 (comment) https://github.com/start-jsk/rtmros_gazebo/issues/195#issuecomment-114314248 でも言われている通りそうするのですが, それだけでは,表示はできても動かせなくて
現状のまま移植すると, hrpsys_ros_bridge_tutorials/models に ***_additional_urdf_setting.sh というファイルがロボットの数だけできて, これをCMakeLists.txtの中で呼ぶ行を追加するようになってしまって, どうにか回避したいと思いました.
— Reply to this email directly or view it on GitHub https://github.com/start-jsk/rtmros_tutorials/issues/84#issuecomment-115651142 .
✉︎ from iPhone
https://github.com/start-jsk/rtmros_gazebo/issues/195 でも話題がありますが、もしvrml->urdfの変換にしたらassimp_develがいらなくなる、というので正しいですか? @YoheiKakiuchi
もしvrml->urdfの変換にしたらassimp_develがいらなくなる、というので正しいですか?
assimpは今のところvrmlを使えないので、vrml->urdf の変換には必要ないでしょうね。
現在環境によってはhrpsys_ros_bridge_tutorialsのcatkin_makeが通らない状態になっている気がします. 具体的には,HRP2JSKNT_WH.urdfのビルドでHRP2JSKNT.urdf, またはhrp2jsknts_ros_bridge.launchがないと言われてcatkin_makeが落ちる現象が起こっています(hrpsys_ros_bridge_tutorials最新版のYST脚とiori-t430sで確認). エラーメッセージは以下のとおりです.
catkin_make --only-pkg-with-deps hrpsys_ros_bridge_tutorials --make-args -j1 するとビルドが通るので, https://github.com/start-jsk/rtmros_tutorials/blob/master/hrpsys_ros_bridge_tutorials/catkin.cmake#L247-266 の部分で依存関係が考慮されずに並列コンパイルされると発生する問題と思われます.
参照: Pull #75
-- 以下エラー --