# Chapter 6: RTDEIOInterface ## About This Chapter While RTDEControlInterface moves the robot and RTDEReceiveInterface retrieves its state, `RTDEIOInterface` is the I/O operation interface provided by SDU Robotics' `ur_rtde`. It controls the robot's inputs and outputs (I/O) using writable fields of the official Universal Robots RTDE protocol. It is used to connect external equipment to the robot, including PLC integration, sensor reading, and control of solenoid valves and grippers. This chapter covers: - Digital I/O - Tool I/O - Analog I/O --- # 6.1 What Is I/O? I/O stands for: ``` Input / Output ``` In addition to its motors, a robot must communicate with devices such as: - Sensors - Solenoid valves - Solenoids - Cylinders - Grippers - Lamps - PLCs I/O is used to control these devices. --- # 6.2 Types of I/O UR robots provide several types of I/O. | Type | Purpose | |----|----------------| | Standard Digital Input | External input | | Standard Digital Output | External output | | Tool Digital Input | Input at the tool end | | Tool Digital Output | Output at the tool end | | Analog Input | Analog input | | Analog Output | Analog output | --- # 6.3 RTDEIOInterface Creating an instance: ```python from rtde_io import RTDEIOInterface rtde_io = RTDEIOInterface(IP) ``` Typically, the following three interfaces are instantiated together: ```python RTDEControlInterface RTDEReceiveInterface RTDEIOInterface ``` --- # 6.4 Standard Digital Output This is the most frequently used API. ```python rtde_io.setStandardDigitalOut(pin, value) ``` Example: ```python rtde_io.setStandardDigitalOut(0, True) ``` This turns DO0 ON. To turn it OFF: ```python rtde_io.setStandardDigitalOut(0, False) ``` --- # 6.5 Standard Digital Input Input states are obtained through `RTDEReceiveInterface`. ```python state = rtde_r.getDigitalInState(0) ``` The return value is: ``` True False ``` --- # 6.6 Tool Digital Output Controls outputs on the tool connector. ```python rtde_io.setToolDigitalOut(pin, value) ``` Example: ```python rtde_io.setToolDigitalOut(0, True) ``` This can be used to open or close a robot hand. --- # 6.7 Tool Digital Input Inputs at the tool end are also retrieved through the Receive Interface. Example: ```python state = rtde_r.getToolDigitalIn(0) ``` *The API name varies depending on the version.* --- # 6.8 Analog Output Analog voltage output: ```python rtde_io.setAnalogOutputVoltage(...) ``` Alternatively, current output: ```python setAnalogOutputCurrent(...) ``` These can be used for: - Inverters - Speed commands - Voltage commands --- # 6.9 Analog Input Analog inputs are obtained through the Receive Interface. Example: ```python voltage = ``` Applications include: - Sensor inputs - Load cells - Displacement gauges --- # 6.10 Gripper Control Example The simplest sequence is: ```text OPEN ↓ DO0 ON ↓ Wait 0.5 seconds ↓ DO0 OFF ``` Python: ```python rtde_io.setStandardDigitalOut(0, True) time.sleep(0.5) rtde_io.setStandardDigitalOut(0, False) ``` --- # 6.11 Toggle Operation Example of blinking an LED: ```python while True: rtde_io.setStandardDigitalOut(0, True) time.sleep(0.5) rtde_io.setStandardDigitalOut(0, False) time.sleep(0.5) ``` --- # 6.12 Combining Motion and I/O A typical pick operation: ```text MoveJ ↓ MoveL ↓ Close Gripper ↓ MoveL ↓ MoveJ ``` Code example: ```python robot.move(...) robot.move(...) robot.set_do(0, True) robot.wait_move() robot.move(...) ``` --- # 6.13 Waiting for an Input Waiting for a sensor: ```python while True: if rtde_r.getDigitalInState(0): break time.sleep(0.01) ``` This can be used for synchronization with a PLC, for example. --- # 6.14 Precautions for I/O Control Although I/O updates are relatively fast, they are not suitable for precise timing control within a few milliseconds. When synchronization with robot position is required, consider combining I/O control with URScript or a Robot Program. --- # 6.15 Implementation in ur_ctrl.py In `ur_ctrl.py`, it is recommended to wrap the operations in APIs such as: ```python set_do() get_di() set_tool_do() get_tool_di() ``` This removes the need for users to interact with `RTDEIOInterface` directly. --- # Summary `RTDEIOInterface` handles communication with external devices connected to the robot. Its main uses are: - Digital output - Digital input - Tool I/O - Analog I/O Combining I/O with motion control makes it possible to build practical automated systems. The next chapter explains the Dashboard Server.