机械臂是机器人的一种形式,属于一种多学科交叉涉及非常广泛的学科,在此将对学习过程中的重要概念与结论进行,本主要依据《Introduction to robotics mechanics and control》、《RobotDynamicsandControl》等书籍进行归纳。
一、概述
机械臂算法主要包括以下几个方面
1、运动学:处理机械臂运动时位置、速度的问题
2、动力学:处理机械臂力与运动的问题
3、运动规划:处理对于运动轨迹和运动路径的规划问题
4、优化问题:处理优化时间、振动、奇异、精度的问题
5、视觉控制:处理基于计算机视觉控制机械臂运动的问题
等(其他方面将在以后补充介绍)
二、运动学
1、数学基础:
三角函数:
双参数反正切函数:Atan2(x,y)
基础常见三角函数、诱导公式、倍角公式、正余弦定理
向量:
标量积、外积、向量积
向量微分:a = (a1,a2,a3,...) 则da/dt = (da1/dt,da2/dt,da3/dt,...)
矩阵:
矩阵的秩、转置、乘法运算
2、刚性运动与齐次变换:
描述一个机械的运动要对机械臂进行数学描述,在此对一个n机械臂自由度的机械臂来讲,它拥有n个joint(转轴)、n+1个link(连杆)、n+1个连杆坐标系(其中第一根连杆为接地的固定杆,他的坐标系称为base系)、一个工具系。以base系为基准其他各个连杆系为该连杆在上一个与其连接的连杆系中的位姿关系。例如A1表示除去第一根接地杆外的第一根连杆在base系中的位置,A2为第二根杆在第一根杆的坐标系内的位置。这样讲有些绕嘴,我们举例说明:
如图所示
base系原点为Lo与地面的接触点表示整个机械臂的全局参考系,A1为轴J1为原点的坐标系,表示L1在base下的关系。A2为J2为原点的坐标系,表示L2在A1下的关系。
3、正运动学
至此引出问题,如何表示这些坐标系呢?
首先先人为规定每个坐标系的轴(存在一些常见规定方法,但并不强制,机械臂并不存在全类型通用的运动学算法,其中坐标系方向、原点位置、DH表建立方法都会导致具体算法的差异,但其原理是固定的)。
然后将A矩阵看作R(旋转矩阵)和O(位移矩阵)的齐次变换。其形式如下
R | O |
0 | 1 |
再次明确一个问题,每一个A是当前joint(轴)坐标系的数学表示形式,表示又上一系经过R(旋转变换)与O(平移变换)的到的新坐标系。
至此问题进一步延申,R和O如何确定呢?
首先O很容易确定,可以根据已知的前一坐标系和连杆的长度形状参数做投影,得到的对应xyz的值据说O矩阵,可以看出O是一个3x1矩阵。
再看R,一般情况下机械臂选择用转轴连接,因此每个轴只有一个变量θ。所以R其实是一个关于θ的函数。表示为一个3x3的矩阵。(推导过程请自行查找)
其中O和R中具体位置的数学表示形式有很多种,但其归根结底只是一个由许多已知参数(连杆转轴属性)与一个自变量参数θ的组合形式。具体表示请搜索:欧拉角、四元数、等效轴
至此已获得相邻坐标系之间的关系A,在此引入新问题如何表示坐标系之间的叠加转化关系
此处直接给出结论 T(a关于b) = Ab+1·Ab+2·.........Aa-1·Aa
此处引入Denavit-Hartenberg约定:
Ai = ROT z,θi · Trans z,di · Trans x,ai · ROT x,αi
因此建立一个如上边图右侧所示的DH参数表,描述了机械臂的各种属性参数。根据他可以计算每一个A T R O 矩阵
至此正运动学结束
4、逆运动学
正运动学的核心问题是根据每个转轴的状态得到当前整个机械臂的状态。于是自然产生逆运动学问题,我知道整个机器人的状态(一般情况下是末端的姿态信息),即我们产生了一个目标位置点,我如何解算出每一个轴的状态呢?
在此要明确,逆运动学分为解析法和数值法。解析法是严格根据数学推导得出的结果,但其受限于不同构造的机械臂结构不同,并不具备通用性。数值法是利用梯度下降优化的思路逼近出最优答案的方法,缺点是计算速度慢。
在此介绍逆运动学解耦的方法,是一种解析法,实用于斯坦福型机械臂(六自由度,后三轴轴线互相垂直且交于一点),将整个逆运动过程拆解逆位置与逆姿态。
这个方法的关键点在于后三轴相互垂直交于一点形成了新坐标系——手腕坐标系(wrist系),其位置只由前三轴控制,本身只会改变wrist系的姿态。
在此问题分解,问题1 已知p[x,y,z]求解前三轴θ1 2 3,
结论:
θ1 = Atan2(x,y)或 Π+Atan2(x,y)
θ3 = Atan2(D,根号下(1-D²))
D = COSθ3 =
θ2 = Atan2(根号下(x²+y²-(d2+d3)²),z-d1)-Atan2(a2+a3cosθ3,a3sinθ3)
问题2 已知R(目标位置旋转状态)求解θ 4 5 6
根据θ123求出R(3在0)
R(6在3)=R(wrist) = R(3在0)转置 · R
使用欧拉角表示R(6在3)
结论:
θ4 = Φ
θ5 = θ
θ6 = ψ
此方法一般情况下会得到8个解。
总结:
FK(正运动学):
定轴线 建立base系 建立Ai系 建立DH表 求Ai 求T
IK(逆运动学):
decoupling 解前三轴 解R(3在0) 解后三轴
感谢您的阅读,有机械臂方面兴趣请联系微信Blablabrador