UnderAutomation
¿Una pregunta?

[email protected]

Contactos
UnderAutomation
⌘Q
This page is only available in English.

RTDE : Real-Time Data Exchange

The RTDE protocol allows fast two-way data exchange between the robot and your application up to 500Hz.

  • Overview of RTDE
  • Setup connection
  • Receive data from robot
  • Send data to robot
  • Pause and resume
  • Other features
  • API reference

Overview

RTDE allows you to exchange data and measurements with the robot at high speed, up to 500Hz on the latest cobots.

For more information about RTDE, see : https://www.universal-robots.com/articles/ur/interface-communication/real-time-data-exchange-rtde-guide/

Overview of RTDE

RTDE allows you to receive and send certain data between the robot and your application.

When connecting, you must specify the list of data that will be exchanged, as well as the frequency at which the robot should send you data. Data sent by the robot to your application is called "Outputs" and data sent by your application to the robot is called "Inputs". The name is given from the point of view of the robot.

In operation, data is received and the OutputDataReceived event is periodically raised when data arrives.

Other events are used to be notified of RTDE link activities.

You can asynchronously write data to the robot controller.

It is also possible to pause and resume the streaming of measurements.

using UnderAutomation.UniversalRobots;
using UnderAutomation.UniversalRobots.Common;
using UnderAutomation.UniversalRobots.Rtde;
using UnderAutomation.UniversalRobots.Rtde.Internal;
class Rtde
{
static void Main(string[] args)
{
var robot = new UR();
var param = new ConnectParameters("192.168.0.1");
// Enable RTDE
param.Rtde.Enable = true;
// Exchange data at 500Hz
param.Rtde.Frequency = 500;
// Select data you want to write in robot controller
param.Rtde.InputSetup.Add(RtdeInputData.StandardAnalogOutput0);
param.Rtde.InputSetup.Add(RtdeInputData.InputIntRegisters, 0);
// Select data you want the robot to send
param.Rtde.OutputSetup.Add(RtdeOutputData.ActualTcpPose);
param.Rtde.OutputSetup.Add(RtdeOutputData.ToolOutputVoltage);
param.Rtde.OutputSetup.Add(RtdeOutputData.OutputDoubleRegisters, 10);
// Connect to robot
robot.Connect(param);
// Be notified at 500Hz when data is received
robot.Rtde.OutputDataReceived += Rtde_OutputDataReceived;
//...
// Get last received data in cache
Pose actualTcpPose = robot.Rtde.OutputDataValues.ActualTcpPose;
int toolOutputVoltage = robot.Rtde.OutputDataValues.ToolOutputVoltage;
double outputDoubleRegisters10 = robot.Rtde.OutputDataValues.OutputDoubleRegisters.X10;
//...
// Write input values in robot
var inputValues = new RtdeInputValues();
inputValues.StandardAnalogOutput0 = 0.2;
inputValues.InputIntRegisters.X0 = 12;
robot.Rtde.WriteInputs(inputValues);
// Disconnect only RTDE communication
robot.Rtde.Disconnect();
// Disconnect every interfaces (Primary Interface, Dashboard, RTDE, ...)
robot.Disconnect();
}
private static void Rtde_OutputDataReceived(object sender, RtdeDataPackageEventArgs e)
{
// Get frequency of received message (OutputSetup contains Timestamp by default)
var realMessageFrequency = e.MeasuredFrequency;
// Get the value of the data you have selected in the setup
Pose actualTcpPose = e.OutputDataValues.ActualTcpPose;
int toolOutputVoltage = e.OutputDataValues.ToolOutputVoltage;
double outputDoubleRegisters10 = e.OutputDataValues.OutputDoubleRegisters.X10;
// Write inputs at 500Hz
var inputValues = new RtdeInputValues();
inputValues.StandardAnalogOutput0 = 0.5;
inputValues.InputIntRegisters.X0 = -10;
(sender as RtdeClientBase)?.WriteInputs(inputValues);
}
}

It is possible to create a RTDE client outside an instance of UR. To do this, you just need to instantiate a RtdeClient object.

using UnderAutomation.UniversalRobots.Common;
using UnderAutomation.UniversalRobots.Rtde;
class RtdeDirect
{
static void Main(string[] args)
{
// Create a dashboard client alone, outside any UR instance
var client = new RtdeClient();
// Select output data to receive from the robot
var outputSetup = new RtdeOutputSetup();
outputSetup.Add(RtdeOutputData.ActualCurrent);
// Select input data to send to the robot
var inputSetup = new RtdeInputSetup();
inputSetup.Add(RtdeInputData.InputIntRegisters, 4);
inputSetup.Add(RtdeInputData.StandardAnalogOutput0);
// Connect at 500Hz
client.Connect("192.168.0.1", outputSetup, inputSetup, RtdeVersions.V2, frequency: 500);
//...
// Receive data at 500Hz
client.OutputDataReceived += (o, e) =>
{
JointsDoubleValues actualCurrent = e.OutputDataValues.ActualCurrent;
};
//...
// Write input values in robot
var inputValues = new RtdeInputValues();
inputValues.InputIntRegisters.X4 = 12;
inputValues.StandardAnalogOutput0 = 0.2;
client.WriteInputs(inputValues);
//...
// Close connection to the robot
client.Disconnect();
}
}

