ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
1

Get forward kinematics tutorial failed

asked 2012-12-08 03:17:24 -0500

Albert K gravatar image

updated 2012-12-11 00:27:42 -0500

I've tried this tutorial

But the service call failed, and I got the following error on the terminal where I ran [ roslaunch pr2_3dnav right_arm_navigation.launch ]:

[ERROR] [1354979145.382429702, 11715.590000000]: client wants service /pr2_right_arm_kinematics/get_fk to have md5sum 47de11a2bc125445e74531db0e2d1c21, but it has 2088007c8963e2252a67c872affa0985. Dropping connection.

If I do [ rosrun pr2_arm_navigation_tutorials get_fk ], the service call will succeed and get the correct result. But if I copy and paste the same code and run from my own package, it gets the above problem.

I'm using Fuerte.

Any idea? Thanks~


modified):

files that contain md5 [47de11a2bc125445e74531db0e2d1c21]:

/opt/ros/fuerte/lib/python2.7/dist-packages/kinematics_msgs/srv/_GetPositionFK.py

/opt/ros/fuerte/share/common-lisp/ros/kinematics_msgs/srv/GetPositionFK.lisp

/opt/ros/fuerte/include/kinematics_msgs/GetPositionFK.h

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2012-12-08 04:34:13 -0500

dornhege gravatar image

updated 2012-12-09 03:18:08 -0500

The tutorial seems to be written for electric. Are you building the code for electric? The message hints that you have an inconsistent ROS setup. You are probably mixing distributions or release versions between who provides the service and the node calling it.

Make sure that the ROS node providing the service is using the same service definition as your code.

The service definition has changed between distributions:

edit flag offensive delete link more

Comments

My working environment is Feurte, but isn't Feurte compatible with Electric? The server node is from pr2_arm_kinematics/pr2_arm_kinematics_node. Could you give an example about different service definition? Thanks~

Albert K gravatar image Albert K  ( 2012-12-09 02:18:43 -0500 )edit
1

No, in general different distributions are not compatible. You can mix them, but you should not rely on that working. The most obvious example is the service you are using.

dornhege gravatar image dornhege  ( 2012-12-09 03:19:33 -0500 )edit

OK...I see the difference. But I install the package <pr2_kinematics> in Feurte using [apt-get install ros-fuerte-pr2-kinematics], shouldn't I suppose that this node/service is meant for Feurte? Besides installing another ros distribution (Electric), what else can I do to solve this problem? Thanks

Albert K gravatar image Albert K  ( 2012-12-09 14:56:37 -0500 )edit
1

Yes, definitely. My suspicion would be that you are mixing in old code. Try enabling electric/fuerte and do rossrv md5 on the service type. That should show you the md5 sums. Then you can compare what you get in the error.

dornhege gravatar image dornhege  ( 2012-12-09 22:52:15 -0500 )edit

I type : [rossrv md5 GetPositionFK] and get [kinematics_msgs/GetPositionFK]: 47de11a2bc125445e74531db0e2d1c21. I don't know what "rossrv md5" mean, does that mean I use the old version?

Albert K gravatar image Albert K  ( 2012-12-10 00:56:24 -0500 )edit

It means that whatever you are running/connecting to has another service definition than you have on your system as what you have setup now. My suspicion is that you are connecting to an electric system with your fuerte code.

dornhege gravatar image dornhege  ( 2012-12-10 01:03:42 -0500 )edit

The weird point I can't understand is that the server node and all the system is install using ros-fuerte-* , how come that node is from older distribution?

Albert K gravatar image Albert K  ( 2012-12-10 01:26:56 -0500 )edit

albert@Albert-PC:/opt/ros$ ls

fuerte

Albert K gravatar image Albert K  ( 2012-12-10 01:27:35 -0500 )edit

Question Tools

Stats

Asked: 2012-12-08 03:17:24 -0500

Seen: 807 times

Last updated: Dec 11 '12