机械臂正逆运动学及轨迹规划基础
目录
运动学(kinematics) :将机器人机械手的关节位置映射为感兴趣的坐标系的位置和方向(一般是末端)
- 已知机械臂的连杆的长度,则只要确定了各个关节的转动的角度,就可以确定末端机构(end-effector)的最终位置和方向,称之为正向运动学(forward kinematics)
- 反过来,知道end-effector的最终位置和方向,也可以推导出各个关节的角度,称之为反向运动学(inverse kinematics)
- 此外,如果末端机构(end-effector)要走一段比较长的路程(path),那么为了使得机械臂的末端机构的路径平滑,需要规划一系列的路径点(waypoints),称之为路径规划(trajectory planning)或者叫运动插补(interpolation),这里所说的平滑是指“速度连续”,“加速度连续”,“没有顿挫”等等。
如下图所示,若已知各个关节的角度变量,则末端执行器的位姿是确定的,即(x,y). 但是若已知末端执行器的位姿,反求关节空间的解时,则会存在多组解的情况。如下图中实线和虚线两种情况。
正运动学求解
如上述,若已知,连杆的关节长度为\(l_1和l_2\),并且已知两个关节的转动角度分别为\(\theta_1和\theta_2\),那么其末端执行器的位置\((x,y)\)可以由下式计算出来。
\[x=l_1cos(\theta_1)+l_2cos(\theta_1+\theta_2)\\
y=l_1sin(\theta_1)+l_2sin(\theta_1+\theta_2)
\]
逆运动学求解
反之,若知末端执行器的位置,反求关节的转动角度\((\theta_1和\theta_2)\),那么就有下式:
其中关于\(\alpha_1和\alpha_2\)的计算如下:
路径规划/运动插补
对于直线轨迹规划,一般是直接利用起始点和终点的位置和姿态通过直线插补的形式计算出中间点的位置。因为在直线运动过程中机械臂的姿态保持不变,所以直线运动不需要对机械臂的姿态进行插补。
直线运动插补:设机械臂末端执行器要从点\(p_1(x_1,y_1)\)直线运动到点\(p_2(x_2,y_2)\),则可以计算出两点之间的距离为:
\[L=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2)}
\]
设机械臂末端执行器沿直线运行的速度为\(v\),方向通过矢量来表示,即\(p_1到p_2\)的方向为:
\[p_{21}=p_2-p_1=(x_2-x_1)i+(y_2-y_1)j
\]
则该直线运动方向上的单位方向矢量为:
\[n_{12}=\frac{p_{21}}{L}
\]
则任意t时刻末端执行器的位置可以表示为:
\[p_t=p_1+n_{12}vt,其中p_t和p_1均用矢量表示,即p_1=x_1i+y_1j,p_t=x_ti+y_tj
\]
设直线插补时间间隔为\(t_s\),则此段时间内末端执行器的运动距离为\(d=vt_s\),则从点\(p_1到点p_2\)距离为\(L\)的长度上共需要插补的步数为:
\[N=\frac{L}{d+1}
\]
则各个轴的增量为:
\[\Delta x=(x_2-x_1)/N\\
\Delta y=(y_2-y_1)/N
\]
则各个插补点的坐标为:
\[x_{i+1}=x_1+i\Delta x\\
y_{i+1}=y_1+i\Delta y\\
\]
动力学(dynamics) :将所需的关节力和扭矩映射为它们的位置,速度和加速度
- 机械臂的关节位置一般用电机来驱动,电机通过产生力矩来转动机械装置,从而驱动机械臂。而不同场合时,需要的力矩也不同。如在机械臂快速运动的时候,需要的力矩就要比缓慢移动的时候的要大;还有机械臂弯曲或者平展的时候,重心发生变化,由于惯量\((I=mr^2)\)的不同,所以需要的关节力矩也不同等等。将这些需要考虑力矩的因素称之为动力学,同样也可以分为正向动力学和反向动力学。