In order for your robot to accept writing registers commands, it must be in “Remote” mode, which can be selected using the switch located at the top right of Polyscope.

switch remote

Setup connection

RTDE is not activated by default when connecting to the robot. You must set the Enable property in the connection settings.

In this same object, you must add the inputs and outputs you want to exchange with the robot.

To do this, use the Add function on InputSetup and OutputSetup to add the data to exchange. This function takes as parameter an enum RtdeOutputData or RtdeInputData.

In the case of array registers, e.g. RtdeOutputData.OutputDoubleRegisters or RtdeInputData.InputIntRegisters, it is necessary to additionally specify the register number as the second parameter of Add. Please refer to the register comment for the register size and the upper and lower range.

You can also specify a frequency of data reception. By default, if nothing is set, the communication is at 10Hz. The Frequency property of the setup parameters allows you to change the frequency up to 500Hz.

If the frequency is set to 0, the communication will be done at the maximum frequency allowed by the robot.

You can also specify the RTDE protocol version. Version 2 allows frequency to be taken into account. If your robot is not compatible with version 2, version 1 is automatically selected. If you do not set the version, version 2 is automatically selected. At runtime, you can control the version actually used via the property Rtde.Version.

using UnderAutomation.UniversalRobots;
using UnderAutomation.UniversalRobots.Rtde;
class RtdeSetup
{
static void Main(string[] args)
{
var robot = new UR();
var param = new ConnectParameters("192.168.0.1");
// Enable RTDE
param.Rtde.Enable = true;
// Exchange data at 500Hz
param.Rtde.Frequency = 500;
// Set RTDE version
param.Rtde.Version = RtdeVersions.V2;
// Select data you want to write in robot controller
param.Rtde.InputSetup.Add(RtdeInputData.StandardDigitalOutput);
param.Rtde.InputSetup.Add(RtdeInputData.ExternalForceTorque);
param.Rtde.InputSetup.Add(RtdeInputData.StandardAnalogOutput1);
param.Rtde.InputSetup.Add(RtdeInputData.InputBitRegisters, 64);
// Select data you want the robot to send
param.Rtde.OutputSetup.Add(RtdeOutputData.ActualTcpPose);
param.Rtde.OutputSetup.Add(RtdeOutputData.ToolOutputVoltage);
param.Rtde.OutputSetup.Add(RtdeOutputData.OutputDoubleRegisters, 10);
// Connect to robot
robot.Connect(param);
// ...
robot.Rtde.Disconnect();
}
}

In the robot, the Real Time Data Exchange (RTDE) must be enabled in the Polyscope settings for security reasons, see : this page

Receive data from robot

The OutputDataReceived event is raised at the frequency of data reception from the robot. It contains the received data, the connection ID and the frequency of data reception estimated from the timestamp if this data is part of the output.

It is possible to access the last received values with the property OutputDataValues.

using UnderAutomation.UniversalRobots;
using UnderAutomation.UniversalRobots.Common;
using UnderAutomation.UniversalRobots.Rtde;
class RtdeReceive
{
static void Main(string[] args)
{
var robot = new UR();
var param = new ConnectParameters("192.168.0.1");
// Enable RTDE
param.Rtde.Enable = true;
// Exchange data at 500Hz
param.Rtde.Frequency = 500;
// Set RTDE version
param.Rtde.Version = RtdeVersions.V2;
// Select data you want to write in robot controller
param.Rtde.InputSetup.Add(RtdeInputData.StandardDigitalOutput);
param.Rtde.InputSetup.Add(RtdeInputData.ExternalForceTorque);
param.Rtde.InputSetup.Add(RtdeInputData.StandardAnalogOutput1);
param.Rtde.InputSetup.Add(RtdeInputData.InputBitRegisters, 64);
// Select data you want the robot to send
param.Rtde.OutputSetup.Add(RtdeOutputData.ActualTcpPose);
param.Rtde.OutputSetup.Add(RtdeOutputData.ToolOutputVoltage);
param.Rtde.OutputSetup.Add(RtdeOutputData.OutputDoubleRegisters, 10);
// Connect to robot
robot.Connect(param);
// Get latest received data
Pose actualTcpPose = robot.Rtde.OutputDataValues.ActualTcpPose;
double x = actualTcpPose.X;
double y = actualTcpPose.Y;
double z = actualTcpPose.Z;
int toolOutputVoltage = robot.Rtde.OutputDataValues.ToolOutputVoltage;
double outputDoubleRegisters10 = robot.Rtde.OutputDataValues.OutputDoubleRegisters.X10;
// Subscribe to event to receive data is real time
robot.Rtde.OutputDataReceived += (o, e) =>
{
double realFreq = e.MeasuredFrequency;
Pose pose = robot.Rtde.OutputDataValues.ActualTcpPose;
int voltage = robot.Rtde.OutputDataValues.ToolOutputVoltage;
double register10 = robot.Rtde.OutputDataValues.OutputDoubleRegisters.X10;
};
// ...
robot.Rtde.Disconnect();
}
}

