三自由度机械臂

2024-05-20

三自由度机械臂(精选3篇)

三自由度机械臂 篇1

0 引言

我国是农业大国,每年收获所耗费的劳动力非常多,机械臂就成为了替代人类工作的一种很好的工具。机械臂是模仿人类手臂而设计的一种能够自动运动的装置,用来实现抓取、收获等工作。它能够在人类无法工作的环境下代替人类工作,并能够保证稳定性,对提高生产效率和降低劳动成本都起到了非常重要的作用,目前已经被应用在各个领域当中。

六自由度机械臂逆运动学求解问题是近几年来国内外主要研究的热点之一。逆运动学求解的困难程度直接与机械臂的结构有非常大的关系,许多学者对六自由度机械臂逆运动学求解做出了非常大的贡献。在求解逆运动学问题中,迭代法只能求出一组解; 解析法虽然可以得到全部解,但是计算复杂; 人工神经网络、遗传法等只是在理论上进行了研究,无法保证解的精度和稳定性,很少用于机械臂的运动控制当中。

为此,本文提出了一种能够有效地解决六自由度机械臂逆运动学问题的实时算法,在分析机械臂运动特性的基础上,建立了D - H坐标系来研究机械臂的运动学问题。首先建立机械臂正运动学模型,然后采用矩阵逆乘的方法来求解逆运动学问题,最后进行仿真实验,验证了机械臂正运动学模型和逆运动学求解的正确性。

1 正运动学模型

机械臂正运动学求解是已知机械臂各个关节的角度,来求取机械臂末端操作器的期望位置,主要是利用D - H坐标系。一般思路是: 首先,在各个关节建立参考坐标系; 然后确定每两个相邻的坐标系之间的关系; 最后,得出机械臂总变换矩阵。

1. 1 D - H坐标系的建立

本文以六自由度机械臂为研究对象,如图1 所示。其中,每个舵机都可以单独工作。根据机械臂的结构特点,使用D - H方法建立基础坐标系,x0 - z0表示机械臂的底座,再依次建立关节2 - 6 的坐标系,x6 - z6 表示机械臂的末端操作器,如图2 所示。

1. 2 正运动学求解

在D - H坐标系建立后,根据相邻连杆之间的位置关系,确定D - H参数。机械臂各个关节的参数如表1 所示。其中,θ 为连杆转角; d为z轴上两条相邻公垂线的距离; α 为每一条公垂线的长度;  为关节轴线之间的夹角。

机械臂相邻相邻两个关节坐标系的齐次变换矩阵通式为

其中,Ai +1表示坐标系i + 1 相对于i的关系,i = 1,…,6。

将D - H参数代入该公式,得到正运动学方程。其末端操作器相对于基座的变换方程为

其中,正余弦预算符号在书写上做了简化,如S1=sinθ1,C1=cosθ1,S234=sin(θ2+θ3+θ4)。

2 逆运动学求解及最优控制

逆运动学求解是根基机械臂末端操作器预计位置,求出每个关节变量平移和旋转地数值,是正运动学的反向求解过程。正运动学求解比较简单而且解唯一; 逆运动学求解相对复杂可能存在多解、唯一和无解的情况。本文介绍了一种根据运动学正解,采用矩阵逆乘来求解逆运动的方法。

2. 1 求解关节角 θ1、θ2和 θ3

使用矩阵逆乘法求解逆运动学,用A1-1左乘式( 1) ,可以得到

让方程两边矩阵的第3 行第4 列对应相等,可得

对等式两边同时除以,则公式可化为

化简得,进而可以解得

最后求得

让方程两端的第1 行第3 列对应相等,第2 行第3列对应相等,可得到

在式( 9) 两边同时乘以S234,在式( 10) 两边同时乘以C234,可以得到

化简得

让方程第1 行第4 列与第2 行第4 列分别对应相等,可知

移项化简为

令X1= C1px+ S1py- a1- S234d5- C234a4( 17)

所以,X1和X2是已知量,对两边同时平方相加得

最后可得

对式( 20) 继续化简可得

2. 2 求解关节角 θ4、θ5和 θ6

因为 θ2和 θ3已经知道,所以得

