start-jsk / rtmros_tutorials

Tutorials for rtmros packages
6 stars 61 forks source link

catkinでeusロボットモデルファイルにeuscollada-robot.l がコピーされない #3

Closed mmurooka closed 10 years ago

mmurooka commented 10 years ago

hrpsys_ros_bridge_tutorials/models 以下に生成されるeusロボットモデルファイルには, euscollada/src/euscollada-robot.l がコピペされる仕様になっているようですが, catkinではこれがコピーされず,eusモデルをloadすると euscoolada-robotクラスが見つからないエラーになります.

hrpsys_ros_bridge/cmake/compile_robot_model.cmake macro(compile_collada_model daefile) 内を 修正する必要があるように思います.

rosbuildでは通らなくってしまう変更な修正ですが, 以下のようにしたら euscollada-robot.l がコピペされるようになりました.

diff --git a/hrpsys_ros_bridge/cmake/compile_robot_model.cmake b/hrpsys_ros_bridge/cmake/compile_robot_model.cmake
index eedc4a5..ee086fe 100644
--- a/hrpsys_ros_bridge/cmake/compile_robot_model.cmake
+++ b/hrpsys_ros_bridge/cmake/compile_robot_model.cmake
@@ -244,15 +244,16 @@ macro(compile_collada_model daefile)
     set(_rtm_naming_exe ${openrtm_aist_PREFIX}/lib/openrtm_aist/bin/rtm-naming)
   endif()
   # use euscollada
-  if(${USE_ROSBUILD})
-    rosbuild_find_ros_package(euscollada)
-    set(_collada2eus_exe ${euscollada_PACKAGE_PATH}/bin/collada2eus)
-    set(_euscollada_dep_files ${euscollada_PACKAGE_PATH}/bin/collada2eus ${euscollada_PACKAGE_PATH}/src/euscollada-robot.l)
-  else()
     find_package(euscollada)
     set(euscollada_PACKAGE_PATH ${euscollada_SOURCE_DIR})
     set(_collada2eus_exe ${euscollada_PREFIX}/lib/euscollada/collada2eus)
-  endif()
+    set(_euscollada_dep_files ${euscollada_PREFIX}/lib/euscollada/collada2eus ${euscollada_PACKAGE_PATH}/src/euscollada-robot.l)
   # check if binary exists
   if(NOT EXISTS ${_rtm_naming_exe})
     message(FATAL_ERROR "-- ${_rtm_naming_exe} not found")

catkinでmakeしていても if($(USE_ROSBUILD))の中に入っていることがあるような気がしたり, 上の変更をしてもいつでも上手く行くわけではなさそうだったり, ちゃんと分かっていないところが多いですがとりあえず報告です.

garaemon commented 10 years ago

これは何ができれば動作確認になりますか

mmurooka commented 10 years ago

hrpsys_ros_bridge_tutorials までを catkin_make install して,

roscd hrpsys_ros_bridge_tutorials/models
roseus hrp2jsk.l

でエラーがでなければOKです. 現状だとeuscollada-robotというクラスが見つからないというエラーになるはずです. hrpsys_ros_bridge_tutorials/models 以下の eusモデルファイル(hrp2jsk.lなど)の 10行目あたりに以下のようなコメントがありこの後に, euscollada-robotクラスをdefclassしているところが有ればOKですが, euscollada-robot.lのパスが正しく設定されていないため無いです.

;; copy euscollada-robot class definition from euscollada/src/euscollada-robot.l
;;
garaemon commented 10 years ago

なるほど、collada2eus.cppの中でrospackを使ってしまっていますね。

garaemon commented 10 years ago

https://github.com/start-jsk/rtmros_common/pull/318

パッチをrtmros_commonへのpull reqにしておきました。