Send data to robot

To write data, simply instantiate an RtdeInputValues list and fill the fields with your values. Then call the WriteInputs function to send these values to the robot.

using UnderAutomation.UniversalRobots;
using UnderAutomation.UniversalRobots.Common;
using UnderAutomation.UniversalRobots.Rtde;
class RtdeSend
{
static void Main(string[] args)
{
var robot = new UR();
var param = new ConnectParameters("192.168.0.1");
// Enable RTDE
param.Rtde.Enable = true;
// Exchange data at 500Hz
param.Rtde.Frequency = 500;
// Set RTDE version
param.Rtde.Version = RtdeVersions.V2;
// Select data you want to write in robot controller
param.Rtde.InputSetup.Add(RtdeInputData.StandardDigitalOutput);
param.Rtde.InputSetup.Add(RtdeInputData.ExternalForceTorque);
param.Rtde.InputSetup.Add(RtdeInputData.StandardAnalogOutput1);
param.Rtde.InputSetup.Add(RtdeInputData.InputBitRegisters, 64);
// Select data you want the robot to send
param.Rtde.OutputSetup.Add(RtdeOutputData.ActualTcpPose);
param.Rtde.OutputSetup.Add(RtdeOutputData.ToolOutputVoltage);
param.Rtde.OutputSetup.Add(RtdeOutputData.OutputDoubleRegisters, 10);
// Connect to robot
robot.Connect(param);
var inputs = new RtdeInputValues();
inputs.StandardDigitalOutput = 128;
inputs.ExternalForceTorque = new CartesianCoordinates(0, 0, 1, 0, 0, 0.1);
inputs.StandardAnalogOutput1 = 0.1;
inputs.InputBitRegisters.X64 = true;
// Send data to robot
robot.Rtde.WriteInputs(inputs);
// ...
robot.Rtde.Disconnect();
}
}

Pause and resume

The Pause method allow the connection to be paused without being closed, so no data is received. It is possible to resume the stream with the Resume function.

using UnderAutomation.UniversalRobots;
using UnderAutomation.UniversalRobots.Rtde;
class RtdePauseResume
{
static void Main(string[] args)
{
var robot = new UR();
var param = new ConnectParameters("192.168.0.1");
// Enable RTDE
param.Rtde.Enable = true;
// Exchange data at 500Hz
param.Rtde.Frequency = 500;
// Set RTDE version
param.Rtde.Version = RtdeVersions.V2;
// Select data you want to write in robot controller
param.Rtde.InputSetup.Add(RtdeInputData.StandardDigitalOutput);
param.Rtde.InputSetup.Add(RtdeInputData.ExternalForceTorque);
param.Rtde.InputSetup.Add(RtdeInputData.StandardAnalogOutput1);
param.Rtde.InputSetup.Add(RtdeInputData.InputBitRegisters, 64);
// Select data you want the robot to send
param.Rtde.OutputSetup.Add(RtdeOutputData.ActualTcpPose);
param.Rtde.OutputSetup.Add(RtdeOutputData.ToolOutputVoltage);
param.Rtde.OutputSetup.Add(RtdeOutputData.OutputDoubleRegisters, 10);
// Connect to robot
robot.Connect(param);
//...
// Pause RTDE data streaming from robot
robot.Rtde.Pause();
// Event triggered when RTDE is paused
robot.Rtde.PauseReceived += Rtde_PauseReceived;
// Resume RTDE after a pause
robot.Rtde.Resume();
// RTDE streaming started or resumed
robot.Rtde.StartReceived += Rtde_StartReceived;
// ...
robot.Rtde.Disconnect();
}
private static void Rtde_PauseReceived(object sender, RtdeBasicRequestEventArgs e)
{
if (e.Accepted)
{
Console.WriteLine("RTDE has been paused");
}
else
{
Console.WriteLine("RTDE pause command has failed");
}
}
private static void Rtde_StartReceived(object sender, RtdeBasicRequestEventArgs e)
{
if (e.Accepted)
{
Console.WriteLine("RTDE streaming has started");
}
else
{
Console.WriteLine("RTDE streaming start has failed");
}
}
}

Other features

The state of the connection can be controlled via the Connected and State properties.

Text messages can be received to describe an error in connection or operation. The last message is stored in LastTextMessage and the TextMessageReceived event is raised when a text message is received.

Likewise, if an internal library error occurs, the InternalErrorOccured event is raised.