对式子RTH两边连续乘以A1- A4的逆矩阵,可得

让式( 22) 中第1 行第3 列与第2 行第3 列分别对应相等,可知

最后,用A5- 1分别乘以式( 22) 两端,再让第2 行第1 列和第2 行地位列分别对应相等可得

2. 3 最优控制

机械臂逆运动学的解不是唯一确定的,在计算出所有解之后,由于关节运动范围限制要将其中一部分解舍去,在剩下的解当中通常选取一个最理想的接近当前机械臂的解,而选取最理想解的方法通常选用最优控制理论。最优控制就是在给定条件下对给定的受控系统确定一种控制率,使该系统相应于预先设定的性能指标具有最优值。控制系统最优化问题包括性能指标的合理选择及最优化控制系统的设计,而性能指标在很大程度上决定了最优控制性能和最优控制形成。下面先对最优控制理论做一个简单的介绍。

假定由下面的微分方程构成动态系统,则

其中,x(t)=[x1(t),...,xr(t)]T为t时刻的状态向量;x(t)=dx(t)/dt;u(t)=[u1(t),...,un(t)]T为t时刻的控制控制向量;f=[f1,...,fr]T为给定的连续可微的函数。

本方程表示系统从t = 0 时刻开始工作,一直到t= T ,T为末端时间。通过这个方程,根据能量关系,可以得到下面的目标函数,即

最优控制理论其实就是极值原理和最优原理。以机械臂底座为坐标原点,通过正运动学分析,可以知道末端操作器相对于原点的位置方程为

其中,( qx6,qy6,qz6) 代表了机械臂末端操作器的位置方程。通过末端操作器的位置方程可以看出末端位置的确定只与每个关节旋转地角度有关,想要达到能耗最少只要使机械臂关节旋转的角度总和最少即可。所以,最优控制方程就可以化简成G0( u)=Φ( x( x( T) ) ) 形式,即

求出满足方程式( 28) 的极小值的各个角度,即为机械耗能最少时每个舵机应转动的角度。

3 求解实例分析

与正运动学相比,逆运动学求解更难,但是对机械臂的运动却更加重要,它是轨迹规划的一个非常重要的环节。所以,必须对其进行具体求解实例分析,具体过程如下:

首先,知道机械臂的各个参数分别为a1=0.040m,a2=0.043m,a3=0.047m,a4=0.044m d4=0.072m,d5=0.045m。假设机械臂的各个关节角的最初角度为0、π/3、-π/6、-π/6、π/2、0。将其代入正运动学方程中,可以得到末端的矩阵方程为

用Mat Lab可以绘制出当前机械臂的位姿,如图3所示。

假设机械臂当前各个舵机的角度都为0,要使末端操作器到达满足上述的终点位置,将终点矩阵方程代入逆运动学方程中,可以得到8 组解,如表2 所示。

由表2 可知: 第1、3、5、6 组解是存在的,并且其中第3 组解和之前已经知道的6 个角度非常接近,也满足式( 28) ,可以作为最优解。这说明了前面所提出的逆运动学求解方法与最优控制算法的正确性,还说明了从关节空间到笛卡尔坐标系之间是一种复映射关系,即多对一的映射关系。第2、4、7、8 组解无解说明了机械臂的结构不能满足条件,适当选取齐次矩阵,这几组解将有可能存在。由于逆运动学具有多解的可能性,在日程生产应用当中,还要考虑机械臂的工作环境、空间及初始位姿等条件来选择合适的解。

4 结论

首先按照机械臂的结构特点建立了运动学模型。然后,通过对正运动学方程的分析,提出了矩阵逆乘的方法来求解逆运动学方程。在已知末端操作器位姿的情况下求出每个关节的旋转角度,并通过求极值的方法求出机械臂运动的最优路径。最后,通过具体的角度计算证明了这种方法的准确性,并且充分说明了关节空间到笛卡尔坐标系之间的多对一关系。本研究为机械臂轨迹规划算法的研究提供了非常重要的理论依据。

