Skip to content
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

hrpsys is not compiled in hrpsys_gazebo_general when catkin_make #35

Closed
mmurooka opened this issue Apr 9, 2014 · 68 comments
Closed

hrpsys is not compiled in hrpsys_gazebo_general when catkin_make #35

mmurooka opened this issue Apr 9, 2014 · 68 comments

Comments

@mmurooka
Copy link
Member

mmurooka commented Apr 9, 2014

https://github.com/start-jsk/rtmros_gazebo/blob/master/hrpsys_gazebo_general/catkin.cmake#L24 is commented out and hrpsys is not compiled.

@k-okada
Copy link
Member

k-okada commented Apr 9, 2014

Could you explain more detail on your problem?
Hrpsys gazebo compile only iob instead of compiling whole hrpsys source tree.

@mmurooka
Copy link
Member Author

mmurooka commented Apr 9, 2014

何が原因かちゃんと分かっていないのですが,
以下のように試して動かないことから,
hrpsys_gazebo_generalでlibhrpIo.soは生成されているのですが,
起動時のRobotHardwareはこの.soとリンクされておらず従来のものが起動しているように思います.

The sample robot should move by following command, but it doesn't move.

roslaunch hrpsys_gazebo_tutorials gazebo_samplerobot_no_controllers.launch # gazebo
rtmlaunch hrpsys_gazebo_tutorials samplerobot_hrpsys_bringup.launch # hrpsys
roscd hrpsys_ros_bridge_tutorials/euslisp; roseus samplerobot-interface.l "(samplerobot-init) (send *ri* :angle-vector (send *sr* :reset-pose) 1000)"

I comfirmed that the joint angles which RobotHardware outputs agree with euslisp command by rtprint localhost:15005/RobotHardware0.rtc:q.

In the last of hrpsys node process, iob should publish /SampleRobot/joint_command, but there is no publisher of that topic.

The Iob library for hrpsys_gazebo_general is generated at devel/share/hrpsys_gazebo_general/lib/libhrpIo.so, but I think RobotHardware is not linked to this Iob library.

@k-okada
Copy link
Member

k-okada commented Apr 9, 2014

what it the result of
ldd ....RObotHardware.so
and
roslaunch --args <nodes that seems important> hrpsys_gazebo_tutorials samplerobot_hrpsys_bringup.launch

@mmurooka
Copy link
Member Author

mmurooka commented Apr 9, 2014

以下のようになりました.

murooka@murooka-ThinkPad-T430:~/jsk$ locate RobotHardware.so | grep hydro/
/home/murooka/ros_catkin_ws/hydro/build/rtm-ros-robotics/openrtm_common/hrpsys/build/hrpsys-base/lib/RobotHardware.so
/home/murooka/ros_catkin_ws/hydro/install/share/hrpsys/lib/RobotHardware.so
/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/openrtm_common/hrpsys/lib/RobotHardware.so
murooka@murooka-ThinkPad-T430:~/jsk$ ldd /home/murooka/ros_catkin_ws/hydro/build/rtm-ros-robotics/openrtm_common/hrpsys/build/hrpsys-base/lib/RobotHardware.so
    linux-vdso.so.1 =>  (0x00007fff76fff000)
    libhrpIo.so => /home/murooka/ros_catkin_ws/hydro/devel/lib/libhrpIo.so (0x00007fb1ba0f1000)
    libhrpModel-3.1.so.0 => /home/murooka/ros_catkin_ws/hydro/devel/lib/libhrpModel-3.1.so.0 (0x00007fb1b9e37000)
    libhrpsysBaseStub.so => /home/murooka/ros_catkin_ws/hydro/devel/lib/libhrpsysBaseStub.so (0x00007fb1b9b2d000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb1b98df000)
    libomniORB4.so.1 => /usr/lib/libomniORB4.so.1 (0x00007fb1b9532000)
    libomnithread.so.3 => /usr/lib/libomnithread.so.3 (0x00007fb1b932c000)
    libomniDynamic4.so.1 => /usr/lib/libomniDynamic4.so.1 (0x00007fb1b8e3b000)
    libRTC-1.1.0.so => /home/murooka/ros_catkin_ws/hydro/devel/lib/libRTC-1.1.0.so (0x00007fb1b87d0000)
    libcoil-1.1.0.so => /home/murooka/ros_catkin_ws/hydro/devel/lib/libcoil-1.1.0.so (0x00007fb1b85a4000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb1b82a4000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb1b808d000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb1b7ccd000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb1b7ac4000)
    libhrpUtil-3.1.so.0 => /home/murooka/ros_catkin_ws/hydro/devel/lib/libhrpUtil-3.1.so.0 (0x00007fb1b7843000)
    libhrpCollision-3.1.so.0 => /home/murooka/ros_catkin_ws/hydro/devel/lib/libhrpCollision-3.1.so.0 (0x00007fb1b75ef000)
    libboost_filesystem.so.1.46.1 => /usr/lib/libboost_filesystem.so.1.46.1 (0x00007fb1b73d1000)
    libboost_regex.so.1.46.1 => /usr/lib/libboost_regex.so.1.46.1 (0x00007fb1b70cf000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb1b6ecb000)
    libboost_signals.so.1.46.1 => /usr/lib/libboost_signals.so.1.46.1 (0x00007fb1b6cb6000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb1b69ba000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fb1ba553000)
    libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007fb1b67b4000)
    libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007fb1b658c000)
    libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 (0x00007fb1b633b000)
    liblapack.so.3gf => /usr/lib/atlas-base/atlas/liblapack.so.3gf (0x00007fb1b571e000)
    libboost_system.so.1.46.1 => /usr/lib/libboost_system.so.1.46.1 (0x00007fb1b551a000)
    libicuuc.so.48 => /usr/lib/libicuuc.so.48 (0x00007fb1b51af000)
    libicui18n.so.48 => /usr/lib/libicui18n.so.48 (0x00007fb1b4de7000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fb1b4bcf000)
    libblas.so.3gf => /usr/lib/atlas-base/atlas/libblas.so.3gf (0x00007fb1b4666000)
    libgfortran.so.3 => /usr/lib/x86_64-linux-gnu/libgfortran.so.3 (0x00007fb1b434f000)
    libicudata.so.48 => /usr/lib/libicudata.so.48 (0x00007fb1b2fde000)
    libquadmath.so.0 => /usr/lib/x86_64-linux-gnu/libquadmath.so.0 (0x00007fb1b2da8000)

