Chapter 7: Dashboard Server

About This Chapter

The Dashboard Server is a TCP server for remotely operating a UR Controller.

Whereas the SDU Robotics RTDEControlInterface used in the current implementation handles motion control, the official Universal Robots Dashboard Server handles robot operation management, including:

  • Power on

  • Brake release

  • Program start

  • Program stop

  • Clearing a Protective Stop

The current implementation combines the official RTDE interface used by SDU Robotics ur_rtde with the Dashboard Server, assigning each its respective responsibilities.


7.1 What Is the Dashboard Server?

The Dashboard Server is a TCP server running inside the Controller.

Python

    │

TCP Socket

    │

Dashboard Server

    │

UR Controller

The Dashboard Server is a separate TCP interface from the RTDE protocol.


7.2 Connection Port

The Dashboard Server uses port:

29999

Example:

import socket

sock = socket.socket()

sock.connect(("192.168.0.10",29999))

Upon connection, a message such as the following is returned:

Connected: Universal Robots Dashboard Server

7.3 Sending Commands

The Dashboard Server accepts text commands.

Example:

sock.sendall(b"power on\n")

Always append a newline.

The Controller returns a string such as:

Powering on

7.4 Power On

power on

Turns on the Controller’s servo power.

Note: This does not turn on the Controller’s AC power. It corresponds to the Power button on the Teach Pendant.


7.5 Brake Release

brake release

Releases the brakes.

Move commands cannot be executed with Power On alone.

The normal sequence is:

power on

↓

brake release

7.6 Program Load

load program.urp

Loads a URP file.

Example:

load demo.urp

This only loads the program; it does not execute it.


7.7 Program Play

play

Starts the loaded program.

Equivalent to the ▶ button on the Teach Pendant.


7.8 Pause

pause

Pauses the program.

This is different from a Move command.


7.9 Stop

stop

Stops the running program.

This has a different meaning from the following RTDEControlInterface methods:

stopJ()

stopL()

7.10 Shutdown

shutdown

Safely shuts down the Controller.

This is not an immediate power cut; it shuts down the operating system.


7.11 Robot Status

Robot status can also be queried.

Example:

robotmode

Example response:

Robotmode: RUNNING

Other possible states include:

POWER_OFF

IDLE

BACKDRIVE

RUNNING

7.12 Program Status

programState

Retrieves the current program state.

Examples:

STOPPED

PLAYING

PAUSED

7.13 Safety Status

safetystatus

Retrieves the safety state.

Used, for example, to detect a Protective Stop.


7.14 Protective Stop

A Protective Stop is a stop triggered by a safety mechanism.

It is different from an Emergency Stop.

Possible causes include:

  • Collision

  • Overload

  • Excessive speed

It cannot be cleared using RTDE alone.


7.15 Clearing a Protective Stop

Command:

unlock protective stop

After clearing the stop, check Robot Mode and, if necessary, execute:

play

or:

brake release

7.16 Safety Popup

When a safety dialog is displayed, send:

close safety popup

If the popup remains open, Move commands are not accepted.


7.17 Typical Recovery Sequence

A typical recovery sequence after a Protective Stop:

close safety popup

↓

unlock protective stop

↓

power on
(if necessary)

↓

brake release
(if necessary)

↓

play
(if necessary)

In practice, check RobotMode throughout the procedure.


7.18 Division of Responsibilities with RTDE

Function

RTDE

Dashboard

MoveJ

Yes

No

MoveL

Yes

No

Read current position

Yes

No

Digital IO

Yes

No

Power ON

No

Yes

Brake Release

No

Yes

Program Play

No

Yes

Clear Protective Stop

No

Yes

Both interfaces are required.


7.19 Use in ur_ctrl.py

In ur_ctrl.py, the connection sequence is:

connect()

↓

Dashboard connection

↓

RTDE connection

In addition, reset_error() should ideally be designed to execute operations such as:

close safety popup

↓

unlock protective stop

It is also convenient to implement turn_on_motor() as an API that combines:

power on

↓

brake release

7.20 Basic Sequence for Automatic Operation

For fully automatic operation from Python, the sequence is as follows:

Dashboard connection

↓

RTDE connection

↓

Power On

↓

Brake Release

↓

MoveJ

↓

MoveL

↓

IO control

↓

MoveL

↓

MoveJ

↓

Stop

↓

Shutdown (if necessary)

Summary

The Dashboard Server is responsible for managing robot operation.

Operations that cannot be performed through RTDE, such as:

  • Power On

  • Brake Release

  • Program Play

  • Clearing a Protective Stop

are handled through the Dashboard Server.

In the current implementation, SDU Robotics ur_rtde and the Dashboard Server are used together, separating motion control from operation management.