0
$\begingroup$

Rosanswers logo

Related Question: Here

Hi everyone! I'm trying to control a Robotiq 3 Finger Gripper using ROS kinetic, but when execute roslaunch, it gives me an error saying that the EtherCAT driver couldn't be initialized (additionally, SOEM won't start). I have followed all the steps that appear in the related question above, as well as all the necessary steps in order to install the EtherCAT driver from EtherLab (Manual: Here).

I have some sort of communication with the gripper, but ROS isn't able to bring the driver on. Here is an output of the command ethercat master:

Every 0,5s: ./ethercat master                                                                Mon Nov 20 14:31:53 2017

Master0
  Phase: Idle
  Active: no
  Slaves: 1
  Ethernet devices:
    Main: 78:d0:04:24:7e:33 (attached)
      Link: UP
      Tx frames:   1027480
      Tx bytes:    63272028
      Rx frames:   1027480
      Rx bytes:    63272028
      Tx errors:   0
      Tx frame rate [1/s]:    125    124    125
      Tx rate [KByte/s]:      7.3    7.3    7.3
      Rx frame rate [1/s]:    125    124    125
      Rx rate [KByte/s]:      7.3    7.3    7.3
    Common:
      Tx frames:   1027480
      Tx bytes:    63272028
      Rx frames:   1027480
      Rx bytes:    63272028
      Lost frames: 0
      Tx frame rate [1/s]:    125    124    125
      Tx rate [KByte/s]:      7.3    7.3    7.3
      Rx frame rate [1/s]:    125    124    125
      Rx rate [KByte/s]:      7.3    7.3    7.3
      Loss rate [1/s]:          0     -0      0
      Frame loss [%]:         0.0   -0.0    0.0
  Distributed clocks:
    Reference clock: Slave 0
    Application time: 0
                      2000-01-01 00:00:00.000000000

Which says to me that there is some sort of communication between the gripper and the computer. Here is the output of the ethercatctl status command:

Checking for EtherCAT master 1.5.2 
Master0  running

Here is my s_model_ethercat.launch file:

<launch>
  <arg name="gripper_name" default="gripper" />
  <arg name="slave_number" default="1" />
  <arg name="activate" default="True" />
  <arg name="ifname" default="eoe0s0" />

  <node pkg="robotiq_s_model_control" type="s_model_ethercat_node" name="gripper_server" output="screen">
      <param name="ifname" type="str" value="$(arg ifname)" />
      <param name="activate" type="bool" value="$(arg activate)" />
      <param name="slave_number" type="int" value="$(arg slave_number)"/>

      <remap from="output" to="/$(arg gripper_name)/output" />
      <remap from="input" to="/$(arg gripper_name)/input" />
    </node>
</launch>

I must recall that the EtherCAT driver won't be initialized no matter which network interface I use (eoe0s0 is created when I load the ethercat module, but the phyisical one is enp4s0). I suspect that ROS can't initialize the driver because it doesn't know where it is. Here is a reduced output of roslaunch robotiq_s_model_control s_model_ethercat.launch verobse:

[ INFO] [1511182084.984832728]: Initializing etherCAT master
[ERROR] [1511182084.984891375]: Could not initialize ethercat driver
terminate called after throwing an instance of 'robotiq_ethercat::EtherCatError'
  what():  Could not initialize SOEM
[gripper_server-1] process has died [pid 31098, exit code -6, cmd /home/spluser/catkin_ws/devel/lib/robotiq_s_model_control/s_model_ethercat_node output:=/gripper/output input:=/gripper/input __name:=gripper_server __log:=/home/spluser/.ros/log/2284fc32-cddc-11e7-b70a-78d004247e32/gripper_server-1.log].
log file: /home/spluser/.ros/log/2284fc32-cddc-11e7-b70a-78d004247e32/gripper_server-1*.log

The error points out to a log file that actually doesn't exist (I don't know the reason), the folder does exist, but not the log file. It doesn't matter either, whether I launch the s_model or the c_model. The error is the same.

What am I doing wrong here? Does this problem have to do with ethercat_grant?

Thanks!

C.


Originally posted by CharlieMAC on ROS Answers with karma: 28 on 2017-11-20

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

I have solved the problem by executing the roslaunch command with root privileges, using the following commands:

$sudo su --preserve-environment
#roslaunch robotiq_s_model_control s_model_ethercat.launch

This makes it possible to launch the ethercat driver and SOEM.


Originally posted by CharlieMAC with karma: 28 on 2017-11-27

This answer was ACCEPTED on the original site

Post score: 0

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.