rtmlaunch というnodeはないようです.

murooka@murooka-ThinkPad-T430:~$ roslaunch --args rtmlaunch hrpsys_gazebo_tutorials samplerobot_hrpsys_bringup.launch
ERROR: Cannot find node named [/rtmlaunch] in [/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/launch/samplerobot_hrpsys_bringup.launch].

Node names are:
 * /sensor_transform_0
 * /sensor_transform_1
 * /sensor_transform_2
 * /sensor_transform_3
 * /sensor_transform_4
 * /modelloader
 * /hrpsys
 * /hrpsys_py
 * /HrpsysSeqStateROSBridge
 * /HrpsysJointTrajectoryBridge
 * /hrpsys_ros_diagnostics
 * /diagnostic_aggregator
 * /hrpsys_profile
 * /sensor_ros_bridge_connect
 * /rtmlaunch_hrpsys_ros_bridge
 * /SequencePlayerServiceROSBridge
 * /DataLoggerServiceROSBridge
 * /ForwardKinematicsServiceROSBridge
 * /StateHolderServiceROSBridge
 * /RobotHardwareServiceROSBridge
 * /AutoBalancerServiceROSBridge
 * /StabilizerServiceROSBridge
 * /CollisionDetectorServiceROSBridge
 * /collision_state
 * /ImpedanceControllerServiceROSBridge
 * /AbsoluteForceSensorServiceROSBridge
 * /SoftErrorLimiterServiceROSBridge
 * /gazebo_robot_dashboard

@garaemon
Copy link
Member

garaemon commented Apr 9, 2014

#23

ここの最後で.soがうまく読まれていない気がすると言っているのは同じ問題にみえますね。

@k-okada
Copy link
Member

k-okada commented Apr 9, 2014

rtmlaunch というnodeはないようです.

すいません.記入間違い.直しました.重要そうなノードを引数にしてください,といういみでした.
roslaunch --args hrpsys hrpsys_gazebo_tutorials samplerobot_hrpsys_bringup.launch
とか,
roslaunch --args hrpsys_py hrpsys_gazebo_tutorials samplerobot_hrpsys_bringup.launch
とか関係しそうなものを調べてみて下さい.

@garaemon
Copy link
Member

garaemon commented Apr 9, 2014

https://github.com/start-jsk/rtmros_gazebo/blob/master/hrpsys_gazebo_tutorials/launch/robot_hrpsys_bringup.launch#L39
このhrpsys_load_pathの値ですが、src以下を見てしまっていたりしないでしょうか?

@k-okada
Copy link
Member

k-okada commented Apr 9, 2014