using UnderAutomation.UniversalRobots;
using UnderAutomation.UniversalRobots.Rtde;
class RtdeOther
{
static void Main(string[] args)
{
var robot = new UR();
var param = new ConnectParameters("192.168.0.1");
// Enable RTDE
param.Rtde.Enable = true;
// Exchange data at 500Hz
param.Rtde.Frequency = 500;
// Set RTDE version
param.Rtde.Version = RtdeVersions.V2;
// Select data you want to write in robot controller
param.Rtde.InputSetup.Add(RtdeInputData.StandardDigitalOutput);
param.Rtde.InputSetup.Add(RtdeInputData.ExternalForceTorque);
param.Rtde.InputSetup.Add(RtdeInputData.StandardAnalogOutput1);
param.Rtde.InputSetup.Add(RtdeInputData.InputBitRegisters, 64);
// Select data you want the robot to send
param.Rtde.OutputSetup.Add(RtdeOutputData.ActualTcpPose);
param.Rtde.OutputSetup.Add(RtdeOutputData.ToolOutputVoltage);
param.Rtde.OutputSetup.Add(RtdeOutputData.OutputDoubleRegisters, 10);
// Connect to robot
robot.Connect(param);
//...
// Frequency requested in connect parameters for V2 protocol
double appliedFrequency = robot.Rtde.AppliedFrequency;
// RTDE TCP/IP connection is still active
bool isConnected = robot.Rtde.Connected;
// Unique ID of the RTDE connection for writing data to the robot
byte inputRecipe = robot.Rtde.InputRecipeId;
// Unique ID of the RTDE connection for receiving data from robot
byte outputRecipe = robot.Rtde.OutputRecipeId;
// State property has current RTDE state (paused, disabled, started, ...)
bool isPaused = robot.Rtde.State == RTDEStates.Paused;
// Special warning text messages sent by the robot
robot.Rtde.TextMessageReceived += Rtde_TextMessageReceived;
// Event raised by the library when something went wrong
robot.Rtde.InternalErrorOccured += Rtde_InternalErrorOccured;
// ...
robot.Rtde.Disconnect();
}
private static void Rtde_InternalErrorOccured(object sender, UnderAutomation.UniversalRobots.Common.InternalErrorEventArgs e)
{
throw new NotImplementedException();
}
private static void Rtde_TextMessageReceived(object sender, RtdeTextMessageEventArgs e)
{
Console.WriteLine(e.Source);
Console.WriteLine(e.Message);
Console.WriteLine(e.WarningLevel);
}
}

API reference

Class
RtdeClientBaseinherits URServiceBase
C#Python

Base class common to all RTDE clients

MemberTypeDescription
RtdeClientBase()
Constructor
AppliedFrequency
Property
read only
double
Output data frequency requested to the robot, only for RTDE version 2
Connected
Property
read only
bool
Gets a value indicating if RTDE client is connected to the robot
IP
Property
read only
string
IP address of the robot
InputRecipeId
Property
read only
byte
Recipe Identifier of input sent data
InputRecipeIsValid
Property
read only
bool
Indicates that the recipe is valid, i.e. that all the registers have been found and are not already reserved for writing by another RTDE client. Check event SetupInputsReceived to see which registers are NOT_FOUND or IN_USE
InputSetup
Property
read only
RtdeInputSetupItem[]
List of all data the PC can write to the robot (robot point of view)
LastTextMessage
Property
read only
RtdeTextMessageEventArgs
Last text received from the robot
MeasuredFrequency
Property
read only
double
Measured output data packet frequency. "Timestamp" output data shoud be part of output setup to measure frequency.
OutputDataValues
Property
read only
RtdeOutputValues
Last data received from the robot
OutputRecipeId
Property
read only
byte
Recipe Identifier of output received data
OutputSetup
Property
read only
RtdeOutputSetupItem[]
List of all data sent from the robot to the PC (robot point of view)
State
Property
read only
RTDEStates
Current RTDE state
Version
Property
read only
RtdeVersions
Current protocol version used to stream data
OutputDataReceived
Event
EventHandler<RtdeDataPackageEventArgs>
Event raised when data from the robot is comming at specified frequency
PackageReceived
Event
EventHandler<PackageEventArgs>
Generic event raised each time a RTDE package is received
PauseReceived
Event
EventHandler<RtdeBasicRequestEventArgs>
Event raised when streaming is paused
ProtocolVersionReceived
Event
EventHandler<RtdeProtocolVersionEventArgs>
Event raised during connection when the robot specifies if asked protocol version is supported
SetupInputsReceived
Event
EventHandler<RtdeControlPackageSetupInputsEventArgs>
Event raised during connection when the robot acknowledges input setup
SetupOutputsReceived
Event
EventHandler<RtdeControlPackageSetupOutputsEventArgs>
Event raised during connection when the robot acknowledges output setup
StartReceived
Event
EventHandler<RtdeBasicRequestEventArgs>
Event raised as soon as data streaming starts
TextMessageReceived
Event
EventHandler<RtdeTextMessageEventArgs>
Event raised when a RTDE message is received
ConnectInternal(string, int, RtdeOutputSetup, RtdeInputSetup, RtdeVersions, double)
Method
void
Disconnect()
Method
void
Close the RTDE connection to the robot
Pause()
Method
void
Pause data streaming without disconnecting client
Resume()
Method
void
Restart data streaming after a Pause
WriteInputs(RtdeInputValues)
Method
void
Write data to controller. Data must be those selected in connect parameters
Class
RtdeParametersBase
C#Python

