Program does not continue after URCaps node execution

Hi there,

we are testing our URCaps node in a loop that is supposed to go on for many hours continuously.
Our node is embedded in a loop with movej/movep commands in between, like this:

while(True):

  • movep(…)
  • movej(…)
  • our urcaps program
  • sleep(0.2)

(We run a block with those 4 lines actually 8 times within the while(True) loop with different movep/movej params.)

Now in our first run we were able to run this for 24h but when we attempted this a second time, the robot stopped after 2 hours.

I attached our node’s code below. I copied it from the whole program’s .script representation so this should be as close to execution as possible.

Now here is the state we found the robot in:

  • Robot was standing still, doing nothing (for several hours)
  • There was no error whatsoever on Polyscope or in the log
  • Robot was still turned on
  • Robot was still executing our node’s block in the program
  • The very last message in the log was the very last command of our node: Stopping main loop...

Now I know it is hard to debug this but we think this must be a problem on the UR side, since our program has executed everything properly and should hand control back to the next node.
Is there anything that you could think off which could cause this? Or does anyone know what we could try to isolate this problem?

Polyscope version: 3.7.0.40195

    # begin: URCap Program Node
    #   Source: ...
    #   Type: ...
    $ 58 "MyProgram"
      enable_external_ft_sensor(True, sensor_mass =1.27, sensor_measuring_offset = [0.0, 0.0, 0.0], sensor_cog = [0.0, 0.0, 0.0175])
      rtde_set_watchdog("external_force_torque", 125, "ignore")
      myprogram_xmlrpc.execute_skill(2)
      textmsg("Executed skill:", "2")
      has_started = False
      while(True):
        if (read_input_float_register(6) == 1):
          has_started = True
        end
        if (read_input_float_register(6) == -1):
          textmsg("got break register value")
          if has_started:
            textmsg("breaking")
            break
          else:
            textmsg("has_started not set, not breaking")
          end
        end
        velocity = [read_input_float_register(0), read_input_float_register(1), read_input_float_register(2), read_input_float_register(3), read_input_float_register(4), read_input_float_register(5)]
        textmsg("Register 6: ", read_input_float_register(6))
        speedj(velocity, 5, 0.05)
        sync()
      end
      textmsg("Stopping main loop...")
    # end: URCap Program Node