基于Python的桌面级机器人离线编程仿真系统的制作方法

文档序号:14162706阅读:833来源:国知局
基于Python的桌面级机器人离线编程仿真系统的制作方法

本发明涉及一种机器人离线编程系统,尤其是一种基于python的桌面级机器人离线编程仿真系统。



背景技术:

伴随着工业现代化的快速发展,机器人技术作为体现工业自动化水平和智能化程度的重要标杆,得到了人们日益的关注。其中,机器人操作臂离线编程仿真系统结合计算机图形学、语言学和机器人技术,很好地解决了传统示教编程的不足,有效保证了生产的产品质量、提高劳动生产率和改善工作环境。

在机器人编程领域主要有在线示教编程和离线编程两种方式,在线示教编程为绝大多数工业机器人所采用。在线示教编程要求机器人执行新的作业任务时需停机示教,造成现场生产线停工的同时还可能使编程人员身处危险的现场环境中。相对于传统的在线示教编程的方法,离线编程具有以下优点:(1)减少实体机器人的占用时间,可以并发处理多个作业人任务,从而提高生产率,易于实现柔性生产;(2)结合计算机图形学技术和机器人编程语言,对于复杂的运动进行描述和编程,并进行高精度的仿真,可以实现复杂运动规划和运动参数的优化;(3)对机器人的轨迹规划等算法进行验证,并及早将运行过程中可能出现的问题通过仿真暴露出来,可以防止作业过程中实体机器人因为操作失当造成的损坏;(4)相对于示教编程,机器人控制程序可以无需改动或者少量的改动就可以从一个型号的机器人移植到另外一个机器人上,从而进行相同的作业任务,另外一个方面采用文本的编程方式,也很方便地进行程序的修改和编辑;(5)离线仿真编辑可以很方便地与智能控制算法相结合,提高机器人作业的质量和稳定性;(6)通过编程仿真,生产者可以根据实际的作业环境和生产需求测试不同类型的机器人及其运行的效果,从而为机器人的选型提供有效的依据。

目前,对于离线编程仿真技术的研究内容较少,其主要是为大型工业机器人企业生产的机器人开发离线编程仿真系统,而面向桌面级机器人的离线编程仿真系统鲜有涉及。王晓琪,孙恺等提出的qt开发喷涂机器人的离线编程仿真系统(王晓琪,孙恺.qt开发喷涂机器人的离线编程仿真系统[j].煤矿机械,2016,37(02):188-190.),开发了用于工业机器人的离线编程仿真系统,但该系统未提及轨迹优化,对机器人的兼容性较差,人机交互性较弱,同时对桌面级机器人不适用。印松,童梁,陈竞新,陈学能等提出的基于solidworks的机器人离线示教方法(印松,童梁,陈竞新,陈学能.基于solidworks的机器人离线示教方法[j].上海电机学院学报,2012,15(02):111-114.)借助了solidworks强大的3d仿真,实现了离线示教方法,但其开发接口不适用于桌面级机器人,同时对机器人末端执行器的运行轨迹也未做相应优化。



技术实现要素:

为克服现有技术的上述问题,提出一种基于python的桌面级机器人离线编程仿真系统。

首先该系统具有较好的用户交互界面,让技术人员原本枯燥乏味的离线编程操作充满人性化和新鲜感。其包含的机器人运行参数显示区,方便操作人员实时了解机器人运行情况并能对实际运行状况做出及时改进。添加的仿真与后置处理器模块能对运动规划曲线进行仿真,并直接通过后置处理器程序把仿真结果输出给机器人执行机构,大幅度提高机器人的加工效率,缩短了工程师的项目研发周期;基于python的系统框架为开发用于桌面级机器人离线编程系统提供了接口支持。

本发明为解决现有技术问题所采取的技术方案是:

所述的离线编程仿真系统依次包括用户交互模块、模型管理模块、运动轨迹规划模块、离线编程模块、仿真与后置处理器模块、机器人运动模块;用户交互模块通过向模型管理模块,运动轨迹规划模块,离线编程模块发送控制指令,给仿真与后置处理器模块提供所需的全部数据;机器人运动模块根据仿真与后置处理器模块发送的控制命令来实现相应操作。

各模块的具体构成是:

