版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
五自由度混合式机器人虚拟仿真分析案例目录TOC\o"1-3"\h\u25276五自由度混合式机器人虚拟仿真分析案例 1245311.1仿真平台介绍 171451.2应用编程 297321.2.1V_Rep与C++进行通信的方法 38411.4.2V_Rep与MATLAB进行通信的方法 852881.3五轴混合式机器人运动仿真分析 11207891.3.1V_Rep中仿真模型的搭建 12176701.3.2V_RepRemote 13150671.3.3单轴调式与正负方向判定 141.1仿真平台介绍当前通用的机器人仿真软件主要有Solidworks、Pro/E、Adams、Vericut等,但前两款主要是为机械结构的实体建模,也可进行简单的动画仿真,但操作起来比较麻烦;Adams主要针对机构的运动学和动力学仿真及分析,且计算结果比较准确,但也因为图形界面操作,使许多特定的控制操作不太灵活;Vericut主要用于数控机床的加工仿真和NC代码的检查,其最大特点是既能模拟刀位文件,又能模拟CAD/CAM后置处理的NC程序,但其主要是为传统的串联式数控机床设计的,而且,对于用户,自定义的机床或并联机器人,其自定义的灵活性并不太好;Vericut主要用于数控机床的并联动作仿真以及NC代码的校验,其最大的特点是,它能仿真出NC、Adams、Vericut等多种类型的自定义动作。开源虚拟机器人实验平台V_Rep是一款基于分布式控制结构开发的多功能机器人模拟器,主要有以下特点:1、4个物理引擎(ODE、Bullet、Vortex、Newton);2、支持Windows、Linux、MacOS三种操作系统;3、支持六种编程方式;嵌入式脚本、插件、附加组件、ROS节点、远程客户机应用程序界面、或定制的解决方案;4、支持六种编程语言:C/C++、Python、Java、Lua、Matlab、Octave。V_Rep的组织架构主要由Sceneobjects、Calculationmodules、Controlmechansims三部分组成。Sceneobjects用来存储模型的数据信息,Calculationmodules用来实现由模型对象提供的动作功能,Controlmechansims用来满足具体的业务需求和在V_Rep中不同的对象之间进行正确交互。另外,V_Rep还可用于以下多个领域,如位置正反计算、雅克比计算、动力学计算、干涉检验、最短距离探测、路测规划、算法开发等,还可用于工厂自动化系统的仿真、硬件控制、远程监控、快速原型与验证、安全监测、快速算法开发以及机器人教育等,是五自由度混合机器人虚拟仿真的理想选择。1.2应用编程除在V_Rep中直接使用常规的嵌入式脚本控制机器人外,另一种更常用的控制方式是通过远程客户端(如C/C++或Matlab)进行控制,尤其是在需要读取V_Rep模拟器中机器人的关节数据值时,这样做更方便,也更灵活。通过调用由V_Rep自己提供的RemoteAPI库函数实现外部控制的远程客户端,其工作原理是Socket进程通讯机制实现数据双向传递的过程,其基本工作模式是:“open——read/write——close”,即,首先在两个进程之间建立连接,然后通过读写操作在这两个进程之间实现数据双向传递,数据传输完成后,关闭连接。事实上,这也是一个通过电话进行通信的过程,打电话的双方都有一台电话机(这个号码相当于Socket通信的两个端口),然后一方等对方接完电话,电话接通后,这两个人就可以交换信息(这相当于两个进程之间的数据传输),这时,通话结束,挂断电话(这相当于两个进程之间的连接)。可见,利用这种流程通讯机制,只需要进程双方提供各自的端口号,然后建立连接,其逻辑就很清晰,也很容易理解。使用远程客户端的RemoteAPI的函数调用多了两个传递参数:clientID和V_Rep.simx_opmode_oneshot,而不是直接使用嵌入式控制脚本的RegularAPI。clientID用于连接socket进程通信,V_Rep.simx_opmode_oneshot用来在V_Rep与C/C++或MATLAb等远程客户端之间指定数据传递方式。另外,调用函数名也会发生一些小的变化,比如,获取句柄的函数名为simGetObjectHandle(),而在RemoteAPI中这是一个simxGetObjectHandle(),这样,您可以通过名字的细微差别以及函数传递参数的情况来确定一个函数的作用域,这大大方便了用户的查找和使用。以下分别以C/C++和Matlab开发环境介绍了它们与V_Rep实现Socket通信的具体建立过程,实际上两者都是相似的。可以在安装的V_Rep软件目录中找到具体需要的接口配置文件,只需按照下面的步骤进行操作。1.2.1V_Rep与C++进行通信的方法通信方法包括以下几个步骤:(1)打开VS2008新建一个项目,VS新建C/C++控制台工程,如图1.1。图1.1新建VS控制台工程(2)配置头文件。鼠标右键点击项目名,选择“属性”》“通用配置”》“VC++目录”》“包含目录”点击编辑,点击“...”,添加目录“C:\ProgramFiles\V_Rep3\V_Rep_PRO_EDU\programming\common”(V_Rep安装的文件夹下),还有include目录和remoteAPI目录。点击确定,完成后如图1.2所示。图1.2头文件配置添加库目录为:C:\ProgramFiles\V_Rep3\V_Rep_PRO_EDU\programming。(3)修改预处理器。点击“c/c++”,选择“预处理器”,选择“预处理器定义”,编辑,如图1.3。图1.3修改预处理器修改为如图1.4:图1.4预处理器参数设置WIN32NDEBUG_CONSOLENON_MATLAB_PARSINGMAX_EXT_API_CONNECTIONS=255zasda//DO_NOT_USE_SHARED_MEMORY//_CRT_SECURE_NO_WARNINGS备注:如果报sharedmemory错误的话就添加DO_NOT_USE_SHARED_MEMORY,如果报fopen错误的话就添加_CRT_SECURE_NO_WARNINGS,否则无需添加。点击确定,应用,确定。(4)编写测试代码。测试代码如下://#include"stdafx.h"#include<stdio.h>#include<stdlib.h>extern"C"{#include"extApi.h"}intmain(){intclientID=simxStart("127.0.0.1",2000,true,true,2000,5);//printf("clientIDis%d",clientID);//getchar();intsimRes=simxStartSimulation(clientID,simx_opmode_oneshot);//startsimulationprintf("simResis%d",simxStartSimulation);if(clientID!=-1){printf("success");}else{printf("error");}return0;}当我们点击运行时,会出现如图1.5所示的错误:图1.5运行测试(5)添加链接库。下载remoteAPI.lib,放到C:\ProgramFiles\V_Rep3\V_Rep_PRO_EDU\programming下,以便后面使用。然后将remoteAPI.lib放入项目文件夹下。点击“项目”》“属性”———》“配置属性”———》“链接器”———》在“附加依赖项”中添加remoteAPI.lib,完成后如图1.6。图1.6添加链接库在V_Rep子线程中添加如下代码:simExtRemoteApiStart(2000),如图1.7所示。图1.7使能socket通信在V_Repchildscript中添加simExtRemoteApiStart(2000),2000即为端口号,需与VS源码中对应就可以了。(6)运行测试。先运行V_Rep,然后运行VS,打印success,即通信成功,如图5-8所示;如果只运行VS,则打印error。图1.8运行V_Rep1.4.2V_Rep与MATLAB进行通信的方法V_Rep与Matlab的通信可以通过shareMemoryCommunicationPlugin,也可通过socket,这里我们仅介绍使用Sockets的方法。(1)创建新的Matlab项目文件夹,这是我的一个习惯,比如创建一个新的V_Repapi文件夹。(2)在V_Rep安装文件夹下找到\programming\remoteApiBindings\matlab\matlab文件夹,将该文件夹下的所有文件拷贝到项目文件夹V_Repapi下。其实只有remApi.m和rempteApiProto.m是有用的,其它可留作参考。(3)在V_Rep安装文件夹下找到\programming\remoteApiBindings\lib\lib\64Bit文件夹,将该文件夹下的所有文件拷贝到项目文件夹V_Repapi下。当然只有一个文件。完成后你的项目文件夹下会有如图1.9所示的目录结构:图1.9V_Rep与MATLAB通信接口设置这样,Matlab环境的配置就完成了(readMe可以移除)。以下是一个测试V_Rep和Matlab是否可以重新通信的简单示例。Step1:打开V_Rep,一个新的scence将自动创建。拖曳UR5到工作区,如图1.10所示。图1.10UR5拖拽到工作空间Step2:打开Matlab,将工作空间定位到V_Repapi文件夹下。并打开simpleTest.m文件,如图1.11所示。图1.11测试文件Step3:按照simpleTest.m文件的说明,打开V_Rep中UR5的脚本文件,将:simRemoteApi.start(19999)插入到最顶端,见图1.12。在UR5的脚本文件中已经有了这样的示例,可以对其进行删除,也可以保留。图1.12使能socket通信Step4:通过V_Rep仿真运行Matlab,然后观察Matlab输出结果。鼠标移动到V_Rep界面,会看到MatlabCommand窗口输出发生了变化,如图1.13,直到Matlab程序完成。图1.13连接测试V_Rep与Matlab通信的关键脚本代码如下:%V_Rep脚本:simExtRemoteApiStart(19999)%MATLAB端:V_Rep=remApi('remoteApi');%usingtheprototypefile(remoteApiProto.m)V_Rep.simxFinish(-1);%justincase,closeallopenedconnectionsclientID=V_Rep.simxStart('127.0.0.1',19999,true,true,5000,5);1.3五轴混合式机器人运动仿真分析因为V_Rep的建模和装配能力较弱,所以首先在SolidWorks中建立好各个部分的模型,然后添加一组辅助约束以形成可自由活动的机构,然后对机器人的初始姿态进行调整,以使V_Rep能够识别的STL文件格式,然后选择其菜单栏File-->Import-->Mesh中的保存文件,其中,V_Rep-RPU/UPR/RPR-R+P的初始状态见图1.14。图1.14五轴混合式机器人初始状态1.3.1V_Rep中仿真模型的搭建每个部件模型被导入到V_Rep中之后,它们在SolidWorks中都没有装配约束,所以需要重新组装。这一特定的思想是,首先将不具有相关移动的部分通过Edit-->Group/Merging-->Groupselectedshapes操作封装到单个工件上,并根据它们在机构支链中的位置来重新命名,以便于随后的装配操作。在合并完成后,为了增加运动副,首先要提取运动副表面,以确定各个运动副的位置,然后通过Add-->Joint来增加运动副、旋转副和球体副。每个接头布置到初始位置后,可以在V_Rep左端的模型树中进行手动拖拽,开始连接固定基座,然后将接头与构件连接。因为五轴混合机器人有四条支链,所以所装配的机构也有四条开环运动连。为使各支链末端闭合,形成闭环式并联机构,可通过使用V_Rep提供的dummy对象来实现,Dummy对象target与动平台固定连接,另一Dummy对象tip连接开环端的移动副固连接,然后选中target,单击属性设置对话框,选择tip以实现闭环链,例如第三个链与第二个链固连的上移动平台的闭环。图1.15target/tip在并联机构闭环链的连接五轴混合机器人实现了良好的搭建,2-RPU/UPR/RPR-R+P仿真模型如图1.16所示。左模型树上可见五轴混合机器人清晰的组织结构层次关系,即Joint、Link、Joint,连接关系也即运动/动力传递关系,它与右模型树上所见模型树上所见模型树一一对应,非常简洁、美观。图1.162-RPU/UPR/RPR-R+P树形层次结构及其装配体1.3.2V_RepRemoteAPI的框架以及模拟中所使用的函数模型组装完成,还必须在进行动作模拟之前设置各个工件的动态属性,以及各个接头的工作模式和最大传递力矩,并选中BaseLink作为dynamicdisabled,该BaseLink的动态属性设置为dynamicdisabled,相当于使其与大地固连,以防止机架发生位移或抖动。安装完成后,就可以进行动态仿真。因为这一章主要是进行运动模拟,操作的对象是Joint,所以需要寻找和调用Joint相关的功能。因为V_Rep主要是基于C++开发的,采用面向对象的编程思想,所以它具有可维护性、可重用性和可扩展性,完全可以体现在函数库中。V_Rep提供的RemoteAPIfunctionlist在下图1.17中分别有byalphabeticalorder和bycategory这两种索引方式,前者可方便地查找某个函数的调用,而后者可对某一类对象进行特定的操作。本次仿真主要对驱动关节的位置进行控制,以实现五轴混合机器人的运动控制。该主函数具有simGetObjectHandle和simSetJointTargetPosition两个函数,simGetObjectHandle用于获得驱动关节的句柄(即地址),simSetJointTargetPosition中的一个传递参数,该参数用于指定哪个关节使用了该关节,然后调用simSetJointTargetPosition,以在simSetJointTargetPosition的轨迹点上反解计算的值赋值,从而将机器人运行到给定的目标位置。图1.17V_Rep封装的与Joint和Milling相关操作的库函数1.3.3单轴调式与正负方向判定本文第四章对五轴混合机器人进行了运动建模,驱动分支的输入值是支链两点间的距离和支链初始长度之差,如果是正的,说明是驱动支链延伸,如果是负的,说明是驱动支链收缩。但是,这可能与V_Rep所默认设置的各个关节的运动方向相反,因此需要对各个驱动关节进行单轴调试,以使模拟的机器人特定的运动方向与在运动学建模中所定义的方向一致,从而实现正常工作。本文以第四驱动分支和单摆头两关节为例,阐述了关节输入值正负号的编程判断。请按照下面的图1.18所示,为第4个分支运行一个嵌入的脚本文件,使它扩展0.15m。图1.18单轴调试第四种驱动分支中绿色的是一条注释语句,可以看到,当执行simSetJointTargetPosition(handle_4,0.15)语句之后,第4个分支中的两个铰链点与机构的初始状态图1.16相比变得更短,这与我们的实际想法相反,因此实际编程时,由于它在该关节值处加了一个负号,从而与控制逻辑相同。类似地,注释掉了其余的驱动关节,并将其单独驱动一个单摆,如图1.19所示。图1.19单轴调试单摆头可见,当语句simSetJointTargetPosition(handle_5,45*math.pi/180)完成时,单摆头上转了45度(这一点可以在V_Rep属性对话框中检查到),这与运动学分析所定义的单摆头旋转关节的运动方向相一致,从而表明V_Rep中该关节的旋转方向与建模时的方向一致,不需要任何程序更改。其它三个运动方向的驱动关节的判定同上。1.3.4运动学仿真在筹备工作的过程中,对这台五轴混合机器人进行了运动仿真,以验证前一种运动学建模方法的正确性及机器人运动的可行性,同时也可以在机器人运行过程中观察各支路的运动情况及碰撞干涉检查,为实际加工仿真做好准备。其控制思想有两大类:一是利用恰约束支链的反解实现运动控制;二是利用并联机构的支链关节值实现运动控制。但经试验,发现恰约束支链不能直接控制,只能通过各驱动杆的长杆来控制。因为五轴混合机器人模型建立于RPU-UPR-RPR的恰约束分支RPR并联2RPU-UPR-RPR之上,所以需要借助(3-5)等效串联机构的关节值转换为各驱动分支的杆长值,才能实现真正的驱动控制。MATLAB的实际控制程序如下:functionpkm_5_write()%UNTITLED2Summaryofthisfunctiongoeshere%Detailedexplanationgoesheredisp('Programstarted');%V_Rep=remApi('remoteApi','extApi.h');%usingtheheader(requiresacompiler)V_Rep=remApi('remoteApi');%usingtheprototypefile(remoteApiProto.m)V_Rep.simxFinish(-1);%justincase,closeallopenedconnectionsclientID=V_Rep.simxStart('127.0.0.1',19999,true,true,5000,5);%readthejointangledatafrom'angle.txt'jointValue=load('jointValues_avi2th_correct.txt');%Amatrixof5x361.EachcolumnvectorrecordedthechangesofeachjointAngle.[mn]=size(jointValue);if(clientID>-1)disp('ConnectedtoremoteAPIserver');%gethandleforpkm_5_joint1-1.[res,handle_joint1]=V_Rep.simxGetObjectHandle(clientID,'Prismatic_joint0_common_base',V_Rep.simx_opmode_oneshot_wait);[res,handle_joint2]=V_Rep.simxGetObjectHandle(clientID,'Prismatic_joint2_branch1',V_Rep.simx_opmode_oneshot_wait);[res,handle_joint3]=V_Rep.simxGetObjectHandle(clientID,'Prismatic_joint2_branch3',V_Rep.simx_opmode_oneshot_wait);[res,handle_joint4]=V_Rep.simxGetObjectHandle(clientID,'Prismatic_joint3_branch4',V_Rep.simx_opmode_oneshot_wait);[res,handle_joint5]=V_Rep.simxGetObjectHandle(clientID,'Revolute_joint0_toolhead',V_Rep.simx_opmode_oneshot_wait);%Setthepositionofeveryjointpause(3.0);while(V_Rep.simxGetConnectionId(clientId)~=-1),%whileV_Repconnectionisstillactivefori=1:mV_Rep.simxPauseCommunication(clientID,1);V_Rep.simxSetJointTargetPosition(clientID,handle_joint1,-0.001*jointValue(i,1),V_Rep.simx_opmode_oneshot);V_Rep.simxSetJointTargetPosition(clientID,handle_joint2,-0.001*jointValue(i,2),V_Rep.simx_opmode_oneshot);V_Rep.simxSetJointTargetPosition(clientID,handle_joint3,+0.001*jointValue(i,3),V_Rep.simx_opmode_oneshot);V_Rep.simxSetJointTargetPosition(clientID,handle_joint4,-0.001*jointValue(i,4),V_Rep.simx_opmode_oneshot);V_Rep.simxSetJointTargetPosition(clientID,handle_joint5,+jointValue(i,5)*pi/180,V_Rep.simx_opmode_oneshot);V_Rep.simxPauseCommunication(clientID,0);pause(0.2);endV_Rep.simxGetConnectionId(clientID)=1;end%BeforeclosingtheconnectiontoV_Rep,makesurethatthelastcommandsentouthadtimetoarrive.Youcanguaranteethiswith(forexample):V_Rep.simxGetPingTime(clientID);%NowclosetheconnectiontoV_Rep:V_Rep.simxFinish(clientID);elsedisp('FailedconnectingtoremoteAPIserver');endV_Rep.delete();%callthedestructor!disp('Programended');end读取的关节值文件jointValue.txt部分内容如下:-521.0333024853529.529
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年苏州信息职业技术学院单招职业适应性测试题库及答案
- 2026年青海省高职单招职业技能考试题库及答案
- 2026年湖南工业职业技术学院单招面试题库及答案
- 防火墙规则清洗课程设计
- 爬虫Scrapy框架学习课程设计
- 车站售票系统Java课程设计
- 数字示波器设计(FPGA实现)设计课程设计
- cdio课程设计张育
- 贝叶斯网络诊断系统维护课程设计
- 筹资课程设计
- 战伤换药技术课件
- 新浙教版数学八年级上册讲义(共15讲)
- DBJT13-144-2019 福建省建设工程监理文件管理规程
- 17、监控改造工程重点及难点分析
- 砖砌体工程劳务分包合同模板
- 《数学课程标准》义务教育2022年修订版(原版)
- 2024年汕头市龙湖区教育局招考聘用机关聘用人员高频500题难、易错点模拟试题附带答案详解
- 中医外科学笔记
- SY-T 5037-2023 普通流体输送管道用埋弧焊钢管
- Smart-manager-中文说明书改
- 模拟卷成人高考模拟试卷
评论
0/150
提交评论