为什么用Socket对UR机器人读取的Tool vector actual和示教器不符合?xyz坐标的读取一致性比较好,但尤其是在rx,ry,rz的字段经常出现有时候和示教器一致,有时候和示教器显示的数值差一个符号,有时候完全不一致? 1,下面是rx,ry,rz的字段与示教器完全一致的情况 2,下面是rx,ry,rz的字段与示教器差一个负号的情况 3.下面是读取的rx,ry,rz的字段与示教器完全不一致的情况 import socket import struct import numpy as np
robot_ip = '107.1.1.1' robot_port = 30003 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((robot_ip, robot_port))
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'} # 从套接字或其他来源接收二进制数据 data = sock.recv(1220) 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) #a = dic["Tool vector actual"] #a2 = np.array(a[1]) #print(a2) tool_vector_actual = dic['Tool vector actual'][1]
有没有大佬可以解答一下为什么?