Você está na página 1de 19

08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229

Guia RTDE (Real-Time Data Exchange) - 22229

Este é um guia sobre como usar o protocolo de sincronização de dados do controlador UR,
por exemplo, ao desenvolver o URCaps / UR + para robôs universais.

NOTA: Todos os arquivos estão disponíveis para download na parte inferior desta página.

Os exemplos são válidos para:


Versão do software CB3: 3.4
Observe que as versões de software mais recentes podem se comportar de maneira diferente.

O RTDE está disponível no CB3 / CB3.1 do software 3.3, mas recursos específicos podem estar
disponíveis apenas em versões de software mais recentes.

O RTDE sincroniza executáveis externos com o controlador UR, por exemplo, URCaps, sem quebrar nenhuma
propriedade em tempo real. Este documento primeiro descreve o protocolo e, em seguida, fornece uma
implementação de referência do cliente Python.

Introdução
A interface RTDE (Real-Time Data Exchange) fornece uma maneira de sincronizar aplicativos externos com o
controlador UR em uma conexão TCP / IP padrão, sem quebrar nenhuma propriedade em tempo real do
controlador UR. Essa funcionalidade é útil, entre outras coisas, para interagir com os drivers (por exemplo,
Ethernet / IP), manipular a E / S do robô e plotar o status do robô (por exemplo, trajetórias do robô). A interface
RTDE está disponível por padrão quando o controlador UR está em execução.

A sincronização é configurável e pode, por exemplo, envolver os seguintes dados:

Saída: status de robô, junta, ferramenta e segurança, E / Ss analógicas e digitais e registros de


saída de propósito geral
Entrada: saídas digitais e analógicas e registros de entrada de propósito geral

A funcionalidade RTDE é dividida em dois estágios: um procedimento de configuração e um loop de


sincronização.

Na conexão com a interface RTDE, o cliente é responsável por configurar as variáveis a serem sincronizadas.
Qualquer combinação de registros de entrada e saída que o cliente precisa gravar e ler, respectivamente, pode
ser especificada. Para conseguir isso, o cliente envia uma lista de configuração dos campos de entrada e saída
nomeados que devem estar contidos nos pacotes de sincronização de dados reais. A definição de um formato de
pacote de dados de sincronização é referida como receita.
Existe um limite máximo de 2048 bytes para
representar a lista de nomes de campo de entradas / saídas que um cliente gostaria de assinar. Em troca, a
interface RTDE responde com uma lista dos tipos de variáveis ou especifica que uma variável específica não foi
encontrada.Cada receita de entrada que foi configurada com sucesso receberá um ID de receita exclusivo. A lista
de nomes de campos suportados e seus tipos de dados associados podem ser encontrados abaixo. Quando a
Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
configuração estiver concluída, a sincronização de dados pode ser iniciada e pausada.
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 1/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229

Quando o loop de sincronização é iniciado, a interface RTDE envia ao cliente os dados solicitados na mesma
ordem em que foram solicitados pelo cliente. Além disso, espera-se que o cliente envie entradas atualizadas para
a interface RTDE em uma mudança de valor. A sincronização de dados usa dados serializados.

Todos os pacotes compartilham a mesma estrutura geral com um cabeçalho e uma carga útil, se aplicável. Os
pacotes usados para o procedimento de configuração geram uma mensagem de retorno. Os pacotes de loop de
sincronização não. O cliente e o servidor podem, a qualquer momento, enviar uma mensagem de texto, em que o
nível de aviso especifica a gravidade do problema. O RTDE está disponível no número da porta 30004.

Para começar, recomendamos usar ou modificar o exemplo de cliente fornecido escrito em Python.