摘要:对六自由度机械臂进行了正运动学分析与求解,并提出了一套解决六自由度机械臂逆运动学问题的算法,同时使能耗达到最少。首先从机械臂的结构特点出发,建立D-H坐标系,得到正运动学模型;然后通过对正运动学模型的可解性进行分析,采用矩阵逆乘的方法来得到机械臂逆运动学的完整析解;再通过求极值的方法来算出机械臂在运动过程中哪种运动轨迹耗能最少;最后用求解实例的方法验证正运动学模型和逆运动学求解的正确性。

关键词:六自由度机械臂,正运动学,逆运动学

参考文献

[1]姜铭,易红,李鹭扬.RGRR-Ι构造混联6R机器人[J].机械工程学报,2010,46(1):30-36.

[2]钱东海,王新峰,赵伟.基于旋量理论Paden-Kaha子问题的6自由度机器人逆解算法[J].机械工程学报,2009,45(9):72-76.

[3]张波涛,刘士荣,史先鹏.多连杆冗余移动机械臂建模与运动规划[J].科技通报,2010,26(2):200-205.

[4]李宪,郭永存,张军华.模块化六自由度机械臂逆运动学解算与验证[J].农业机械学报,2013,(44)4:246-251.

[5]董云,杨涛,李文.基于解析法和遗传算法的机械手运动学逆解[J].计算机仿真,2012,29(3):239-243.

[6]Kalra P,Mahapatra P B,Aggarwal D K.An evolutionary approach for solving the multimodal inverse kinematics problem of industrial robots[J].Mechanism and Machine Theory,2006,41(10):1213-1229..

[7]徐文福,刘宇,强文义.自由漂浮空间机器人的笛卡尔连续路径规划[J].控制与决策,2008,23(3):278-282.

[8]Husty M L,Pfurner M,Schrocker H P.A new and efficientalgorithm for the inverse kinematics of a general serial 6R manipula-tor[J].Mechanism and Machine Theory,2007,42(1):66-81.

[9]于艳秋,廖启征.基于有理数运算的一般6R机器人位置逆解算法[J].机械工程学报,2005,41(3):229-233.

三自由度机械臂 篇2

机器人技术作为当今工业自动化领域的核心技术, 引领着工业生产发展的浪潮。在机器人技术领域, 机器人的控制部分是核心环节。为了实现对机器臂精确的轨迹控制, 就必须对它进行运动学分析验证, 而如果通过实物来认证机械臂运动学的正确性, 必然会造成开发周期过长。因此, 对机械臂进行运动学仿真研究是必要的, 它能为运动学控制提供理论依据。

机械臂的运动学模型涉及正解和逆解两方面计算, 正解是根据机械臂各关节的角度计算出机械臂末端坐标, 逆解是根据机械臂末端坐标计算出各关节的角度, 逆解是机械臂运动控制和轨迹规划的基础。本文利用MATLAB仿真工具箱Robotics Toolbox, 不仅能够研究机械手控制、轨迹规划等问题, 还能根据机械手D-H模型进行对象建模, 而且十分有效, 为工业机器人的运动仿真提供了极大的便利与直观的表示。

1 机械臂运动学分析

1.1 机械臂的结构参数

本文的机械臂有5个关节, 即五自由度机械臂, 各关节和末端执行器使用直流伺服电机驱动。使用标准的上关节D-H方法建立机械臂坐标系, 将参考坐标系设在机械臂底座。连杆D-H参数如表1所示, 其中, ai是Zi-1与Zi轴公共法线距离;αi是Zi相对于Zi-1轴转过的角度, 即连杆的扭转角, 其正方向是Xi轴的方向;di是从Oi-1沿Zi-1轴方向测得的Zi-1与Zi轴公共法线距离;θi是Xi轴相对于Xi-1轴构成的角度, 其正方向是Zi-1轴的方向。

1.2 机械臂运动学正解

正向运动学描述的是机械臂的关节空间到末端笛卡尔空间的映射关系, 即根据各关节变量θ1、θ2、θ3、θ4、θ5角度计算出机械臂末端执行器相对于基坐标系的位姿。目前国内对多自由度机械臂运动学基本上都采用代数法, 连杆的齐次变换矩阵为:

将表1中各行参数代入式 (1) 得T1、T2、T3、T4、T5, 对于五连杆机械臂, 机械臂末端相对于基坐标系的总变换矩阵可表示为:

其中, c1=cosθ1, s1=sinθ1, c23=cos (θ2+θ3) , s23=sin (θ2+θ3) , c234=cos (θ2+θ3+θ4) , s234=sin (θ2+θ3+θ4) , 以此类推。

1.3 机械臂运动学逆解

机械臂运动学逆解描述的是末端执行器的笛卡尔空间到各关节空间的映射关系。逆解是在已知机械臂目标位姿T50的情况下, 求解各个关节变量θ1、θ2、θ3、θ4、θ5。求解过程如下:

将式 (2) 依次左乘T1-1、T2-1、T3-1、T4-1、T5-1得到不同的等式, 从而得出各个关节转角的值:

其中,

其中, s5=c1ny-nxs1, c5=axs1-ayc1。

2 MATLAB仿真

2.1 正运动学仿真

在MATLAB软件环境下, 利用Robotics Toolbox建立机械臂运动学模型, 命令如下:

已知各关节变量, 并且机械臂结构参数确定时, 就可以确定末端执行器相对于基坐标系的位姿。而对于给定一组结构和关节变量时, 机械臂运动学方程的正解是唯一的。当电机转过θ1=-π/2、θ2=π/2、θ3=π/2、θ4=0、θ5=0时, 末端位姿为1T50:

即px=0, py=75, pz=-20。计算得到的坐标值与图1显示的x、y、z值相同, 可见分析得到的正运动学模型是正确的。

2.2 逆运动学仿真

由于反三角函数方程使得运动学逆解具有多解性, 采用以下方法排除多余解: (1) 根据机械臂运动空间选取合适的解; (2) 选取行程最短的解。

验证运动学逆解正确性的步骤如下:

(1) 令关节角 (θ1, θ2, θ3, θ4, θ5) = (π/4, π/4, π/4, 0, 0) , 由式 (2) 计算出机械臂末端位置为 (px, py, pz) = (72.678, 72.678, -87.782) 。

(2) 将 (px, py, pz) = (72.678, 72.678, -87.782) 作为机械臂的目标位姿, 由式 (3) 、 (4) 与 (5) 计算得到逆解。相同的位姿下可能存在8种关节转角组合, 这就需要根据机器人的实际机构选取一种最优解 (如功率最省、行程最短、受力最好、回避障碍) , 这里选择功率最省的标准。也就是说, 机械臂末端抓持器从初始位姿到下一个路径点位姿各旋转关节角变化量的平方和最小的那组解。图2为可行解的机械臂末端坐标, 即:

(px, py, pz) = (72.690, 72.690, -87.774)

(θ1, θ2, θ3) = (0.785 4, 0.785 3, 0.785 4)

(3) 机械臂末端实际到达的位置与目标位置之间的误差为:

(Δpx, Δpy, Δpz) = (0.000 2, 0.000 2, 0.000 1)

通过逆运动学求解得到的关节角度值与设定角度值之间的误差为:

(Δθ1, Δθ2, Δθ3) = (0, 0.000 1, 0)

由此可知, 通过逆运动学求解得到的机械臂位姿数据误差较小, 在允许的范围内。误差产生的原因主要是机械设计过程中各个连接件的尺寸存在误差及求解过程中三角函数的数学计算产生了误差。因此, 验证了所求运动学逆解的正确性。

3 结语

本文根据D—H模型方法, 对五自由度机械臂进行关节坐标系建模, 并计算其齐次变换矩阵。通过MATLAB仿真工具箱的运用, 很好地验证了机械臂正运动学解和逆运动学解的正确性, 为以后机械臂的实际操作打下了良好的基础, 很具有现实意义。

摘要:首先针对某五自由度机械臂建立机械臂的连杆坐标系, 并运用Denavit-Hartenberg方法建立起以关节为变量的机械臂运动模型, 采用矩阵逆变换方法, 求得运动学的正解和逆解;然后运用MATLAB仿真工具箱Robotics Toolbox进行对应的正逆运动学仿真。结果表明, 该研究方法对于关节型机械臂的仿真研究具有重要的实际意义。