多分ですが,https://github.com/start-jsk/rtmros_common/blob/master/hrpsys_tools/launch/hrpsys.launch#L48

<arg name="hrpsys_load_path" default="$(find hrpsys)/lib"/>
-o "manager.modules.load_path:$(arg hrpsys_load_path)"
の部分が生きていて,これを使いたいiobのある所に変える必要があります.
実際には,RobotHardware.soはhrpsys/libにあるともうので,
$(find hrpsys)/lib,$(find hrpsys_atals)/lib みたいな感じになるとおもいます.,; かは
ちょっとうる覚えです.

@mmurooka
Copy link
Member Author

mmurooka commented Apr 9, 2014

murooka@murooka-ThinkPad-T430:~/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/launch$ roslaunch --args hrpsys hrpsys_gazebo_tutorials samplerobot_hrpsys_bringup.launch
ORBgiopMaxMsgSize=2147483648 HRPSYS_GAZEBO_ROBOTNAME=SampleRobot LANG=C /home/murooka/ros_catkin_ws/hydro/devel/lib/openrtm_aist/bin/rtcd /home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot_nosim.xml -o manager.is_master:YES -o corba.nameservers:localhost:15005 -o naming.formats:%n.rtc -o logger.file_name:/tmp/rtc%p.log -o exec_cxt.periodic.rate:200 -o manager.shutdown_onrtcs:NO -o manager.modules.load_path:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_general/lib,/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/openrtm_common/hrpsys/lib -o manager.modules.preload:RobotHardware.so,hrpEC.so -o manager.components.precreate:RobotHardware -o exec_cxt.periodic.type:hrpExecutionContext -o example.SequencePlayer.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.ForwardKinematics.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.ImpedanceController.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.AutoBalancer.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.StateHolder.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.TorqueFilter.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.TorqueController.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.VirtualForceSensor.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.AbsoluteForceSensor.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.KalmanFilter.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.Stabilizer.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.CollisionDetector.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.SoftErrorLimiter.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.RobotHardware.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.RobotHardware.conf __name:=hrpsys

となっていて,この中の

-o manager.modules.load_path:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_general/lib,/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/openrtm_common/hrpsys/lib

の部分がcatkin対応していなさそうに見えます.

@garaemon
Copy link
Member

garaemon commented Apr 9, 2014

$(find ...)ではなく、とりあえず直接devel以下のパスを書くとどうなるでしょうか?
.../devel/share/hprsys_gazebo_general/lib

@mmurooka
Copy link
Member Author

mmurooka commented Apr 9, 2014

ここの最後で.soがうまく読まれていない気がすると言っているのは同じ問題にみえますね。

今はinstallはせずにdevelで試していますが,似ている問題かもしれません.

@mmurooka
Copy link
Member Author

mmurooka commented Apr 9, 2014

とりあえず直接devel以下のパスを書くとどうなるでしょうか?

動いてよさそうに思うのですが動きませんでした.

murooka@murooka-ThinkPad-T430:~/ros_catkin_ws/hydro$ roslaunch --args hrpsys hrpsys_gazebo_tutorials robot_hrpsys_bringup.launch
LANG=C ORBgiopMaxMsgSize=2147483648 /home/murooka/ros_catkin_ws/hydro/devel/lib/openrtm_aist/bin/rtcd /home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot_nosim.xml -o manager.is_master:YES -o corba.nameservers:localhost:15005 -o naming.formats:%n.rtc -o logger.file_name:/tmp/rtc%p.log -o exec_cxt.periodic.rate:200 -o manager.shutdown_onrtcs:NO -o manager.modules.load_path:/home/murooka/ros_catkin_ws/hydro/devel/share/hrpsys_gazebo_general/lib/,/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/openrtm_common/hrpsys/lib -o manager.modules.preload:RobotHardware.so,hrpEC.so -o manager.components.precreate:RobotHardware -o exec_cxt.periodic.type:hrpExecutionContext -o example.SequencePlayer.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.ForwardKinematics.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.ImpedanceController.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.AutoBalancer.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.StateHolder.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.TorqueFilter.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.TorqueController.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.VirtualForceSensor.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.AbsoluteForceSensor.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.KalmanFilter.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.Stabilizer.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.CollisionDetector.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.SoftErrorLimiter.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.conf -o example.RobotHardware.config_file:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_tutorials/robot_models/SampleRobot/hrpsys/SampleRobot.RobotHardware.conf __name:=hrpsys
murooka@murooka-ThinkPad-T430:~/ros_catkin_ws/hydro$ ls /home/murooka/ros_catkin_ws/hydro/devel/share/hrpsys_gazebo_general/lib/
libhrpIo.so
murooka@murooka-ThinkPad-T430:~/ros_catkin_ws/hydro$ rostopic info /SampleRobot/joint_command
Type: hrpsys_gazebo_msgs/JointCommand

