What is best practice to prevent conflict between other installed URCaps that may be using the same resources/ports of our URCap?
If a customer asks “will your URCap work with X company URCap” I would not know how to answer this.
Specifically, We have had issues from customers trying to use Robotiq force copilot with our URCap. I see on Robotiq forums, OnRobot also does not work with this.
I suspect this may just be one example that may be common problem not specific to a single company/URCap?
On the developer side, communicating the used Interfaces, ports and registers to the user and integrator through the manual or the URCaps itself helps getting an easier insight on potential collisions, which cause problem with other URCaps installed on the robot.
On the Port side, referring to our recommended usage of network interfaces is one way to go. Here not using the default Daemon port 40404 from the example is also an easy step.
The available GP Register cannot only be accessed via the RTDE interface, but are also shared with the PROFINET and Ethernet/IP interface. Here a certain range of registered is especially reserved for URCaps. This does not eliminate a collision with existing solution but makes it more unlikely.
Keeping the used interfaces and communication frequency as low as possible reduces the load an the system and allows more applications running simulations on the robot.
Sticking to the Examples provided by the SDK and forum are generally the way to go and reduces the risk of incompatibility, if followed.
With the open system and great number of different available URCaps we have right now, it is not possible to guarantee all the URCaps are compatible with each other. But Following the steps above would reduce the risk and is speeds up the potential the debugging process.