关键词:五自由度机械臂,运动学,MATLAB仿真

参考文献

[1]熊有伦, 尹周平, 熊蔡华, 等.机器人操作[M].武汉:湖北科学技术出版社, 2002.

[2]马江.六自由度机械臂控制系统设计与运动学仿真[D].北京:北京工业大学, 2009.

三自由度机械臂 篇3

随着自动化技术的不断发展, 工业机器人的应用越来越广泛, 机器人的三维仿真技术也越来越受到人们的重视。文献[1]以六自由度机械臂为例, 介绍了整个系统建模的结构及过程, 并对其运动过程进行了仿真。文献[2]设计了基于VC++.NET和Open GL的五自由度弧焊机器人仿真平台, 能够进行三维实时仿真。文献[3]设计了基于Qt、Coin3D和Bullet Physics的机器人虚拟现实系统, 能够方便地对机器人进行示教。文献[4] 采用D-H表示法研究机械臂的运动学问题, 并通过开发的基于Open GL的仿真软件验证了模型的准确性。文献[5]设计了基于MFC框架类和Open GL的三维仿真工具, 对4 种轨迹规划方式的效果做了直观的比较。其中, 文献[1] 所使用的3 D模型是U G N X软件导出的V R M L格式, 不如直接使用Open GL绘图简单和灵活。文献[2]和文献[3]没有说明机器人三维实体的具体实现方法。文献[4]没有给出逆解存在多组解时的解决方法。文献[5]没有把三维模型模块化, 从而不利于系统的扩展。

综合以上文献工作中的优缺点, 本文以vs2008 为开发平台, 基于Qt界面库和Open GL函数库设计了六自由度机械臂三维仿真软件, 能够良好地仿真出六自由度机械臂的运动过程。

2 软件架构

仿真软件主要包括三个部分: 三维建模, 运动学建模与求解、界面设计。

(1) 三维建模。该模块实现机械臂三维实体的绘制。按照模块化的思想, 把机械臂自上而下进行分解:六自由度机械臂由六个关节组成, 每个关节由多个形状组成, 每个形状由多个面组成。绘制模型时, 先绘制面, 再由面去组成形状, 然后由多个形状组成关节, 最后由六个关节组成机械臂[1]。

(2) 运动学建模与求解。该模块实现机械臂运动学建模, 提供正逆解算法接口, 实现对机械臂运动的控制。

(3) 界面设计。该模块提供人机交互界面, 在界面上显示机械臂模型, 通过按钮控制机械臂运动, 显示机械臂的运行状态等。

3 三维实体的绘制

采用模块化的思想, 可以使各个模块之间独立, 能够自由地添加和改变模块。面抽象为类Patch, 面组成形状;形状抽象为基类Shape, 由Shape派生出两个子类Rect Prism和Round Prism, 所有的关节都是由这两种基本形状组成;关节抽象为类Joint, 由Joint派生出六个关节子类和末端工具, 关节组成机械臂; 机械臂抽象为类Robot6X。

设计流程如下:

(1) 创建面。把面封装成类Patch, 提供的主要接口有:添加三角形Add Tri () , 平移Translate () , 旋转Rotate () , 绘图Draw () 。将平面和曲面都看作由多个三角形组成, 绘制面时, 依次绘制每个三角形, 由这些三角形来构成平面。绘制三角形时需要知道三个顶点的坐标 (2) 以及每个顶点的法线方向, 因此创建三个数组, 分别用来存储顶点, 顶点的法线和顶点的索引, 通过Add Tri () 接口, 进行顶点信息的添加和存储。创建一个4 * 4 的矩阵作为平移和旋转变换矩阵, 用于存储Translate和Rotate () 接口所进行的变换。调用绘图接口Draw () 时, 使用Open GL的库函数gl Mult Matrixf () 进行平移和旋转, 使用gl Vertex Pointer () 指 (3) 定顶点数组, 使用gl Normal Pointer () 指 (4) 定法线数组, 使用gl Draw Elements () 调用顶点索引数组进行图像的绘制[2]。