Publishers: None

Subscribers: 
 * /gazebo (http://murooka-ThinkPad-T430:58890/)

@mmurooka
Copy link
Member Author

mmurooka commented Apr 9, 2014

devel/share/hprsys_gazebo_general/lib の .soはちゃんとpublishするものです.

murooka@murooka-ThinkPad-T430:~/ros_catkin_ws/hydro$ grep "joint_command" /home/murooka/ros_catkin_ws/hydro/devel/share/hrpsys_gazebo_general/lib/libhrpIo.so 
バイナリファイル /home/murooka/ros_catkin_ws/hydro/devel/share/hrpsys_gazebo_general/lib/libhrpIo.so に一致しました
murooka@murooka-ThinkPad-T430:~/ros_catkin_ws/hydro$ grep "publish" /home/murooka/ros_catkin_ws/hydro/devel/share/hrpsys_gazebo_general/lib/libhrpIo.so 
バイナリファイル /home/murooka/ros_catkin_ws/hydro/devel/share/hrpsys_gazebo_general/lib/libhrpIo.so に一致しました

@garaemon
Copy link
Member

garaemon commented Apr 9, 2014

rosrunのコードを見ていますが、
catkinが複数のディレクトリに分散してしまう問題を解決するために
catkin_find --without-underlays --libexec --share $pkgnameというのをやっていますね。

$ catkin_find --without-underlays --libexec --share hrpsys_gazebo_general
/home/jsk/ueda/ros/hydro/devel/share/hrpsys_gazebo_general
/home/jsk/ueda/ros/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_general

@garaemon
Copy link
Member

garaemon commented Apr 9, 2014

LD_LIBRARY_PATHの先頭にdevel/share/hrpsys...をつけてみるとどうでしょうか?

@mmurooka
Copy link
Member Author

mmurooka commented Apr 9, 2014

ダメです..

murooka@murooka-ThinkPad-T430:~/ros_catkin_ws/hydro$ echo $LD_LIBRARY_PATH
/home/murooka/ros_catkin_ws/hydro/devel/share/hrpsys_gazebo_general/lib:/home/murooka/ros_catkin_ws/hydro/src/jsk-ros-pkg/jsk_roseus/euslisp/jskeus/eus/Linux64/bin:/usr/lib/gazebo-2.2/plugins:/home/murooka/ros_catkin_ws/hydro/devel/lib:/opt/ros/hydro/lib:/home/murooka/ros_catkin_ws/hydro/devel/share/hrpsys_gazebo_general/lib:/home/murooka/ros_catkin_ws/hydro/src/jsk-ros-pkg/jsk_roseus/euslisp/jskeus/eus/Linux64/bin:/usr/lib/gazebo-2.2/plugins:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_general/plugins:/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_general/plugins
murooka@murooka-ThinkPad-T430:~/ros_catkin_ws/hydro$ rostopic info /SampleRobot/joint_command
Type: hrpsys_gazebo_msgs/JointCommand

Publishers: None

Subscribers: 
 * /gazebo (http://murooka-ThinkPad-T430:35991/)


murooka@murooka-ThinkPad-T430:~/ros_catkin_ws/hydro$ rostopic list | grep joint_command
/SampleRobot/joint_command

@mmurooka
Copy link
Member Author

mmurooka commented Apr 9, 2014

roslaunch --args hrpsys を調べていましたが,
実行中にはこのnodeがいないのは問題ないでしょうか.

$ rosnode list | grep hrpsys
/hrpsys_profile
/hrpsys_ros_diagnostics

@mmurooka
Copy link
Member Author

mmurooka commented Apr 9, 2014

一応,rtmlaunchのターミナルのログを添付してみようかと思いましたが,
画像しか添付できないみたいですね.

@garaemon
Copy link
Member

garaemon commented Apr 9, 2014

devel/lib/libhrpIo.soをえいやっと削除してみると動きますか?

@mmurooka
Copy link
Member Author

mmurooka commented Apr 9, 2014

動いてしまいます.

rtprint localhost:15005/RobotHardware0.rtc:q
で関節角が出ていてRobotHardwareも動いています.
-o manager.modules.load_pathの一個目の引数(/home/murooka/ros_catkin_ws/hydro/devel/share/hrpsys_gazebo_general/lib)は空です.

@garaemon
Copy link
Member

garaemon commented Apr 9, 2014

つまり
libhrpIo.soをopenしようとしていて、devel/share/hrpsys_gazebo_generalのlibhrpIo.soを開いてほしいのにdevel/libのものを開いてしまっているのが問題
ということですか?

@mmurooka
Copy link
Member Author

mmurooka commented Apr 9, 2014

不思議ですがそういうことのように思います.

@mmurooka
Copy link
Member Author

mmurooka commented Apr 9, 2014

devel/lib/libhrpIo.soをえいやっと削除してみると動きますか?

さっき試したのは,これの逆でgazebo_generalの libhrpIo.soを消していました.
これも試します.

@garaemon
Copy link
Member

garaemon commented Apr 9, 2014

中身を何もみないで言いますが
.soを開くためにdlopen(3)を使っていると思うのですが、これはLD_LIBRARY_PATHの先頭から指示された.soを開くという仕様だったとおもったのでLD_LIBRARY_PATHいじる作戦はうまく行きそうなものですが....

@mmurooka
Copy link
Member Author

mmurooka commented Apr 9, 2014

まだよく見ていませんが,可能性として,
https://github.com/start-jsk/rtmros_gazebo/blob/master/hrpsys_gazebo_general/iob/iob.cpp
でpublishのadvertiseとsubscribeがif文の中にあってそこへ行っていないのかもしれないです.

@garaemon
Copy link
Member

garaemon commented Apr 9, 2014

その場合はiob_commandがpublishされるっぽいように見えますね

@garaemon
Copy link
Member

garaemon commented Apr 9, 2014

メモですが、lib/rtm/ModuleManager.cppによると、load_pathを先頭から順番に舐めて、指定された
ライブラリのファイル名と一致するファイルを探して、そのパス全体を引数にdlopenしてるように見えます。

@mmurooka
Copy link
Member Author

mmurooka commented Apr 9, 2014

topic にも serviceにも iob_commandはいないです.

@k-okada
Copy link
Member

k-okada commented Apr 10, 2014

 -o manager.modules.load_path:/home/murooka/ros_catkin_ws/hydro/devel/share/hrpsys_gazebo_general/lib/,/home/murooka/ros_catkin_ws/hydro/src/rtm-ros-robotics/openrtm_common/hrpsys/lib -o manager.modules.preload:RobotHardware.so,hrpEC.so -o manager.components.precreate:RobotHardware

確認ですが,

  1. hrpsys/lib 以下のlibIob.so を消したらhrpsys_gazebo_general/lib/libIob.soを使って動いているか,?
     → A) manager.modules.load_path は有効に効いている
    → B) RobotHardware.so がlibIob.soをrpathなどでリンクしているわけではない
       → だったら動くはず.

