start-jsk / rtmros_tutorials

Tutorials for rtmros packages
6 stars 61 forks source link

hrpsys_ros_bridge_tutorialsのHRP2JSKNT_WH.urdfのビルド時における依存関係の解決 #84

Open orikuma opened 9 years ago

orikuma commented 9 years ago

現在環境によっては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

-- 以下エラー --

Generating EusLisp code for upstream package hrpsys_ros_bridge_tutorials
/home/iori/ros/hydro/src/rtm-ros-robotics/openrtm_common/openhrp3/bin/export-collada /home/iori/prog/OpenHRP/etc/HRP3HAND_R/HRP3HAND_Rmain.wrl was successfully exported to /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_R.dae
make[2]: *** `/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/rtmros_tutorials/hrpsys_ros_bridge_tutorials/launch/hrp2jsknt_ros_bridge.launch' を make するルールがありません.  中止.
make[2]: *** 未完了のジョブを待っています....
[ 18%] /home/iori/ros/hydro/src/rtm-ros-robotics/openrtm_common/openhrp3/bin/export-collada /home/iori/prog/OpenHRP/etc/HRP3HAND_R/HRP3HAND_Rmain.wrl was successfully exported to /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP3HAND_R.dae
Generating /home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNT.dae
make[2]: *** `/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/models/HRP2JSKNTS_WH.urdf' に必要なターゲット `/home/iori/ros/hydro/src/rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials/launch/hrp2jsknts_ros_bridge.launch' を make するルールがありません.  中止.
make[2]: *** 未完了のジョブを待っています....
mmurooka commented 9 years ago

https://github.com/start-jsk/rtmros_tutorials/blob/master/hrpsys_ros_bridge_tutorials/catkin.cmake#L257DEPENDを書いてはいるのですが, ターゲットをmakeするルールを書かないとエラーになってしまうんですね. hrp2jsknt_ros_bridge.launchやHRP3HAND_R.urdfをmakeするルールはうまく書けるでしょうか.

orikuma commented 9 years ago

取り敢えず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

snozawa commented 9 years ago

launchがconfigure_fileで生成されているためtargetにならず生成規則が定義されない

launchに依存しているものがありますか? launchに依存するのは、なんとなくおかしそうに思います。

orikuma commented 9 years ago

gen_hand_attached_hrp2_model.shを見ると{robotname}_ros_bridge.launchのCOLLADA_FILEをsedで置換するために依存しているようです.

snozawa commented 9 years ago

全体的に、ちょっと複雑にしすぎてる気がするので、もとファイルが何で、どういう変換をして、そのためどういう依存関係が必要で、と整理しましょう

すくなくとも、launchは同じcmakeでつくってるにもかかわらず、一旦かきだして、そのあとsedして、それのためにwaitが必要で、と脱線している気がします すくなくとも、この点だけに関しては、最初のlaunch書き出しでcolladafileを設定できるようにならないか、吟味しましょう

mmurooka commented 9 years ago

@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に依存するのは、なんとなくおかしそうに思います。

ただ,以下のような他のやり方もあった気がして,もしかしたらそちらのほうがよかったのかも,とも思います.

snozawa commented 9 years ago

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などの場合は、手首リンクの 先端にハンドを後付けできるとうれしいかも。

mmurooka commented 9 years ago

ロボットの手首リンクを削除せず、手首リンクを残しつつ、 ハンドはfixed jointのようなものでその先端に接続する、のは可能かな?

可能です. xacroファイルに以下を書いておけばうまくいくはずです. ロボット本体のurdfのインクルード, ハンドのurdfのインクルード, ロボット本体とハンドを繋げるfixed joint

HRP2は,ARM_JOINT6がロボット本体側とハンド側の両方にあるので, リンクを消す必要があって,xacroだけでは対処できるsedを使っています.

YoheiKakiuchi commented 9 years ago

HRP2は,ARM_JOINT6がロボット本体側とハンド側の両方にあるので

これは、リンクの名前がかぶってるという話だっけ? 同じ形状もあるんだっけ? ハンドのモデルの方を、ARM_JOINT6の先に変更してリンク名を変更すればいいのかな?

mmurooka commented 9 years ago