(2) 创建形状。把形状抽象成基类Shape, 提供的主要接口有:平移Translate () , 旋转Rotate () , 绘图Draw () 。封装两种基本形状:方形棱柱Rect Prism和圆柱形棱柱Roun Prism。这两种形状都继承于基类Shape, 拥有相同的接口, 在各自的构造函数中进行外观和尺寸参数的设定, 所有关节都由这两种基本形状构成。形状包含多个面, 首先确定组成形状的每个面, 然后去分别创建每个面, 再进行旋转和平移变换将面移动到相应的位置。

(3) 创建关节。把关节抽象成基类Joint, 提供的主要接口有:平移Translate () , 旋转Rotate () , 绘图Draw () , 转动Move () , 获取位置Get Pos () 。六个关节都继承于基类Joint, 拥有相同的接口。关节是由不同的形状组成的, 首先确定组成关节所需的形状, 然后去创建每个形状, 再进行旋转和平移变换将其移动到相应的位置。调用Move () 进行关节转动时, 确定该关节的转动轴并调用Rotate () 存储转动参数。

(4) 创建机械臂。把机械臂封装成类Robot6X, 提供的主要接口有:转动关节Move Joint () , 获取关节位置Get Joint Pos () , 绘图Draw () 。机械臂由六个关节组成, 首先创建六个关节, 然后进行平移和旋转变换, 将其移动到相应的位置。

(5) 关节联动的实现。机械臂上后边关节的空间位置随着前边关节的转动而变化。为了达到关节联动的效果, 后一个关节的局部坐标系必须与前一个关节保持一致。在调用关节的Draw () 接口时, 调用Open GL的库函数gl Push Matrix () 使上一个关节的局部坐标系作为当前坐标系。如果该关节是最后一个关节, 绘图完成后要调用gl Pop Matrix () 来释放栈上的当前坐标系。

下面以小臂关节为例说明单个关节的的绘制过程:

(1) 确定组成关节所需的形状。小臂关节可以分解为三个形状:两个圆柱体和一个长方体。如下图所示:

(2) 创建形状。首先设定好形状的尺寸参数, 然后使用封装好的形状类Rect Prism来创建长方体, 使用Roun Prism来创建圆柱体。

(3) 对形状进行平移和旋转变换。创建形状时, 都是以形状中心为坐标原点来创建的, 因此需要进行坐标变换, 使多个形状能够组成关节。左边的圆柱体不需要进行坐标变换; 中间的立方体没X轴右移; 右边的圆柱体先沿X轴右移, 再绕Y轴旋转90 度。最后组成了图4中所示的小臂关节。

(4) 确定关节的转动轴。小臂关节的转动轴为Z轴, 当调用关节转动接口Move () 时, 关节绕Z轴转动。

4 运动学建模与求解

4.1 运动学建模

运动学模型使用D - H表示法进行建模[3]。机械臂各个关节的坐标系如下图所示:

其中, x0-z0表示基座坐标系, xi-zi (i =1, 2...6) 表示关节1 到关节6 的坐标系, xt-zt代表末端工具坐标系。

在创建机械臂的坐标系时, 采用以下的方法对模型进行简化。

(1) 让参考坐标系xR-zR, 基座坐标系x0-z0和第一关节坐标系x1-z1重合, 这样可以减少矩阵的变换次数, 从而减小计算量。

(2) 其它关节的初始角度设定为0°, 第二关节的初始角度设为-90°。这样在进行前一个关节坐标系到后一个关节坐标系变换时, 始终能够保证X轴变换的三角函数中只包含一个参数θ , 从而可以简化正逆解的求解过程。

(3) 最后三个关节坐标系的原点重合为一点, 这里选定原点为第五关节的转动中心, 设为点W 。这样做使手臂和手腕解耦, 手腕用于机械臂的方向姿态控制, 手臂用于机械臂点W的位置控制。

使用该方法建模后, 所有的关节坐标系都只需经过4 次变换, 就可以转换为下一个关节坐标系。记i-1Ti为从坐标系i -1 到坐标系i的变换, 则有:

D-H参数表如下所示:

相关的参数定义如下:

(1) 为从i1z-到iz沿当前坐标系X轴移动的距离。

(2) i1α-为从i1z-到iz绕当前坐标系X轴旋转的角度。