動かない場合A)かB)が動いていない
  A)は,パスの区切りの文字列,あるは引数のあつかい,あるいはディレクトリの最後に/が必要か必要でないか.
  → -o logger.log_level:PARANOID などで見てみる

  B) だとのちほど.

@mmurooka
Copy link
Member Author

mmurooka commented May 1, 2014

以下のような感じで,
(B)と(C)の間で,LD_LIBRARY_PATHの設定を変えていますが,
lddの結果は変わっているのに,
straceの結果は変わらないままなので,
やっぱりrtcdの中でLD_LIBRARY_PATHがうわ書かれているような感じなのだと思います.

(A). preloadにlibhrpIoを設定する,LD_LIBRARY_PATHセットしない,RobotHardware.soのrpathを消さない (昨日見つけた解決策)

$ ldd /home/murooka/catkin_ws/ws_rtmros_common/src/rtm-ros-robotics/openrtm_common/hrpsys/lib/RobotHardware.so | grep libhrpIo
libhrpIo.so => /home/murooka/catkin_ws/ws_rtmros_common/build/rtm-ros-robotics/openrtm_common/hrpsys/build/hrpsys-base/lib/libhrpIo.so (0x00007f96e0a20000)

open("/home/murooka/catkin_ws/ws_rtmros_gazebo/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_general/lib/libhrpIo.so", O_RDONLY) = 14
close(14)                               = 0
open("/home/murooka/catkin_ws/ws_rtmros_gazebo/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_general/lib/libhrpIo.so", O_RDONLY) = 14
close(14)                               = 0
futex(0x7fa4922d50b0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
open("/home/murooka/catkin_ws/ws_rtmros_gazebo/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_general/lib/libhrpIo.so", O_RDONLY|O_CLOEXEC) = 14

(B). preloadにlibhrpIoを設定しない,LD_LIBRARY_PATHセットしない,RobotHardware.soのrpathを消す

$ ldd /home/murooka/catkin_ws/ws_rtmros_common/src/rtm-ros-robotics/openrtm_common/hrpsys/lib/RobotHardware.so | grep libhrpIo
libhrpIo.so => /home/murooka/catkin_ws/ws_rtmros_common/devel/lib/libhrpIo.so (0x00007f1484e40000)
open("/home/murooka/catkin_ws/ws_rtmros_common/devel/lib/libhrpIo.so", O_RDONLY|O_CLOEXEC) = 14

(C). preloadにlibhrpIoを設定しない,LD_LIBRARY_PATHセットする,RobotHardware.soのrpathを消す

$ ldd /home/murooka/catkin_ws/ws_rtmros_common/src/rtm-ros-robotics/openrtm_common/hrpsys/lib/RobotHardware.so | grep libhrpIo
libhrpIo.so => /home/murooka/catkin_ws/ws_rtmros_gazebo/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_general/lib/libhrpIo.so (0x00007f734d0bc000)
open("/home/murooka/catkin_ws/ws_rtmros_common/devel/lib/libhrpIo.so", O_RDONLY|O_CLOEXEC) = 14

@mmurooka
Copy link
Member Author

mmurooka commented May 1, 2014

roslaunch実行時に生成されるログファイル(~/.ros/log以下のログ)に
実行時のLD_LIBRARY_PATHが書かれていますが,
これを確認しても,
(C)でLD_LIBRARY_PATHをセットしたのがログに反映されていました.
以下,ログファイルの一部抜粋.

'LD_LIBRARY_PATH': '/home/murooka/catkin_ws/ws_rtmros_gazebo/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_general/lib/:/home/murooka/catkin_ws/ws_jsk_roseus/src/jsk-ros-pkg/jsk_roseus/euslisp/jskeus/eus/Linux64/bin:/usr/lib/gazebo-2.2/plugins:/home/murooka/catkin_ws/ws_rtmros_gazebo/devel/lib:/home/murooka/catkin_ws/ws_rtmros_tutorials/devel/lib:/home/murooka/catkin_ws/ws_rtmros_common/devel/lib:/home/murooka/catkin_ws/ws_jsk_control/devel/lib:/home/murooka/catkin_ws/ws_jsk_pr2eus/devel/lib:/home/murooka/catkin_ws/ws_jsk_recognition/devel/lib:/home/murooka/catkin_ws/ws_jsk_model_tools/devel/lib:/home/murooka/catkin_ws/ws_jsk_roseus/devel/lib:/home/murooka/catkin_ws/ws_jsk_common/devel/lib:/opt/ros/hydro/lib:/home/murooka/catkin_ws/ws_jsk_roseus/src/jsk-ros-pkg/jsk_roseus/euslisp/jskeus/eus/Linux64/bin:/usr/lib/gazebo-2.2/plugins:/home/murooka/catkin_ws/ws_rtmros_gazebo/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_general/plugins:/home/murooka/catkin_ws/ws_rtmros_gazebo/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_general/plugins', 

@mmurooka
Copy link
Member Author

mmurooka commented May 2, 2014

[email protected] の返信で
rtmlaunchではexecveでrtcdを起動しているため,
環境変数が引き継がれないことを指摘されました.

ということで,仕切り直すと
(1) RobotHardware.soのrpathを消して,rtmlaunchでLD_LIBRARY_PATHが反映されるようにして頑張る.
(2) hrpsys_preload_rtcとhrpsys_load_pathで指定する( #45
(3) RobotHardware.soをソースからコンパイルして,その時にrpathを指定する
という選択肢があるようですが,どうしましょうか.

@k-okada
Copy link
Member

k-okada commented May 5, 2014

いずれにせよ,

rtmlaunchではexecveでrtcdを起動しているため,

を直しましょう.まずはticket切っておいて下さい.

(3) RobotHardware.soをソースからコンパイルして,その時にrpathを指定する

がいいけど,いい感じのcmakeに引数でこれができるのかな?を確認しなければと思っていました.

2014-05-03 2:30 GMT+09:00 Masaki Murooka [email protected]:

[email protected] の返信で
rtmlaunchではexecveでrtcdを起動しているため,
環境変数が引き継がれないことを指摘されました.

ということで,仕切り直すと
(1) RobotHardware.soのrpathを消して,rtmlaunchでLD_LIBRARY_PATHが反映されるようにして頑張る.
(2) hrpsys_preload_rtcとhrpsys_load_pathで指定する( #45https://github.com/start-jsk/rtmros_gazebo/pull/45)
(3) RobotHardware.soをソースからコンパイルして,その時にrpathを指定する
という選択肢があるようですが,どうしましょうか.


Reply to this email directly or view it on GitHubhttps://github.com//issues/35#issuecomment-42056875
.

@mmurooka
Copy link
Member Author

mmurooka commented May 8, 2014

rtmlaunchではexecveでrtcdを起動しているため,

を直しましょう.まずはticket切っておいて下さい.

を切りました.遅くなりました.

(3) RobotHardware.soをソースからコンパイルして,その時にrpathを指定する

がいいけど,いい感じのcmakeに引数でこれができるのかな?を確認しなければと思っていました.

hrpsysをソースから入れているときは,そこにあるソースを使いまわすのでいいでしょうか.
その場合,aptから入れている環境にはどう対応しましょう.
aptから入れている時のみ新しくソースを落としてくるとかでしょうか.

@k-okada
Copy link
Member

k-okada commented May 8, 2014

難しいですね.
.so を分解して .o を取り出すツールがあったきがしたけど,思い出せない.それで再リンクというのもあるのかな.

2014-05-08 11:36 GMT+09:00 Masaki Murooka [email protected]:

rtmlaunchではexecveでrtcdを起動しているため,

を直しましょう.まずはticket切っておいて下さい.

を切りました.遅くなりました.

(3) RobotHardware.soをソースからコンパイルして,その時にrpathを指定する

がいいけど,いい感じのcmakeに引数でこれができるのかな?を確認しなければと思っていました.

hrpsysをソースから入れているときは,そこにあるソースを使いまわすのでいいでしょうか.
その場合,aptから入れている環境にはどう対応しましょう.
aptから入れている時のみ新しくソースを落としてくるとかでしょうか.


Reply to this email directly or view it on GitHubhttps://github.com//issues/35#issuecomment-42507801
.

@mmurooka
Copy link
Member Author

mmurooka commented May 8, 2014

.so を分解して .o を取り出すツールがあったきがしたけど,思い出せない.それで再リンクというのもあるのかな.

分からないので調べてみた限りでは,
静的ライブラリなら,ar コマンドでメンバファイルを置き換えたりできるようですが,
動的ライブラリでは,難しそうです.

そもそも実行時にリンク先ファイルが決まるものなので,
やっぱりrpathを置き換えるのが.oを置き換えることに相当するような気がします.
rpathの上書きに長さ制限さえなければいいのですが..

@garaemon
Copy link
Member

結局この問題はどうなりましたか?

@mmurooka
Copy link
Member Author

止まっています.

とりあえず
start-jsk/rtmros_common#456
をマージしてもらえたら他の人もそのまま使えるようになるのですが
ベストではなさそうですがマージしてしまうというのは,
あまり良くないでしょうか.

それで,この解決策はちょっと微妙な方法なので,
もっと良い方法を探していくというようにしたいです.

@k-okada
Copy link
Member

k-okada commented May 28, 2014

何とかします.

ポイントは以下の2点.

1) RobotHardwareからlibiobにrpathでリンクがつながっている件
無理やりchrpathで外す,切り替える,はちょっとやり過ぎか.
gcc -sahred -o RobotHardware.so libiob.o RobotHardware.so
みたいにしたら何が起こるだろうか?
これがだめなら,RobotHardwareのsrcを落としてコンパイルするか.

2) rtmlaunchがLD_LIBRARY_PATHを見えるように変えたい.

2014-05-28 10:20 GMT+09:00 Masaki Murooka [email protected]:

止まっています.

とりあえず
start-jsk/rtmros_common#456start-jsk/rtmros_common#456
をマージしてもらえたら他の人もそのまま使えるようになるのですが
ベストではなさそうですがマージしてしまうというのは,
あまり良くないでしょうか.

それで,この解決策はちょっと微妙な方法なので,
もっと良い方法を探していくというようにしたいです.


Reply to this email directly or view it on GitHubhttps://github.com//issues/35#issuecomment-44355261
.

@k-okada
Copy link
Member

k-okada commented Jun 1, 2014

@mmurooka 幾つか質問です.

とりあえず
start-jsk/rtmros_common#456
をマージしてもらえたら他の人もそのまま使えるようになるのですが

ですが,上のリンクはPRではなくてIssueにみえますが,まちがいでしょか?

マージしたらいいのは,いかでしょうか?これはcaktinだけでしょうか?rosbuildは未対応でしょうか.

https://github.com/start-jsk/rtmros_gazebo/pull/45/files

chrpathでrpathを消すというのが必要になっているとおもうけど,これはどのPRでしょうか?

@k-okada
Copy link
Member

k-okada commented Jun 1, 2014

chpathでrpahを消す以外に,hrpsys_gazebo_general用にRobotHardwareを作るというのがあるとおもうけど,本当はhrpsysのソースをどこからか持ってくる,という方法がただしそうですが,以下はかなり強引に,https://github.com/k-okada/rtmros_gazebo/blob/RobotHardware_dummy/hrpsys_gazebo_general/iob/RobotHardware_dummy.cpp
というフィアルからRobotHardwareを作って見ました.やっぱ強引かな.hrpsysをinstallするときにRobotHardwareのソースをコピーしておいて,hrpsys_gazebo_generalがそれを使うようにする,というのが正統で正しそうだろうか...

https://github.com/start-jsk/rtmros_gazebo/pull/57/files

@YoheiKakiuchi
Copy link
Member

rtmlaunchでLD_LIBRARY_PATHをみるようにするのは難しいのでしょうか?

gazebo_generalだけでなく、staroや今後つかう他のロボットも同じやり方になるので、シンプルな方が分かりやすいかと思います。
hrpsys_sourceパッケージを作るというのもあるかもしれないですね。問題となっているのは、sourceの場所が参照できないという問題ですので。
groovyはsourceの場所が参照できるので、RobotHardwareをhrpsys-baseのソースから作っていて問題なく動いているはずです。

@mmurooka
Copy link
Member Author

mmurooka commented Jun 1, 2014

ですが,上のリンクはPRではなくてIssueにみえますが,まちがいでしょか?
マージしたらいいのは,いかでしょうか?これはcaktinだけでしょうか?rosbuildは未対応でしょうか.
https://github.com/start-jsk/rtmros_gazebo/pull/45/files

はい,間違えました.そのPRです.
rosbuildは未対応です.

chrpathでrpathを消すというのが必要になっているとおもうけど,これはどのPRでしょうか?

このPRだけで動くようになります.
rpathは消さなくても大丈夫です.
#35 (comment)
で十分に説明できているかわかりませんが,

hrpsys_preload_rtcで読み込んでほしいlibhrpioのパスを書いておくことで,
RobotHardwareがlibhrpioを探す前に,
正しいlibhrpioを無理やりdlopenするので,
RobotHardwareのrpathに応じたdlopenはしなくなっているはずです.

@garaemon
Copy link
Member

garaemon commented Jun 2, 2014

rtmlaunchでLD_LIBRARY_PATHをみるようにするのは難しいのでしょうか?

gazebo_generalだけでなく、staroや今後つかう他のロボットも同じやり方になるので、シンプルな方が分かりやすいかと思います。

+1

@k-okada
Copy link
Member

k-okada commented Jun 2, 2014

むつかしくはないけどかなり強く意識ないと簡単にトラブルになりますね。

また前提条件としてhrpsysでRobotHardwareをコンパイルするときにrpathしないというのが出てきます。
このrtcのlibHrpIo.soだけ別扱いにしますか?hrpsys全体でrpathしないというのは危険ですよね。
RobotHardwareCompはどうしますか?こちらもrpathははずしましでしょうか?

@k-okada
Copy link
Member

k-okada commented Jun 2, 2014

hrpsys_sourceではなくhrpsys/src/rtc/RobotHardware
にインストールしてロボット毎にRobitHardwareをつくるのがシンプルに思うのですがどうでしょう?

@garaemon
Copy link
Member

garaemon commented Jun 2, 2014

また前提条件としてhrpsysでRobotHardwareをコンパイルするときにrpathしないというのが出てきます。

ああ、なるほど。

ロボット毎にRobitHardwareをつくるのがシンプルに思うのですがどうでしょう?

それが良いと思います。
このRobotHardware_dummy.cppではなく、おおもとのソースコードを使うことは難しいのでしょうか?

@YoheiKakiuchi
Copy link
Member

hrpsys_sourceではなくhrpsys/src/rtc/RobotHardware
にインストールしてロボット毎にRobitHardwareをつくるのがシンプルに思うのですがどうでしょう?

+1

@mmurooka
Copy link
Member Author

#79 で解決しました.

robograffitti pushed a commit to robograffitti/rtmros_gazebo that referenced this issue Jun 24, 2015
…kin-cmake

fixed conf setting in catkin.cmake to become same with the setting in CMakeList.txt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants