首页 » 软件优化 » 自驱动关节臂坐标测量机上位机测控系统软件设计与仿真(软件关节上位测控测量机)

自驱动关节臂坐标测量机上位机测控系统软件设计与仿真(软件关节上位测控测量机)

雨夜梧桐 2024-11-26 08:49:28 0

扫一扫用手机浏览

文章目录 [+]

传统关节臂坐标测量机存在采用人工手动拖拽、离线测量方式及测量效率低等缺点,无法满足在线、智能及高精度测量的发展要求。
为实现关节臂坐标测量机在线自动测量,需要开发一款可以实现工件测量点抓取、运动路径规划、关节运动控制、测量数据记录、运算和误差补偿等功能的测控软件

学者们在具有类似结构的串联机械臂测控软件及其仿真测试方面取得了不少成果。
李哲朴等研发的SAMMIE软件被应用于机器人离线编程,可以对机器人进行建模仿真及碰撞检测,但仅能实现人机交互仿真分析,无法将仿真模型与测量机硬件直接连接。
目前常用的ADAMS软件可以用于预测机械系统性能、可活动范围及碰撞检测等,但其仿真不是实时仿真,且无交互功能,仿真速度慢。
王帅使用Unity3D软件开发了机械臂虚拟交互平台,可以实现场景虚拟测试,但无法满足现实环境的交互需求。
张戟等利用SolidWorks软件进行三维建模,并运用ADAMS、AME Sim和Simulink开展联合仿真。
方伟结合OpenGL与QT平台搭建了虚拟仿真环境,但仅能满足示教机器人的使用与操作,兼容性差。

上述国内外研究的机械臂控制与仿真软件无法满足目前自驱动关节臂测量机的运动控制和测量需求,因此有必要重新开发一种能满足测量机运动控制、测量功能以及精度要求的测控软件。

自驱动关节臂坐标测量机上位机测控系统软件设计与仿真(软件关节上位测控测量机) 软件优化
(图片来自网络侵删)

2 上位机测控系统软件分析

2.1 自驱动关节臂坐标测量机工作原理

自驱动关节臂坐标测量机(简称测量机)的整体结构见图1,由上位机、控制系统和测量机本体三大部分组成,通过改造手动关节臂坐标测量机结构,在关节处添加电机、减速器和编码器等,实现测量机自驱动定位和测量。

测量机本体由1个基座、3个双关节、1个测头和3段连杆组成;控制系统分为主测控模块和3个关节测控模块两大部分,主测控模块负责总体运行、各模块间协调及与上位机通信;每个关节测控模块主要负责一个双关节电机闭环控制、传感器的数据采集与传输。
工作时,控制系统接到上位机传输的指令,转化为电信号驱动电机转动,使测头到达指定位置,角度编码器采集转角值实时传输到上位机。

测量机工作时,将被测工件三维模型导入测控软件,精确抓取待测点,并对其三维坐标和测量机测头初始坐标进行路径规划,获取待测点与测头初始位置之间的最优路径,实现最佳定位与测量精度。
同时利用运动学反解算法,结合测量机动力学分析结果,确定测量机6个关节的角度变化范围,传输到测量机电机控制系统,控制组成3个关节的6个关节模组运动,实现测量机的精确定位与测量。
关节模组编码器测量得到的角度值被反馈到上位机测控软件中,基于D-H模型利用测量机建立测量模型,实时显示测量机测头位置,并利用误差补偿算法进行三维坐标误差补偿,最终实现测量精确定位和高精度测量。

图1 自驱动关节臂坐标测量机结构

2.2 测控系统软件需求分析

由上述测量机的工作原理可知,为了实现测量机路径规划、运动控制、精确定位、误差补偿和精确测量,本文研究的测控软件需满足以下功能需求。

(1)自动测量需获取工件待测点相对于测量机的三维坐标值,因此应在上位机软件中导入待测零件和测量机模型,生成虚拟三维工件,并将加工零件转化到测量机的坐标系中,精确抓取被测工件的空间位置。

(2)测控软件与MATLAB软件连接,由抓取得到的坐标点反算出各个关节转角值,并利用轨迹规划算法得到最优路径。
将计算得到的转角通过通信方式传输到控制系统中,完成软件与硬件的连接达到自驱动控制的目的。

(3)测控软件需要配置数据库,将测量系统采集的数据实时传输到上位机软件进行存储,并利用MATLAB算法对数据进行误差补偿,完成自动测量。

3 测量机上位机测控系统软件设计

对上位机通信系统软件需求进行深入分析,确定软件需要具备的功能,完成整体软件框架设计和软件环境需求配置。
使用Visual Studio 2015开发平台,并利用MFC与跨平台API的OpenGL实现对Windows环境的软件设计与开发。

3.1 测量系统软件功能分析

针对测量机软件需求,上位机软件应具备登录页面、三维模型显示、轨迹规划、定位测量、参数显示、误差补偿和通信等七大功能(见图2)。

为了精确抓取被测工件的三维坐标,三维模型显示模块需要将被测工件的三维模型导入上位机建立的测量机三维测量坐标系中,进行模型的重构、旋转、缩放和平移等操作,精确抓取零件测量点和路径规划点的三维坐标,并显示在软件窗口中。

图2 功能模块

为了将抓取到的坐标点通过MATLAB软件中S型轨迹规划算法反算出6个关节转角值并显示在相应控件中,轨迹规划功能需要与MATLAB算法链接。
为了实现定位测量,软件需具备设置6个关节的速度与加速度的功能,并通过通信控制各关节的电机转动。

为了能够驱动各关节电机,上位机通过通信功能将反解算出的关节转角和最优路径发送给控制器,同时接收光栅传感器实时采集反馈回的6个关节转角。
执行器模块通过以太网通信,光栅传感器通过串口通信实现数据传输。
针对常用通信方式及高实时性要求,决定采取串口通信与以太网通信方式。

为获得当前关节转动角度,需要实时显示采集6个关节转角值和测头三维坐标位置及6个关节速度。
为实现对被测点坐标数据进行误差实时补偿,测量软件需要具备误差补偿功能。
将采集的6个关节转角数据、速度、加速度和标定得到的杆长、偏置值、扭转角,代入由MATLAB软件编写的误差补偿程序,算出点位误差、标准偏差和平均误差,从而实现三维坐标的实时补偿,并将补偿前与补偿后的三维坐标数值同步显示在软件界面中,便于后续误差补偿效果对比。

3.2 测控系统软件框架设计

采用Visual Studio 2015中的MFC单文档应用程序框架和开放端口OpenGL进行测量机测控软件界面编写。
软件主体框架分为菜单项、左侧三维图形显示部分和右侧参数输入与显示部分(见图3)。
通过CSplitterWnd类拆分窗口,在CMainFrame类中声明CSplitterWnd类型的对象,重写框架类的OnCreateClient()函数,并利用界面挂载自定义消息宏完成通过菜单项选择调用不同类的Dlg界面,以完成不同功能。

3.3 测控系统软件搭建

3.3.1 自驱动关节臂坐标测量机模型抓取

本文编写的用于三维模型导入重构和三维模型坐标抓取的显示模块,利用Visual Studio 2015和开放端口OpenGL,将MFC的绘制设备DC与OpenGL的绘制环境RC连接起来。

图3 软件整体界面

具体方法为SolidWorks软件建模后,存储为.obj文件,采取glfw+glad的程序框架和Assimp库读取.obj模型文件。
在OpenGL中定义一个vertex数据结构,包含位置向量、法向量和纹理坐标,定义一个texture结构体存储纹理数据的id。
定义一个mesh类,将所有数据赋予网格,最终调用Draw函数绘制网格。
利用Assimp库中的Assimp::Importer::ReaderFile()加载模型,并转移至上面创建的Mesh对象中。

采用射线拾取算法获取测量机三维模型测头所在坐标点及工件待测点坐标;点击屏幕二维坐标,经过坐标转化得到投影点;以近平面为起点,向远平面方向发出一条射线,射线与物体相交得到待测工件坐标点和测头坐标点。

3.3.2 调用运动学反解和轨迹规划算法

用于调用MATLAB软件中编写好的运动学反解算法的轨迹规划模块,选择在MFC中调用MATLAB软件编译生成DLL,并在其文件中编写算法程序,根据mcc-W cpplib:Test-T link:lib Test命令生成库文件和头文件。
将生成的库文件与头文件添加到项目中,并配置VS的编译环境。
初始化MATLAB的调用:

if (!mclInitializeApplication(NULL,0))

{AfxMessageBox(_T("Could not initialize !"));

return;}

if (!addtestInitialize())//文件名+Initialize构成

{AfxMessageBox(_T("Could not initialize !"));

return;}

初始化后编写程序调用MATLAB软件已写好的算法。

3.3.3 存储编码器采集的数据

选择SQL server数据库作为测控系统软件的数据管理系统,对编码器采集的数据进行存储和查询等操作。
MFC采用ADO技术链接SQL server数据库。

(1)在SQL server数据库中建立Jointθ数据库,并新建表Table_Joint。

(2)加载ADO库,将以下代码加入Stdafx.h中。

#import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF","adoEOF")

(3)创建_ConnectionPtr和_RecordsetPtr对象。
代码如下:

_ConnectionPtrm_pConnection;//初始化ADO服务器

_RecordsetPtrm_pRecordset;//对ADO服务器操作对象

(4)在MFC单文档的分割对话框OnInitialUpdata()函数中链接数据库,可以通过SQL语言实现数据存储、查询、修改和删除等操作。

3.4 驱动测量机运动

通过串口或以太网通信方式解决PC端上位机软件与坐标测量机下位机系统实时通信的问题,将上位机中设置的信息传输到下位机系统,控制坐标测量机运动,达到下位机系统采集到的角度数据传输到上位机软件中进一步处理的目的。

3.4.1 串口通信

本文上位机与关节臂的实时通信利用CSerial类进行串口通信的编写,将CSerial类添加到软件编写工程中,定义一个m_SerialPortOpened变量来标志串口打开,对按钮“打开串口”添加响应函数完成对串口的初始化。
在CSerialDlg.h的头文件中对CSerialPort类赋予一个具体的对象m_SerialPort。
通过串口号、波特率和校验位等打开串口,根据通信协议将波特率设置为921600bps,数据位设置为8位,停止位1位,无校验位。

实现ASCII文本和十六进制数据发送与显示。
在CSerialDlg中对“发送”按钮添加事件响应函数OnBnClickedButtonSend(),检查串口是否打开,如果没有打开则直接退出函数,打开则调用UpdateData()函数读取编辑框中的数据。
再根据十六进制数据和ASCII文本调用CSerialPort类中的WriteToPort两种不同发送函数发送数据。
添加自定义消息WM_COMM_RXCHAR响应函数OnCommunication()接收消息,同样根据十六进制和ASCII码调用不同的接收函数SetSel()、ReplaceSel(),并将消息显示在串口通信界面的接收编辑框中。

3.4.2 以太网通信

上位机作为以太网通信中的客户端,利用Windows API进行基于TCP的网络连接,向下位机服务器端请求服务。

(1)用MFC提供的AfxSocketInit()函数加载套接字库,在CEthernetDlg类中增加一个SOCKET类型成员变量m_socket,用于创建套接字,并在CEthernetDlg类的“连接”按钮中添加事件响应函数OnBnClickedConnect(),在此函数中调用WSAStartup()函数加载套接字,加载的网络版本为2.2版本。

(2)套接字创建成功后,将其绑定到某个IP地址和端口上,IP地址和端口号通过IP地址编辑控件和端口号编辑控件获取,完成后向服务器发出连接请求,连接成功即可发送及接收消息。

(3)在CEthernetDlg类的“发送”按钮中添加事件响应函数OnBnClickedOk()函数,使用GetDlgItem()和GetWindowText()函数获取相应的编辑框控件和信息。
利用Send()函数发送数据。

(4)在CEthernetDlg类中自定义静态线程函数Recv_Th(LPVOID p),获取主线程传递的套接字和窗口句柄。

4 仿真测试结果

4.1 测量机三维模型显示

将测量机模型和待测零件导入软件,获取测头和待测点的三维坐标点。
同一模型在不同软件中的显示效果见图4。
对模型进行平移、缩放和旋转等操作,并拾取模型上三维坐标点测试(见图5)。

图4 不同软件显示效果

图5 模型基本变换操作和三维坐标点拾取

4.2 调用MATLAB算法

在软件三维模型中获取的待测坐标点通过MFC与MATLAB软件连接,调用MATLAB软件中函数和算法计算出6个关节转角,并调用轨迹规划算法。
通过菜单中“误差补偿”的子菜单“调用MATLAB”,可以实现与MATLAB软件连接。
此处通过一个简单函数验证连接,如图6所示,调用MATLAB函数进行简单的“1+2”计算,生成MATLAB函数图形。

图6 调用MATLAB函数测试

4.3 通信

利用虚拟串口通信进行测试,可以实现串口连接,并能发送十六进制和ASCII码数据(见图7a)。
对以太网通信进行测试,可以实现客户端与服务器连接并传输数据(见图7b)。

图7 串口通信与以太网通信

4.4 数据库连接

测量机角度编码器采集的数据通过通信传输到上位机需实时存储,并可以调用存储数据进行后续误差补偿等处理。
如图8所示,数据库连接成功后弹出窗口,提示数据库连接成功,通过上位机存入数据按钮将采集的数据存入数据库中,实现目标任务。

图8 数据库连接及数据存储

5 结语

本文研究的上位机软件可以较好地实现自驱动关节臂的需求,兼容性高,界面设计符合友好人机交互性。

(1)针对自驱动关节臂坐标测量机在线测控系统进行上位机需求分析,确定上位机需完成的功能模块,完成整体软件编译环境配置。
结果表明,配置的编译环境能够将采集的数据存入数据库,并可以调用MATLAB算法对数据进行处理,从而将MFC友好的界面设计与MATLAB软件强大的算法相结合。

(2)对上位机软件进行了整体界面设计,通过串口通信与以太网通信实现软件与硬件的连接,达到关节臂自驱动的目的。
将SolidWorks软件制作的工件模型和关节臂模型导入软件显示区域,并能对模型进行缩放、旋转、平移操作和坐标点抓取等操作。

⊙文章版权归《工具技术》所有,欢迎转发,转载请联系。

相关文章