Ask Your Question

Revision history [back]

OK! My stuff is getting weird. Out of a joint_names.yaml, which I found here, I got the names the Joints should have. I copied the test_move.py in an own created pkg and got it to run with changing the JOINT_NAMES and the topic advertised. Here are the lines I modified:

JOINT_NAMES = ['joint_1', 'joint_2', 'joint_3', 'joint_4', 'joint_5', 'joint_6']
client = actionlib.SimpleActionClient('joint_trajectory_action', FollowJointTrajectoryAction)

Something "new" indeed happened.

Later on I found here, that the process of copying the test_move.py and modify it is not necessary. One can use the original test_move.py in the industrial_robot_client pkg and set a rosparam according to the launch file here below. It will have the same effect/error as writing your own modified test_move.py.

<launch>

    <arg name="robot_ip" />

    <param name="/robot_ip_address" type="str" value="$(arg robot_ip)"/>

    <rosparam param="controller_joint_names">['shoulder_pan_joint', 'shoulder_lift_joint', 'elbow_joint',
               'wrist_1_joint', 'wrist_2_joint', 'wrist_3_joint']</rosparam>

    <node pkg="industrial_robot_client" type="robot_state" name="robot_state"/>

    <node pkg="industrial_robot_client" type="motion_streaming_interface" name="motion_streaming_interface"/>

    <node pkg="industrial_robot_client" type="joint_trajectory_action" name="joint_trajectory_action"/>

    <node pkg="ur_driver" type="test_move.py" name="follow_joint_trajectory">
        <param name="JOINT_NAMES" value="['J0','J1','J2','J3','J4','J5']"/>
        <remap from="follow_joint_trajectory/cancel" to="/joint_trajectory_action/cancel"/>
        <remap from="follow_joint_trajectory/feedback" to="/joint_trajectory_action/feedback"/>
        <remap from="follow_joint_trajectory/goal" to="/joint_trajectory_action/goal"/>
        <remap from="follow_joint_trajectory/result" to="/joint_trajectory_action/result"/>
        <remap from="follow_joint_trajectory/status" to="/joint_trajectory_action/status"/>
    </node>

</launch>

Both versions run up to the same nasty error:

