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

最近在使用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 | \

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 下面是一个基于TCP/IP协议控制UR机械臂沿着一系列路径点平滑运动的Matlab程序: ```matlab % 建立TCP/IP连接 ip = '192.168.1.101'; % UR机械臂IP地址 port = 30003; % UR机械臂的端口号 t = tcpip(ip, port); fopen(t); % 设置路径点 path_points = [0.2, -0.2, 0.2, -3.14, 0, 0; ... 0.3, -0.2, 0.2, -3.14, 0, 0; ... 0.3, -0.3, 0.2, -3.14, 0, 0; ... 0.2, -0.3, 0.2, -3.14, 0, 0]; % 发送运动指令 for i = 1:size(path_points, 1) command = ['movej([', num2str(path_points(i, :)), '], a=1.4, v=1.05)\n']; fwrite(t, command); pause(0.1); end % 关闭TCP/IP连接 fclose(t); ``` 这个程序的具体实现步骤如下: 1. 建立TCP/IP连接。使用Matlab的`tcpip`函数创建一个TCP/IP连接对象`t`,并指定UR机械臂IP地址和端口号。然后使用`fopen`函数打开连接。 2. 设置路径点。将要控制UR机械臂运动的路径点以矩阵的形式存储在`path_points`变量中。 3. 发送运动指令。使用`fwrite`函数向UR机械臂发送运动指令,每次发送一个路径点,并等待一段时间(这里是0.1秒)让机械臂运动到指定位置。指令的格式为`movej([x,y,z,rx,ry,rz], a=1.4, v=1.05)\n`,其中`[x,y,z,rx,ry,rz]`表示一个路径点的位置和姿态,`a`和`v`分别表示加速度和速度。 4. 关闭TCP/IP连接。使用`fclose`函数关闭TCP/IP连接对象`t`。 这个程序可以让UR机械臂沿着一系列路径点平滑运动,并可以根据需要修改路径点和运动参数。 ### 回答2: 在Matlab中,可以通过TCP/IP网络连接来控制UR机械臂沿着一系列路径点进行平滑运动。首先,需要确保Matlab的计算机与UR机械臂控制器处于同一网络中。 首先,在Matlab中创建一个TCP/IP对象,与UR机械臂IP地址和端口进行绑定。然后,通过TCP/IP连接来发送指令给UR机械臂控制器。 接下来,定义一个路径点列表,包含机械臂需要经过的连续路径点。每个路径点都包含位置和姿态信息。可以使用关键帧方式来控制机械臂运动轨迹,即通过机械臂从一个路径点到另一个路径点的过渡。 通过将路径点发送给UR机械臂控制器,可以使用UR机械臂的运动插值功能来计算每个路径点之间的平滑运动。控制器将考虑关节角速度、姿态变化和运动速度等因素,以平滑、连续的方式控制机械臂运动。 在Matlab中,可以使用TCP/IP对象来发送路径点信息,然后在UR机械臂控制器中解析该信息并进行运动控制。可以使用预定义的UR机械臂指令或自定义指令来完成这些操作。 通过这种方式,可以在Matlab中编写程序,通过TCP/IP网络连接,控制UR机械臂沿着一系列路径点进行平滑运动。这种方法允许实时地控制机械臂运动,实现高精度的轨迹跟踪和路径规划。 ### 回答3: 通过Matlab的TCP/IP通信功能,可以实现UR机械臂控制。首先,需要在Matlab中建立与UR机械臂TCP/IP连接。可以使用Matlab的TCP/IP函数库来实现UR机械臂的通信。然后,定义一系列路径点,即机械臂需要运动的位置。 接下来,编写程序实现机械臂的平滑运动。可以使用Matlab的插值函数来实现平滑运动。例如,使用样条插值函数interp1来对路径点进行插值,生成平滑的运动轨迹。可以使用插值函数的参数来控制插值的方式和平滑度。 然后,将生成的平滑轨迹转换为机械臂控制命令。通过TCP/IP通信,将控制命令发送给UR机械臂控制命令可以包括位置、速度、加速度等参数。可以使用Matlab提供的TCP/IP函数将控制命令发送给机械臂。 最后,启动机械臂的运动程序。UR机械臂会根据接收到的控制命令,沿着平滑运动的轨迹进行移动。可以使用Matlab的TCP/IP函数来检测机械臂的状态,例如位置、速度、加速度等信息。 综上所述,通过Matlab的TCP/IP通信功能,可以实现UR机械臂沿着一系列路径点平滑运动的程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值