Características principais
Sincronização em tempo real: O RTDE geralmente gera mensagens de saída em 125 Hz. No
entanto, o loop em tempo real no controlador tem uma prioridade mais alta que a interface RTDE.
Portanto, se o controlador não tiver recursos computacionais, ele ignorará vários pacotes de saída.
Os pacotes ignorados não serão enviados mais tarde, o controlador sempre enviará os dados mais
recentes. Os pacotes de entrada sempre serão processados no ciclo de controle recebido, de modo
que a carga do controlador irá variar dependendo do número de pacotes recebidos.
Mensagens de entrada: A atualização de variáveis no controlador pode ser dividida em várias
mensagens. Pode-se ter uma mensagem para atualizar tudo ou uma mensagem por variável ou
qualquer divisão entre elas. Não há necessidade de uma taxa de atualização constante; entradas
mantêm seu último valor recebido. Nota: Apenas um cliente RTDE tem permissão para controlar
uma variável específica a qualquer momento.
Ambiente de tempo de execução: um cliente RTDE pode ser executado no PC do UR Control Box
ou em qualquer PC externo. A vantagem de executar o cliente RTDE na Caixa de Controle não é
latência de rede. No entanto, o cliente RTDE e o controlador UR competirão por recursos
computacionais. Por favor, certifique-se de que o cliente RTDE seja executado com a prioridade
padrão do sistema operacional. Processos intensivos em computação, por exemplo, processamento
de imagens, devem ser executados em um PC externo.
Alterações no protocolo: O protocolo RTDE pode ser atualizado a qualquer momento pelo UR. Para
garantir compatibilidade máxima para seu cliente RTDE, os clientes RTDE podem solicitar que a
interface RTDE fale uma versão de protocolo específica. Adições / alterações de protocolo são
explicitamente denotadas, caso contrário, a versão 1 é assumida.

Nomes de campos e tipos associados


Os seguintes campos de dados estão disponíveis através da interface RTDE.

Entradas do controlador do robô


0 = não altere o controle deslizante de velocidade com essa entrada
speed_slider_mask UINT32 1 = use speed_slider_fraction para definir o valor do controle deslizante de
velocidade

EM
speed_slider_fraction novo valor de controle deslizante de velocidade
DOBRO

standard_digital_output_mask UINT8 Máscara de bits de saída digital padrão *

standard_digital_output UINT8 Saídas digitais padrão


Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
configurable_digital_output_mask
uso UINT8
de cookies. Saber mais (/support/) Máscara de bits de saída digital configurável *

https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 2/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229

configurable_digital_output UINT8 Saídas digitais configuráveis

Máscara de saídas digitais da ferramenta *


tool_digital_output_mask UINT8
Bits 0-1: máscara, os bits remanescentes são reservados para uso futuro

tool_digital_output UINT8 Saída digital da ferramenta Bits 0-1: estado de saída, os bits restantes são
reservados para uso futuro

Máscara de saída analógica padrão


standard_analog_output_mask UINT8
Bits 0-1: standard_analog_output_0 | standard_analog_output_1

Domínio de saída {0 = atual [A], 1 = tensão [V]}


standard_analog_output_type UINT8
Bits 0-1: standard_analog_output_0 | standard_analog_output_1

EM
standard_analog_output_0 Saída analógica padrão 0 (relação) [0..1]
DOBRO

EM
standard_analog_output_1 Saída analógica padrão 1 (relação) [0..1]
DOBRO

Bits de uso geral

input_bit_registers0_to_31 UINT32 Este intervalo de registros de entrada booleana é reservado para uso
da interface FieldBus / PLC.

Bits de uso geral

input_bit_registers32_to_63 UINT32 Este intervalo de registros de entrada booleana é reservado para uso
da interface FieldBus / PLC.

64 bits de uso geral

input_bit_register_ X BOOL X: [64..127] - O intervalo superior dos registros de entrada booleana


pode ser usado por clientes RTDE externos (ou seja, URCAPS).

48 registradores inteiros de uso geral


X: [0..23] - O intervalo inferior dos registros de entrada de
números inteiros é reservado para o uso da interface FieldBus /
input_int_register_ X INT32 PLC.

X: [24..47] - O intervalo superior dos registros de entrada de números


inteiros pode ser usado por clientes RTDE externos (ou seja, URCAPS).

48 registos duplos de uso geral

X: [0..23] - O intervalo inferior dos registros de entrada dupla é


reservado para uso da interface FieldBus / PLC.
input_double_register_ X EM
DOBRO

X: [24..47] - A faixa superior dos registros de entrada dupla pode ser


usada por clientes RTDE externos (isto é, URCAPS).
Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 3/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229

* Os valores de saída digital e analógica devem ser enviados junto com a máscara, caso contrário, os valores
serão ignorados.
Saídas do controlador do robô
Tempo decorrido desde que o co
timestamp EM DOBRO
foi iniciado [s]

target_q VECTOR6D Posições conjuntas alvo