[joint_trajectory_action-4] process has died [pid 19413, exit code -6, cmd /opt/ros/hydro/lib/industrial_robot_client/joint_trajectory_action

And the log states (version of the launch-file above):

[ INFO] [1413915691.313257598]: Adding shoulder_pan_joint to list parameter
[ INFO] [1413915691.313389666]: Adding shoulder_lift_joint to list parameter
[ INFO] [1413915691.313424935]: Adding elbow_joint to list parameter
[ INFO] [1413915691.313449309]: Adding wrist_1_joint to list parameter
[ INFO] [1413915691.313471448]: Adding wrist_2_joint to list parameter
[ INFO] [1413915691.313501550]: Adding wrist_3_joint to list parameter
[ INFO] [1413915691.313577745]: Found user-specified joint names in 'controller_joint_names': [shoulder_pan_joint, shoulder_lift_joint, elbow_joint, wrist_1_joint, wrist_2_joint, wrist_3_joint]
[ INFO] [1413915691.313631592]: Filtered joint names to 6 joints
[ INFO] [1413915692.534664431]: Received new goal

Error Log if I do it with my modified test_move.py and run everything step by step:

roscore
roslaunch industrial_robot_client robot_interface_streaming.launch robot_ip:=192.168.0.101
rosrun rospy_pkg test_move

Error-Log:

[ WARN] [1413917777.047475236]: Unable to find user-specified joint names in 'controller_joint_names'
[ WARN] [1413917777.049135966]: Unable to find URDF joint names in 'robot_description'
[ INFO] [1413917777.049281932]: Using standard 6-DOF joint names: [joint_1, joint_2, joint_3, joint_4, joint_5, joint_6]
[ INFO] [1413917777.049347373]: Filtered joint names to 6 joints
[ INFO] [1413917791.120453908]: Received new goal

But this will be part of my next question. So stay tuned if you want to do the same as I do. -_-

OK! My stuff is getting weird. Out of a joint_names.yaml, which I found here, I got the names the Joints should have. I copied the test_move.py in an own created pkg and got it to run with changing the JOINT_NAMES and the topic advertised. Here are the lines I modified:

JOINT_NAMES = ['joint_1', 'joint_2', 'joint_3', 'joint_4', 'joint_5', 'joint_6']
client = actionlib.SimpleActionClient('joint_trajectory_action', FollowJointTrajectoryAction)

Something "new" indeed happened.

Later on I found here, that the process of copying the test_move.py and modify it is not necessary. One can use the original test_move.py in the industrial_robot_clientur_driver pkg and set a rosparam according to the launch file here below. It will have the same effect/error as writing your own modified test_move.py.

<launch>

    <arg name="robot_ip" />

    <param name="/robot_ip_address" type="str" value="$(arg robot_ip)"/>

    <rosparam param="controller_joint_names">['shoulder_pan_joint', 'shoulder_lift_joint', 'elbow_joint',
               'wrist_1_joint', 'wrist_2_joint', 'wrist_3_joint']</rosparam>

    <node pkg="industrial_robot_client" type="robot_state" name="robot_state"/>

    <node pkg="industrial_robot_client" type="motion_streaming_interface" name="motion_streaming_interface"/>

    <node pkg="industrial_robot_client" type="joint_trajectory_action" name="joint_trajectory_action"/>

    <node pkg="ur_driver" type="test_move.py" name="follow_joint_trajectory">
        <param name="JOINT_NAMES" value="['J0','J1','J2','J3','J4','J5']"/>
        <remap from="follow_joint_trajectory/cancel" to="/joint_trajectory_action/cancel"/>
        <remap from="follow_joint_trajectory/feedback" to="/joint_trajectory_action/feedback"/>
        <remap from="follow_joint_trajectory/goal" to="/joint_trajectory_action/goal"/>
        <remap from="follow_joint_trajectory/result" to="/joint_trajectory_action/result"/>
        <remap from="follow_joint_trajectory/status" to="/joint_trajectory_action/status"/>
    </node>

</launch>

Both versions run up to the same nasty error:

[joint_trajectory_action-4] process has died [pid 19413, exit code -6, cmd /opt/ros/hydro/lib/industrial_robot_client/joint_trajectory_action

And the log states (version of the launch-file above):

[ INFO] [1413915691.313257598]: Adding shoulder_pan_joint to list parameter
[ INFO] [1413915691.313389666]: Adding shoulder_lift_joint to list parameter
[ INFO] [1413915691.313424935]: Adding elbow_joint to list parameter
[ INFO] [1413915691.313449309]: Adding wrist_1_joint to list parameter
[ INFO] [1413915691.313471448]: Adding wrist_2_joint to list parameter
[ INFO] [1413915691.313501550]: Adding wrist_3_joint to list parameter
[ INFO] [1413915691.313577745]: Found user-specified joint names in 'controller_joint_names': [shoulder_pan_joint, shoulder_lift_joint, elbow_joint, wrist_1_joint, wrist_2_joint, wrist_3_joint]
[ INFO] [1413915691.313631592]: Filtered joint names to 6 joints
[ INFO] [1413915692.534664431]: Received new goal

Error Log if I do it with my modified test_move.py and run everything step by step:

roscore
roslaunch industrial_robot_client robot_interface_streaming.launch robot_ip:=192.168.0.101
rosrun rospy_pkg test_move

Error-Log:

[ WARN] [1413917777.047475236]: Unable to find user-specified joint names in 'controller_joint_names'
[ WARN] [1413917777.049135966]: Unable to find URDF joint names in 'robot_description'
[ INFO] [1413917777.049281932]: Using standard 6-DOF joint names: [joint_1, joint_2, joint_3, joint_4, joint_5, joint_6]
[ INFO] [1413917777.049347373]: Filtered joint names to 6 joints
[ INFO] [1413917791.120453908]: Received new goal

But this will be part of my next question. So stay tuned if you want to do the same as I do. -_-

OK! My stuff is getting weird. For solving my problem I split it up in two approaches:

  1. Copy test_move.py into my own package and change the joint names, as well as the topic name it advertises.
  2. Use features that are already implemted in ROS-I and do needed changes via launch file.

Informations that are important for both approaches: Out of a joint_names.yaml, which I found here, I got the names the Joints should have. have.

The first approach: I copied the test_move.py in an own a package created pkg by myself and got it to run with changing the JOINT_NAMES and the topic advertised. Here are the lines I modified:

JOINT_NAMES = ['joint_1', 'joint_2', 'joint_3', 'joint_4', 'joint_5', 'joint_6']
client = actionlib.SimpleActionClient('joint_trajectory_action', FollowJointTrajectoryAction)

Something "new" indeed happened.

And I call it with these commands:

roscore
roslaunch industrial_robot_client robot_interface_streaming.launch robot_ip:=192.168.0.101
rosrun rospy_pkg test_move

This for the first works! But results in an error message listed bellow in this question.

The second approach: Later on I found here, that the process of copying the test_move.py and modify it is not necessary. One can use the original test_move.py in the ur_driver pkg package and set a the rosparam according to the launch file here below. controller_joint_names. It will have the same effect/error effect as writing your an own modified test_move.py.

<launch>
     <arg name="robot_ip" />
     <param name="/robot_ip_address" type="str" value="$(arg robot_ip)"/>
     <rosparam param="controller_joint_names">['shoulder_pan_joint', 'shoulder_lift_joint', 'elbow_joint',
               'wrist_1_joint', 'wrist_2_joint', 'wrist_3_joint']</rosparam>
     <node pkg="industrial_robot_client" type="robot_state" name="robot_state"/>
     <node pkg="industrial_robot_client" type="motion_streaming_interface" name="motion_streaming_interface"/>
     <node pkg="industrial_robot_client" type="joint_trajectory_action" name="joint_trajectory_action"/>
     <node pkg="ur_driver" type="test_move.py" name="follow_joint_trajectory">
        <param name="JOINT_NAMES" value="['J0','J1','J2','J3','J4','J5']"/>
        <remap from="follow_joint_trajectory/cancel" to="/joint_trajectory_action/cancel"/>
        <remap from="follow_joint_trajectory/feedback" to="/joint_trajectory_action/feedback"/>
        <remap from="follow_joint_trajectory/goal" to="/joint_trajectory_action/goal"/>
        <remap from="follow_joint_trajectory/result" to="/joint_trajectory_action/result"/>
        <remap from="follow_joint_trajectory/status" to="/joint_trajectory_action/status"/>
    </node>
 </launch>

This also works! But results in the same error message mentioned above and listed bellow in this question. Both versions run up to the same nasty error:

[joint_trajectory_action-4] [joint_trajectory_action-X] process has died [pid 19413, exit code -6, cmd /opt/ros/hydro/lib/industrial_robot_client/joint_trajectory_action

And the log states (version of the launch-file above):

[ INFO] [1413915691.313257598]: Adding shoulder_pan_joint to list parameter
[ INFO] [1413915691.313389666]: Adding shoulder_lift_joint to list parameter
[ INFO] [1413915691.313424935]: Adding elbow_joint to list parameter
[ INFO] [1413915691.313449309]: Adding wrist_1_joint to list parameter
[ INFO] [1413915691.313471448]: Adding wrist_2_joint to list parameter
[ INFO] [1413915691.313501550]: Adding wrist_3_joint to list parameter
[ INFO] [1413915691.313577745]: Found user-specified joint names in 'controller_joint_names': [shoulder_pan_joint, shoulder_lift_joint, elbow_joint, wrist_1_joint, wrist_2_joint, wrist_3_joint]
[ INFO] [1413915691.313631592]: Filtered joint names to 6 joints
[ INFO] [1413915692.534664431]: Received new goal

Error Log if I do it with my modified test_move.py and run everything step by step:

roscore
roslaunch industrial_robot_client robot_interface_streaming.launch robot_ip:=192.168.0.101
rosrun rospy_pkg test_move

Error-Log:

[ WARN] [1413917777.047475236]: Unable to find user-specified joint names in 'controller_joint_names'
[ WARN] [1413917777.049135966]: Unable to find URDF joint names in 'robot_description'
[ INFO] [1413917777.049281932]: Using standard 6-DOF joint names: [joint_1, joint_2, joint_3, joint_4, joint_5, joint_6]
[ INFO] [1413917777.049347373]: Filtered joint names to 6 joints
[ INFO] [1413917791.120453908]: Received new goal

But this will be part of my next question. So stay tuned if you want to do the same as I do. -_-

For solving my problem I split it up in two approaches:

  1. Copy test_move.py into my own package and change the joint names, as well as the topic name it advertises.
  2. Use features that are already implemted in ROS-I and do needed changes via launch file.

Informations that are important for both approaches: Out of a joint_names.yaml, which I found here, I got the names the Joints should have.

The first approach: I copied the test_move.py in a package created by myself and got it to run with changing the JOINT_NAMES and the topic advertised. Here are the lines I modified:

JOINT_NAMES = ['joint_1', 'joint_2', 'joint_3', 'joint_4', 'joint_5', 'joint_6']
client = actionlib.SimpleActionClient('joint_trajectory_action', FollowJointTrajectoryAction)

And I call it with these commands:

roscore
roslaunch industrial_robot_client robot_interface_streaming.launch robot_ip:=192.168.0.101
rosrun rospy_pkg test_move

This for the first works! But results in an error message listed bellow in this question.

The second approach: Later on I found here, that the process of copying the test_move.py and modify it is not necessary. One can use the original test_move.py in the ur_driver package and set the rosparam controller_joint_names. It will have the same effect as writing an own modified test_move.py.

<launch>
    <arg name="robot_ip" />
    <param name="/robot_ip_address" type="str" value="$(arg robot_ip)"/>
    <rosparam param="controller_joint_names">['shoulder_pan_joint', 'shoulder_lift_joint', 'elbow_joint',
               'wrist_1_joint', 'elbow_joint','wrist_1_joint', 'wrist_2_joint', 'wrist_3_joint']</rosparam>
     <node pkg="industrial_robot_client" type="robot_state" name="robot_state"/>
    <node pkg="industrial_robot_client" type="motion_streaming_interface" name="motion_streaming_interface"/>
    <node pkg="industrial_robot_client" type="joint_trajectory_action" name="joint_trajectory_action"/>
 name="joint_trajectory_action">
      <remap from="joint_trajectory_action/feedback" to "follow_joint_trajectory/feedback"/>
   </node>
   <node pkg="ur_driver" type="test_move.py" name="follow_joint_trajectory">
       <remap from="follow_joint_trajectory/cancel" to="/joint_trajectory_action/cancel"/>
       <remap from="follow_joint_trajectory/goal" to="/joint_trajectory_action/goal"/>
       <remap from="follow_joint_trajectory/result" to="/joint_trajectory_action/result"/>
       <remap from="follow_joint_trajectory/status" to="/joint_trajectory_action/status"/>
    </node>
</launch>

This also works! But results in the same error message as approach nr. 1 mentioned above and listed bellow in this question. Both versions run up to the same nasty error:above. Here is the error message:

[joint_trajectory_action-X] process has died [pid 19413, exit code -6, cmd /opt/ros/hydro/lib/industrial_robot_client/joint_trajectory_action

So far I found out it has to do with the remapping of the the .../feedback topic. Attention! In Version Nr. 2 I do a remapping in the launch file. In Version Nr. 1 it is done by ROS-I automatically. Any ideas what and why it happens?

For solving my problem I split it up in two approaches:

  1. Copy test_move.py into my own package and change the joint names, as well as the topic name it advertises.
  2. Use features that are already implemted in ROS-I and do needed changes via launch file.

Informations that are important for both approaches: Out of a joint_names.yaml, which I found here, I got the names the Joints should have.

The first approach: I copied the test_move.py in a package created by myself and got it to run with changing the JOINT_NAMES and the topic advertised. Here are the lines I modified:

JOINT_NAMES = ['joint_1', 'joint_2', 'joint_3', 'joint_4', 'joint_5', 'joint_6']
client = actionlib.SimpleActionClient('joint_trajectory_action', FollowJointTrajectoryAction)

And I call it with these commands:

roscore
roslaunch industrial_robot_client robot_interface_streaming.launch robot_ip:=192.168.0.101
rosrun rospy_pkg test_move

This for the first works! But results in an error message listed bellow in this question.

The second approach: Later on I found here, that the process of copying the test_move.py and modify it is not necessary. One can use the original test_move.py in the ur_driver package and set the rosparam controller_joint_names. It will have the same effect as writing an own modified test_move.py.

<launch>
   <arg name="robot_ip" />
   <param name="/robot_ip_address" type="str" value="$(arg robot_ip)"/>
   <rosparam param="controller_joint_names">['shoulder_pan_joint', 'shoulder_lift_joint', 'elbow_joint','wrist_1_joint', 'wrist_2_joint', 'wrist_3_joint']</rosparam>

   <node pkg="industrial_robot_client" type="robot_state" name="robot_state"/>
   <node pkg="industrial_robot_client" type="motion_streaming_interface" name="motion_streaming_interface"/>
   <node pkg="industrial_robot_client" type="joint_trajectory_action" name="joint_trajectory_action">
      <remap from="joint_trajectory_action/feedback" to "follow_joint_trajectory/feedback"/>
   </node>
   <node pkg="ur_driver" type="test_move.py" name="follow_joint_trajectory">
      <remap from="follow_joint_trajectory/cancel" to="/joint_trajectory_action/cancel"/>
      <remap from="follow_joint_trajectory/goal" to="/joint_trajectory_action/goal"/>
      <remap from="follow_joint_trajectory/result" to="/joint_trajectory_action/result"/>
      <remap from="follow_joint_trajectory/status" to="/joint_trajectory_action/status"/>
   </node>
</launch>

This also works! But results in the same error message as approach nr. 1 mentioned above. Here is the error message:

[joint_trajectory_action-X] process has died [pid 19413, exit code -6, cmd /opt/ros/hydro/lib/industrial_robot_client/joint_trajectory_action

So far I found out it has to do with the remapping of the the .../feedback topic. topic. Attention! In Version Nr. 2 I do a remapping in the launch file. In Version Nr. 1 it is done by ROS-I automatically. Any ideas what and why it happens?