Ask Your Question
0

Failed to read from robot EKI server

asked 2019-10-09 05:55:30 -0500

sef_roboter gravatar image

Hello, I am trying to connect ROS melodic with KUKA robot KR6 r900 sixx using kuka-experimental. However, after having done all things in README.md about configuring EKI on the controller, I am getting the error:

Failed to read from robot EKI server within alloted time of 5 seconds. Make sure eki_hw_interface is running on the robot controller and all configurations are correct.

At the side of KUKA controller I have done these things:

  1. setting IP, creating new port 54600 (for udp)
  2. copy EkiHwInterface into C:\KRC\ROBOTER\Config\User\Common\EthernetKRL\ (with same IP as in the previous step)
  3. copy kuka_eki_hw_interface.dat and kuka_eki_hw_interface.src to KRC:\R1\Program

At the side of ROS I have done:

  1. The hardware_controllers.yaml and controller_joint_names.yaml I have not changed so the names of joints are as follows:

    #Publish all joint states
    joint_state_controller:
      type: joint_state_controller/JointStateController
      publish_rate: 50
    
    # Joint trajectory controller
    position_trajectory_controller:
      type: "position_controllers/JointTrajectoryController"
      joints:
        - joint_a1
        - joint_a2
        - joint_a3
        - joint_a4
        - joint_a5
        - joint_a6
    
      state_publish_rate: 50 # Defaults to 50
      action_monitor_rate: 20 # Defaults to 20
    

    Is the fact that I have written here the wrong names of the joints why I cant read from EKI server?

  2. The test_params.yaml file is as follows:

eki:
  robot_address: "192.168.100.2"
  robot_port: "54600"
  socket_timeout: 5

My launch file is as follows:

<?xml version="1.0" encoding="utf-8"?>
<launch>
    <param name="robot_description" command="$(find xacro)/xacro.py '$(find kuka_kr6_support)/urdf/kr6r900sixx.xacro'"/>

   <rosparam file="$(find kuka_eki_hw_interface)/test/test_params.yaml" command="load" />

   <!-- Start EKI interface -->
   <node name="kuka_eki_hardware_interface" pkg="kuka_eki_hw_interface"
     type="kuka_eki_hw_interface_node"
     respawn="false"
     output="screen"
     required="true"/>

   <!-- Load joint controller configurations from YAML file to parameter server -->
   <rosparam file="$(find kuka_eki_hw_interface)/config/hardware_controllers.yaml"
     command="load"/>

   <!-- Load standard kuka controller joint names from YAML file to parameter server -->
   <rosparam file="$(find kuka_eki_hw_interface)/config/controller_joint_names.yaml"
     command="load"/>

   <!-- Load controllers -->
   <node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
     output="screen" args="position_trajectory_controller joint_state_controller --shutdown-timeout 1"/>
   <!-- Load robot state publisher -->
   <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
</launch>

Does anyone see where the mistake might be?

Thank you all in advance

edit retag flag offensive close merge delete

Comments

I'm not an expert with EKI, but some things to check:

  1. you can ping the robot's IP from your ROS PC
  2. the value you've configured for eki/robot_address is the IP of the robot controller. Not the IP of the ROS PC.
  3. you're performing all steps listed in the Testing section of the readme (especially those mentioning the teach pendant (ie: pressing play, waiting, pressing play again and holding the deadman switch). In manual mode you cannot let go of the teach pendant.
gvdhoorn gravatar imagegvdhoorn ( 2019-10-09 06:18:38 -0500 )edit
  1. I can ping from PC to KUKA and also the other way
  2. Yes I have done it, in the EkiHwInterface.xml is address of KUKA controller

So it is not the problem that I am using ROS Melodic, right?

Yes I select the program, holding deadman switch and pressing play. I am holding both buttons until I get message Programmed path reached (BCO). After that I am holding both buttons again and launching roslaunch kuka_eki_hw_interface test_hardware_interface.launch which gives me this error after 5s: Failed to read from robot EKI server within alloted time of 5 seconds. Make sure eki_hw_interface is running on the robot controller and all configurations are correct.

sef_roboter gravatar imagesef_roboter ( 2019-10-09 06:22:37 -0500 )edit

If everything is running on the robot side, it should work, but again, I've not used EKI myself.

There is a small chance @BrettHemes_ could comment here.

gvdhoorn gravatar imagegvdhoorn ( 2019-10-09 06:40:22 -0500 )edit

Should I post it at kuka_experimental github?

sef_roboter gravatar imagesef_roboter ( 2019-10-09 06:46:27 -0500 )edit

I'm not sure whether @BrettHemes_ monitors that issue tracker. But it could be that some other user who is using EKI notices your issue there.

If you do post on kuka_experimental's tracker, please include a link to your post here on ROS Answers.

And post a comment with a link to your kuka_experimental issue here, so we can keep things connected.

gvdhoorn gravatar imagegvdhoorn ( 2019-10-09 07:24:49 -0500 )edit
1

I do get emails from that tracker it seems :)

Sorry you are having issues with getting the communication going; these types of problems can be tough. Have you tried using Wireshark to see what exactly is getting transferred (if anything)?

BrettHemes gravatar imageBrettHemes ( 2019-10-09 08:18:14 -0500 )edit

I think that I tested it utterly wrong (if yes I am sorry). I executed at one PC(Windows) Wireshark scan and also executed kuka_eki_hw_interface on kuka controller. Nothing at all is transferred. Was this wrong test? If it was, could you point me to the direction how to test it?

Today I do not have another computer available so tomorrow I will test it with one PC with Wireshark and on the other PC I will launch that test.launch from ROS to see if it is sending something to KUKA or not.

sef_roboter gravatar imagesef_roboter ( 2019-10-09 08:56:59 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2019-10-11 03:15:26 -0500

sef_roboter gravatar image

updated 2019-10-11 03:15:59 -0500

@gvdhoorn @BrettHemes I have found a solution. The problem was that I added new port within KUKA controller with value 54600. I should not do it. When I have removed the port from NAT (port list), communication suddenly works.

Thank you for your help

edit flag offensive delete link more

Comments

Good to hear that you got it fixed.

gvdhoorn gravatar imagegvdhoorn ( 2019-10-11 03:27:40 -0500 )edit

Yay. I have issues like this way more than I would like to admit. Let me know how the driver works out for you.

BrettHemes gravatar imageBrettHemes ( 2019-10-11 11:01:53 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

2 followers

Stats

Asked: 2019-10-09 05:55:30 -0500

Seen: 144 times

Last updated: Oct 11