UR机器人与电脑进行socket通讯(python / C++)

socket介绍

        在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据
  socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。
  我的理解就是Socket就是该模式的一个实现:即socket是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)。
  Socket()函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。

UR机器人的通讯准备

可以参考博客(https://blog.csdn.net/qq_41685265/article/details/103889515)中UR机器人的准备部分

用Python与UR机器人通讯

#socket通讯所需的包
import socket


#定义了UR机器人的地址和端口
target_ip = ("192.168.100.2" , 30003)

#建立一个socket对象
sk = socket.socket()

#建立连接
sk.connect(target_ip)

#这是发送给UR机器人的一个脚本指令
send_data1 = '''
def svt():
    movej(p[0.4,0.4,0.7,3.14,-1.57,1.57],a=1.4, v=1.05, t=0, r=0)
    movej([0,-1.1,0,-1,0,0])
    
end
'''

#发送指令,并将字符串转变格式
sk.send(send_data1.encode('utf8'))

用C++与UR机器人通讯

C++用的是Qt中的qsocket库,代码如下:

//新建qSocket对象
QTcpSocket *pSocket;

//建立连接
MainWindow::pSocket->connectToHost("192.168.1.104", 30003);

char str[200];

string strj = "movej([%lf,%lf,%lf,%lf,%lf,%lf])\n";

//六轴的参数
double dot[6] = {0,-90/rad,0,-90/rad,0,0};

//获取指令的字符串
int realLen = snprintf(str, sizeof(str),strj.c_str(), dot[0],dot[1],dot[2],dot[3],dot[4],dot[5]);

string res = str;

//发送指令
MainWindow::pSocket->write(res.c_str(),qint64(res.length()));

方法已经经过了URsim和实际机器人的检验,可以实现控制

发布了31 篇原创文章 · 获赞 38 · 访问量 5020

猜你喜欢

转载自blog.csdn.net/qq_41685265/article/details/104327982