すみません,JOINT6ではなくLINK6でした. たぶんJOINTは被っていなかったと思います.

LINK6については, ハンドモデルとロボット本体モデルで形状が異なって, ロボット本体モデルのLINK6は手首で切れている形状で, ハンドモデルのLINK6は,手の甲の部分まで入っているような形状で, ロボット本体モデルのLINK6がハンドモデルのLINK6に含まれるようになっています.

YoheiKakiuchi commented 9 years ago

ロボット本体モデルのLINK6は手首で切れている形状で, ハンドモデルのLINK6は,手の甲の部分まで入っているような形状で, ロボット本体モデルのLINK6がハンドモデルのLINK6に含まれるようになっています.

この、ハンド側の形状を変更するのに何か問題があるんだっけ? 理解としては、LINK6(本体モデル)とLINK6(ハンドモデル)に共通部分がある と思っているのだけど、ハンドモデルから共通部分を抜いて、名称を変更するという作戦はどうかな?

mmurooka commented 9 years ago

この、ハンド側の形状を変更するのに何か問題があるんだっけ?

VRMLかcolladaのメッシュファイルを直接編集して,共通部分を取り除く作業になりそうで, 一度きりの作業なので頑張って上手くできたらそれでもよさそうですが,結構大変なのかなと思っていました.

snozawa commented 9 years ago

fixed jointでつながってるロボットの形状がかぶっていると、gazeboで問題があるんだっけ? (自己干渉してることになる、とか)

mmurooka commented 9 years ago

gazeboではとりあえず問題ないような気がします.

少なくとも現状のデフォルトでは,自己干渉を見ないようになっているので大丈夫なはずで, 自己干渉を見るようにするとどうなるかは,やってみないと分からないです.

snozawa commented 9 years ago

gazebo以外で問題ないところはあるかな? ないのであれば、

でいいのではないでしょうか?

mmurooka commented 9 years ago

HRP2の場合は, リンク名が被っているので, いずれにしてもsedでリンク名を変えることが必要になります.

YoheiKakiuchi commented 9 years ago

ちらと見ましたが,メッシュの編集はそれほど難しくなくできると思います. リンク名もハンドのwrl修正するだけじゃないのかな?

mmurooka commented 9 years ago
ロボットの手首側もハンド側も編集なしで、そのまま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を与えてもいいですね。

というのもスマートでありかもしれないですね.

mmurooka commented 9 years ago

実行時にその場で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に変える

orikuma commented 9 years ago

この件どうなったでしょうか. 最新の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
garaemon commented 9 years ago

明日見てみます ちょっと待ってくださいね

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

snozawa commented 9 years ago

こちらのissueですが,治った気がします. https://github.com/start-jsk/rtmros_tutorials/pull/326

@garaemon, @YoheiKakiuchi , @mmurooka (多分このあたりのcmakeのマクロを書いたと思われる開発者の方々) ところで,せっかくなのでこのあたり整理できればと思ったのですが,

YoheiKakiuchi commented 9 years ago

やっていることはハンドをつけることと、センサーのtfをrobot_sate_publisherから出すためにurdfにつけることです。

JAXON系とHRP2系はリンク名などを与えられるようにすれば同じになると思います。JAXON系が古くてスクリプトになっていますが、中身は同じことをしています。

最終的に使っているのは WH_SENSORS.urdf だけですね。依存関係や並列実行に関してどうするのがいいかは @garaemon さんにおまかせします。

snozawa commented 9 years ago

使っているのがWH_SENSORS.urdfだけであれば、そのファイルだけ最終的にできるようにすると、 cmakeの書き方も管理もラクですね。 (仮に他のファイルが中間生成になるとしても、add_sesnroxxx.pyの中だけでやって、cmakeレベルでは搭乗しないようにする)

snozawa commented 9 years ago

これに関連して、@mmurookaさんと話して思いましたが、 このあたりのスクリプトでやってるのは、大部分collada_urdfにPR(もしくはcollada_urdf_jsk_patchにコミット)して、collada -> urdfの変換で正式にサポートするべきものな気がします。

snozawa commented 9 years ago

ちなみに、VRMLとURDFの間はhttps://github.com/fkanehiro/simtrans みたいなのもありますね。

garaemon commented 9 years ago