(3) i1d-为从i1x-到ix沿当前坐标系Z轴移动的距离。

(4) i1θ-为从i1x-到ix绕当前坐标系Z轴旋转的角度, 即关节i转动的角度。

4.2 运动学正逆解

运动学正解根据当前每个关节的角度推算出末端的姿态。由于参考坐标系、基座坐标系和第一关节坐标系是重合的, 根据式 (1) 从参考坐标系依次变换到末端工具坐标系[4]:

运动学逆解根据当前末端的姿态, 求出各个关节的角度。由于篇幅限制, 求解过程在此省略。最终得到8组解, 首先判断每个关节要转动到的角度是否都在可运动范围内, 去除掉不符合条件的解, 再定义性能函数, 选取使性能函数值最小的一组解为最优解。其中θi表示关节i转动的角度, λi是权重。关节转动时, 对位姿影响越大, 则λi越大。

最后把正逆解运算封装成类Kinematics, 提供两个接口:正解运算Forward () , 逆解运算Inverse () 。

5 界面设计

该仿真界面以VS2008 为开发平台, 使用Qt界面库来实现。界面左边是机械臂的三维模型显示, 界面右边是控制控件和状态显示。

(1) 关节控制。可以设定运动速度, 控制单个关节的运动。使用定时器来实现机械臂速度的模拟[5]。机械臂运动时, 启用定时器, 时间间隔设为5 0 m s , 定时时间达到后调用回调函数On Timer () , 根据设定的速度算出关节应转动的角度, 再调用三维模型的运动接口Move Joint () , 转动相应的关节, 从而实现动态运动的效果。

(2) 坐标控制。可以设定运动速度, 使机械臂沿三个坐标轴移动。同样使用定时器来实现速度的模拟。在回调函数On Timer () 中, 根据机械臂此刻的姿态, 使用逆解运算, 求出每个关节应转动的角度, 转动相应的关节, 实现坐标运动。

(3) 状态显示。可以实时地显示每个关节的角度和机械臂的姿态。专门分配一个定时器, 用于刷新当前的状态。在回调函数On Timer () 中, 调用三维模型的获取关节位置接口Get Joint Pos () , 得到当前每个关节的角度, 再使用正解运算, 求出当前末端的姿态, 在对应的控件中刷新显示。

(4) 视角切换。可以使用鼠标拖动机械臂进行视角的切换。在鼠标移动事件mouse Move Event () 中, 如果鼠标左键按下, 则进行视图刷新, 根据鼠标移动的方向, 调用Openg GL的库函数gl Rotate () 使机械臂相应的旋转, 从而实现视角的切换。

(5) 视窗的缩放。可以滚动鼠标滚轮, 进行机械臂视窗的缩放。在滚轮滚动事件wheel Event () 中, 调用Open GL库函数gl Viewport () , 实现视窗的缩放。

6 结束语

本文设计了一套六自由度机械臂三维仿真软件。基于Open GL, 实现了三维模型的模块化创建, 使用D-H表示法实现了运动学模型的创建, 使用VS2008 开发平台和Qt界面库提供良好的人机交互界面。结果表明, 该仿真软件可以有效地验证机械臂的运动学模型和正逆解的正确性, 并且能够良好地仿真出机械臂的运动过程, 对机械臂的研究和教学起到了促进作用。

参考文献

[1]张聪, 杨光, 王晨升.基于OpenGL的六自由度机械臂建模及仿真[C].第四届图像图形技术与应用学术会议, 2009:236-239.

[2]陈素丽, 任福深.基于OpenGL的弧焊机器人仿真设计[J].科学技术与工程, 2012, 12 (3) :544-550.

[3]CARLOS Vázquez HURTADO, Alejandro Rojo Valerio, Luis Ruvalcaba Sánchez.Virtual Reality Robotics System for Education and Training[C].Robotics and Automotive Mechanics Conference, 2012:162-164.

[4]闫贺, 吴怀宇, 彭晟远, 郑秀娟.四自由度模块化机械臂运动学建模[J].信息技术, 2011, (10) :1-4.

上一篇:思想熏陶下一篇:保护与振兴