target_qd VECTOR6D Velocidades da articulação alvo

target_qdd VECTOR6D Acelerações da articulação alvo

target_current VECTOR6D Correntes de junção alvo

target_moment VECTOR6D Momentos da articulação alvo (t

actual_q VECTOR6D Posições conjuntas reais

actual_qd VECTOR6D Velocidades reais da junta

actual_current VECTOR6D Correntes conjuntas reais

joint_control_output VECTOR6D Correntes de controle conjunto

Coordenadas cartesianas reais d


ferramenta: (x, y, z, rx, ry, rz), o
actual_TCP_pose VECTOR6D
e rz é uma representação vetori
rotação da orientação da ferram

Velocidade real da ferramenta d


actual_TCP_speed VECTOR6D
coordenadas cartesianas

actual_TCP_force VECTOR6D Forças generalizadas no TCP

Coordenadas cartesianas de des


ferramenta: (x, y, z, rx, ry, rz), e
target_TCP_pose VECTOR6D
ry e rz é uma representação vet
rotação da orientação da ferram

Velocidade alvo da ferramenta d


target_TCP_speed VECTOR6D
coordenadas cartesianas

Estado atual das entradas digita


real_digital_input_bits UINT64 Padrão, 8-15: Configurável, 16-1
Ferramenta

Temperatura de cada junta em g


joint_temperatures VECTOR6D
Celsius

Tempo de execução de thread e


actual_execution_time EM DOBRO
real do controlador

Modo Robot
Por favor, veja Controle Remoto
robot_mode INT32
IP - 16496 (/how-tos-and-faqs/h
how-tos/remote-control-via-tcpip

Modos de controle comum


Veja o Controle Remoto Via TCP
joint_mode VECTOR6INT32
16496 (/how-tos-and-faqs/how-
tos/remote-control-via-tcpip-164

Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 4/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229

Modo de segurança
Por favor, veja o controle remo
safety_mode INT32
IP - 16496 (/how-tos-and-faqs/h
how-tos/remote-control-via-tcpip

Valores do acelerômetro da ferra


actual_tool_accelerometer VECTOR3D
yez

Escalonamento de velocidade do
speed_scaling EM DOBRO
de trajetória

target_speed_fraction EM DOBRO Fração de velocidade alvo

actual_momentum EM DOBRO Norma do impulso linear cartesia

Placa de controle de segurança:


actual_main_voltage EM DOBRO
principal

Placa de controle de segurança:


actual_robot_voltage EM DOBRO
do robô (48V)

Placa de controle de segurança:


actual_robot_current EM DOBRO
do robô

actual_joint_voltage VECTOR6D Tensões articulares reais


Estado atual das saídas digitais.
actual_digital_output_bits UINT64 Padrão, 8-15: Configurável, 16-1
Ferramenta

runtime_state UINT32 Estado do programa

Coordenadas cartesianas reais d


elbow_position VECTOR3D
(x, y, z)

elbow_velocity VECTOR3D Velocidade cartesiana real do co

Bits 0-3: está ligado | O program


sendo executado | É ensinar bot
robot_status_bits UINT32
pressionado | O botão liga / des
pressionado

Bits 0-10: é o modo normal | É o


reduzido | | A proteção está par
modo de recuperação | A salvag
interrompida? A emergência do
safety_status_bits UINT32
interrompida | A emergência do
parou? A emergência está parad
violação | É culpa | Está parado
segurança

Bits 0-3: entrada analógica 0 | e


analógica 1 | saída analógica 0 |
analog_io_types UINT32
analógica 1, {0 = corrente [A], 1
[V]}

standard_analog_input0 EM DOBRO Entrada analógica padrão 0 [A o

standard_analog_input1 EM DOBRO Entrada analógica padrão 1 [A o

standard_analog_output0 EM DOBRO Saída analógica padrão 0 [A ou

standard_analog_output1 EM DOBRO Saída analógica padrão 1 [A ou

io_current EM DOBRO Corrente de E / S [A]

euromap67_input_bits UINT32 Bits de entrada Euromap67


Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
euromap67_output_bits
uso de cookies. Saber mais (/support/) UINT32 Bits de saída Euromap67

https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 5/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229

euromap67_24V_voltage EM DOBRO Tensão Euromap 24V [V]

euromap67_24V_current EM DOBRO Euromap 24V current [A]

Modo de ferramenta
Por favor, veja Controle Remoto
tool_mode UINT32
IP - 16496 (/how-tos-and-faqs/h
how-tos/remote-control-via-tcpip

Domínio de saída {0 = atua


tensão [V]}

tool_analog_input_types UINT32
Bits 0-1: tool_analog_input_0
tool_analog_input_1

tool_analog_input0 EM DOBRO Entrada analógica de ferramenta

tool_analog_input1 EM DOBRO Entrada analógica de ferramenta

tool_output_voltage INT32 Tensão de saída da ferramenta

tool_output_current EM DOBRO Corrente da ferramenta [A]

Temperatura da ferramenta em
ferramenta_temperatura EM DOBRO
Celsius

tcp_force_scalar EM DOBRO Força TCP escalar [N]

output_bit_registers0_to_31 UINT32 Bits de uso geral

output_bit_registers32_to_63 UINT32 Bits de uso geral

64 bits de uso geral

X: [64..127] - O intervalo sup


output_bit_register_ X BOOL registros de saída booleana po
usado por clientes RTDE exte
seja, URCAPS).

48 registros inteiros de prop


geral

X: [0..23] - O intervalo inferio


registros de saída inteira é res
para o uso da interface FieldB
output_int_register_ X INT32

X: [24..47] - O intervalo supe


registros de saída inteira pode
por clientes RTDE externos (o
URCAPS).

Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 6/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229

48 registos duplos de uso g

X: [0..23] - A faixa inferior do


de saída dupla é reservada pa
da interface FieldBus / PLC.
output_double_register_ X EM DOBRO

X: [24..47] - A faixa superior


registros de saída dupla pode
por clientes RTDE externos (o
URCAPS).

Bits de uso geral

Este intervalo dos registros de


input_bit_registers0_to_31 UINT32
booleanos é reservado para u
interface FieldBus / PLC.

Bits de uso geral

Este intervalo dos registros de


input_bit_registers32_to_63 UINT32
booleanos é reservado para u
interface FieldBus / PLC.

64 bits de uso geral

X: [64..127] - O intervalo sup


input_bit_register_x BOOL registros de saída booleana po
usado por clientes RTDE exte
seja, URCAPS).

48 registros inteiros de prop


geral

X: [0..23] - O intervalo inferio


registros de entrada de núme
inteiros é reservado para o us
input_int_register_x ( [0 .. 48] ) INT32 interface FieldBus / PLC.

X: [24..47] - O intervalo supe


registros de entrada de núme
inteiros pode ser usado por cl
RTDE externos (ou seja, URCA

Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 7/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229

48 registos duplos de uso g

X: [0..23] - O intervalo inferio


registros de entrada dupla é r
para uso da interface FieldBus
input_double_register_x ( [0 .. 48] ) EM DOBRO

X: [24..47] - A faixa superior


registros de entrada dupla po
usada por clientes RTDE exte
é, URCAPS).

tool_output_mode UINT8 O modo de saída atual

tool_digital_output0_mode UINT8 O modo atual da saída digital 0

tool_digital_output1_mode UINT8 O modo atual de saída digital 1

input_bit_registers0_to_31 UINT32 Bits de uso geral (entrada lida d

input_bit_registers32_to_63 UINT32 Bits de uso geral (entrada lida d

24 registradores inteiros para fin


input_int_register_X INT32 (entrada lida de volta)
X: [0..23]

24 registos duplos de uso geral


input_double_register_X EM DOBRO lida de volta)
X: [0..23]

Tipos de dados
Nome Tipo Tamanho em bits

BOOL 0 = Falso, todo o resto = Verdadeiro 8

UINT8 inteiro não assinado 8

UINT32 inteiro não assinado 32

UINT64 inteiro não assinado 64

INT32 inteiro assinado, complemento de dois 32

EM DOBRO Ponto flutuante IEEE 754 64

VECTOR3D 3xDUPLOS 3x64

VECTOR6D 6xDUPLOS 6x64

VECTOR6INT32 6 xINT32 6x32

VECTOR6UINT32 6xUINT32 6x32

CORDA Matriz de caracteres ASCII lengthx8

Ordem de bytes de rede

Protocolo
Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 8/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229

EE = Executável externo
CON =
Saída do controlador do robô : CON ->
Entrada EE : CON <- EE

Cabeçalho
tamanho do pacote uint16_t

tipo de pacote uint8_t

Resumo: Todos os pacotes usam o cabeçalho.


Tipos de pacotes de suporte são:

Nome do pacote tipo de pacote equivalente ascii

RTDE_REQUEST_PROTOCOL_VERSION 86 V

RTDE_GET_URCONTROL_VERSION 118 v

RTDE_TEXT_MESSAGE 77 M

RTDE_DATA_PACKAGE 85 você

RTDE_CONTROL_PACKAGE_SETUP_OUTPUTS 79 O

RTDE_CONTROL_PACKAGE_SETUP_INPUTS 73 Eu

RTDE_CONTROL_PACKAGE_START 83 S

RTDE_CONTROL_PACKAGE_PAUSE 80 P

Direção:
Retorno Bilateral : Não disponível

RTDE_REQUEST_PROTOCOL_VERSION
Cabeçalho Veja acima

versão do protocolo uint16_t

Resumo: Solicite ao controlador para trabalhar com "versão do protocolo"


Direção: EE -> CON

Retorna

Cabeçalho Veja acima

aceitaram uint8_t

Resumo: O controlador aceita ou não, ou seja, 1 (sucesso) ou 0 (falha). Ao ser bem-sucedido, o EE deve falar a
versão do protocolo especificada e o CON responderá nessa versão.

RTDE_GET_URCONTROL_VERSION
Cabeçalho Veja acima
Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 9/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229

Resumo: Recupera o CON maior, menor, bugfix e número de compilação.


Direção: EE -> CON

Retorna

Cabeçalho Veja acima

principal uint32_t

menor uint32_t

bugfix uint32_t

construir uint32_t

Resumo: O maior, menor, bugfix e número de compilação.

RTDE_TEXT_MESSAGE (protocolo v. 1)
Direção: CON -> EE

Cabeçalho Veja acima

tipo de mensagem uint8_t

mensagem corda

Direção: EE -> CON

Cabeçalho Veja acima

comprimento da mensagem uint8_t

mensagem corda

comprimento da fonte uint8_t

fonte corda

nível de aviso uint8_t

Resumo: Envie uma exceção, erro, aviso ou mensagem informativa.


Nível de aviso: EXCEPTION_MESSAGE, ERROR_MESSAGE, WARNING_MESSAGE, INFO_MESSAGE
EE-> CON: Exceções indicam falha no programa EE sem possibilidades de recuperação. Erro, aviso e informação
terminarão no log do PolyScope.
CON -> EE: Indica principalmente diferentes tipos de falhas de protocolo.
Direção: Veja acima.
Retorno: Não disponível.

RTDE_TEXT_MESSAGE (protocolo v. 2)
Cabeçalho Veja acima

comprimento da mensagem uint8_t

mensagem corda

comprimento da fonte uint8_t


Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
fonte
uso de cookies. Saber mais (/support/) corda

https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 10/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229

nível de aviso uint8_t

Resumo: Envie uma exceção, erro, aviso ou mensagem informativa.


Nível de aviso: EXCEPTION_MESSAGE, ERROR_MESSAGE, WARNING_MESSAGE, INFO_MESSAGE
EE-> CON: Exceções indicam falha no programa EE sem possibilidades de recuperação. Erro, aviso e informação
terminarão no log do PolyScope.
CON -> EE: Indica principalmente diferentes tipos de falhas de protocolo.
Direção:
Retorno Bilateral : Não disponível.

RTDE_DATA_PACKAGE
Cabeçalho Veja acima

ID da receita uint8_t

<variable> <tipo de dados>

Resumo: Uma atualização para as entradas CON / EE respectivamente.


Os <variable> s são binários empacotados / serializados e correspondem ao tipo especificado pelo retorno das
solicitações SETUP_OUTPUTS ou SETUP_INPUTS.
Direção:
Retorno Bilateral : Não disponível

RTDE_CONTROL_PACKAGE_SETUP_OUTPUTS (protocolo v.
1)
Cabeçalho Veja acima

nomes de variáveis corda

Resumo: Configure a receita de saídas. No momento, o CON suporta apenas uma receita de saída. O pacote deve
conter todas as variáveis de saída desejadas. Os nomes das variáveis são uma lista de sequências de nomes de
variáveis separadas por vírgula.
Direção: EE -> CON

Retorna

Cabeçalho Veja acima

tipos de variáveis corda

Resumo: Retorna os tipos de variáveis na mesma ordem em que foram fornecidos na solicitação.
Tipos de variáveis: VECTOR6D, VECTOR3D, VECTOR6INT32, VECTOR6UINT32, DUPLO, UINT64, UINT32, INT32,
BOOL, UINT8
Se uma variável não estiver disponível, o tipo de variável será "NOT_FOUND".
No caso de um ou mais valores de retorno "NOT_FOUND", a receita é considerada inválida e o RTDE não exibirá
esses dados.

RTDE_CONTROL_PACKAGE_SETUP_OUTPUTS (protocolo v.
2)
Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
Cabeçalho
uso de cookies. Saber mais (/support/) Veja acima

https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 11/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229

frequência de saída em dobro

nomes de variáveis corda

Resumo: Configure a receita de saídas. No momento, o CON suporta apenas uma receita de saída e a frequência
de saída é configurável. A frequência deve estar entre 1 e 125 Hz e a taxa de saída será de acordo com o piso
(125 / frequência). O pacote deve conter todas as variáveis de saída desejadas. Os nomes das variáveis são uma
lista de sequências de nomes de variáveis separadas por vírgula.
Direção: EE -> CON

Retorna

Cabeçalho Veja acima

ID da receita de saída uint8_t

tipos de variáveis corda

Resumo: Retorna os tipos de variáveis na mesma ordem em que foram fornecidos na solicitação.
Tipos de variáveis: VECTOR6D, VECTOR3D, VECTOR6INT32, VECTOR6UINT32, DUPLO, UINT64, UINT32, INT32,
BOOL, UINT8
Se uma variável não estiver disponível, o tipo de variável será "NOT_FOUND".
No caso de um ou mais valores de retorno "NOT_FOUND", a receita é considerada inválida e o RTDE não exibirá
esses dados.

RTDE_CONTROL_PACKAGE_SETUP_INPUTS
Cabeçalho Veja acima

nomes de variáveis corda

Resumo: Configure uma receita de entrada CON. O CON suporta 255 diferentes receitas de entrada (0 é
reservado). Os nomes das variáveis são uma lista de sequências de nomes de variáveis separadas por vírgula.
Direção: EE -> CON

Retorna

Cabeçalho Veja acima

ID da receita de entrada uint8_t

tipos de variáveis corda

Resumo: Retorna os tipos de variáveis na mesma ordem em que foram fornecidos na solicitação.
Tipos de variáveis: VECTOR6D, VECTOR3D, VECTOR6INT32, VECTOR6UINT32, DOUBLE, UINT64, UINT32,
INT32, BOOL, UINT8
Se uma variável foi reivindicada por outro EE, então o tipo de variável será "IN_USE".
Se uma variável não estiver disponível, o tipo de variável será "NOT_FOUND".
No caso de um ou mais valores de retorno "IN_USE" ou "NOT_FOUND", a receita é considerada inválida (ID da
receita = 0).

RTDE_CONTROL_PACKAGE_START
Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 12/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229

Cabeçalho
Veja acima

Resumo: Solicite que o controlador comece a enviar atualizações de saída. Isso falhará se, por exemplo, um
pacote de saída ainda não tiver sido configurado.
Direção: EE -> CON

Retorna

Cabeçalho Veja acima

aceitaram uint8_t

Resumo: O CON aceita ou não. 1 (sucesso) ou 0 (falha).

RTDE_CONTROL_PACKAGE_PAUSE
Cabeçalho Veja acima

Resumo: Solicite que o CON pause o envio de atualizações de saída.


Direção: EE -> CON

Retorna

Cabeçalho Veja acima

aceitaram uint8_t

Resumo: O CON sempre aceitará um comando de pausa e retornará um 1 (sucesso).

Módulo Python do cliente RTDE


Os clientes RTDE podem ser implementados em diferentes idiomas que suportam comunicação de
soquete. O objetivo desta biblioteca cliente RTDE, escrita em Python, é fornecer um ponto de partida fácil
e mostrar alguns exemplos de aplicativos. A funcionalidade foi desenvolvida para o Python 2.7.11.

Exemplos
record.py

Use este script como um executável para gravar dados de saída do robô e salvá-lo em um arquivo csv.

Argumentos opcionais
--host: nome do host ou endereço IP para conexão (padrão: localhost)
--port: número da porta (padrão: 30004)
--samples:
Nós usamos cookiesnúmero específico
para melhorar suadeexperiência.
amostras a Ao
serem gravadas
continuar (casoeste
a visitar contrário, o programa
site, você com o ✖
concordaregistrará
os dados
uso de cookies. até receber
Saber SIGINT / Ctrl + C)
mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 13/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229

--frequência: a frequência de amostragem em Herz


--config: arquivo de configuração XML a ser usado - ele usará a receita com a chave 'out' (padrão:
record_configuration.xml)
--output: arquivo de saída de dados para gravar - um arquivo existente será sobrescrito (padrão:
robot_data.csv)
--verbose: ativa a saída de registro de informações no console
-h: exibe ajuda

example_plotting.py

Fornece uma maneira simples de ler e plotar os dados de um arquivo csv gravado com o record.py .
example_control_loop.py

Exemplo de um loop de controle simples. Uma configuração com duas receitas de entrada e uma receita de saída
é lida do arquivo XML e enviada para o servidor RTDE. O loop de controle consiste em uma leitura de bloqueio
seguida por um processamento de dados muito simples antes de enviar novas informações ao robô.

módulo rtde
Esta seção descreve as diferentes classes e suas interfaces públicas do módulo rtde.

classe csv_reader.CSVReader (csvfile, delimiter)

Lê o arquivo CSV e mapeia cada coluna em uma entrada no dicionário de namespace do objeto. O cabeçalho
da coluna é a chave do dicionário e o valor é uma matriz de pontos de dados na coluna.

Parâmetros de entrada:

csvfile (file): Qualquer objeto do tipo arquivo que tenha um método . read ()
delimiter (string): Uma string de um caractere usada para separar campos. O padrão é '' .

classe csv_writer.CSVWriter (csvfile, names, types, delimiter)

Retorna um objeto writer que pode receber DataObjects RTDE e convertê-los em uma string delimitada e
gravá-los em um arquivo como o objeto.

Parâmetros de entrada:

csvfile (file): Qualquer objeto semelhante a um arquivo que tenha um método . write ()
nomes (array <string>): lista de nomes de variáveis
types (array <string>): lista de tipos de variáveis
delimiter (string): Uma string de um caractere usada para separar campos. O padrão é '' .

writeheader ()
Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 14/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229

Escrever cabeçalhos de coluna na linha atual no arquivo com base nos nomes das variáveis. Variáveis
multidimensionais obterão um índice anexado ao nome em cada coluna.

escritor (objeto_de_dados)
Escreva uma nova linha no arquivo com base no DataObject fornecido.

Parâmetros de entrada:

objeto_de_dados (DataObject): Objeto de dados com variáveis de membro que correspondem aos
nomes das variáveis RTDE configuradas

classe rtde_config.ConfigFile (nome do arquivo)

Uma configuração RTDE pode ser carregada de um arquivo XML contendo uma lista de receitas. Cada
receita deve ter uma chave e uma lista de campos com um nome e tipo de variável. Um exemplo de receita
XML:

<? xml version = "1.0"?>


<rtde_config>
<receita key = "out">
<nome do campo = "timestamp" type = "DOUBLE" />
<nome do campo = "target_q" tipo = "VECTOR6D" />
< nome do campo = "target_qd" type = "VECTOR6D" />
<nome do campo = "speed_scaling" type = "DOUBLE" />
<nome do campo = "output_int_register_0" tipo = "INT32" />
</ recipe>
<recipe key = " in1 ">
<nome do campo =" input_int_register_0 "type =" INT32 "/>
<nome do campo =" input_int_register_1 "tipo =" INT32 "/>
</ recipe>
<recipe key ="in2 ">
<nome do campo =" input_double_register_0 "type =" DOUBLE "/>
</ recipe>
</ rtde_config>

get_recipe (chave)
Obtém a receita associada à chave especificada, fornecida como uma lista de nomes e uma lista de tipos.

Parâmetros de entrada:

key (string): A chave associada à receita

Valores de retorno:

variables (array <string>): lista de nomes de variáveis


Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
types (array <string>): lista de tipos de variáveis
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 15/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229

classe serialize.DataObject ():

Um objeto de transferência de dados em que os nomes de variáveis RTDE configurados para sincronização
foi adicionado ao dicionário de namespace da classe para acesso conveniente. Isso significa que, por
exemplo, o registro de data e hora pode ser acessado em um DataObject de saída assim:
objName.timestamp . O DataObject é usado para entrada e saída.

recipe_id
O recipe_id é uma variável de membro inteiro na ocorrência de DataObject usada para identificar pacotes de
entrada configurados no servidor RTDE. Não é usado para pacotes de saída.

classe Rtde.RTDE (hostname, port)

O construtor usa um nome de host e um número de porta como argumentos.

Parâmetros de entrada:

hostname (string): hostname ou IP do servidor RTDE


port (int): [Opcional] número da porta (valor padrão: 30004)

conectar()
Inicialize a conexão RTDE para o host.

Valor de retorno:

sucesso (booleano)

desconectar()
Feche a conexão RTDE.

está conectado()
Retorna True se a conexão estiver aberta.

Valor de retorno:

Nós usamos cookies


aberto para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o
(booleano) ✖
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 16/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229

get_controller_version ()
Retorna a versão do software do controlador do robô que está executando o servidor RTDE.

Valores de retorno:

major (int)
menor (int)
bugfix (int)
construir (int)

negte_protocol_version (protocolo)
Negocie a versão do protocolo com o servidor. Retorna True se o controlador suportar a versão do protocolo
especificada. Recomendamos que você use isso para garantir total compatibilidade entre seu aplicativo e
futuras versões do controlador do robô.

Parâmetros de entrada:

protocol (int): protocol version number

Return value:

success (boolean)

send_input_setup(variables, types)
Configure an input package that the external application will send to the robot controller. An input package
is a collection of input variables that the external application will provide to the robot controller in a single
update. Variables is a list of variable names and should be a subset of the names supported as input by the
RTDE interface.The list of types is optional, but if any types are provided it should have the same length as
the variables list. The provided types will be matched with the types that the RTDE interface expects and the
function returns None if they are not equal. Multiple input packages can be configured. The returned
InputObject has a reference to the recipe id which is used to identify the specific input format when sending
an update.

Input parameters:

variables (array<string>): Variable names from the list of possible RTDE inputs
types (array<string>): [Optional] Types matching the variables

Return value:

input_data (DataObject): Empty object with member variables matching the names of the
configured RTDE variables

send_output_setup(variables, types)
Configure an output package that the robot controller will send to the external application at the control
Nós usamos cookies
frequency. para is
Variables melhorar sua experiência.
a list of variable names andAo continuar
should a visitar
be a subset of este site, você
the names concorda
supported com oby ✖
as output
uso de the
cookies.
RTDE Saber mais
interface. The(/support/)
list of types is optional, but if any types are provided it should have the same length
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 17/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229

as the variables list. The provided types will be matched with the types that the RTDE interface expects and
the function returns False if they are not equal. Only one output package format can be specified and hence
no recipe id is used for output.

Input parameters:

variables (array<string>): Variable names from the list of possible RTDE outputs
types (array<string>): [Optional] Types matching the variables

Return value:

success (boolean)

send_start()
Envia um comando de início para o servidor RTDE para iniciar a sincronização real. A configuração de todas
as entradas e saídas deve ser feita antes de iniciar a sincronização.

Valor de retorno:

sucesso (booleano)

send_pause ()
Envia um comando de pausa para o servidor RTDE para pausar a sincronização. Quando pausado, é possível
alterar as configurações de entrada e saída e iniciar a sincronização novamente.

Valor de retorno:

sucesso (booleano)

enviar (input_data)
Envie o conteúdo de um DataObject como entrada para o servidor RTDE. Retorna True se for bem sucedido.

Parâmetros de entrada:

input_data (DataObject): objeto com variáveis de membro que correspondem aos nomes das
variáveis RTDE configuradas

Valor de retorno:

sucesso (booleano)

receber()
Bloqueio de chamada para receber a próxima saída DataObject do servidor RTDE.

Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
Valor de retorno:
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 18/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229

output_data (DataObject): objeto com variáveis de membro que correspondem aos nomes das
variáveis RTDE configuradas

Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 19/19