1)用户交互模块,是一个良好的人机交互和机器人控制界面;用户交互模块接受来自用户输入的触发信号后,分别激活模型管理模块,运动轨迹规划模块,离线编程模块;用户在该模块上点击各模块的操作命令,以网络通信的方式向模型管理模块,运动轨迹规划模块和离线编程模块发送任务操作指令;用户交互模块通过串口通讯方式,接受来自机器人运动模块的关节角度信息。

2)模型管理模块,用于导入机器人3d模型并建立相应的参考坐标系;模型管理模块接受来自用户交互模块的激活命令时,进入执行状态;该模块获取来自用户交互模块的操作指令后,在用户操作系统的指定文件夹中导出机器人3d模型到模型管理模块,同时根据用户输入的坐标设置要求,设置机器人3d模型的基坐标系位置和各关节坐标系相对位置,建立机器人模型的工作空间,添加各关节的调试控件,最后把设置好的机器人3d模型通过网络通信发送给仿真与后置处理器模块,同时把模型的各坐标参数发送给运动轨迹规划模块。

3)运动轨迹规划模块,是实现机器人运行路径流畅的重要模块,该模块接受来自模型管理模块中的机器人3d模型的基坐标系位置参数,各关节轴的相对位置参数;分析桌面机器人末端执行器在空间中的瞬时位置和姿态,使用d-h参数建模机制,建立机器人每个连杆在各关节处的笛卡尔坐标系,使用正运动学公式求解末端执行器相对固定参考坐标系的位置和姿态,获得机器人运动轨迹,使用笛卡尔轨迹规划算法优化轨迹曲线,基于机器人逆运动学知识,把轨迹曲线转化为机器人关节参数数组;最后把该串机器人关节参数发送给离线编程模块。

所述的运动轨迹规划模块,结合了正逆运动学求解和笛卡尔轨迹规划算法来优化运行轨迹,再将优化后的轨迹转化为机器人各关节角度值输出给离线编程模块和仿真与后置处理器模块使用,所述的正逆运动学求解和笛卡尔轨迹规划算法如下:

2.1)选择机器人四个关节的d-h参数(即关节1≤i≤6的连杆长度ai、连杆转角αi、连杆偏距di和关节角θi)作为输入量,选择工作机器人各个关节的关节角θi作为输出量。

2.2)首先对机器人构建其d-h参数模型,由于各杆件相对参考坐标系有转动和平移两个动作,因此对每个杆件沿关节轴建立一个关节坐标系,用以下四个参数来描述杆件:

(1)连杆长度ai:关节轴i和关节轴i+1之间公垂线的长度;

(2)连杆转角αi:作一个与两关节轴之间的公垂线垂直的平面,将关节轴i和关节轴i+1投影到该平面,在平面内轴i按右手法则绕ai转向轴i+1,其转角即为连杆转角;

(3)连杆偏距di:公垂线ai-1与关节轴i的交点到公垂线ai与关节轴i+1的交点的有向距离长度;

(4)关节角θi:ai-1的延长线与ai之间绕关节轴i旋转所形成的夹角,即采集得到的示教机器人关节角度;

2.3)以基座坐标系作为t0坐标系,设表示i关节坐标系相对i-1关节坐标系的位置和姿态,则:

其中,sθi=sinθi,cθi=cosθi,sαi=sinαi,cαi=cosαi。

2.4)对于四自由度机器人,获得机器人末端执行器位姿相对固定参考坐标系的变换矩阵(即机器人末端位置点坐标的变换矩阵):

其中,是机器人第四轴末端执行器相对基坐标系的变换矩阵。

2.5)求得规划运行时间片后的机器人末端执行器位姿相对固定参考坐标系的变换矩阵后,即可获得由每个时间片机器人的末端执行器位姿相对固定参考坐标系的坐标点组成的离散运行轨迹。

2.6)使用笛卡尔圆弧插补法,先取出规划运行轨迹中的p1(x1,y1,z1)、p2(x2,y2,z2)和p3(x3,y3,z3)三点,这三点组成的平面方程为ax+by+cz=1,则可由下式解得平面方程参数a、b和c的值:

2.7)求出p1p2和p2p3两条线段的中点p12(x12,y12,z12),p23(x23,y23,z23),设圆心坐标为po(xo,yo,zo),求解获得圆心坐标,以圆心为球心,r为半径的球参数方程为:

2.8)将上式代入平面方程式ax+by+cz=1中,得到:

a(rcosφcosα+xo)+b(rcosφsinα+yo)+c(rsinα+zo)=1(5)

从而获得空间圆的参数方程为:

其中φ为空间圆弧的反正切值。

2.9)取矢量为x1轴向量,平面法向量为z1轴向量,建立t1坐标系,由于姿态变换矩阵为单位正交矩阵,则有y1=x1×z1,进而可以求得y1轴向量,其姿态变换矩阵r和平移向量t为:

则有:

姿态变换矩阵r和平移向量t可以得到坐标变换矩阵q为:

2.10)取末端轨迹在t1的位置坐标为p'(x',y',z'),通过姿态变换矩阵和平移向量可以求得末端轨迹在t0中的位置p(x,y,z),即为圆弧插补的规划轨迹。

2.11)在优化后的轨迹上选择需要的插补点,并列出每个点p(x,y,z)在该时刻机器人的末端执行器位姿相对固定参考坐标系的变换矩阵:

2.12)对每个优化后的插补点p(x,y,z)进行逆运动学求解,其中rij取与插补点最近的末端坐标点的变换矩阵中的值,则可按顺序求解得到:

θ1表示第一个关节角度参数,求解方法为

由第一个关节角,通过中间运算公式可得第二个和第三个关节角为

其中,a2为连杆1的长度,d4为连杆4的偏距,c3是cosθ3的缩写,s3是sinθ3的缩写,k为逆运动学求解时的中间变量。

以此类推可以求出第四关节角θ4,并通过c5和s5求出θ5

θ4=atan2(-r13s1+r23c1,-r13c1c23-r23s1c23+r33s23)(13)

2.13)在每个关节角度求出后,接着在每个关节可活动的范围内通过对关节角加减360°,找出所有的可能值,再利用连续性原则从所有的可能值中选择唯一合理值,即与上一时刻该关节的角度值最接近的值;求出每个优化后的末端位姿对应的各个关节角,发送给离线编程模块,把关节角参数转化为仿真与后置处理器模块可直接执行的代码。

4)离线编程模块,该模块是依托python脚本编写的机器人仿真运行代码;离线编程模块接受来自运动轨迹规划模块的机器人关节参数数组,首先对该数组进行类型分析,根据python内核指令调用robodk动态函数库,把关节参数数组直接转化为python编程代码,添加脚本头部和运行主函数后,通过网络通讯的方式把生成的python脚本发送给机器人仿真与后置处理器模块。

5)仿真与后置处理器模块,该模块分别接受来自模型管理模块的机器人3d模型文件,运动轨迹规划模块的机器人末端执行器运行曲线参数以及离线编程模块的机器人仿真运行脚本后,仿真与后置处理器模块等待以上各模块传输完各自的参数内容后,自动运行机器人仿真程序,该模块先对运动轨迹规划模块接受的运行轨迹和离线编程模块接受的机器人末端执行器运行曲线指令串进行时间轴匹配和优化,并把优化结果发送给后置处理器程序;后置处理器程序根据匹配的机器人规格和robodk中机器人d-h参数库,把仿真程序直接转化为实际机器人可执行代码,通过usb有线传输的方式发送给机器人运动模块。

6)机器人运动模块,该模块通过usb有线传输方式,接受来自仿真与后置处理器模块输出的机器人可执行代码脚本,并把代码设置成执行队列的形式,控制机器人执行运行任务,同时把机器人运行参数,机器人各关节角运动参数,实际机器人发生碰撞时反馈回来的故障信息参数发送给用户交互模块。

本发明的优点和积极效果是:

1、本发明是基于python开发的离线编程系统,仿真驱动程序和后置处理器程序都使用python扩展接口开发,能很好的兼容目前桌面级机器人领域的开发协议;同时基于python框架开发的上位机界面很好的满足了用户的需求,整个系统一体化的编程语言,提高了系统的稳定性和通讯效率;基于python的后置处理器模块能直接内嵌到robodk仿真系统框架中,能高效的完成仿真任务,并为在仿真与后置处理器模块中加入规划好的机器人运行曲线提供了技术支持。

2、其开发的仿真与后置处理器模块,能完成对机器人加工操作的预先规划,并通过仿真的形式展示出来,方便工程师优化预设路径;同时,开发的后置处理器程序能根据实际机器人类型的不同,把仿真运行代码转化为对应机器人可执行代码,并通过通信接口将可执行代码加载到机器人中,操作机器人完成指定任务。

附图说明

图1为本发明的控制原理框图。

图2为用户交互界面。

图3为机器人仿真运行界面。

