UR机器人数据包解析(python与C++实现)

UR机器人视觉测量 专栏收录该内容
13 篇文章 1 订阅

一、与UR机器人进行通讯

如果还没有完成电脑与UR机器人的通讯,可以参考这个博客(https://blog.csdn.net/qq_41685265/article/details/104327982

 

二、数据包解释

每一个UR机器人对应的软件手册上边是有机器人返回的包中各数据位代表什么以及每个占多少位的空间的,如下:

 左边一列是UR机器人的各个参数,后边是类型,包括占用几个字节等等,这个需要找到与自己机器人型号相同的说明书,说明书可以去官网下载

 

三、用python解析各参数

直接上代码:参考e-pi

#各个参数与类型
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': 'd', 'Elbow velocity': '3d'}

#接受数据包
data = sk.recv(1500)

#开始对数据包进行解析
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(names)
#print(dic)

#输出角度值
a=dic["q actual"]
a2=np.array(a[1])
print(a2*180/math.pi)


结果如下

[ -91.71335427  -98.9555408  -126.22260227  -46.29498985   91.3924979   -1.77616916]

四、用C++解析数据包

也是直接上代码:

//读取数据包
QString ba = MainWindow::pSocket->read(1116);

//其实看完了上边的参数表,可以直接从字节读取
int start = 888;

//这是我自己写的一个类,里边有将十六进制转为double的函数
Solution so;
//接下来以读取TCP为例
vector<double>tcp;
for(int i = 0;i<6;i++){
   QString sss = str.mid(start+i*16,start+i*16+16);
   tcp.push_back(so.HexToDouble(sss.toStdString()));
}

只需要在上边表中查找实际需要的参数,从数据中按照制定格式读取出来就可以了

 

 

  • 4
    点赞
  • 4
    评论
  • 12
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值