ur机械臂 控制器_UR机械臂 tcp/ip 远程控制编程实现详解 c++ UR script

本文详细介绍了如何使用C++和URScript通过TCP/IP协议远程控制UR3和UR5机械臂,包括通信概述、数据包结构、大小端转换及编程要点,特别强调了数据包长度的判断和网络字节顺序的处理。还提供了基础通信的代码示例以及URScript编程的关键注意事项,如换行符的使用和函数定义方式。
摘要由CSDN通过智能技术生成

最近在使用c++对UR3和UR5进行控制,发现网上内容不太好找,并且有的编程的一些点没有点清楚,现在记录在这里,方便后人使用.

copyright (c) 2020 余晨 in HITSZ, 协议CPLv.2 转载请标明原地址.

机械臂TCP/ip通信

通信概述

机械臂的网口通信有几个端口可以使用,我只讲解30003端口,我用的UR3和UR5是e系列.关于机械臂tcp/ip通信的参考在这里,下图就来自这个网页里,并且提醒:这个参考网页最下方有一个xlsx格式的表格附件,里面详细描述了UR机械臂传输数据的详细格式,很多人没留意到这个附件,为了方便使用,这里也把这个附件链接放上来.

首先看图1,可以看到30003通信端口频率为500HZ,并且可以使用URScript,所以速度较快,控制较全面,我们就是用这个方法.但是现在官方推荐使用RTDE(real time data exchange),是封装好的API,你们可以用这个看看文档,以及引导教程.

图1

图二就是机械臂30003端口通信数据包详细细节,这个图就来自参考网页的附件.可以看到数据包的第一个数据是一个int,描述了整个数据包的长度.这里提醒:不同机械臂的数据包长度可能是不一样的,要通过读取这个第一个int来判断真实的长度.并且由于是通过网络进行传输,所以遵循网络标准,即:网络字节顺序都是大端字节顺序(big-endian),如果你使用的是Intel等little-endian的芯片,那么在读取到数据包之后要进行一个直接顺序转换.同时从机械臂读到的数据的默认格式是图2所示,但是你可以在机械臂示教器更改数据传输,如果你更改了,那么可能就不是这个默认格式了!

图二

通信编程要点

在说完基础信息后,这里将说明一些编程实现要注意的地方.

基础通信

可以使用QtcpSocket(如果你使用Qt)或者任意的网络通信模块都可以,将目标地址和端口设置成你机械臂示教器里设置的ip地址,端口用30003.如果想要看具体收数据实现可看这篇文章,以及他的代码实现.这里也给出我的数据接受代码参考.

//这个一个大小端转换函数,大小端转换的基本单位是bytes,当一个64bit数据要做大小端转换时只需要将这8个bytes镜像对调

#define ntohll(x) ( ((uint64_t)x & 0xff00000000000000LL)>>56 | \

((uint64_t)x & 0x00ff000000000000LL)>>40 | \

((uint64_t)x & 0x0000ff0000000000LL)>>24 | \

((uint64_t)x & 0x000000ff00000000LL)>>8 | \

((uint64_t)x & 0x00000000ff000000LL)<<8 | \

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值