CN105183009B - 一种冗余机械臂轨迹控制方法 - Google Patents
一种冗余机械臂轨迹控制方法 Download PDFInfo
- Publication number
- CN105183009B CN105183009B CN201510665225.3A CN201510665225A CN105183009B CN 105183009 B CN105183009 B CN 105183009B CN 201510665225 A CN201510665225 A CN 201510665225A CN 105183009 B CN105183009 B CN 105183009B
- Authority
- CN
- China
- Prior art keywords
- mrow
- mtd
- msubsup
- mtr
- msub
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000033001 locomotion Effects 0.000 claims abstract description 132
- 230000008569 process Effects 0.000 claims abstract description 12
- 230000004888 barrier function Effects 0.000 claims description 11
- 239000011159 matrix material Substances 0.000 claims description 6
- 238000005215 recombination Methods 0.000 claims description 6
- 230000006798 recombination Effects 0.000 claims description 5
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 claims description 4
- 230000008878 coupling Effects 0.000 claims description 4
- 238000010168 coupling process Methods 0.000 claims description 4
- 238000005859 coupling reaction Methods 0.000 claims description 4
- NJPPVKZQTLUDBO-UHFFFAOYSA-N novaluron Chemical compound C1=C(Cl)C(OC(F)(F)C(OC(F)(F)F)F)=CC=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F NJPPVKZQTLUDBO-UHFFFAOYSA-N 0.000 claims description 2
- 150000001875 compounds Chemical class 0.000 claims 1
- 230000008901 benefit Effects 0.000 abstract description 4
- 238000004364 calculation method Methods 0.000 abstract description 3
- 230000001133 acceleration Effects 0.000 description 4
- 238000011160 research Methods 0.000 description 4
- 239000013256 coordination polymer Substances 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000009347 mechanical transmission Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 238000003466 welding Methods 0.000 description 1
Landscapes
- Manipulator (AREA)
- Numerical Control (AREA)
- Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
Abstract
本发明提供了一种冗余机械臂轨迹控制方法。本发明以构形平面的冗余机械臂运动学求解方法为基础,推导出构形平面的速度分配方法,进而确定了基于构形平面间速度分配的冗余机械臂运动轨迹规划过程,对运动规划中面临的工作位形确定、空间避障、构形平面内速度分配等关键步骤进行了推导,能够满足复杂的空间避障要求,解决空间插值点之间的机械臂末端点轨迹的不确定性,能够实现良好的运动轨迹。本发明解决了冗余机械臂逆解的难题,具有计算速度快、解算精度高的优点,满足实际任务和环境对冗余机械臂的轨迹运动作业需要。
Description
技术领域
本发明涉及的是一种冗余机械臂运动规划方法,该方法能够实现冗余机械臂运动轨迹的可控性,减少运动误差。
背景技术
冗余机械臂具有多余的空间运动自由度,在空间避障和运动规划方面具有很大的优点,成为机器人研究领域的热点。国内外许多研究机构对此展开了研究,得到了很多研究方法。许多专家在冗余机械臂的运动控制方面提出了很多方法。基于C空间的自由空间法以机械臂的关节坐标系建立C空间,将障碍物映射到C空间,形成空间构型障碍,从而求得C空间的补集,即自由空间。在此基础上,利用启发式搜索算法在机械臂的自由空间内寻找机械臂的运动路径。该方法虽然能够实现机械臂无碰撞路径规划,但是由于将障碍物映射到C空间方法较为复杂,对于复杂环境难以满足实时性的要求。为了实现空间避障,对障碍定义一个排斥势场,目标点处定义一个吸引势场,机械臂的运动由两个势场共同作用力来决定,由此来保证机械臂在避障的同时顺利到达最终目标点。该方法对于处理全局路径规划中的动态避障非常有效,但容易陷入局部最小点处。
在对机器人进行运动控制时,各个关节的角加速度约束、角速度约束和角度约束是涉及的主要约束问题。在一般低速运动情况下,只要保证关节角度不超限即可,这对运动轨迹规划影响很小。但是,当机器人运动速度较快时,关节角加速度和角速度极易超出约束范围,导致驱动电流过大或者超出限位的事故发生。轻则机器人运动出错,重则损坏硬件。此时,必须在机器人运动轨迹规划时综合考虑各种约束条件,最常用的方法是对运动时间进行优化。在冗余机械臂轨迹运动方面,常规的方法是:根据预定轨迹建立机械臂运动插补点,根据插补点求解合理的机械臂运动关节量,驱动关节运动实现预定轨迹运动。
但这种方法存在以下缺点:
(1)该轨迹规划方法基础是冗余机械臂的逆运动学求解方法,因此该方法依赖冗余机械臂的拓扑结构形式,在规划的过程中需要对算法重新调整,不具有一般性。
(2)采用目标函数的作为优化目标进行遗传方式的优化,忽略了一些局部轨迹规划的动力学效果,会造成一段区域运动不合理,某关节承担的整体载荷不平均,满载或满速工作,使得整个轨迹运动过程存在局部缺陷。
(3)运动轨迹在插补点间的运动不具有可控性,运动超调量和误差量都比较大。
本发明采用构形平面的速度分配和位形确定的方法,解决冗余机械臂中运动连续、空间避障、空间多约束和插补点间的运动不可控的问题。
发明内容
本发明目的在以提供一种适用于具有多种运动约束、空间避障、运动连续控制等多种要求运动轨迹控制的冗余机械臂轨迹控制方法。
本发明的目的是这样实现的:
步骤1:运动规划初始,输入机械臂运动轨迹方程,输入机械臂的结构参数,建立机械臂运动学模型,同时输入空间障碍物得到外形尺寸和空间位置;
步骤2:以空间机械臂运动轨迹方程为约束,建立多个路标式的空间插补点,建立具有躲避空间障碍物的机械臂运动规划路径;
步骤3:建立第一个轨迹插补点的运动速度方向和大小,利用构形平面的速度分配方法,求解出组成冗余机械臂的各构形平面的速度,进而应用构形平面内的速度分解,求解各关节的运动速度,将这些运动速度输入到机械臂关节驱动器驱动关节运动;
步骤4:在运动Δt时间后,对该时刻的机械臂末端点的位置和姿态进行检测,计算与预定的运动轨迹点进行误差比较,驱动机械臂关节运动消除位置和姿态点误差;
步骤5:对机械臂的运动轨迹点进行判断,是否到达下一个插补点,若未到插补点,继续机械臂末端的运动速度方向和大小,计算各关节运动速度,驱动机械臂运动,若到达插补点,判断是否到达最后一个轨迹插补点,若未到达,重复前面的运动过程,若到达则结束运动轨迹过程。
本发明适用于具有多种运动约束、空间避障、运动连续控制等多种要求运动轨迹控制。
运动规划初始,根据具体任务需要输入机械臂运动轨迹方程,输入机械臂的结构参数,建立机械臂运动学模型,同时输入空间障碍物得到外形尺寸和空间位置;以空间机械臂运动轨迹方程为约束,建立多个路标式的空间插补点,建立具有躲避空间障碍物的机械臂运动规划路径;建立第一个轨迹插补点的运动速度方向和大小,利用构形平面的速度分配方法,求解出组成冗余机械臂的各构形平面的速度,进而应用构形平面内的速度分解,求解各关节的运动速度,将这些运动速度输入到机械臂关节驱动器驱动关节运动;在运动Δt时间后,对该时刻的机械臂末端点的位置和姿态进行检测,计算与预定的运动轨迹点进行误差比较,驱动机械臂关节运动消除位置和姿态点误差;对机械臂的运动轨迹点进行判断,是否到达下一个插补点,若未到插补点,继续机械臂末端的运动速度方向和大小,计算各关节运动速度,驱动机械臂运动,若到达插补点,判断是否到达最后一个轨迹插补点,若未到达,重复前面的运动过程,若到达则结束运动轨迹过程。
本发明解决了冗余机械臂逆解的难题,具有计算速度快、解算精度高的优点,满足实际任务和环境对冗余机械臂的轨迹运动作业需要。
本发明与现有技术相比,具有以下突出实质性的优点和有益效果:
(1)总结串联形式的机器人结构特点,运用构形平面的基本模型,在此基础上推导了构形平面速度分配方法,为后面的冗余机械臂规划工作奠定基础。
(2)对于空间运动的多种约束要求,通过机械臂的构形平面方法能够使快速确定合理的机械臂位形,该方法简单明了,同遗传算法、迭代算法等数值方法相比具有计算量较小,且具有通用性,适用于大多数形式的冗余机械臂。
(3)针对运动规划中插补点间运动不连续和可控性差问题,提出构形平面的速度分配方法。该方法利用短时间内机械臂末端线速度的平滑特点,保证运动的连续性,同时对于构形平面内某些关节接近障碍物或者空间其他的约束条件,分配构形平面的速度,避免空间干涉,增加冗余机械臂在插补点间的可控性。
附图说明
图1运动规划过程示意图。
图2构形平面速度迭代示意图。
图3冗余机械臂空间避障示意图。
图4构形平面与障碍物的干涉检查示意图。
图5插补点间的速度规划过程。
图6冗余机械臂运动模型图。
图7轨迹运动简图。
具体实施方式
面结合附图对本发明做更详细的描述。
结合图1,本发明的方法包括如下几个步骤:
步骤1:运动规划初始,根据具体任务需要输入机械臂运动轨迹方程,输入机械臂的结构参数,建立机械臂运动学模型,同时输入空间障碍物得到外形尺寸和空间位置;
步骤2:以空间机械臂运动轨迹方程为约束,建立多个路标式的空间插补点,建立具有躲避空间障碍物的机械臂运动规划路径;
步骤3:建立第一个轨迹插补点的运动速度方向和大小,利用构形平面的速度分配方法,求解出组成冗余机械臂的各构形平面的速度,进而应用构形平面内的速度分解,求解各关节的运动速度,将这些运动速度输入到机械臂关节驱动器驱动关节运动;
步骤4:在运动Δt时间后,对该时刻的机械臂末端点的位置和姿态进行检测,计算与预定的运动轨迹点进行误差比较,驱动机械臂关节运动消除位置和姿态点误差;
步骤5:对机械臂的运动轨迹点进行判断,是否到达下一个插补点,若未到插补点,继续机械臂末端的运动速度方向和大小,计算各关节运动速度,驱动机械臂运动,若到达插补点,判断是否到达最后一个轨迹插补点,若未到达,重复前面的运动过程,若到达则结束运动轨迹过程。
结合图2,构形平面末端的速度求解公式为
式中,为构形平面末端P点相对构形平面中心的速度,υx,υy,υz,ωx,ωy,ωz分别为构形平面末端相对构形平面中心的x轴线速度、y轴线速度、z轴线速度、x轴角速度、y轴角速度、z轴角速度;J∈R6×n为构形平面的一阶影响系数矩阵,即Jacobian矩阵,当第kk的关节是摆动关节时,表达式见公式(2),若第kk个关节是移动关节时,表达式见公式(3);为广义输入速度矢量,包含回转关节、摆动关节和移动关节的运动速度量。
式中:hi(i=2,…n)为摆动关节间的连杆长度,若该关节是移动关节,则hi(i=2,…n)为移动关节固定长度和变化长度和,βi(i=2…n)为第i个摆动关节转动角度,若第i个关节是移动关节,θ为构形平面中包含的回转关节转动角度。
由于机械臂的拓扑关系,组成机械臂的构形平面间存在速度的耦合,靠近基座的构形平面输出的速度影响靠近机械臂末端的构形平面的速度。
设前i-1个构形平面关节运动产生复合速度在第i个构形平面中心为其在基坐标系的产生的分量为其中υx i,υy i,υz i,ωx i,ωy i,ωz i分别为相对基坐标系的x轴线速度、y轴线速度、z轴线速度、x轴角速度、y轴角速度、z轴角速度;第i个构形平面中各关节运动产生的速度在该构形平面坐标系中的分量为其中υcpx i,υcpy i,υcpz i,ωcpx i,ωcpy i,ωcpz i分别为该关节产生的速度在该构型平面坐标系中的x轴线速度、y轴线速度、z轴线速度、x轴角速度、y轴角速度、z轴角速度;在第i个构形平面末端产生的复合速度相对基坐标系的速度分量为其中υx i+1,υy i+1,υz i+1,ωx i+1,ωy i+1,ωz i+1分别为第i个构型平面末端产生的复合速度相对于极坐标系的x轴线速度、y轴线速度、z轴线速度、x轴角速度、y轴角速度、z轴角速度;ri i+1为第i构形平面末端相对其中心的空间矢量,其在构形平面坐标系的分量为设第i个构形平面中心的坐标系相对基坐标系的姿态变换矩阵为Ri,该矩阵为3×3矩阵。则其在基座标系的分量为:
则各构形平面的线速度和角速度分量可表示为:
结合图3,冗余机械臂的工作位形确定实际上是冗余机械臂的逆运动学求解,设ti时刻空间轨迹点的位姿矩阵为TP(ti),冗余机械臂有ncp个构形平面组成,则根据构形平面表达式则有:
TP(ti)=CP1(ti)*CP2(ti)*…*CPncp(ti) (7)
常用形式冗余机械臂由2-3个构形平面组成,每个构形平面的姿态部分表达式有两个参数,通过空间姿态要求用解析的方式易求出构形平面中姿态部分的参数,然后用冗余自由度关节与满足为空间轨迹点的位置和空间避障等要求;对于包含4个构形平面的冗余机械臂,某个构形平面的姿态中包含确定的参数,如构形平面中具有多角度连接形式的连杆或者构形平面中仅包含回转关节的构形平面。对于包含4个以上构形平面的机械臂,至少要有8个以上的自由度,属于超冗余机械臂,这里不作为讨论。
通过姿态的解析的方法,确定部分关节的运动量,其余未求解出运动量关节通过空间矢量投影法能够确定初步工作位形。
结合图4,空间避障首先要进行冗余机械臂与空间障碍物进行的干涉检查,由于采用冗余机械臂已经分解成有限个构形平面,冗余机械臂的初步工作位形已知,因此构形平面在空间的表达式也是已知的,通过空间几何解析的方法易知空间障碍物在每个构形平面内的表达式。构形平面内的连杆与障碍物进行一一解算,如图附图4所示,K为机械臂连杆与障碍物的空间安全距离。障碍物空间检测后,发生干涉的部分重新调整,如图4所示,采用基于矢量投影的方法对发生障碍物干涉的连杆进行调整。通过公式(8)调整构形平面内连杆。
式中,||p||为构形平面末端相对其中心矢量的范数;ai为第i个关节杆臂在矢量上投影与该关节杆臂的比值,由于矢量投影具有方向性,因此ai具有正负号,其表达式为:
ai=hicos(θ'i) (9)
式中,θ'i为第i个关节杆臂与目标点矢量的夹角。
结合图5,机械臂末端在两个插补点S1和S2间运动,S1和S2间的运动轨迹是与时间相关的连续线段,设为:
S=f(x,y,z,t) (10)
公式(10)中的具体表达式与实际运动规划中的轨迹有关,S1作为起始点,S2是终点。
根据公式(10),容易计算出机器人末端在S1点的速度,按照上一节的构形平面速度分配,规划该时刻构形平面的运动速度。机械臂在运行Δt时间后,到达b1点,这里Δt称为补偿周期。由于冗余机械臂运动的非线性和高耦合性的特点,当机械臂末端与预定的轨迹存在空间偏差,为此进行补偿调整,将驱动机械臂末端由b1点运动到a1点,依次规划,直到完全运动到S2点。
在这种运动规划过程中,S1点b1点之间并非直线,而是依赖构形平面的速度分配实现短时间内的线型运动。
采用这种规划方式,由于机械臂末端的轨迹变化较大,b1点和实际运动轨迹点a1的差值会比较大,为此对公式(10)求解轨迹中任意一点的加速度,根据加速度值调整机械臂末端在运动起始点的速度运动方向和大小,这种方式极大减小运动误差量。
插补点间的轨迹规划依赖的是以构形平面为基础的具有空间避障的逆运动学求解和速度分配方式,对于大多数冗余机械臂和超冗余机械臂结构来说,一般情况下其工作构形由2-4构形平面组成;而插补点的间的轨迹规划也是为了消除插补点间的运动的不可控性,减少轨迹运动误差,因此补偿周期较少。综上两个方面的因素,这种运动规划方式不仅运算量极大减少,而且减少规划运动过程中的运动偏差,增加运动的可控性。
结合图6,冗余机械臂的关节参数如表1所示,冗余机械臂的运动学模型如图6所示。
表1关节参数
关节名称 | 运动范围 | 关节参数 | 尺寸 |
关节1 | -180°≤θ1≤180° | d1 | 350mm |
关节2 | -190°≤θ2≤10° | d2 | 450mm |
关节3 | -100°≤θ3≤100° | d3 | 350mm |
关节4 | -100°≤θ4≤100° | d4 | 150mm |
关节5 | -150°≤θ5≤150° | d5 | 145mm |
关节6 | -100°≤θ6≤100° | d6 | 150mm |
关节7 | -180°≤θ7≤180° | d7 | 160mm |
表2空间插补点的坐标
插补点 | px | py | pz |
0 | -115.4661 | 222.7550 | 142.4795 |
45 | -90.0399 | 258.5391 | 94.6887 |
90 | -29.8487 | 272.5428 | 74.8931 |
135 | 29.8483 | 256.5630 | 94.6887 |
180 | 54.0814 | 219.9605 | 142.4795 |
225 | 28.6552 | 184.1764 | 190.2703 |
270 | -31.5360 | 170.1727 | 210.0659 |
315 | -91.2330 | 186.1525 | 190.2703 |
表3对应插补点的关节运动量
插补点 | 关节1 | 关节2 | 关节3 | 关节4 | 关节5 | 关节6 | 关节7 |
0° | 14.82° | -22.44° | 8.25° | 5.08° | 86.64° | 47.9° | 73.02° |
45° | 14.32° | -17.6° | 13.44° | 7.52° | 26.05° | 16.77° | 78.9° |
90° | 5.34° | -15.48° | 14.87° | 0.89° | 6.87° | 20.05° | 92.85° |
135° | 11.66° | -16.02° | 12.01° | -40.43° | -21.48° | 11.21° | 124.09° |
180° | 3.55° | -53.55° | 44.1° | -26.34° | -37.44° | 32.79° | 81.26° |
225° | 26.44° | -67.21° | 53.74° | -68.99° | -49.9° | -12.97° | 87.41° |
270° | 37.08° | -87.65° | 75.93° | -48.34° | -38° | -22.13° | 70.4° |
315° | 40.5° | -66.85° | 60.77° | -46.9° | -61.64° | -42.25° | 88.98° |
最后运动轨迹如图7轨迹运动简图所示。
Claims (3)
1.一种冗余机械臂轨迹控制方法,包括如下步骤:
步骤1:运动规划初始,输入机械臂运动轨迹方程,输入机械臂的结构参数,建立机械臂运动学模型,同时输入空间障碍物得到外形尺寸和空间位置;
步骤2:以空间机械臂运动轨迹方程为约束,建立多个路标式的空间插补点,建立具有躲避空间障碍物的机械臂运动规划路径;
步骤3:建立第一个轨迹插补点的运动速度方向和大小,利用构形平面的速度分配方法,求解出组成冗余机械臂的各构形平面的速度,进而应用构形平面内的速度分解,求解各关节的运动速度,将这些运动速度输入到机械臂关节驱动器驱动关节运动;
步骤4:在运动Δt时间后,对该时刻的机械臂末端点的位置和姿态进行检测,计算与预定的运动轨迹点进行误差比较,驱动机械臂关节运动消除位置和姿态点误差;
步骤5:对机械臂的运动轨迹点进行判断,是否到达下一个插补点,若未到插补点,继续机械臂末端的运动速度方向和大小,计算各关节运动速度,驱动机械臂运动,若到达插补点,判断是否到达最后一个轨迹插补点,若未到达,重复前面的运动过程,若到达则结束运动轨迹过程;
其特征是所述的构形平面速度分配方法具体包括:
构形平面末端的速度求解公式为
<mrow>
<mover>
<mi>p</mi>
<mo>&CenterDot;</mo>
</mover>
<mo>=</mo>
<mi>J</mi>
<mover>
<mi>q</mi>
<mo>&CenterDot;</mo>
</mover>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
</mrow>
式中,为构形平面末端P点相对构形平面中心的速度,υx,υy,υz,ωx,ωy,ωz分别为构形平面末端相对构形平面中心的x轴线速度、y轴线速度、z轴线速度、x轴角速度、y轴角速度、z轴角速度;J∈R6×n为构形平面的一阶影响系数矩阵,即Jacobian矩阵,当第kk的关节是摆动关节时,表达式为公式(2),若第kk个关节是移动关节时,表达式为公式(3);为广义输入速度矢量,包含回转关节、摆动关节和移动关节的运动速度量;
<mrow>
<mi>J</mi>
<mo>=</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<mo>-</mo>
<mi>sin</mi>
<mi>&theta;</mi>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mi>n</mi>
</munderover>
<msub>
<mi>h</mi>
<mi>i</mi>
</msub>
<mi>cos</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mi>j</mi>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<mi>cos</mi>
<mi>&theta;</mi>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mi>k</mi>
<mi>k</mi>
</mrow>
<mi>n</mi>
</munderover>
<msub>
<mi>h</mi>
<mi>i</mi>
</msub>
<mi>sin</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mi>j</mi>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<msub>
<mi>h</mi>
<mi>n</mi>
</msub>
<mi>cos</mi>
<mi>&theta;</mi>
<mi>sin</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mi>n</mi>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>i</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>cos</mi>
<mi>&theta;</mi>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mi>n</mi>
</munderover>
<msub>
<mi>h</mi>
<mi>i</mi>
</msub>
<mi>cos</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mi>j</mi>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<mi>sin</mi>
<mi>&theta;</mi>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mi>k</mi>
<mi>k</mi>
</mrow>
<mi>n</mi>
</munderover>
<msub>
<mi>h</mi>
<mi>i</mi>
</msub>
<mi>sin</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mi>j</mi>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<msub>
<mi>h</mi>
<mi>n</mi>
</msub>
<mi>sin</mi>
<mi>&theta;</mi>
<mi>sin</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mi>n</mi>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mi>k</mi>
<mi>k</mi>
</mrow>
<mi>n</mi>
</munderover>
<msub>
<mi>h</mi>
<mi>i</mi>
</msub>
<mi>cos</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mi>i</mi>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<msub>
<mi>h</mi>
<mi>n</mi>
</msub>
<mi>sin</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mi>n</mi>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<mi>cos</mi>
<mi>&theta;</mi>
<mi>sin</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mrow>
<mi>k</mi>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<mi>cos</mi>
<mi>&theta;</mi>
<mi>sin</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mrow>
<mi>n</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<mi>c</mi>
<mi>sin</mi>
<mi>&theta;</mi>
<mi>sin</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mrow>
<mi>k</mi>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<mi>sin</mi>
<mi>&theta;</mi>
<mi>sin</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mrow>
<mi>n</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<mi>cos</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mrow>
<mi>k</mi>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<mi>cos</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mrow>
<mi>n</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>)</mo>
</mrow>
</mrow>
1
<mrow>
<mi>J</mi>
<mo>=</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<mo>-</mo>
<mi>sin</mi>
<mi>&theta;</mi>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mi>n</mi>
</munderover>
<msub>
<mi>h</mi>
<mi>i</mi>
</msub>
<mi>cos</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mi>j</mi>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<mi>cos</mi>
<mi>&theta;</mi>
<mi>cos</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mrow>
<mi>k</mi>
<mi>k</mi>
</mrow>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<msub>
<mi>h</mi>
<mi>n</mi>
</msub>
<mi>cos</mi>
<mi>&theta;</mi>
<mi>sin</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mi>n</mi>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>i</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>cos</mi>
<mi>&theta;</mi>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mi>n</mi>
</munderover>
<msub>
<mi>h</mi>
<mi>i</mi>
</msub>
<mi>cos</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mi>j</mi>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<mi>sin</mi>
<mi>&theta;</mi>
<mi>cos</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mrow>
<mi>k</mi>
<mi>k</mi>
</mrow>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<msub>
<mi>h</mi>
<mi>n</mi>
</msub>
<mi>sin</mi>
<mi>&theta;</mi>
<mi>sin</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mi>n</mi>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<mi>sin</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mrow>
<mi>k</mi>
<mi>k</mi>
</mrow>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<msub>
<mi>h</mi>
<mi>n</mi>
</msub>
<mi>sin</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mi>n</mi>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<mi>cos</mi>
<mi>&theta;</mi>
<mi>sin</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mrow>
<mi>n</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<mi>sin</mi>
<mi>&theta;</mi>
<mi>sin</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mrow>
<mi>n</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>...</mn>
</mtd>
<mtd>
<mrow>
<mi>cos</mi>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
<mrow>
<mi>n</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</munderover>
<msub>
<mi>&beta;</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>3</mn>
<mo>)</mo>
</mrow>
</mrow>
式中:hi为摆动关节间的连杆长度,若该关节是移动关节,则hi为移动关节固定长度和变化长度和,βi为第i个摆动关节转动角度,若第i个关节是移动关节,θ为构形平面中包含的回转关节转动角度,i=2,…n;
由于机械臂的拓扑关系,组成机械臂的构形平面间存在速度的耦合,靠近基座的构形平面输出的速度影响靠近机械臂末端的构形平面的速度;
设前i-1个构形平面关节运动产生复合速度在第i个构形平面中心为其在基坐标系的产生的分量为其中υx i,υy i,υz i,ωx i,ωy i,ωz i分别为相对基坐标系的x轴线速度、y轴线速度、z轴线速度、x轴角速度、y轴角速度、z轴角速度;第i个构形平面中各关节运动产生的速度在该构形平面坐标系中的分量为其中υcpx i,υcpy i,υcpz i,ωcpx i,ωcpy i,ωcpz i分别为该关节产生的速度在该构型平面坐标系中的x轴线速度、y轴线速度、z轴线速度、x轴角速度、y轴角速度、z轴角速度;在第i个构形平面末端产生的复合速度相对基坐标系的速度分量为其中υx i+1,υy i+1,υz i+1,ωx i+1,ωy i+1,ωz i+1分别为第i个构型平面末端产生的复合速度相对于极坐标系的x轴线速度、y轴线速度、z轴线速度、x轴角速度、y轴角速度、z轴角速度;ri i+1为第i构形平面末端相对其中心的空间矢量,其在构形平面坐标系的分量为设第i个构形平面中心的坐标系相对基坐标系的姿态变换矩阵为Ri,该矩阵为3×3矩阵,则其在基座标系的分量为:
<mrow>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msubsup>
<mi>r</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>r</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>r</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>=</mo>
<msub>
<mi>R</mi>
<mi>i</mi>
</msub>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msubsup>
<mi>r</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>x</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>r</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>y</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>r</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>z</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>4</mn>
<mo>)</mo>
</mrow>
</mrow>
则各构形平面的线速度和角速度分量表示为:
<mrow>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msubsup>
<mi>&upsi;</mi>
<mi>x</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&upsi;</mi>
<mi>y</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&upsi;</mi>
<mi>z</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>=</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>r</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
<msubsup>
<mi>&omega;</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>r</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
<msubsup>
<mi>&omega;</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>r</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
<msubsup>
<mi>&omega;</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>+</mo>
<msub>
<mi>R</mi>
<mi>i</mi>
</msub>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msubsup>
<mi>&upsi;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>x</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&upsi;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>y</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&upsi;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>z</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>+</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msubsup>
<mi>&upsi;</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&upsi;</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&upsi;</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>5</mn>
<mo>)</mo>
</mrow>
</mrow>
2
<mrow>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msubsup>
<mi>&omega;</mi>
<mi>x</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&omega;</mi>
<mi>y</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&omega;</mi>
<mi>z</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>=</mo>
<msub>
<mi>R</mi>
<mi>i</mi>
</msub>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msubsup>
<mi>&omega;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>x</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&omega;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>y</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&omega;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>z</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>+</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msubsup>
<mi>&omega;</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&omega;</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&omega;</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>6</mn>
<mo>)</mo>
</mrow>
<mo>.</mo>
</mrow>
2.根据权利要求1所述的冗余机械臂轨迹控制方法,其特征是构形平面间的速度求解方法为:
对每一空间轨迹点对应的工作位形进行各关节的运动速度分配,采用构形平面的方法进行速度分配,
按照构形平面间的速度迭代公式(5)和(6)进行分解,式中的和是已知的,仅需要分配线速度和角速度,
设在上一个轨迹点的各关节运动角度为qi(tj),i=1,2,…m,tj为运动起始后的时间节点,则当前轨迹点的各关节运动角度为qi(tj+1),时间间隔为Δt=tj+1-tj,则各关节在两个轨迹点之间平均运动速度为:
<mrow>
<msub>
<mi>qs</mi>
<mi>i</mi>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>t</mi>
<mrow>
<mi>j</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mfrac>
<mrow>
<msub>
<mi>q</mi>
<mi>i</mi>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>t</mi>
<mrow>
<mi>j</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mo>-</mo>
<msub>
<mi>q</mi>
<mi>i</mi>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>t</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<mi>&Delta;</mi>
<mi>t</mi>
</mrow>
</mfrac>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>7</mn>
<mo>)</mo>
</mrow>
</mrow>
利用公式(6)求出的速度,以当前机械臂工作位形,运用构形平面内的速度求解和构形平面间的速度迭代能够求解出机械臂末端速度,该速度在基坐标系的分量为:{υsx,υsy,υsz,ωsx,ωsy,ωsz},其中υsx,υsy,υsz,ωsx,ωsy,ωsz分别为该速度相对于极坐标系的x轴线速度、y轴线速度、z轴线速度、x轴角速度、y轴角速度、z轴角速度;而当前轨迹点的目标速度分量为{υx(tj+1),υy(tj+1),υz(tj+1),ωx(tj+1),ωy(tj+1),ωz(tj+1)},则两者存在的误差为:
<mrow>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&Delta;&upsi;</mi>
<mi>x</mi>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&Delta;&upsi;</mi>
<mi>y</mi>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&Delta;&upsi;</mi>
<mi>z</mi>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&Delta;&omega;</mi>
<mi>x</mi>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&Delta;&omega;</mi>
<mi>y</mi>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&Delta;&omega;</mi>
<mi>z</mi>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>=</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&upsi;</mi>
<mi>x</mi>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>t</mi>
<mrow>
<mi>j</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mo>-</mo>
<msub>
<mi>&upsi;s</mi>
<mi>x</mi>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&upsi;</mi>
<mi>y</mi>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>t</mi>
<mrow>
<mi>j</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mo>-</mo>
<msub>
<mi>&upsi;s</mi>
<mi>y</mi>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&upsi;</mi>
<mi>z</mi>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>t</mi>
<mrow>
<mi>j</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mo>-</mo>
<msub>
<mi>&upsi;s</mi>
<mi>z</mi>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&omega;</mi>
<mi>x</mi>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>t</mi>
<mrow>
<mi>j</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mo>-</mo>
<msub>
<mi>&omega;s</mi>
<mi>x</mi>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&omega;</mi>
<mi>y</mi>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>t</mi>
<mrow>
<mi>j</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mo>-</mo>
<msub>
<mi>&omega;s</mi>
<mi>y</mi>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&omega;</mi>
<mi>z</mi>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>t</mi>
<mrow>
<mi>j</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mo>-</mo>
<msub>
<mi>&omega;s</mi>
<mi>z</mi>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>8</mn>
<mo>)</mo>
</mrow>
</mrow>
由公式(5)和公式(6)的迭代关系,构形平面末端相对基坐标系速度是由两部分复合而成,构形平面内的产生的运动量和上一个构形平面传递到当前构形平面中心的附加运动量,将公式(8)产生的运动速度偏差分配到每一个构形平面的关节中,
假设第i个构形平面末端速度增量为
第i个构形平面中心的速度增量为则由公式(5)和公式(6),则构形平面的线速度和角速度分量表示为:
<mrow>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&upsi;</mi>
<mi>x</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&upsi;</mi>
<mi>x</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&upsi;</mi>
<mi>y</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&upsi;</mi>
<mi>y</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&upsi;</mi>
<mi>z</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&upsi;</mi>
<mi>z</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>=</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>r</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>&omega;</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&omega;</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>r</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>&omega;</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&omega;</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>r</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>&omega;</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&omega;</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>+</mo>
<msub>
<mi>R</mi>
<mi>i</mi>
</msub>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msubsup>
<mi>&upsi;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>x</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&upsi;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>y</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&upsi;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>z</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>+</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&upsi;</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&upsi;</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&upsi;</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&upsi;</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&upsi;</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&upsi;</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>9</mn>
<mo>)</mo>
</mrow>
</mrow>
3
<mrow>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&omega;</mi>
<mi>x</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&omega;</mi>
<mi>x</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&omega;</mi>
<mi>y</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&omega;</mi>
<mi>y</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&omega;</mi>
<mi>z</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&omega;</mi>
<mi>z</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>=</mo>
<msub>
<mi>R</mi>
<mi>i</mi>
</msub>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msubsup>
<mi>&omega;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>x</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&omega;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>y</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&omega;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>z</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>+</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&omega;</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&omega;</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&omega;</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&omega;</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&omega;</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&omega;</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>10</mn>
<mo>)</mo>
</mrow>
</mrow>
对公式(9)和公式(10)进行处理,得到第i个构形平面末端相对其中心坐标系的速度量,如公式(11)和公式(12)所示;
<mrow>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msubsup>
<mi>&upsi;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>x</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&upsi;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>y</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&upsi;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>z</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>=</mo>
<msubsup>
<mi>R</mi>
<mi>i</mi>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msubsup>
<mrow>
<mo>(</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&upsi;</mi>
<mi>x</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&upsi;</mi>
<mi>x</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&upsi;</mi>
<mi>y</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&upsi;</mi>
<mi>y</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&upsi;</mi>
<mi>z</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&upsi;</mi>
<mi>z</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>r</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>&omega;</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&omega;</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>r</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>&omega;</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&omega;</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>r</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>&omega;</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&omega;</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&upsi;</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
<mi>+</mi>
<msubsup>
<mi>&Delta;&upsi;</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&upsi;</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
<mi>+</mi>
<msubsup>
<mi>&Delta;&upsi;</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&upsi;</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
<mi>+</mi>
<msubsup>
<mi>&Delta;&upsi;</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>11</mn>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msubsup>
<mi>&omega;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>x</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&omega;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>y</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&omega;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>z</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>=</mo>
<msubsup>
<mi>R</mi>
<mi>i</mi>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msubsup>
<mrow>
<mo>(</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&omega;</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&omega;</mi>
<mi>x</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&omega;</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&omega;</mi>
<mi>y</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&omega;</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&omega;</mi>
<mi>z</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&omega;</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&omega;</mi>
<mi>x</mi>
<mi>i</mi>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&omega;</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&omega;</mi>
<mi>y</mi>
<mi>i</mi>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&omega;</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
<mo>+</mo>
<msubsup>
<mi>&Delta;&omega;</mi>
<mi>z</mi>
<mi>i</mi>
</msubsup>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>12</mn>
<mo>)</mo>
</mrow>
</mrow>
再由公式(1),求得各关节的运动速度,有下式:
<mrow>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msup>
<mi>&theta;</mi>
<mi>i</mi>
</msup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&beta;</mi>
<mn>2</mn>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<mo>.</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<mo>.</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<mo>.</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&beta;</mi>
<mi>n</mi>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>=</mo>
<msubsup>
<mi>J</mi>
<mi>i</mi>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msubsup>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msubsup>
<mi>&upsi;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>x</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&upsi;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>y</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&upsi;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>z</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&omega;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>x</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&omega;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>y</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
<mtr>
<mtd>
<msubsup>
<mi>&omega;</mi>
<mrow>
<mi>c</mi>
<mi>p</mi>
<mi>z</mi>
</mrow>
<mi>i</mi>
</msubsup>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>13</mn>
<mo>)</mo>
</mrow>
<mo>.</mo>
</mrow>
3.根据权利要求2所述的冗余机械臂轨迹控制方法,其特征是运动轨迹插补点间的规划方法为:机械臂末端在两个插补点S1和S2间运动,S1和S2间的运动轨迹是与时间相关的连续线段,设为:
S=f(x,y,z,t) (14)
其中x,y,z为改点的坐标值而t为运动时间,
S1作为起始点,S2是终点,
根据公式(14),计算出机器人末端在S1点的速度,按照构形平面速度分配,规划该时刻构形平面的运动速度,机械臂在运行Δt时间后,到达b1点,Δt为补偿周期,由于冗余机械臂运动的非线性和高耦合性的特点,进行补偿调整,将驱动机械臂末端由b1点运动到a1点,依次规划,直到完全运动到S2点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510665225.3A CN105183009B (zh) | 2015-10-15 | 2015-10-15 | 一种冗余机械臂轨迹控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510665225.3A CN105183009B (zh) | 2015-10-15 | 2015-10-15 | 一种冗余机械臂轨迹控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105183009A CN105183009A (zh) | 2015-12-23 |
CN105183009B true CN105183009B (zh) | 2017-11-21 |
Family
ID=54905147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510665225.3A Expired - Fee Related CN105183009B (zh) | 2015-10-15 | 2015-10-15 | 一种冗余机械臂轨迹控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105183009B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106228260A (zh) * | 2016-01-26 | 2016-12-14 | 西北工业大学 | 一种平面三自由度空间机器人逆运动学求解方法 |
CN105904458B (zh) * | 2016-05-16 | 2018-01-19 | 西北工业大学 | 一种基于复杂操作任务的非完整遥操作约束控制方法 |
CN106625666B (zh) * | 2016-12-16 | 2019-03-01 | 广州视源电子科技股份有限公司 | 冗余机械臂的控制方法及装置 |
CN106842907B (zh) * | 2017-02-16 | 2020-03-27 | 香港理工大学深圳研究院 | 一种多冗余度机械臂系统的协同控制方法与装置 |
CN107139171B (zh) * | 2017-05-09 | 2019-10-22 | 浙江工业大学 | 一种基于力矩控制的工业机器人避障轨迹规划方法 |
CN108519740B (zh) * | 2018-05-05 | 2020-11-17 | 曲阜师范大学 | 一种全状态约束机械臂轨迹跟踪的协同控制方法 |
CN108705535B (zh) * | 2018-06-04 | 2021-04-16 | 鲁东大学 | 平面3r操作臂逆运动学实现方法 |
CN109699300B (zh) * | 2019-02-22 | 2022-02-15 | 四川农业大学 | 一种智能柑橘采摘机的控制系统及其控制方法 |
CN110125942B (zh) * | 2019-06-21 | 2022-06-10 | 上海工程技术大学 | 一种用于移动型蛇形机械臂的平面轨迹跟踪方法 |
CN110561426B (zh) * | 2019-08-21 | 2021-01-12 | 哈尔滨工业大学(深圳) | 一种超冗余机械臂的路径规划方法、装置及控制系统 |
CN110757453B (zh) * | 2019-10-09 | 2021-03-30 | 哈尔滨工业大学(深圳) | 一种超冗余联动机械臂的运动轨迹控制方法、装置及系统 |
CN111872943B (zh) * | 2020-09-28 | 2021-02-19 | 佛山隆深机器人有限公司 | 一种基于正弦曲线的机器人圆弧轨迹规划方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101045298A (zh) * | 2007-04-12 | 2007-10-03 | 武汉科技大学 | 一种多自由度机器人运动规划控制器 |
CN103778301A (zh) * | 2014-02-21 | 2014-05-07 | 重庆邮电大学 | 一种基于虚拟样机技术的机械臂仿真方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI478796B (zh) * | 2010-02-08 | 2015-04-01 | Hon Hai Prec Ind Co Ltd | 利用機械手臂測試物體的系統及方法 |
-
2015
- 2015-10-15 CN CN201510665225.3A patent/CN105183009B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101045298A (zh) * | 2007-04-12 | 2007-10-03 | 武汉科技大学 | 一种多自由度机器人运动规划控制器 |
CN103778301A (zh) * | 2014-02-21 | 2014-05-07 | 重庆邮电大学 | 一种基于虚拟样机技术的机械臂仿真方法 |
Non-Patent Citations (3)
Title |
---|
一种可重构机器人运动学求解方法;魏延辉,等;《哈尔滨工业大学学报》;20100131;第42卷(第1期);第21-24、36-43页 * |
冗余空间机械臂的运动学和笛卡尔阻抗控制方法;董晓星,等;《中国机械工程》;20140131;第25卷(第1期);全文 * |
高精度五自由度机械臂的轨迹控制;魏德川;《中国优秀硕士学位论文全文数据库 信息科技辑》;20111215(第S2期);第133-137页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105183009A (zh) | 2015-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105183009B (zh) | 一种冗余机械臂轨迹控制方法 | |
Zips et al. | Optimisation based path planning for car parking in narrow environments | |
CN104731107B (zh) | 一种电动六自由度运动平台高精度控制系统及控制方法 | |
CN110497411B (zh) | 一种工业机器人协同运动控制方法 | |
CN102795544B (zh) | 基于轨迹在线规划的桥式吊车高效消摆控制方法 | |
CN104965517A (zh) | 一种机器人笛卡尔空间轨迹的规划方法 | |
CN101362511B (zh) | 基于四个定位器的飞机部件位姿调整协同控制方法 | |
CN101612734A (zh) | 管道喷涂机器人及其作业轨迹规划方法 | |
CN105911863A (zh) | 多机器人协作夹持系统神经网络轨迹跟踪控制方法 | |
CN110007594A (zh) | 一种汽车电泳涂装输送用混联机器人的自适应鲁棒滑模控制方法 | |
CN107538493A (zh) | 一种避免线缆干涉约束的工业机器人轨迹规划方法 | |
CN105652869A (zh) | 一种基于cmac和pid的全向移动机器人及移动控制方法 | |
CN100565407C (zh) | 基于三个定位器的飞机部件位姿调整协同控制方法 | |
Yang et al. | Smooth trajectory planning along Bezier curve for mobile robots with velocity constraints | |
CN110561419B (zh) | 臂型线约束柔性机器人轨迹规划方法及装置 | |
He et al. | Immune optimization based multi-objective six-DOF trajectory planning for industrial robot manipulators | |
Girbés et al. | On generating continuous-curvature paths for line following problem with curvature and sharpness constraints | |
CN105234930A (zh) | 基于构形平面的冗余机械臂运动控制方法 | |
Xu et al. | Model predictive control-based path tracking control for automatic guided vehicles | |
CN114055467B (zh) | 基于五自由度机器人的空间位姿在线仿真系统 | |
Furukawa | Time-subminimal trajectory planning for discrete non-linear systems | |
CN107016209B (zh) | 一种工业机器人和导轨协同规划方法 | |
CN113467475A (zh) | 一种麦克纳姆轮全向移动机器人轨迹跟踪滑模控制方法 | |
Sun et al. | A novel tool path smoothing algorithm of 6R manipulator considering pose-dependent dynamics by designing asymmetrical FIR filters | |
Yang et al. | Optimal configuration for mobile robotic grinding of large complex components based on redundant parameters |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171121 |