Chapter 1: Getting Started with UR Robot Control
About This Chapter
This chapter explains the fundamentals required to control Universal Robots (UR) from Python.
It is intended for:
People using a UR robot for the first time
People who want to control a UR robot from Python
People using
ur_ctrl.pydescribed in this documentation
By the end of this chapter, readers should understand:
UR communication interfaces
The meaning of Remote Control
Python libraries
How to verify an initial connection
1.1 What Is Universal Robots?
Universal Robots (UR) is a major manufacturer of collaborative robots.
Representative models include:
Model |
Payload |
|---|---|
UR3 / UR3e |
3 kg |
UR5 / UR5e |
5 kg |
UR10 / UR10e |
10 kg |
UR16e |
16 kg |
UR20 |
20 kg |
UR30 |
30 kg |
This documentation primarily addresses the UR3 / UR3e, but many of the Python APIs introduced here are common to other models.
1.2 CB Series and e-Series
UR robots have two major generations.
CB Series
UR3
UR5
UR10
These models use an older controller running PolyScope 3.x.
e-Series
UR3e
UR5e
UR10e
UR16e
These models use PolyScope 5.x.
Many capabilities were added, including an integrated force sensor.
1.3 Ways to Control a UR Robot from Python
In Universal Robots systems, URControl in the Control Box is the core of robot control. PolyScope on the teach pendant (TP) provides the operating, teaching, and programming environment. Robot programs created in PolyScope execute on URControl as URScript. URScript can also be sent directly from an external PC.
Several official interfaces are available for communication with an external PC.
Interface |
Primary role |
|---|---|
RTDE |
Bidirectional exchange of controller state, I/O, general-purpose registers, and other data |
Primary / Secondary Interface |
Retrieval of controller information, transmission of URScript, etc. |
Dashboard Server |
Operational management, including power, Brake Release, and program execution |
ROS / ROS2 Driver |
Integration with ROS / ROS2 |
In addition to these official interfaces, the implementation described here uses SDU Robotics’ ur_rtde.
1.4 What Is the Official RTDE Interface?
RTDE stands for Real-Time Data Exchange. It is an official bidirectional data interface provided by Universal Robots for communication between external applications and the UR controller.
RTDE can read joint and TCP states, robot mode, safety information, I/O, general-purpose registers, and other data. It can also write to exposed I/O, the speed slider, general-purpose input registers, and other writable fields.
However, the official RTDE protocol does not itself define URScript motion commands such as movej or movel. The official RTDE protocol must be distinguished from SDU Robotics’ ur_rtde, described in the next section.
1.5 SDU Robotics’ ur_rtde
The library used in this documentation,
ur_rtde
is a third-party open-source library developed by SDU Robotics, not an official Universal Robots SDK.
ur_rtde uses the official Universal Robots RTDE interface and primarily provides:
RTDEControlInterfaceRTDEReceiveInterfaceRTDEIOInterface
Among these, RTDEControlInterface combines the official RTDE interface with a dedicated control URScript running on the robot to provide PC-side motion APIs such as moveJ, moveL, and servoJ.
Example installation:
pip install ur_rtde
Details are covered in subsequent chapters.
1.6 Difference from Dashboard Server
Dashboard Server is an official Universal Robots management interface and is separate from SDU Robotics’ ur_rtde.
It handles robot operation management, including loading, playing, and stopping programs; power management; Brake Release; and recovery from Protective Stop.
This implementation uses SDU Robotics’ ur_rtde for motion control, state acquisition, and I/O, together with Dashboard Server when operational management is required.
1.7 Architecture Used in This Documentation
Python
│
│
ur_ctrl.py
│
├──────── RTDEControl
├──────── RTDEReceive
├──────── RTDEIO
└──────── Dashboard
│
Ethernet
│
UR Robot
Users generally only need to interact with ur_ctrl.py.
ur_ctrl.py manages the low-level APIs internally.
Next Chapter
The next chapter covers:
PC configuration
IP addresses
Remote Control
Communication verification