示例9:学习网口通讯工具与机器人进行通讯

2022-11-24 12:19:50 admin

示例9我们将接着示例8进行,讲解如何将视觉定位得到的实际坐标(xy)通过网口发送给机器人。示例8中,我们已经得到了相对于机器人坐标系XY平面的实际坐标值(xy),只要我们将xy按照一定的格式发送给机器人,机器人通过解析后就可以移动到x'y'位置进行抓取了。但是要实现一个完整的抓取流程,只发送实际坐标值是不够的,还需要约定工作流程和通讯协议。

 工作流程及通讯协议 

通常机器人都支持与外部的通讯,并可以在机器人控制器系统上编写脚本来实现约定的通讯协议。为了讲解清晰,我们约定一个简单的流程和协议,用户可以在此基础上完善。流程图如下:

凯视佳机器视觉智能解决方案

在视觉检测软件进行定位检测之前,必须知道机器人末端已经带动相机到达既定的拍照位置,所以需要机器人发送一个到位信息给视觉检测软件,通知开始检测。这个协议格式定义如下:

Start

即机器人发送“Start”字符串,通知视觉检测软件开始定位检测。

视觉检测软件定位检测完成后,需要把实际抓取的位置信息发送给机器人,这个协议格式定义如下:

Move_x’,y’

即视觉检测软件发送的信息中第一个字符串为“Move”,然后用一个“_”来分隔,后面跟着的是实际的坐标值x’,y’,并用“,”分隔,注意这个是英文的“,”不是中文的“,”,分隔符的目的主要是方便机器人脚本进行解析。

另外我们要与机器人工程师约定使用TCP还是UDP协议以及谁来做服务器端和客户端,并约定好IP地址和通讯端口号。在本示例中,我们约定使用TCP协议,视觉检测软件所运行的主机作为服务器端,机器人的IP地址定为:192.168.1.2,视觉系统主机IP地址定为:192.168.1.3,端口号定为:9999。

  网络调试助手 

在学习本示例的时候,如果没有机器人环境,我们也可以通过“网络调试助手”NetAssist.exe进行调试和验证,它也可以作为在现场排查问题的工具。这个工具在“调试工具”文件夹下可以找到。

凯视佳机器视觉智能解决方案

上图中,我们已经在视觉系统中建立了一个TCP网络服务器,绑定到本地的网卡(IP地址为192.168.1.3,端口号为9999),我们用网络调试助手模拟机器人作为客户端,远程主机地址填写192.168.1.3:9999并连接,这样可以实现在同一台主机上使用同一块网卡与视觉检测软件的网络服务器端进行发送和接收数据的测试。

 运行效果 

凯视佳机器视觉智能解决方案

 准备工作 

1、设置网卡

PC版本Windows系统

在编写工程文件之前,我们还需要做一些准备工作,那就是先设置视觉系统主机及机器人控制器的网卡IP地址、子网掩码和默认网关。对于Windows系统视觉主机,我们需要打开“控制面板/网络和共享中心/更改适配器设置”页面。如图所示:

凯视佳机器视觉智能解决方案凯视佳机器视觉智能解决方案凯视佳机器视觉智能解决方案

嵌入式版本智能视觉传感器平台

对于智能视觉传感器嵌入式系统,我们可以通过菜单“设置/系统设置”直接进行网卡的设置,如图所示:

凯视佳机器视觉智能解决方案

2、验证网络

PC版本Windows系统

当机器人和视觉系统主机的网络配置完成后,连接好网线,我们通过相互ping一下对方的IP地址,以验证网络是否联通。我们在运行视觉检测软件的主机上打开控制台程序,输入:ping 192.168.1.2,如图所示:

凯视佳机器视觉智能解决方案

注意防火墙的设置,将KSJVBAI视觉检测软件添加进允许应用软件通过防火墙。

凯视佳机器视觉智能解决方案

嵌入式版本智能视觉传感器平台

对于智能视觉传感器,当设置好网卡后,可以让对方ping一下192.168.1.3来验证是否联通。

 编辑工程文件 

9.1建立TCP服务器 | 添加“网口”工具

“流程0”的工具列表中添加“网口”工具,并且作为第一个运行的工具。在其参数设置界面,我们选择“TCP服务器”类型,并在网卡列表中选择与机器人通讯的网卡,服务器端口设为:9999,工具名称:网口1,如图所示:

凯视佳机器视觉智能解决方案凯视佳机器视觉智能解决方案

如果要将一个工具添加到已经有工具列表的流程时,需要先把这个工具加到第一个工具后面,然后剪切第一个工具,将剪切的工具再粘贴到新添加的工具后面,这样就可以实现新添加的工具作为流程列表中第一个工具;

