Connection to reverse interface dropped

Hi!

I have made a ROS program that allows me to send the position of an ArUco marker to the robot, so that it can be placed just above it at a defined distance (in Z). To do this, two nodes are used: One node for the vision system and the transmission of the ArUco’s pose and another node to receive this information and execute the robot’s movement. Everything works correctly, I mean, the robot positions itself satisfactorily until suddenly (I don’t know the cause) the robot stops accepting new poses and the connection is closed. If I run again the external control from the teachpedant, the program still works.

The controller used is the “fordward_cartesian_traj_controller”. The driver has been downloaded from : GitHub - UniversalRobots/Universal_Robots_ROS_Driver: Universal Robots ROS driver supporting CB3 and e-Series

In addition, the message that appears on the console is attached in the following image:

Thanks in advanced,

Daniel.

Are you running in a virtual machine, or using URSim?

I’ve seen this error happen pretty much all the time when doing work with a ROS machine running in a VM, alongside URSim. When running the exact same code on a dedicated linux machine and a real robot it can run days without any connection drop.

It happen also very frequently if you are working over Wifi connection between the ROS node and the real robot instead of wired, too many packet losses, but here you have a “maximum number of clients(1)” which doesnt seem to be related.

Hello!

First of all, thank you for your reply!

You are right, I am using a ROS machine running in a VM, which has Ubuntu 18.04 and ROS Melodic installed. The connection between the ROS machine and the real robot is done via a wired connection from the UR10 controller to the PC.

Instead of using two nodes, I have tried to use a single node to perform the ArUco detection and the execution of the robot movement. The issue is solved but I prefer to use independent nodes for each operation. Have you found any solution to run this kind of programs based on a ROS machine running in a VM?Such as enabling the real time kernel of the linux VM?

Thanks in advanced,
Daniel.

Alright, interesting, so you can run in a VM and the connection is stable if you have a single node?

If I bringup the UR node to connect to our real UR10 from a VM the connection drops after a few minutes, without doing anything. Works perfectly fine from a non-VM ROS machine though, so I don’t develop too much in VM anymore because of that, not very practical as all our laptops are Mac…

I’d imagine a realtime kernel in a VM might still suffer from jitter anyway because of the virtualized environment, no idea really. I’ve seen too many weird behaviors with ethernet lag, usb connectivity, etc with linux VMs when using real hardware and we’ve wasted so much time trying to troubleshoot it that we now only use real linux machines.

let’s continue the discussion in the corresponding GH issue.