图4实际机器人运行示意图。

具体实施方式

以下结合附图对本发明做进一步详述。

一种基于python的桌面级机器人离线编程仿真系统,其控制原理框图如图1所示,该系统由用户交互模块、模型管理模块、运动轨迹规划模块、离线编程模块、仿真与后置处理器模块、机器人运动模块,共六大模块组成。其中用户交互模块的界面如图2所示,用于离线编程系统的触发控制和机器人运行状态的显示。图3显示的是机器人仿真运行界面,可以调试机器人仿真运行参数并向用户显示仿真效果。图4是机器人实际运行示意图。

结合图1,图2,图3和图4,本发明专利的具体实施方式如下:

基于python的桌面级机器人离线编程仿真系统,根据各类桌面机器人控制命令的多样性,依托python语言强大的兼容性,设计出一套面向桌面机器人离线编程的实现系统;扩展了桌面级机器人在线仿真与离线编程的功能;pc端软件安装在用户的windows电脑上,桌面机器人与pc端通过usb有线连接,机器人关节传感器与机器人控制器通过串口连接;以控制dobot-magician为例,所述的基于python的桌面级机器人离线编程系统,包括:

1)用户交互模块,主要用于人机交互和机器人运行状态显示;在开启桌面机器人离线编程系统时自动显示用户交互模块,该模块包含各种控制其它模块的触发按钮,点击导入机器人模型按钮,将激活模型管理模块完成dobot-magician的模型导入,之后点击运动轨迹规划模块完成对机器人的运动轨迹规划,把完成轨迹规划的运行参数发动给离线编程模块,用户交互模块通过对应的转化按钮把离线编程脚本,dobot-magician模型和规划的运行轨迹参数整合到仿真与后置处理器模块;同时交互界面能获取dobot-magician机器人运行时的角度和位置等参数信息,并实时显示在该模块上。

2)模型管理模块,操作人员通过用户交互界面导入dobot-magician的3d模型到模型管理模块,该模块使用solidworks接口对3d模型进行着色和渲染,并使用robodk软件接口为3d模型建立世界坐标系和各关节轴参考坐标系,基于实际机器人d-h参数建立3d模型的实际工作空间,为各关节轴添加运动滑块,实现机器人模型的单轴调试。

3)运动轨迹规划模块,结合机器人模型预先规划机器人加工任务的运行路径;该模块首先从模型管理模块中获取机器人模型的末端执行器坐标位置和各关节参考坐标系相对世界坐标系的位置,分析dobot-magician机器人末端在空间中的瞬时位置和姿态,利用d-h参数建模方法建立机器人每个杆件在各个关节处的笛卡尔坐标系,然后利用正运动学公式求解末端执行器相对固定参考坐标系的位置和姿态,得到机器人的运行轨迹,再对运行轨迹使用笛卡尔轨迹规划算法进行轨迹优化,最后使用机器人逆运动学知识把机器人末端执行器的轨迹曲线转化为机器人关节参数数组,再发送给离线编程模块使用。所述的正逆运动学求解和笛卡尔轨迹规划算法如下:

3.1)选择机器人四个关节的d-h参数(即关节1≤i≤6的连杆长度ai、连杆转角αi、连杆偏距di和关节角θi)作为输入量,选择工作机器人各个关节的关节角θi作为输出量。

3.2)首先对机器人构建其d-h参数模型,由于各杆件相对参考坐标系有转动和平移两个动作,因此对每个杆件沿关节轴建立一个关节坐标系,用以下四个参数来描述杆件:

(1)连杆长度ai:关节轴i和关节轴i+1之间公垂线的长度;

(2)连杆转角αi:作一个与两关节轴之间的公垂线垂直的平面,将关节轴i和关节轴i+1投影到该平面,在平面内轴i按右手法则绕ai转向轴i+1,其转角即为连杆转角;

(3)连杆偏距di:公垂线ai-1与关节轴i的交点到公垂线ai与关节轴i+1的交点的有向距离长度;

(4)关节角θi:ai-1的延长线与ai之间绕关节轴i旋转所形成的夹角,即采集得到的示教机器人关节角度;

3.3)以基座坐标系作为t0坐标系,设表示i关节坐标系相对i-1关节坐标系的位置和姿态,则可得的结果为公式(1)所示。

其中,sθi=sinθi,cθi=cosθi,sαi=sinαi,cαi=cosαi。