网口”工具参数设置界面的“网卡”列表只会列出已经连接的网卡供用户选择

作为服务器的网口,其状态只有当有客户端与其建立连接后才会PASS,本示例新添加的网口状态是FAIL这是正常的。如果不确定的话,可以使用网口调试助手连接此服务器以验证;

“网口”工具也可以加入到全局区,共享给其他流程使用,由于我们这个工程示例只有一个主流程“流程0”,所以我们可以将网口加入到这个流程中。

9.2 读取“网口1”的数据 | 添加“接收数据”工具

这一步我们主要是通过“接收数据”工具,读取“网口1”工具的数据,为下一步判断数据是否为“Start”启动命令做准备。在对其“通讯工具”参数进行设置时,我们需要选择上一步添加的“网口1”作为通讯工具,这样只要客户端发送给“网口1”的数据,视觉检测软件就可以通过“接收数据”工具接收到。超时的含义是最大等待多长时间来接收数据,如果在指定时间内没有接收到数据,此工具回自动返回,并把状态设置为NG,如图所示:

凯视佳机器视觉智能解决方案

超时”参数的设置需要根据实际情况来设置。

9.3 判断是否接收到“Start”字符指令

判断两个字符串是否相同需要通过“字符串对比”工具来完成,“字符串对比”工具需要输入两个字符串来进行比较,这个示例中,其中一个字符串就是“接收数据1”工具所读取的字符串,另一个字符串是常量“Start”,由于“字符串对比”工具的输入不允许是直接的字符串,必须是一个工具所输出的字符串,所以我们第一步添加一个“定义字符串”工具定义一个常量为“Start”的字符串,工具名称:字符串1,第二步添加一个“字符串对比”工具,用于比较“接收数据1”和“字符串1”的字符串是否相等,工具名称:字符串比较1,第三步,添加一个“条件跳转”工具,设定“条件”为“字符串比较1”,工具名称:条件跳转1,这样就实现了字符串比较的条件跳转,如图所示:

凯视佳机器视觉智能解决方案凯视佳机器视觉智能解决方案




凯视佳机器视觉智能解决方案

如果对“条件跳转”工具的使用还不熟悉,请参考示例7

9.4 接收到“Start”字符串后的定位检测 

这一步我们只需要将示例8中的流程工具剪切进IF块,ELSE块不做任何处理即可。这样,在收到“Start”字符串后,视觉检测软件会进入IF分支进行定位检测,如图所示:

凯视佳机器视觉智能解决方案

多个工具需要一同选择时,可以先按住Shift键,然后鼠标点选相应的工具即可

9.5 将“坐标转换1”的结果发送给机器人 | 添加“发送数据”工具

“立即显示1”工具后面,我们添加一个“发送数据1”工具,“通讯工具”参数同样选择“网口1”,数据格式为:Move_{坐标转换1.Point.X[0]},{坐标转换1.Point.Y[0]},这样我们就把“坐标转换1”输出的实际坐标值按照之前约定的协议格式通过网卡发送给了机器人,如图所示: 

凯视佳机器视觉智能解决方案凯视佳机器视觉智能解决方案凯视佳机器视觉智能解决方案

9.6 通过网络调试助手进行验证

第一步,不需要工程文件运行,打开网络调试助手,“协议类型”选择TCP Client,“远程主机地址”填写当前与机器人连接的网卡IP及端口号9999,本示例为:192.168.1.3.9999,“本地主机地址”选择相同网卡IP地址,点击“连接”按钮,如果连接成功,按钮标题会变成“断开”,这时表示网络调试助手已经与视觉检测软件的“网口1”服务器连接成功,然后,我们在网络调试助手的发送编辑框手动输入“Start”字符串,点击“发送”按钮。如图所示:

凯视佳机器视觉智能解决方案凯视佳机器视觉智能解决方案凯视佳机器视觉智能解决方案

第二步,我们回到视觉检测软件,点击“运行一次”按钮,您也可以点击“单步运行”按钮,一步一步执行每一个工具,查看运行过程及运行状态,如图所示:

凯视佳机器视觉智能解决方案

第三步,回到网络调试助手界面,我们会看到在网络数据接收区收到视觉软件发送过来的数据,这样就表示流程走通了,我们就可以关闭网络调试助手,和机器人联机运行了,如图所示:

凯视佳机器视觉智能解决方案

9.7 联机运行工程文件

点击窗口主菜单的“循环运行”按钮,开始运行工程文件。

 拓展学习 

1、对网络通讯中发送数据异常情况,做特殊的处理。

2、可以在实际坐标中增加定位的角度信息发送给机器人。

3、可以增加通讯协议,对多种不同形状的目标做有选择的抓取。