変換のひとつひとつのスクリプトをシンプルにするために,途中生成物としてhoge_WH.urdfができていますね.

garaemon commented 9 years ago

collada_urdfに入れるのが正解かもしれないのですが,colladaをメンテナンスしていくモチベーションが個人的にはあまりないですね.OpenRAVEはcolladaですが,それならむしろvrml->urdf->colladaとしたいところです.

snozawa commented 9 years ago

スクリプトはシンプルですが、生成物が多くて初見だとちょっと難しい+扱いが複雑で、ビルド・cmakeの依存関係の書き方が難しくなるきがします(このissueの日付から逆算すると、半年以上解決しないレベルの難しさ)。

snozawa commented 9 years ago

collada_urdfに入れるのが正解かもしれないのですが,colladaをメンテナンスしていくモチベーションが個人的にはあまりないですね.OpenRAVEはcolladaですが,それならむしろvrml->urdf->colladaとしたいところです.

個人的にはcolladaを経由しない方向性は大賛成です。 ただ、一瞬でできる移行でもないきがするので、現状どんくらいいけてるかがチェックがいりそうですね。あまりちゃんとみられてませんが、https://github.com/fkanehiro/simtransはROSに依存しないようにかいてるかもしれなくで、逆にやばいのかもしれません

garaemon commented 9 years ago

そもそもの-j1じゃないとうまく行かない問題自体は解決できている気がしますが,依存関係は難しいですね.

collada_urdfをリッチにするのとcolladaをエイヤっと消してしまうのはどっちが楽なのでしょうか?

urdfは良い感じのpython parserがあるので,それを使うと楽にかけますね. colladaはとても難しい印象. OpenHRPにはvrml用のそういうスクリプトがあったりしませんか?

また,multisenseをくっつける,とかはurdfレベルでしかできないことですね.

garaemon commented 9 years ago

だんだん思い出してきましたが,依存関係はopenhrpのmodelloaderがPCで一つしか上がらない問題をなんとか回避しようとしてのことでしたね

mmurooka commented 9 years ago

実機用と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をロードし直すと, とりあえずやりたいことは出来る気がしています.

k-okada commented 9 years ago

2015-06-26 17:36 GMT+09:00 Ryohei Ueda notifications@github.com:

openhrpのmodelloaderがPCで一つしか上がらない問題

これはもうなくなったはずです.

◉ Kei Okada

garaemon commented 9 years ago

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にして良いと思います

snozawa commented 9 years ago

だんだん思い出してきましたが,依存関係は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のものも、副作用ないはんいで追加してもよさげです。

garaemon commented 9 years ago

今はcmakeはかなりシンプルになっているから,依存関係が複雑すぎるというのは見たらわかるレベルになっているんじゃないでしょうか?

garaemon commented 9 years ago

個人的にはcollada_urdfを良くしていくというモチベーションはあまりなくて, それなら今のように後でurdfを変更していくスタイルか, colladaを一気に消す(いちばんうしろに持ってくる)の方が良い気がしています.

colladaを一気に消すというのが時間がかかりそうというなら,後でurdfをいじるスタイルが一番手っ取り早いかと思います.

collada_urdfに色々と機能を入れていくと,vrml->colladaとcollada->urdfの2つを変更しなくてはいけなくて, 手間が多い気がします.

mmurooka commented 9 years ago

デフォルトを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の中で呼ぶ行を追加するようになってしまって, どうにか回避したいと思いました.

garaemon commented 9 years ago

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

mmurooka commented 9 years ago

https://github.com/start-jsk/rtmros_tutorials/blob/master/hrpsys_gazebo_tutorials/robot_models/HRP2JSKNT/HRP2JSKNT_additional_urdf_setting.sh の内容をyamlに書いておくということでしょうか.

snozawa commented 9 years ago

https://github.com/start-jsk/rtmros_gazebo/issues/195 でも話題がありますが、もしvrml->urdfの変換にしたらassimp_develがいらなくなる、というので正しいですか? @YoheiKakiuchi

YoheiKakiuchi commented 9 years ago

もしvrml->urdfの変換にしたらassimp_develがいらなくなる、というので正しいですか?

assimpは今のところvrmlを使えないので、vrml->urdf の変換には必要ないでしょうね。