3.4)对于四自由度机器人,获得机器人末端执行器位姿相对固定参考坐标系的变换矩阵(即机器人末端位置点坐标的变换矩阵)如公式(2)所示。

3.5)求得规划运行时间片后的机器人末端执行器位姿相对固定参考坐标系的变换矩阵后,即可获得由每个时间片机器人的末端执行器位姿相对固定参考坐标系的坐标点组成的离散运行轨迹。

3.6)使用笛卡尔圆弧插补法,先取出规划运行轨迹中的p1(x1,y1,z1)、p2(x2,y2,z2)和p3(x3,y3,z3)三点,这三点组成的平面方程为ax+by+cz=1,则可由下式解得平面方程参数a、b和c的值如公式(3)所示。

3.7)求出p1p2和p2p3两条线段的中点p12(x12,y12,z12),p23(x23,y23,z23),设圆心坐标为po(xo,yo,zo),求解获得圆心坐标,以圆心为球心,r为半径的球参数方程如公式(4)所示。

3.8)将上式代入平面方程式ax+by+cz=1中,得到公式(5)。

从而获得空间圆的参数方程如公式(6)所示。

3.9)取矢量为x1轴向量,平面法向量为z1轴向量,建立t1坐标系,由于姿态变换矩阵为单位正交矩阵,则有y1=x1×z1,进而可以求得y1轴向量,其姿态变换矩阵r和平移向量t为公式(7)所示。设则得到公式(8)。姿态变换矩阵r和平移向量t可以得到坐标变换矩阵如公式(9)所示。

3.10)取末端轨迹在t1的位置坐标为p'(x',y',z'),通过姿态变换矩阵和平移向量可以求得末端轨迹在t0中的位置p(x,y,z),即为圆弧插补的规划轨迹。

3.11)在优化后的轨迹上选择需要的插补点,并列出每个点p(x,y,z)在该时刻机器人的末端执行器位姿相对固定参考坐标系的变换矩阵为公式(10)。

3.12)对每个优化后的插补点p(x,y,z)进行逆运动学求解,其中rij取与插补点最近的末端坐标点的变换矩阵中的值,则可按顺序求解公式(11),(12),(13)最终得到四个关节角的值。在计算中,atan2为反正切函数,si=sinθi,ci=cosθi。

3.13)在每个关节角度求出后,接着在每个关节可活动的范围内通过对关节角加减360°,找出所有的可能值,再利用连续性原则从所有的可能值中选择唯一合理值,即与上一时刻该关节的角度值最接近的值;求出每个优化后的末端位姿对应的各个关节角,发送给离线编程模块,把关节角参数转化为仿真与后置处理器模块可直接执行的代码。

4)离线编程模块,该模块编写python脚本来控制机器人仿真运行;对运动轨迹规划模块获取的机器人关节参数数组进行分析,基于python内核并调用robodk动态函数库,通过robodk和robolink提供的接口,把关节参数数组转化为python语言内嵌到机器人仿真与后置处理器模块中。

5)仿真与后置处理器模块,该模块是模型管理模块的内部控制中枢,对获取的3d模型进行2次加工,同时获取运动轨迹规划模块规划好的机器人末端执行器运动曲线,然后嵌入从离线编程模块中导入的机器人仿真运行脚本。启动仿真与后置处理器模块,对运动轨迹规划模块输出的运动轨迹和由离线编程模块驱动的机器人末端执行器运行曲线进行位置匹配和优化,并把结果输出给后置处理器程序,后置处理器程序根据已有机器人库的规格参数,把机器人仿真轨迹控制命令直接转化为实际机器人可执行代码,并直接输出给机器人运动模块使用。

6)机器人运行模块,先把仿真与后置处理器模块输出的控制命令存储到机器人缓存区中,并以命令队列的形式对dobot机器人进行运行控制,机器人各角度传感器通过主控板上的输出接口,把运行参数发送给用户交互模块,用户交互模块能实时显示状态参数;当实际机器人发生碰撞时,机器人运动模块会发出相应的报警信号给用户交互模块,该模块通过看门狗机制及时获取报警信息,并把该信息转化为用户可知的报警信息显示在交互界面上。

本说明书实施例所述的内容仅仅是对发明构思的实现形式的列举,本发明的保护范围不应当被视为仅限于实施例所陈述的具体形式,本发明的保护范围也及于本领域技术人员根据本发明构思所能够想到的等同技术手段。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1