Base parameters to set up RTDE

MemberTypeDescription
RtdeParametersBase()
Constructor
Frequency
Property
double
For RTDE version 2, you can specify a frequency for output received data. Maximum frequency depends on your robot version. If you set frequency to 0, maximum frequency will be choosen Default value is 10Hz
InputSetup
Property
RtdeInputSetup
List of all input data you can send to the robot
OutputSetup
Property
RtdeOutputSetup
List of all output data the robot will send to your application
Port
Property
int
TCP port used for RTDE connection. Default : 30004
Version
Property
RtdeVersions
RTDE version. If set to Auto, the most recent version will be choosen according to your robot version Default value is V2
DEFAULT_PORT
Field
int
Default RTDE TCP port used (30004)
Enum
RtdeVersions
C#Python

RTDE version numbers

NameValueDescription
V1
1
Rtde version 1
V2
2
Rtde version 2
Enum
RtdeOutputData
C#Python
NameValueDescription
ActualCurrent
8
Actual joint currents
ActualDigitalInputBits
15
Current state of the digital inputs. 0-7: Standard, 8-15: Configurable, 16-17: Tool
ActualDigitalOutputBits
30
Current state of the digital outputs. 0-7: Standard, 8-15: Configurable, 16-17: Tool
ActualExecutionTime
17
Controller real-time thread execution time
ActualJointVoltage
29
Actual joint voltages
ActualMainVoltage
26
Safety Control Board: Main voltage
ActualMomentum
25
Norm of Cartesian linear momentum
ActualQ
6
Actual joint positions
ActualQd
7
Actual joint velocities
ActualRobotCurrent
28
Safety Control Board: Robot current
ActualRobotVoltage
27
Safety Control Board: Robot voltage (48V)
ActualTcpForce
12
Generalized forces in the TCP. It compensates the measurement for forces and torques generated by the payload
ActualTcpPose
10
Actual Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orientation
ActualTcpSpeed
11
Actual speed of the tool given in Cartesian coordinates. The speed is given in [m/s] and the rotational part of the TCP speed (rx, ry, rz) is the angular velocity given in [rad/s]
ActualToolAccelerometer
22
Tool x, y and z accelerometer values
AnalogIOTypes
36
Bits 0-3: analog input 0 | analog input 1 | analog output 0 | analog output 1, {0=current[mA], 1=voltage[V]}
ElbowPosition
32
Position of robot elbow in Cartesian Base Coordinates
ElbowVelocity
33
Velocity of robot elbow in Cartesian Base Coordinates
Euromap67InputBits
42
Euromap67 input bits
Euromap67OutputBits
43
Euromap67 output bits
Euromap67_24VCurrent
45
Euromap 24V current [mA]
Euromap67_24VVoltage
44
Euromap 24V voltage [V]
FTRawWrench
71
Raw force and torque measurement, not compensated for forces and torques caused by the payload
IOCurrent
41
I/O current [mA]
InputBitRegisters
61
64 general purpose bits, X: [64..127] - The upper range of the boolean output registers can be used by external RTDE clients (i.e URCAPS).
InputBitRegisters0To31
59
General purpose bits (input read back). This range of the boolean output registers is reserved for FieldBus/PLC interface usage.
InputBitRegisters32To63
60
General purpose bits (input read back), This range of the boolean output registers is reserved for FieldBus/PLC interface usage.
InputDoubleRegisters
63
48 general purpose double registers. X: [0..23] - The lower range of the double input registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the double input registers can be used by external RTDE clients (i.e URCAPS).
InputIntRegisters
62
48 general purpose integer registers. X: [0..23] - The lower range of the integer input registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the integer input registers can be used by external RTDE clients (i.e URCAPS).
JointControlOutput
9
Joint control currents
JointMode
19
Joint control modes
JointTemperatures
16
Temperature of each joint in degrees Celsius
OutputBitRegisters
56
64 general purpose bits. X: [64..127] - The upper range of the boolean output registers can be used by external RTDE clients (i.e URCAPS).
OutputBitRegisters0To31
54
General purpose bits
OutputBitRegisters32To63
55
General purpose bits
OutputDoubleRegisters
58
48 general purpose double registers. X: [0..23] - The lower range of the double output registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the double output registers can be used by external RTDE clients (i.e URCAPS).
OutputIntRegisters
57
48 general purpose integer registers. X: [0..23] - The lower range of the integer output registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the integer output registers can be used by external RTDE clients (i.e URCAPS).
Payload
67
Payload mass Kg
PayloadCOG
68
Payload Center of Gravity (CoGx, CoGy, CoGz) m
PayloadInertia
69
Payload inertia matrix elements (Ixx,Iyy,Izz,Ixy,Ixz,Iyz] expressed in kg*m^2
RobotMode
18
Robot mode
RobotStatusBits
34
Bits 0-3:Is power on | Is program running | Is teach button pressed | Is power button pressed
RuntimeState
31
Program state
SafetyMode
20
Safety mode
SafetyStatus
21
Safety status
SafetyStatusBits
35
Bits 0-10: Is normal mode | Is reduced mode | Is protective stopped | Is recovery mode | Is safeguard stopped | Is system emergency stopped | Is robot emergency stopped | Is emergency stopped | Is violation | Is fault | Is stopped due to safety
ScriptControlLine
70
Script line number that is actually in control of the robot given the robot is locked by one of the threads in the script. If no thread is locking the robot this field is set to '0'. Script line number should not be confused with program tree line number displayed on polyscope.
SpeedScaling
23
Speed scaling of the trajectory limiter
StandardAnalogInput0
37
Standard analog input 0 [mA or V]
StandardAnalogInput1
38
Standard analog input 1 [mA or V]
StandardAnalogOutput0
39
Standard analog output 0 [mA or V]
StandardAnalogOutput1
40
Standard analog output 1 [mA or V]
TargetCurrent
4
Target joint currents
TargetMoment
5
Target joint moments (torques)
TargetQ
1
Target joint positions
TargetQd
2
Target joint velocities
TargetQdd
3
Target joint accelerations
TargetSpeedFraction
24
Target speed fraction
TargetTcpPose
13
Target Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orientation
TargetTcpSpeed
14
Target speed of the tool given in Cartesian coordinates. The speed is given in [m/s] and the rotational part of the TCP speed (rx, ry, rz) is the angular velocity given in [rad/s]
TcpForceScalar
53
TCP force scalar [N]
Timestamp
0
Time elapsed since the controller was started [s]
ToolAnalogInput0
48
Tool analog input 0 [mA or V]
ToolAnalogInput1
49
Tool analog input 1 [mA or V]
ToolAnalogInputTypes
47
Output domain {0=current[mA], 1=voltage[V]} Bits 0-1: tool_analog_input_0 | tool_analog_input_1
ToolDigitalOutput0mode
65
The current mode of digital output 0
ToolDigitalOutput1Mode
66
The current mode of digital output 1
ToolMode
46
Tool mode
ToolOutputCurrent
51
Tool current [mA]
ToolOutputMode
64
The current output mode
ToolOutputVoltage
50
Tool output voltage [V]
ToolTemperature
52
Tool temperature in degrees Celsius
Enum
RtdeInputData
C#Python
NameValueDescription
ConfigurableDigitalOutput
5
Configurable digital outputs
ConfigurableDigitalOutputMask
3
Configurable digital output bit mask
ExternalForceTorque
15
Input external wrench when using ft_rtde_input_enable builtin.
InputBitRegisters
12
64 general purpose bits. X: [64..127] - The upper range of the boolean input registers can be used by external RTDE clients (i.e URCAPS).
InputBtRegisters0To31
10
General purpose bits. This range of the boolean input registers is reserved for FieldBus/PLC interface usage.
InputBtRegisters32To63
11
General purpose bits. This range of the boolean input registers is reserved for FieldBus/PLC interface usage.
InputDoubleRegisters
14
48 general purpose double registers. X: [0..23] - The lower range of the double input registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the double input registers can be used by external RTDE clients (i.e URCAPS).
InputIntRegisters
13
48 general purpose integer registers. X: [0..23] - The lower range of the integer input registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the integer input registers can be used by external RTDE clients (i.e URCAPS).
SpeedSliderFraction
1
new speed slider value
SpeedSliderMask
0
0 = don't change speed slider with this input, 1 = use speed_slider_fraction to set speed slider value
StandardAnalogOutput0
8
Standard analog output 0 (ratio) [0..1]
StandardAnalogOutput1
9
Standard analog output 1 (ratio) [0..1]
StandardAnalogOutputMask
6
Standard analog output mask
StandardAnalogOutputType
7
Output domain {0=current[mA], 1=voltage[V]}. Bits 0-1: standard_analog_output_0 | standard_analog_output_1
StandardDigitalOutput
4
Standard digital outputs
StandardDigitalOutputMask
2
Standard digital output bit mask
Class
RtdeInputValuesinherits RtdeBaseValues<RtdeInputData>
C#Python
MemberTypeDescription
RtdeInputValues()
Constructor
ConfigurableDigitalOutput
Property
byte
Configurable digital outputs
ConfigurableDigitalOutputMask
Property
byte
Configurable digital output bit mask
ExternalForceTorque
Property
CartesianCoordinates
Input external wrench when using ft_rtde_input_enable builtin.
InputBitRegisters
Property
read only
RtdeBitRegistersValue
64 general purpose bits. X: [64..127] - The upper range of the boolean input registers can be used by external RTDE clients (i.e URCAPS).
InputBtRegisters0To31
Property
uint
General purpose bits. This range of the boolean input registers is reserved for FieldBus/PLC interface usage.
InputBtRegisters32To63
Property
uint
General purpose bits. This range of the boolean input registers is reserved for FieldBus/PLC interface usage.
InputDoubleRegisters
Property
read only
RtdeDoubleRegistersValue
48 general purpose double registers. X: [0..23] - The lower range of the double input registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the double input registers can be used by external RTDE clients (i.e URCAPS).
InputIntRegisters
Property
read only
RtdeIntRegistersValue
48 general purpose integer registers. X: [0..23] - The lower range of the integer input registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the integer input registers can be used by external RTDE clients (i.e URCAPS).
InternalValues
Property
read only
RtdeValue[]
SpeedSliderFraction
Property
double
new speed slider value
SpeedSliderMask
Property
uint
0 = don't change speed slider with this input, 1 = use speed_slider_fraction to set speed slider value
StandardAnalogOutput0
Property
double
Standard analog output 0 (ratio) [0..1]
StandardAnalogOutput1
Property
double
Standard analog output 1 (ratio) [0..1]
StandardAnalogOutputMask
Property
byte
Standard analog output mask
StandardAnalogOutputType
Property
byte
Output domain {0=current[mA], 1=voltage[V]}. Bits 0-1: standard_analog_output_0 | standard_analog_output_1
StandardDigitalOutput
Property
byte
Standard digital outputs
StandardDigitalOutputMask
Property
byte
Standard digital output bit mask
GetValue(RtdeInputSetupItem)
Method
object
InternaleGetValue(RtdeInputData)
Method
RtdeValue
Reset()
Method
void
SetValue(RtdeInputData, int, object)
Method
void
SetValue(RtdeInputData, object)
Method
void
SetValue(RtdeInputSetupItem, object)
Method
void
Class
RtdeOutputValuesinherits RtdeBaseValues<RtdeOutputData>
C#Python
MemberTypeDescription
ActualCurrent
Property
JointsDoubleValues
Actual joint currents
ActualDigitalInputBits
Property
ulong
Current state of the digital inputs. 0-7: Standard, 8-15: Configurable, 16-17: Tool
ActualDigitalOutputBits
Property
ulong
Current state of the digital outputs. 0-7: Standard, 8-15: Configurable, 16-17: Tool
ActualExecutionTime
Property
double
Controller real-time thread execution time
ActualJointVoltage
Property
JointsDoubleValues
Actual joint voltages
ActualMainVoltage
Property
double
Safety Control Board: Main voltage
ActualMomentum
Property
double
Norm of Cartesian linear momentum
ActualQ
Property
JointsDoubleValues
Actual joint positions
ActualQd
Property
JointsDoubleValues
Actual joint velocities
ActualRobotCurrent
Property
double
Safety Control Board: Robot current
ActualRobotVoltage
Property
double
Safety Control Board: Robot voltage (48V)
ActualTcpForce
Property
CartesianCoordinates
Generalized forces in the TCP. It compensates the measurement for forces and torques generated by the payload
ActualTcpPose
Property
Pose
Actual Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orientation
ActualTcpSpeed
Property
Pose
Actual speed of the tool given in Cartesian coordinates. The speed is given in [m/s] and the rotational part of the TCP speed (rx, ry, rz) is the angular velocity given in [rad/s]
ActualToolAccelerometer
Property
Vector3D
Tool x, y and z accelerometer values
AnalogIOTypes
Property
uint
Bits 0-3: analog input 0 | analog input 1 | analog output 0 | analog output 1, {0=current[mA], 1=voltage[V]}
ElbowPosition
Property
Vector3D
Position of robot elbow in Cartesian Base Coordinates
ElbowVelocity
Property
Vector3D
Velocity of robot elbow in Cartesian Base Coordinates
Euromap67InputBits
Property
uint
Euromap67 input bits
Euromap67OutputBits
Property
uint
Euromap67 output bits
Euromap67_24VCurrent
Property
double
Euromap 24V current [mA]
Euromap67_24VVoltage
Property
double
Euromap 24V voltage [V]
FTRawWrench
Property
CartesianCoordinates
Raw force and torque measurement, not compensated for forces and torques caused by the payload
IOCurrent
Property
double
I/O current [mA]
InputBitRegisters
Property
read only
RtdeBitRegistersValue
64 general purpose bits, X: [64..127] - The upper range of the boolean output registers can be used by external RTDE clients (i.e URCAPS).
InputBitRegisters0To31
Property
uint
General purpose bits (input read back). This range of the boolean output registers is reserved for FieldBus/PLC interface usage.
InputBitRegisters32To63
Property
uint
General purpose bits (input read back), This range of the boolean output registers is reserved for FieldBus/PLC interface usage.
InputDoubleRegisters
Property
read only
RtdeDoubleRegistersValue
48 general purpose double registers. X: [0..23] - The lower range of the double input registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the double input registers can be used by external RTDE clients (i.e URCAPS).
InputIntRegisters
Property
read only
RtdeIntRegistersValue
48 general purpose integer registers. X: [0..23] - The lower range of the integer input registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the integer input registers can be used by external RTDE clients (i.e URCAPS).
InternalValues
Property
read only
RtdeValue[]
JointControlOutput
Property
JointsDoubleValues
Joint control currents
JointMode
Property
JointsIntValues
Joint control modes
JointTemperatures
Property
JointsDoubleValues
Temperature of each joint in degrees Celsius
OutputBitRegisters
Property
read only
RtdeBitRegistersValue
64 general purpose bits. X: [64..127] - The upper range of the boolean output registers can be used by external RTDE clients (i.e URCAPS).
OutputBitRegisters0To31
Property
uint
General purpose bits
OutputBitRegisters32To63
Property
uint
General purpose bits
OutputDoubleRegisters
Property
read only
RtdeDoubleRegistersValue
48 general purpose double registers. X: [0..23] - The lower range of the double output registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the double output registers can be used by external RTDE clients (i.e URCAPS).
OutputIntRegisters
Property
read only
RtdeIntRegistersValue
48 general purpose integer registers. X: [0..23] - The lower range of the integer output registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the integer output registers can be used by external RTDE clients (i.e URCAPS).
Payload
Property
double
Payload mass Kg
PayloadCOG
Property
Vector3D
Payload Center of Gravity (CoGx, CoGy, CoGz) m
PayloadInertia
Property
CartesianCoordinates
Payload inertia matrix elements (Ixx,Iyy,Izz,Ixy,Ixz,Iyz] expressed in kg*m^2
RobotMode
Property
int
Robot mode
RobotStatusBits
Property
uint
Bits 0-3:Is power on | Is program running | Is teach button pressed | Is power button pressed
RuntimeState
Property
uint
Program state
SafetyMode
Property
int
Safety mode
SafetyStatus
Property
int
Safety status
SafetyStatusBits
Property
uint
Bits 0-10: Is normal mode | Is reduced mode | Is protective stopped | Is recovery mode | Is safeguard stopped | Is system emergency stopped | Is robot emergency stopped | Is emergency stopped | Is violation | Is fault | Is stopped due to safety
ScriptControlLine
Property
uint
Script line number that is actually in control of the robot given the robot is locked by one of the threads in the script. If no thread is locking the robot this field is set to '0'. Script line number should not be confused with program tree line number displayed on polyscope.
SpeedScaling
Property
double
Speed scaling of the trajectory limiter
StandardAnalogInput0
Property
double
Standard analog input 0 [mA or V]
StandardAnalogInput1
Property
double
Standard analog input 1 [mA or V]
StandardAnalogOutput0
Property
double
Standard analog output 0 [mA or V]
StandardAnalogOutput1
Property
double
Standard analog output 1 [mA or V]
TargetCurrent
Property
JointsDoubleValues
Target joint currents
TargetMoment
Property
JointsDoubleValues
Target joint moments (torques)
TargetQ
Property
JointsDoubleValues
Target joint positions
TargetQd
Property
JointsDoubleValues
Target joint velocities
TargetQdd
Property
JointsDoubleValues
Target joint accelerations
TargetSpeedFraction
Property
double
Target speed fraction
TargetTcpPose
Property
Pose
Target Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orientation
TargetTcpSpeed
Property
Pose
Target speed of the tool given in Cartesian coordinates. The speed is given in [m/s] and the rotational part of the TCP speed (rx, ry, rz) is the angular velocity given in [rad/s]
TcpForceScalar
Property
double
TCP force scalar [N]
Timestamp
Property
double
Time elapsed since the controller was started [s]
ToolAnalogInput0
Property
double
Tool analog input 0 [mA or V]
ToolAnalogInput1
Property
double
Tool analog input 1 [mA or V]
ToolAnalogInputTypes
Property
uint
Output domain {0=current[mA], 1=voltage[V]} Bits 0-1: tool_analog_input_0 | tool_analog_input_1
ToolDigitalOutput0mode
Property
byte
The current mode of digital output 0
ToolDigitalOutput1Mode
Property
byte
The current mode of digital output 1
ToolMode
Property
uint
Tool mode
ToolOutputCurrent
Property
double
Tool current [mA]
ToolOutputMode
Property
byte
The current output mode
ToolOutputVoltage
Property
int
Tool output voltage [V]
ToolTemperature
Property
double
Tool temperature in degrees Celsius
GetValue(RtdeOutputSetupItem)
Method
object
InternaleGetValue(RtdeOutputData)
Method
RtdeValue

Integre fácilmente robots Universal Robots, Fanuc, Yaskawa, ABB o Staubli en sus aplicaciones .NET, Python, LabVIEW o Matlab

UnderAutomation
ContactosLegal

© All rights reserved.