UR机器人通信接口总结

UR机器人通讯接口总结

UR机器人公司的官网教程给出了UR机器人提供的通讯接口,如下图所示:
UR机器人通讯接口

  1. Dashboard(29999) 接口是机器人人机界面进程负责维护和执行的一个端口。主要负责接收上位机指令,执行机器人初始化、加载程序、开始和暂停程序运行以及设置用户角色等操作,该接口主要应用在自动启动机器人,无示教器应用等场合。 接口接收上位机发送的Dashboard命令字符串,接收后,返回执行结果字符串。
  2. Primary& Secondary(30001& 30002) 接口由机器人控制进程维护和执行。开机后,机器人一直从这两个端口以10Hz频率对外发送机器人的状态信息。在接收到上位机发送的脚本指令字符串后会立即中断当前执行程序,然后运行接收到的脚本指令。一些具有返回值的脚本指令,其返回值并不会通过这两个端口返回,因为脚本的执行是在机器人控制进程中,其返回值只传递给该进程中的变量。
  3. Realtime (30003) 接口始终以125Hz的频率往外发送机器人的详细状态信息(位置,速度,关节电流,力矩等),同时也可以接收上位机发送的脚本指令并立即执行。
  4. RTDE (30004) 接口需由上位机进行配置,根据配置以125Hz的频率往外发送机器人的详细状态信息,机器人也只会接收配置的输入信息(IO,寄存器等)。与Realtime接口相比,RTDE接口不能接收脚本指令,只能接收配置好的输入信息;但是RTDE接口不会中断当前程序的执行,而且由于输入输出信息都是经过配置,传输的信息没有不需要的数据,可以按需启动和停止,能够大大降低对网络带宽的占用。
    关于RTDE官方也给出了一个例程,但是似乎其中的连接实现是Socket实现的。(具体也没细看)
  5. Socket 通讯是指机器人通过Socket相关脚本指令与上位机进行通讯的方式。
    Socket接收的数据解析点击这篇博客
    数据格式
    参考上述博客,本文提供了显示接收内容的Python代码:(需要其中特定内容可从字典中直接取出)
import socket
import struct

# import util
# import rtde
# import math
# import time
# import numpy as np
HOST = "xxx.xxx.xxx.xxx"
PORT = 30003

dic = {'MessageSize': 'i',
       'Time': 'd',
       'q target': '6d',
       'qd target': '6d',
       'qdd target': '6d',
       'I target': '6d',
       'M target': '6d',
       'q actual': '6d',
       'qd actual': '6d',
       'I actual': '6d',
       'I control': '6d',
       'Tool vector actual': '6d',
       'TCP speed actual': '6d',
       'TCP force': '6d',
       'Tool vector target': '6d',
       'TCP speed target': '6d',
       'Digital input bits': 'd',
       'Motor temperatures': '6d',
       'Controller Timer': 'd',
       'Test value': 'd',
       'Robot Mode': 'd',
       'Joint Modes': '6d',
       'Safety Mode': 'd',
       'empty1': '6d',
       'Tool Accelerometer values': '3d',
       'empty2': '6d',
       'Speed scaling': 'd',
       'Linear momentum norm': 'd',
       'SoftwareOnly': 'd',
       'SoftwareOnly2': 'd',
       'V main': 'd',
       'V robot': 'd',
       'I robot': 'd',
       'V actual': '6d',
       'Digital outputs': 'd',
       'Program state': 'd',
       'Elbow position': '3d', 
       'Elbow velocity': '3d'}
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_socket.connect((HOST, PORT))
data = tcp_socket.recv(1108)


names = []
ii = range(len(dic))
for key, i in zip(dic, ii):
    fmtsize = struct.calcsize(dic[key])
    data1, data = data[0:fmtsize], data[fmtsize:]
    fmt = "!"+dic[key]
    names.append(struct.unpack(fmt, data1))
    dic[key] = dic[key], struct.unpack(fmt, data1)
print(dic)
  1. XML-RPC通讯是一种通过XML格式传输结构化数据的协议,其优点在于传输的数据是结构化的,无需用户自己进行序列化和解析操作,例如从上位机传输float数据,机器人接收到后就已经是float类型了。目前XML-RPC库已支持多种语言,例如C++和Python。
  2. Modbus-TCP通讯既可以作为客户端也可以作为服务器。UR机器人作为客户端,只需配置好网络,然后使用相应的脚本即可。UR机器人作为服务器,可以提供机器人当前位置,速度等状态信息,也提供通用寄存器可用于互相通讯(例如相机将数据传输给机器人)。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值