Articulated robots(关节型机器人)

Mechanisms(机构)

  • Def:A system of 2 or more linked machine parts with kinematic pairs(运动副)

    • 运动副的元素:点、线、面
    • 分类:
      • 按压强:高副(点、线)、低副(面)
      • 按自由度:平面副、空间副
    • 机器人机械臂基本都是平面转动副
  • 自由度(Degree of Freedom,DoF)

    • 机器人的自由度认为是可被独立驱动器的数目
    • n:可以动的零部件数目(结构数)
    • L:低副数目
    • H:高副数目
    • DoF=3n2LHDoF = 3n-2L-H

Robot Manipulators(机械臂)

  • Def: A sequence of rigid bodies ~(没抄完)

Rotation Geometry(旋转几何体)

Position & Orientation

  • Coordinate Frame(坐标系)变换的推导

对一个矢量r,在不同坐标系下的表达分别为:{0r=XI˙+YJ˙+ZK˙1r=xi˙+yj˙+zk˙根据点积的几何意义,可以写出三条表达式:{X=I˙r˙=I˙r1˙=I˙xi˙+I˙yj˙+I˙zk˙Y=...Z=...0r=[XYZ]=0R1[xyz]=0R11r0R1=1R0(1)=1R0T(即:旋转矩阵の逆=转置)0R1(10)=[IiIjIkJiJjJkKiKjKk]=[iOXYZ的向量yOXYZ的向量zOXYZ的向量][nsa]约束:n=s=a=1;l1×l2=l3(三条);因此还剩下三个自由度,正好对应旋转矩阵举个例子,1坐标系绕0坐标系z轴逆时针转动,旋转矩阵为:0R1=[cossin0sincos0001]\begin{aligned} 对一个矢量r,在不同坐标系下的表达分别为:\\ \begin{cases} ^0r=X\dot I+Y\dot J+Z\dot K\\ ^1r=x\dot i+y\dot j+z\dot k\end{cases}\\ 根据点积的几何意义,可以写出三条表达式:\\ \begin{cases} X=\dot I\cdot \dot r=\dot I\cdot \dot {r^1}=\dot I\cdot x\dot i+\dot I\cdot y\dot j+\dot I\cdot z\dot k\\ Y=...\\Z=... \end{cases}\\ 得:^0r=\begin{bmatrix}X\\Y\\Z\end{bmatrix}= \,^0R_1\begin{bmatrix}x\\y\\z\end{bmatrix}=\,^0R_1\,^1r\\ 且:^0R_1=\,^1R_0^{(-1)}=\,^1R_0^T(即:旋转矩阵の逆=转置)\\ ^0R_1(1到0)=\begin{bmatrix} Ii&Ij&Ik\\Ji&Jj&Jk\\Ki&Kj&Kk \end{bmatrix}=\begin{bmatrix} i在OXYZ的向量&y在OXYZ的向量&z在OXYZ的向量 \end{bmatrix}\triangleq \begin{bmatrix} n&s&a \end{bmatrix}\\ 约束:|n|=|s|=|a|=1;\,\,l_1\times l_2=l_3(三条);\\因此还剩下三个自由度,正好对应旋转矩阵\\ 举个例子,1坐标系绕0坐标系z轴逆时针转动,旋转矩阵为:\\ ^0R_1=\begin{bmatrix} cos&sin&0\\-sin&cos&0\\0&0&1 \end{bmatrix} \end{aligned}

  • 多考虑几何意义,在手算的时候不需要手撕公式,直接看坐标系1三个轴在坐标系0中的坐标,搞成列向量的形式拼在一起就是旋转矩阵。
  • 两次旋转的两种不同方式:
  1. 绕0系某坐标轴转动为1系,1系再绕0系某轴转动为2系:0R2=R(1)R(2)^0R_2=R_{(1)}R_{(2)}

  2. 绕0系某坐标轴转动为1系,绕1系(自身)某轴转动为2系:0R2=0R11R2^0R_2=\,^0R_1\,^1R_2

  • 结论:绕父坐标系(世界坐标系)旋转,左乘新矩阵;绕自身旋转,右乘新矩阵。

Representation of Orientation

固定角描述法

  • RPY Angels(RPY固定角描述法):先X,再Y,再Z,全部都默认绕世界坐标系转动。
    • R:Roll横滚;P:Pitch俯仰;Y:Yaw侧航。
    • 0R1=RZRYRX^0R_1=R_Z\,R_Y\,R_X

欧拉角描述法

  • Zxz Eular Angles:先Z,再x,再z。
    • Z:Precession进动;x:Nutation章动;z:Spin自旋。
    • 0R1=RZRxRz^0R_1=R_Z\,R_x\,R_z
  • RPY Eular Angels:先X,再y,再z。

Triple-Angels

  • ABC(CBA)Type:β(π2,π2)\beta\in(-\frac{\pi}2,\frac{\pi}2)
  • ABA Type:β(0,π)\beta\in(0,\pi)

β±π2\beta\ne\pm\frac{\pi}2时的RPY Angle下的转换公式

β=arcsin(r31);γ=arctan2(r32,r33);α=arctan2(r21,r11)\beta=-arcsin(r_{31});\gamma=arctan2(r_{32},r_{33});\alpha=arctan2(r_{21},r_{11} )

β0π\beta\ne0 、\pi时的Eular Zxz Angle下的转换公式:

β=arccos(r33);α=arctan2(r13,r23);γ=arctan2(r32,r33)\beta=arccos(r_{33});\alpha=arctan2(r_{13},-r_{23});\gamma=arctan2(r_{32},r_{33})

为了更好的完成后续内容,请不要让你的机器人出现β=±π2\beta=\pm\frac{\pi}2的奇异性现象,否则将无法确认α,γ\alpha,\gamma的值。

其中,arctan2是双变量反正切函数,跟arctan基本一样,只是多规定了一下象限,能直接帮你判断象限和具体角度,一般用于编程。

Forward Kinematics(正运动学)

Position & Orientation

旋转矩阵+偏移矢量:0r=0R11r+0d^0r={}^0R_1{}^1r+{}^0d

旋转矩阵(非齐次式) ——> 转移矩阵(齐次式):

[0r1]=[0R10d01×31][1r1]=0T1[1r1]\begin{aligned} \begin{bmatrix}{}^0r\\1\end{bmatrix}= \begin{bmatrix}{}^0R_1&{}^0d\\0_{1\times3}&1\end{bmatrix}\begin{bmatrix}{}^1r\\1\end{bmatrix}= {}^0T_1\begin{bmatrix}{}^1r\\1\end{bmatrix} \end{aligned}

其中:

0d=d3×1=[dxdydz]\begin{aligned}^0d=d_{3\times1}=\begin{bmatrix}d_x\\d_y\\d_z\end{bmatrix}\end{aligned}

同样满足链式法则:0T2=0T11T2^0T_2={}^0T_1\cdot{}^1T_2绕自身坐标系右乘,绕世界坐标系左乘

但是,与旋转矩阵不同的是,0T11=1T00T1T^0T_1^{-1}={}^1T_0\ne{}^0T_1^T

Denavit-Hartenberg Method

一种用于描述几乎所有机械臂运行工作方式的方法理论:find T between link i and link i-1for relative motions given (rotation and geometries of machanical parts,旋转和几何尺寸)

  • D-H Parameters:
    1. 建立坐标系:将 link i 绕着 link i-1 旋转的转轴定义为Zi轴,将 link i-1 指向 link i 的方向定义为X轴(xi=±(zi1×zi)/zi1×zix _ i=\pm(z _ {i-1}\times z _ i)/||z _ {i _ 1}\times z _ i||
    2. **连杆偏距d:**前后两个X轴在Zi-1轴上的距离。**旋转角α\alpha:**zi-1和zi轴的夹角(zi-1绕着xi旋转)。**连杆长度a:**zi-1经过旋转角后(与zi平行)与zi的距离。**关节角θ\theta😗*前后两个X轴,绕Zi-1旋转的夹角(可变)。(按照顺序一个一个变换)(如果X/Z轴共线的话,那么d/a长度就是0)

Transformation Matrix

i1Ti=[cθicαisθisθisαiaicθisθicαicθisαicθiaisθi0sαicαidi0001]\begin{aligned} ^{i-1}T_i=\begin{bmatrix} c\theta_i&-c\alpha_is\theta_i&s\theta_is\alpha_i&a_ic\theta_i\\ s\theta_i&c\alpha_ic\theta_i&-s\alpha_ic\theta_i&a_is\theta_i\\ 0&s\alpha_i&c\alpha_i&d_i\\ 0&0&0&1 \end{bmatrix} \end{aligned}

注:同一个量平移和旋转可交换,两个旋转不可交换

Inverse Kinematics(逆运动学)

Inverse Kinematics

已知末端点的位姿,求解各个关节角的旋转角度。可能存在两个问题:1)可能没有解析解(但是一般的工程师不会有那么NT给自己设计没有解析解的机械臂);2)可能有奇异性,即非单一解。

已知:0R6^0R_60d6^0d_6

0T6(数据)=0T3(参数)3T6(待求)0d6(数据)=0d3(参数)+0R3(参数+待求)3r6(参数)0R3(θ1,2,3)3R6(待求)=0R3T(上面求出来了)0R6(已知数据)3R6(θ4,5,6)\begin{aligned} ^0T_6(数据)=\,^0T_3(参数)\,^3T_6(待求)\\ ^0d_6(数据)=\,^0d_3(参数)+\,^0R_3(参数+待求)\,^3r_6(参数)\Rightarrow\,^0R_3(\theta_{1,2,3})\\ ^3R_6(待求)=\,^0R_3^T(上面求出来了)\,^0R_6(已知数据)\Rightarrow\,^3R_6(\theta_{4,5,6}) \end{aligned}

最终要求的参数:所有θ\theta角。

Trajectory Planning(轨迹规划)

  • 路径规划:

    • 路径表示关节空间或操作空间中的点或位置,操纵者在执行指定的运动时必须遵循这些点。

    • 路径规划的任务是找到一种可行的方法,将起始位置和姿势连接到目标位置和姿势。

    • 路径是对运动的纯几何描述,不回答机器人关节如何移动到目标角度的问题。

  • 轨迹规划:

    • 轨迹是指定定时定律的路径,例如根据每个点的速度和(或)加速度。
    • 轨迹规划的任务是生成变量的时间序列,这些变量描述末端执行器相对于所施加的约束随时间的位置和方向

Planning in joint space(关节空间)

  • 使用三阶多项式:(常用)
image-20231105100035078 image-20231105100059282
  • 如果使用五阶多项式,其结果为:(推导略,因为六个自由度,因此最多五阶)
image-20231105100546757

可以参考Ex 5-2

Trapezoidal Velocity Trajectory(梯形速度轨迹)

  • 通过设置特定的速度和加速度边界,可以用几个低阶多项式代替高阶多项式轨迹。

  • 时间最优轨迹是让关节在所有约束条件下以最大速度工作。

  • 从t0-t1-t2-tf,分别是匀加速、匀速(max speed)和匀减速

求解过程看PPT,这里提供结果:

image-20231105102817386

Planning in Operational Space(笛卡尔坐标系)

  • 考虑到直接运动学引入的非线性效应,关节空间中的规划导致末端执行器的运动不容易预测。
  • 笛卡尔轨迹规划是规划最自然的应用。只要希望末端执行器运动在操作空间中遵循几何指定的路径,就有必要直接在同一空间中规划轨迹执行。
  • 规划可以通过插值一系列规定的路径点来完成,也可以通过以准时的方式生成分析运动基元和相对轨迹来完成。
  • 在这两种情况下,通过反向运动学算法实时利用由操作空间变量获得的值的时间序列来获得关节空间变量的相应值序列。

Different Kinematics(微分运动学)

Representation of Angular Velocity

  • 把微分运算转化为代数运算

v=p˙=ω×p=[0ωzωyωz0ωxωyωx0][pxpypz]\begin{aligned} v=\dot p=\omega\times p=\begin{bmatrix} 0&-\omega_z&\omega_y\\\omega_z&0&-\omega_x\\-\omega_y&\omega_x&0 \end{bmatrix}\begin{bmatrix}p_x\\p_y\\p_z\end{bmatrix} \end{aligned}

把这个ω的矩阵叫做S(ω),根据一堆推导,反正最终有:

(0p=R1p)S(ω)=R˙RT;R˙=S(ω)R;R˙S(ω)RT=S(Rω)(记\,^0p=R\,^1p)\,\,\,\,S(\omega)=\dot RR^T\,;\,\dot R=S(\omega)R\,;\,\dot RS(\omega)R^T=S(R\omega)

  • 在XYZ固定角表示法中,ω与三个旋转角的关系:
image-20231112101055578
  • 罗德里德斯公式:

Forward Velocity Kinematics

已知第i-1个连杆的状态,求第i个连杆的角速度和线速度

ωi=ωi1+ωii1=ωi1+Ri1i1ωii1vi=vi1+vii1+ωi×rii1\begin{aligned} \omega_i=\omega_{i-1}+\omega_{i}^{i-1}=\omega_{i-1}+R_{i-1}\,^{i-1}\omega_i^{i-1}\\ v_i=v_{i-1}+v_i^{i-1}+\omega_i\times r_i^{i-1} \end{aligned}

  • 直线移动关节和旋转关节,都可以做相应的简化,最后用σi\sigma_i把他们统一起来(σi=1or0\sigma_i=1\,or\,0):
    • 旋转关节σi=0\sigma_i=0,直线移动关节σi=1\sigma_i=1
image-20231112102304853
  • 然后他就做了一个我看不懂但是看上去很神奇的操作:
image-20231112103221110

Jacobian Matrix

(雅克比矩阵的含义大致就是全微分的偏导矩阵):微分运动学给出了关节速度与相应末端执行器的线性和角速度之间的映射,该映射由一个矩阵描述,该矩阵称为几何雅可比,取决于操纵器配置。

X=[x,y,z,α,β,γ]T=T˙(q)=[T1(x,y,z,α,β,γ)T6(x,y,z,α,β,γ)]X˙=T(q)qq˙\begin{aligned} X=[x,y,z,\alpha,\beta,\gamma]^T=\dot T(q)=\begin{bmatrix}T_1(x,y,z,\alpha,\beta,\gamma)\\\dots\\T_6(x,y,z,\alpha,\beta,\gamma)\end{bmatrix}\Rightarrow\dot X=\frac{\partial T(q)}{\partial q}\dot q \end{aligned}

将其一分为二:

image-20231112105236736
  • 反正经历了一堆推导,得到:JDi=σizi1×(pipi1)+σizi1J_{Di}=\overline{\sigma_i}z_{i-1}\times(p_i-p_{i-1})+\sigma_iz_{i-1}JRi=σizi1J_{Ri}=\overline{\sigma_i}z_{i-1}
image-20231112105627770 image-20231112105748901

Kinematic Singularites(奇点)

Inverse Velocity Kinematics

​ 利用齐次逆变换矩阵的导数导出上述运动学问题,最终会成为需要求解向量代数方程的首要问题,而向量代数方程不是系统的。因此,上述运动学基本上是通过雅可比矩阵求解的。

电机驱动

  • 现在常用的电机调速原理:PWM调制
    • 动力源直接给电机供电,串联高速开关S,将供电的连续电流离散化。当开关频率极高(远高于电机响应速度时),可以忽略其对稳定性的影响

等效电压:Ud=DUU_d=DU

减速器,传感器,电机