Dashboard server erroneously reports program state "PLAYING" after safeguard stop

This bug has been mentioned in this forum post from 2021 Dashboard server report program as "Playing" after Safeguard Reset, but since there has never been any response from UR I thought it appropriate to file a new bug report with additional information.

Steps to reproduce:

  • Load a program
  • Trigger safeguard stop
  • Release safeguard stop (automatic reset). Note: Teach pendant shows “Stopped”
  • Query program state from dashboard server. The server should return “STOPPED”, but actually returns “PLAYING”.

Robot Serial Number:

20205501445 (same issue verified on other robots)

Polyscope version:

5.21.2

Additional details

  • The server command “running” returns the correct state.
  • If the robot is running in remote control and program is loaded through dashboard server, the problem does not occur until the program has been played.

Simple example

I use netcat to send queries to the dashboard server.

Contents of queries.txt:

safetyStatus
programState
running
ssj@ssj-linux:~$ # Robot is in local mode
ssj@ssj-linux:~$ netcat -N 192.168.2.115 29999 < queries.txt
  Connected: Universal Robots Dashboard Server
  Safetystatus: NORMAL
  STOPPED my_program.urp
  Program running: false
ssj@ssj-linux:~$
ssj@ssj-linux:~$ # Triggering safeguard stop
ssj@ssj-linux:~$ netcat -N 192.168.2.115 29999 < queries.txt
  Connected: Universal Robots Dashboard Server
  Safetystatus: SAFEGUARD_STOP
  STOPPED my_program.urp
  Program running: false
ssj@ssj-linux:~$
ssj@ssj-linux:~$ # Releasing safeguard stop
ssj@ssj-linux:~$ netcat -N 192.168.2.115 29999 < queries.txt
  Connected: Universal Robots Dashboard Server
  Safetystatus: NORMAL
  PLAYING my_program.urp
  Program running: false
ssj@ssj-linux:~$ # State is now falsely reported as PLAYING
ssj@ssj-linux:~$ 
ssj@ssj-linux:~$ # Playing program
ssj@ssj-linux:~$ netcat -N 192.168.2.115 29999 < queries.txt
  Connected: Universal Robots Dashboard Server
  Safetystatus: NORMAL
  PLAYING my_program.urp
  Program running: true
ssj@ssj-linux:~$
ssj@ssj-linux:~$ # Stopping program
ssj@ssj-linux:~$ netcat -N 192.168.2.115 29999 < queries.txt
  Connected: Universal Robots Dashboard Server
  Safetystatus: NORMAL
  STOPPED my_program.urp
  Program running: false
ssj@ssj-linux:~$ # State is reported correctly again
ssj@ssj-linux:~$ 
ssj@ssj-linux:~$ # Switching robot to remote control
ssj@ssj-linux:~$ netcat -N 192.168.2.115 29999 < queries.txt
  Connected: Universal Robots Dashboard Server
  Safetystatus: NORMAL
  STOPPED my_program.urp
  Program running: false
ssj@ssj-linux:~$ 
ssj@ssj-linux:~$ # Loading program "wait.urp"
ssj@ssj-linux:~$ echo "load wait.urp" | netcat -N 192.168.2.115 29999
  Connected: Universal Robots Dashboard Server
ssj@ssj-linux:~$ netcat -N 192.168.2.115 29999 < queries.txt
  Connected: Universal Robots Dashboard Server
  Safetystatus: NORMAL
  STOPPED wait.urp
  Program running: false
ssj@ssj-linux:~$ 
ssj@ssj-linux:~$ # Triggering safeguard stop
ssj@ssj-linux:~$ netcat -N 192.168.2.115 29999 < queries.txt
  Connected: Universal Robots Dashboard Server
  Safetystatus: SAFEGUARD_STOP
  STOPPED wait.urp
  Program running: false
ssj@ssj-linux:~$ 
ssj@ssj-linux:~$ # Releasing safeguard stop
ssj@ssj-linux:~$ netcat -N 192.168.2.115 29999 < queries.txt
  Connected: Universal Robots Dashboard Server
  Safetystatus: NORMAL
  STOPPED wait.urp
  Program running: false
ssj@ssj-linux:~$ # State is reported correctly
ssj@ssj-linux:~$ 
ssj@ssj-linux:~$ # Playing program
ssj@ssj-linux:~$ echo play | netcat -N 192.168.2.115 29999
  Connected: Universal Robots Dashboard Server
ssj@ssj-linux:~$ netcat -N 192.168.2.115 29999 < queries.txt
  Connected: Universal Robots Dashboard Server
  Safetystatus: NORMAL
  PLAYING wait.urp
  Program running: true
ssj@ssj-linux:~$ 
ssj@ssj-linux:~$ # Stopping program
ssj@ssj-linux:~$ echo stop | netcat -N 192.168.2.115 29999
  Connected: Universal Robots Dashboard Server
  Stopped
ssj@ssj-linux:~$ netcat -N 192.168.2.115 29999 < queries.txt
  Connected: Universal Robots Dashboard Server
  Safetystatus: NORMAL
  STOPPED wait.urp
  Program running: false
ssj@ssj-linux:~$ 
ssj@ssj-linux:~$ # Triggering safeguard stop
ssj@ssj-linux:~$ netcat -N 192.168.2.115 29999 < queries.txt
  Connected: Universal Robots Dashboard Server
  Safetystatus: SAFEGUARD_STOP
  STOPPED wait.urp
  Program running: false
ssj@ssj-linux:~$ 
ssj@ssj-linux:~$ # Releasing safeguard stop
ssj@ssj-linux:~$ netcat -N 192.168.2.115 29999 < queries.txt
  Connected: Universal Robots Dashboard Server
  Safetystatus: NORMAL
  PLAYING wait.urp
  Program running: false
ssj@ssj-linux:~$ # State is now falsely reported as PLAYING
ssj@ssj-linux:~$ 
ssj@ssj-linux:~$ # Play program
ssj@ssj-linux:~$ echo play | netcat -N 192.168.2.115 29999
  Connected: Universal Robots Dashboard Server
ssj@ssj-linux:~$ netcat -N 192.168.2.115 29999 < queries.txt
  Connected: Universal Robots Dashboard Server
  Safetystatus: NORMAL
  PLAYING wait.urp
  Program running: true
ssj@ssj-linux:~$ 
ssj@ssj-linux:~$ # Stop program
ssj@ssj-linux:~$ echo stop | netcat -N 192.168.2.115 29999
  Connected: Universal Robots Dashboard Server
  Stopped
ssj@ssj-linux:~$ netcat -N 192.168.2.115 29999 < queries.txt
  Connected: Universal Robots Dashboard Server
  Safetystatus: NORMAL
  STOPPED wait.urp
  Program running: false
ssj@ssj-linux:~$ # State is now reported correctly again