笔记包括2025年秋学期该课程的内容
-
Robot Manipulators 机器人机械臂
通常有三个或更多轴的机械臂
-
机械臂的组成部分
- Body 本体:即其机械结构,是机械臂的骨骼
- Actuators 执行器:每个关节上的电机等
- Sensors 传感器
- Controllers 控制器
- End-effectors 末端执行器:安装在末端的工具,如夹持器、焊枪等
-
机械臂本体(Body)的组成部分
-
Base 基座:连接地面的部分
-
Links 连杆:连接关节之间的刚性物体
-
Joints 关节:连接不同部分的连接件,提供自由度;不是一个具体的零件,而是两个能相互运动的连杆之间的连接点或区域的总称
分类:
- Prismatic Joints 移动关节:允许连杆之间进行相对线性运动
- Revolute Joints 旋转关节:允许连杆之间进行相对旋转运动
-
-
Degree of Freedom (DoF) 自由度
- Joint DoF 关节自由度:机械臂拥有的移动关节和旋转关节的总数
- End-Effector DoF 末端执行器自由度:末端在三维空间中能达到的自由度,最高6个(位置3个,绕轴旋转的方向角度3个),总是小于等于前者
-
机械臂的驱动方式
- Electrical 电动
- Hydraulic 液压
- Pneumatic 气动
- 等等
-
-
末端执行器位置和朝向与关节角度的关系
-
Direction I
在给定所有关节旋转角度\(\theta_1,\theta_2\cdots\)的情况下(每个连杆长度已知),用\(\vec x=f(\vec \theta)\)表示末端执行器的位置和朝向
推出\(\vec x\)的过程被称为Forward Kinematics(正运动学),这个等式被称为Kinematics Equation
-
Direction II
I的反向,\(\vec\theta=f^{-1}(\vec x)\)
这个过程被称为Inverse Kinematics
-
-
表示末端执行器位置的方法:坐标系(Coordinate Frame)
-
定义
\(n\)个相互独立的单位向量构成一个\(\mathbb R^n\)内的坐标系。\(n\)个向量标准正交(Orthonormal)的坐标系被称为笛卡尔(Cartesian)坐标系,比较常用
一个向量\(p\)在\(x_1\cdots x_n\)构成的笛卡尔坐标系中的\(i\)维坐标是\(x_i^Tp\)
三维笛卡尔坐标系中与xyz轴重合的三个单位向量ijk的特征(其实就是右手定则):\(k=i\times j,j=k\times i,i=j\times k\)
例:
Assignment1.1
\(T=\begin{pmatrix}^Ai_B&^Aj_B&^Ak_B&\vec p\\0&0&0&1\end{pmatrix}\),\(^Ai_B=^Aj_B\times^Ak_B\)
-
Rotation Matrix 笛卡尔坐标系的旋转矩阵
-
将B的轴(若干个相互独立的单位向量)用A中的坐标表示,并作为\(^AR_B\)的列向量,则\(^AR_B\)是the rotation matrix of frame B w.r.t. to frame A,且是一个正交矩阵,表示着一个坐标系的朝向。只能用来描述目标坐标系可以通过围绕原点旋转从原坐标系得到的情况
-
如果\(R\)是the rotation matrix of frame B w.r.t. to frame A,\(B\)系中的一个向量\(p\)用\(A\)系坐标表示的结果是\(R\cdot p\) ,表示为\(^AR_B\cdot\ ^Bp=\ ^Ap\),其中的点是矩阵和列向量之间的点乘
-
\(\forall A,B,C\),有\(^AR_B\ ^BR_C=\ ^AR_C\)
-
描述三维坐标系中的旋转时,通常遵循右手原则。也就是说,绕\(x\)轴旋转\(\theta\)的意思是,右手拇指指向\(x\)轴方向,坐标系沿着四指方向旋转\(\theta\)
-
-
三种基本的坐标系旋转方式
-
绕x轴旋转
旋转矩阵\(Rot_x(\phi)=^AR_B=\begin{pmatrix}1 &0&0\\0&cos\phi&-sin\phi\\0&sin\phi&cos\phi\end{pmatrix}\),对于用B中坐标表示的向量\(p_B\),\(Rot_x\cdot p_B=p_A\)
旋转方向如图,实线为坐标系A,虚线为坐标系B
-
绕y轴旋转
\(Rot_y(\phi)=\begin{pmatrix}cos\phi&0&sin\phi\\0&1&0\\-sin\phi&0&cos\phi\end{pmatrix}\)
该图xyz轴的排列方式与上一张相同,只是图中没有标注
-
绕z轴旋转
\(Rot_z(\phi)=\begin{pmatrix}cos\phi&-sin\phi&0\\sin\phi&cos\phi&0\\0&0&1\end{pmatrix}\)
该图xyz轴的排列方式与上一张相同,只是图中没有标注
-
-
更复杂的旋转
-
三种基本旋转可以叠加,比如\(A\)绕其\(x\)轴旋转\(\phi\)得到\(B\),再绕\(B\)的\(y\)轴旋转\(\theta\)得到\(C\),则\(^AR_C=Rot_{x}(\phi)Rot_{y}(\theta)\)
-
将\(B\)绕着\(A\)的第\(k\)个轴旋转\(\theta\)得到\(C\)
令\(A'\)为\(A\)绕自身第\(k\)个轴旋转\(\theta\)的结果,则\(^AR_C=\ ^AR_{A'}\ ^{A'}R_C=Rot_k(\theta)\cdot\ ^AR_B\)
-
规律总结
假设初始的坐标系为\(A\),其经过若干次旋转,目前已经旋转到了\(B\),对应的旋转矩阵为\(R\)。下一步可能会绕初始坐标系的某个轴旋转(对应旋转矩阵\(Rot_{k}(\theta)\),情况1),也可能会绕\(B\)的某个轴旋转(对应旋转矩阵\(Rot_{k'}(\theta')\),情况2)。不管怎么样,先令这一步的旋转矩阵为\(R'\)。
结论:如果是情况1,\(R\to R'\cdot R\);如果是情况2,\(R\to R\cdot R'\);也就是前乘和后乘的区别
-
-
Euler Angles
三维空间中笛卡尔坐标系的每一种旋转都可以用"将原坐标系A绕它的轴1旋转角度1得到坐标系B,再绕B的轴2旋转角度2得到C,再绕C的轴3旋转角度3得到目标坐标系D"形式的6个参数来表示,这些参数被称为Euler Angles
-
Equivalent Angle-Axis
三维空间中笛卡尔坐标系的每一种旋转都可以等效为"绕单位向量\(u\)旋转角度\(\phi\)"。绕单位向量\(u\)旋转角度\(\phi\)的旋转矩阵是\(R'=\begin{pmatrix} u_1^2 v_\phi + c_\phi & u_1 u_2 v_\phi - u_3 s_\phi & u_1 u_3 v_\phi + u_2 s_\phi \\ u_1 u_2 v_\phi + u_3 s_\phi & u_2^2 v_\phi + c_\phi & u_2 u_3 v_\phi - u_1 s_\phi \\ u_1 u_3 v_\phi - u_2 s_\phi & u_2 u_3 v_\phi + u_1 s_\phi & u_3^2 v_\phi + c_\phi \end{pmatrix}\),其中\(s_{\phi}=sin\phi,c_{\phi}=cos\phi,v_{\phi}=1-c_{\phi}\)。如果已知旋转矩阵\(R\),为了求出\(u,\phi\),需要解方程\(R=R'\)。其结果为:
\[\begin{align} \phi&=arccos(\frac{Trace(R)-1}{2})\\ \vec u&=\frac1{2sin\phi}\begin{pmatrix}r_{32}-r_{23}\\r_{13}-r_{31}\\r_{21}-r_{12} \end{pmatrix} \end{align} \] -
表示空间中刚体的位置和朝向的方法
- 一个固定的坐标系\(\Sigma_W:O-xyz\)用于表示其位置
- 一个原点在刚体中固定位置的坐标系\(\Sigma_O:C-x_Oy_Oz_O\)用于表示其朝向
-
Homogeneous Transformation 齐次变换
如果坐标系A、B的原点位置和坐标轴朝向都不同,怎么把用B中坐标表示的一个向量\(\vec b\)转换为用A中坐标表示?
令从A原点指向B原点的向量为\(\vec p\)。我们当然可以引入坐标系A',它方向与A相同,原点与B相同;然后先把\(\vec b\)加上\(\vec p\),用与上面描述相同的方法来做,但是需要两步,太烦了
但注意到\(\begin{pmatrix}^A\vec r\\1\end{pmatrix}=^AT_B\begin{pmatrix}^B\vec r\\1\end{pmatrix}\),其中\(^AT_B=\begin{pmatrix}^AR_B&\vec p\\0_{1\times3}&1\end{pmatrix}\),正确性简单计算一下可得。这个过程被称为齐次变换,齐次意为将坐标增加一维
上面是齐次变换的一个例子。齐次变换的基础操作(Operators)有以下几种:
-
Translation 平移
将向量\(\vec r\)平移\(\vec p\)得到\(\vec{r'}\),有\(\begin{pmatrix}\vec{r'}\\1\end{pmatrix}=\begin{pmatrix}I_{3\times3}&\vec p\\0_{1\times 3}&1\end{pmatrix}\begin{pmatrix}\vec r\\1\end{pmatrix}\)
-
Rotation 旋转
定义一个旋转\(R\),表示绕着轴\(\vec u\)旋转\(\theta\)。我们想计算出坐标系A中的向量\(\vec r\)经过旋转\(R\)后得到的向量\(\vec{r'}\)。令坐标系B为A经过旋转\(R\)得到的坐标系:
发现\(^A\vec r=^B\vec{r'}\),因此我们要的答案\(^A\vec{r'}=^AR_B\ ^B\vec{r'}\),\(\begin{pmatrix}^A\vec{r'}\\1\end{pmatrix}=\begin{pmatrix}R(\vec u,\theta)&0_{3\times1}\\0_{1\times 3}&1\end{pmatrix}\begin{pmatrix}^A\vec r\\1\end{pmatrix}\)
-
两者综合,先旋转再平移
\(\begin{pmatrix}\vec{r'}\\1\end{pmatrix}=\begin{pmatrix}R(\vec u,\theta)&\vec p\\0_{1\times 3}&1\end{pmatrix}\begin{pmatrix}\vec r\\1\end{pmatrix}\)
注意,最上面那个例子解决的问题是"将同一向量从以一个坐标系表示转换为以另一个坐标系表示",下面的三个操作解决的问题是"将向量在同一个坐标系内进行移动",但思路相同
-
Homogeneous Transformation Matrices具有传递性,\(^AT_C=^AT_B\ ^BT_C\)
-
如果连续进行多次操作,其Homogeneous Transformation Matrix的计算方式与上面"更复杂的旋转"一栏类似,如下图
-
\(T\)的逆矩阵
\(^AT_B=\begin{pmatrix}R&p\\0_{1\times3}&1\end{pmatrix},(^AT_B)^{-1}=\begin{pmatrix}R^T&-R^Tp\\0_{1\times3}&1\end{pmatrix}\)
-
-
-
Forward Kinematics
将介绍Denavit–Hartenberg Convention (D-H Method),一种用于Forward Kinematics的方法
步骤:
-
观察确定机械臂中关节的类型、方向等信息
-
为每个连杆i(其在第i个和第i+1个关节中间)分配一个坐标系,并给它对应的坐标系i分配其坐标系轴线(Frame Axes)。令\(X_i,Z_i\)为坐标系i的轴线:
-
Z轴:\(Z_i\)轴被定义为与关节i的轴线重合
-
X轴:\(X_{i-1}\)与\(Z_i,Z_{i-1}\)的公垂线重合,且从\(Z_{i-1}\)指向\(Z_i\)。如图:
特殊情况处理:
-
\(Z_{i-1},Z_i\)平行:任选一条公垂线作为\(X_{i-1}\)
-
\(Z_{i-1},Z_i\)相交:选择经过交点且垂直于它们所在平面的直线作为\(X_{i-1}\)
-
\(Z_{i-1},Z_i\)重合:令\(X_{i-1}\)与\(X_{i-2}\)重合
当关节i移动、并带动连杆i一起移动时,它们所对应的坐标系i就会移动(可能是在空间中旋转、平移,根据关节类型的不同而定)。对于上面这张图,我们引入四个量:
- \(a_{i-1}\):\(Z_{i-1}\)沿着\(X_{i-1}\)移动到\(Z_i\)的位移
- \(\alpha_{i-1}\):\(Z_{i-1}\)绕\(X_{i-1}\)旋转到\(Z_i\)的角度(右手拇指指向旋转轴正方向,向四指方向旋转)
以上两个量由机械臂的基础结构有关,机械臂的运动不会使它们改变
-
\(\theta_i\):\(X_{i-1}\)绕\(Z_i\)旋转到\(X_i\)的角度(右手拇指指向旋转轴正方向,向四指方向旋转)
-
\(d_i\):\(X_{i-1}\)沿着\(Z_i\)移动到\(X_i\)的位移
关节i的运动会使以上两个量中的恰好一个改变,具体取决于关节i的类型。画图时,如果出现原图中连杆不在原位且连杆与轴垂直的情况,一般将\(X\)轴画为与连杆平行,如图:
如果对于每个连续的"关节-连杆-关节"组合,以上四个量都确定,我们就确定了这个机械臂的结构以及运动状态
-
-
分配坐标系原点
\(X_{i-1}\)与\(Z_{i-1}\)相交,交点就是坐标系i-1的原点
-
分配第一个和最后一个坐标系
基座和末端执行器是两个特殊的连杆,它们分别只和一个关节相连,因此要用特殊的方式分配坐标系
-
基座的坐标系
将其轴线\(Z_0\)设置为与\(Z_1\)重合,原点\(O_0\)也与\(O_1\)重合。因此,\(\alpha_0=a_0=0\)
-
末端执行器的坐标系
将其轴线\(X_n\)设置为与\(X_{n-1}\)平行(重合),如图:
-
-
列出所有参数
以一个表格的形式列出,每一行代表一根连杆的参数;每行只有一个是变量,其它都是常数,由机器人固定的物理几何决定
以上步骤技巧总结:先对所有关节,对其中第i个关节确定其\(Z_i\);然后对于\(i\in[1,n-1]\),确定\(X_i\);最后确定\(X_n,Z_0,X_0\)
例:
-
计算坐标系之间的转换矩阵
问题:通过什么步骤可以将坐标系i-1转换到坐标系i?
答案:
- 将坐标系i-1绕着\(X_{i-1}\)旋转\(\alpha_{i-1}\)
- 沿着\(X_{i-1}\)平移\(a_{i-1}\)
- 绕着\(Z_i\)旋转\(\theta_i\)
- 沿着\(Z_i\)平移\(d_i\)
以上的平移指沿着平移轴的正方向;旋转指右手拇指指向旋转轴正方向,向四指方向旋转
因此,\(^{i-1}T_i=Rot_x(\alpha_{i-1})D_x(a_{i-1})Rot_z(\theta_i)D_z(d_i)\),\(^0T_n=^0T_1\ ^1T_2\cdots^{n-1}T_n\)
经计算,\(^{i-1}T_i=\begin{pmatrix} c_{\theta_i} & -s_{\theta_i} & 0 & a_{i-1} \\ s_{\theta_i} c_{\alpha_{i-1}} & c_{\theta_i} c_{\alpha_{i-1}} & -s_{\alpha_{i-1}} & -s_{\alpha_{i-1}} d_i \\ s_{\theta_i} s_{\alpha_{i-1}} & c_{\theta_i} s_{\alpha_{i-1}} & c_{\alpha_{i-1}} & c_{\alpha_{i-1}} d_i \\ 0 & 0 & 0 & 1 \end{pmatrix}\)
-
-
Inverse Kinematics
给出末端执行器的D-H变换矩阵\(^0T_n\),求出所有关节变量\(\theta_i\)或\(d_i\)
-
有没有解?有多少解?
- 末端执行器的位置和方向都可能无法得到,这样就会无解
- 同一种位置和方向可能有多种达成方式,这样就会有多解
-
解法
没有通用解法。对于特定的机械臂,可以通过几何方法(Geometric Method)或代数方法(Algebraic Method)来求解。也可以使用数值方法(Numerical Method)来求近似解
-
几何方法
具体问题具体分析,通过三角函数等几何方法来硬算,适用于简单的机械臂
例:
-
代数方法
例:
-
数值方法
-
一般的数值方法
对于机器人的某一个位姿,用Forward Kinematics的方式写出其参数和位置的关系:\(\vec r=f(\vec\theta)\)。求导得到:\(\vec r'=J(\vec\theta)\vec\theta'\),其中\(J(\vec\theta)\)是Jacobian矩阵
令目标位姿为\(\vec r_d\),使用一阶近似:\(\vec r_d-f(\vec \theta)=J(\vec \theta)\Delta\vec \theta\),然后用\(\Delta\vec \theta\)来更新\(\vec \theta\),迭代直到收敛(与目标差值小于一个阈值)。这种方法是可能不收敛的,其原理和牛顿迭代很像
-
Pieper's Method
如果一个6-DoF的机械臂的第4、5、6个关节的轴相交于一点,则可以用这种方法来求解Inverse Kinematics
这种情况下,D-H方法分配的最后三个坐标系的原点重合,因此最后三个关节的运动不影响末端执行器的位置,只影响其方向,因此可以先用几何方法求出\(^0T_3\),再用\(^3T_6=(^0T_3)^{-1}\ ^0T_6\)求出后三个关节的变换矩阵
-
-
-
-
Velocity Kinematics
通过每个关节的运动速度来求出末端执行器的线速度和角速度
-
末端执行器的线速度
末端执行器相对基座坐标系的移动速度,是一个矢量
-
末端执行器的角速度
一个三维矢量,三个维度分别表示末端执行器相对基座坐标系三个轴的旋转速度,单位为rad/s,正方向遵循右手定则。
如果这个矢量为\(\omega\),则末端执行器围绕\(\omega\)旋转
角速度可以叠加,如图:
如果不能理解一个物体为什么能同时绕着两根轴\(b,u\)旋转,别忘了绕着\(b,u\)旋转的速度都是通过叠加绕着\(xyz\)轴旋转的速度来实现的
-
Jacobian Matrix 雅可比矩阵
-
定义和作用
在Forward Kinematic中,末端执行器的位置\(\vec x=f(\vec\theta)\)。我们也可以把\(\vec x\)的维度扩展为6维,前三维为位置,后三维为朝向(根据\(R\),用Euler Angles或Equivalent Angle-Axis表示)
然后对这个等式求导,得到\({J}(\vec{\theta}) = \frac{\partial {f}(\vec{\theta})}{\partial \vec{\theta}} = \begin{pmatrix} \frac{\partial f_1(\vec{\theta})}{\partial \theta_1} & \frac{\partial f_1(\vec{\theta})}{\partial \theta_2} & \cdots & \frac{\partial f_1(\vec{\theta})}{\partial \theta_n} \\ \frac{\partial f_2(\vec{\theta})}{\partial \theta_1} & \frac{\partial f_2(\vec{\theta})}{\partial \theta_2} & \cdots & \frac{\partial f_2(\vec{\theta})}{\partial \theta_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial f_m(\vec{\theta})}{\partial \theta_1} & \frac{\partial f_m(\vec{\theta})}{\partial \theta_2} & \cdots & \frac{\partial f_m(\vec{\theta})}{\partial \theta_n} \end{pmatrix}\),其中\(n\)是关节数,\(m\)是末端执行器的位置和朝向的维度(3或6;注意如果不是三维空间中的机械臂或DoF不足,也可能是别的数值,视具体情况而定)
最后就可以得到\(\vec x'={J}(\vec{\theta})\vec \theta'\),其中\(\vec x'\)是末端执行器的位置和朝向的变化率(线速度和角速度),\(\vec \theta'\)是各个关节的变化率(关节速度)
-
求法
-
直接硬算,适用于简单情况
例:
其中\(c_{123}\)表示\(cos(\theta_1+\theta_2+\theta_3)\),其它类似
-
先求出末端执行器相对于基座坐标系的转换矩阵\(^0T_n=\begin{pmatrix}R&\vec p\\0_{1\times3}&1\end{pmatrix}\)。其中\(\vec p\)是末端执行器的位置;\(R\)是旋转矩阵,代表其朝向
此时$ J(\vec\theta)=\begin{pmatrix}\frac{\partial\vec p(\vec\theta)}{\partial\vec\theta}\B(\vec\theta)\end{pmatrix}\(,其中\)B(\vec\theta)$代表朝向部分,视情况而定可有可无
对于\(B(\vec\theta)\)的计算,注意到它是每个关节对末端执行器角速度的影响的叠加,因此可以逐个关节计算其对末端执行器角速度的影响,然后直接相加
- 对移动关节,其对末端执行器角速度没有影响,贡献为0
- 对旋转关节i,其对末端执行器角速度的贡献为其轴线方向的单位向量(用基座坐标系表示)点乘上关节角速度,即\(\vec z_i\theta_i'\)
对于\(^0\vec z_i\),\(^0T_i\)第三列的前三个元素就是它在基座坐标系中的表示
因此,\(\vec{\omega} = \sum_{i=1}^{n} \xi_i {}^0\vec{z}_i {\theta}'_i \quad \text{where} \quad \begin{cases} \xi_i = 0 & \text{If joint } i \text{ is prismatic} \\ \xi_i = 1 & \text{If joint } i \text{ is revolute} \end{cases}\),所以也就有\({J}(\vec{\theta}) = \begin{pmatrix} \frac{\partial \vec{p}(\vec{\theta})}{\partial \theta_1} & \frac{\partial \vec{p}(\vec{\theta})}{\partial \theta_2} & \cdots & \frac{\partial \vec{p}(\vec{\theta})}{\partial \theta_n} \\ \xi_1 {}^0\vec{z}_1 & \xi_2 {}^0\vec{z}_2 & \cdots & \xi_n {}^0\vec{z}_n \end{pmatrix}\)
-
-
-
Singularity of a Robot 机器人奇异点
给定一个末端执行器的速度\(x\),在机械臂的雅可比矩阵是方阵且没有逆的情况下,我们可能算不出对应的关节速度\(\theta\),这就是奇异点
\(n\neq m\)的情况下也有奇异点的定义,但这里不讨论
-
Velocity of Redundant Manipulators 冗余机器人速度运动学
-
\(n>m\)的情况下,无法唯一求解关节速度\({\vec{\theta}}\),称为冗余机器人,此时\({\vec{\theta}} = {J}^{+}{\vec{x}} + ({I} - {J}^{+}{J})\vec{k}\),其中\({J}^{+}\)是雅可比矩阵的伪逆(Pseudo Inverse),其值为\({J}^{+} = {J}^T({J}{J}^T)^{-1}\);\(\vec{k}\)是任意向量
-
\(J(\vec\theta)\)的零空间被定义为\(\{\vec k|J(\vec\theta)\vec k=0\}\),只有冗余机械臂才有非零的零空间
-
-
-
Trajectory and Motion Planning 轨迹和运动规划
大致是给出末端执行器的始末位姿,规划其运动轨迹。分为以下三类问题:
- Motion Planning:确定需要哪些始末及中间位姿
- Path Planning:确定末端执行器的运动路径
- Trajectory Planning:确定末端执行器的运动时间并与路径结合,即什么时候运动到哪里
-
Trajectory Generation in Joint Space 确定单个关节的轨迹
也就是给定每个关节的起始位置、终止位置(单位rad),起始速度、终止速度(单位rad/s),求出关节在时间\(t\in[0,t_f]\)内的位置、速度、加速度曲线。也可能有不止以上四个限制,视情况而定
解法:
-
Planning using Polynomial Interpolation
设\(\theta(t)=a_0+a_1t+a_2t^2+a_3t^3\),根据以上四个限制列出四个方程即可求出\(a_0\cdots a_3\)
-
Planning using Linear Function with Parabolic Blends
令关节在中间一段时间内匀速,始末一段时间内加速或减速
-
Planning using Velocity Profiles
-
Trigonometric Profile of Velocity 速度曲线为三角函数
比如令速度\(v=\theta'=Asin(\omega t+\phi)\),其中\(\phi=0,\omega=\frac\pi T\),那么在\(T\)时间内会经过半个周期。令路程为\(\theta\),有\(\int_0^T Asin(\omega t+\phi)dt=\theta\to A=\frac\pi{2T}\theta\)
-
Trapezoid Profile of Velocity 速度曲线为梯形
-
-
Planning with Given Geometric Path 给定一个或多个关节参数的变化轨迹和机械臂在这两个参数组成的Joint Space中的运动速率,规划轨迹。以下为给定两个关节参数变化轨迹的情况
令\(s\)为Joint Space中从起点到某一点的距离,令\(f(s)=<\theta_1(s),\theta_2(s)>\)。则\(\theta'=\frac{\partial f(s)}{\partial s}s',\theta''=\frac{\partial f(s)}{\partial s}s''+\frac{\partial^2f(s)}{\partial s^2}s'^2\),其中\(s'\)为速率
-
-
Motion Planning 的寻路方法
旨在寻找一条空间中从起点到终点的路径,避开障碍物
-
Search-Based Methods
Dijkstra和A*,课件中描述很简略也不是很准确,因此就放个截图吧
-
Sampling-Based Methods
-
Rapidly-Exploring Ramdom Tree (RRT, 快速扩展随机树)
重复以下过程,直到到达终点:在空间中随机取一个没有被"树"覆盖到的点,然后从"树"中找到离它最近的点,从该点向这个随机点方向扩展一小段距离,形成一个新节点并加入"树"中。如果扩展的这一小段距离碰到了障碍物,则放弃这个随机点,重新取一个随机点
-
Probabilistic Roadmap
在空间中随机采样若干个点,把每个点连接到与其最近的点(需要保证线段不经过障碍),形成一张图。不断加入新的随机点直到起点和终点可以互相连接
-
-
Geometry-Based Methods
Artificial Potential Field 人工势场法
令终点对机器人有吸引力,障碍物对机器人有排斥力。然后计算出机器人在当前位置受到的合力,沿着合力方向移动一小段距离,重复直到到达终点
比如,令机器人与终点距离为\(x\)时,其势能为\(\frac12kx^2\),则吸引力为\(-kx\)。令机器人与障碍物距离为\(d\)时,其势能为\(\frac12k'(\frac1d-\frac1{d_0})^2\),则排斥力为\(k'(\frac1d-\frac1{d_0})\frac1{d^2}\),其中\(d_0\)为一个阈值,超过该距离时不产生排斥力
-
Optimization-Based Methods
-
Covariant Hamiltonian Optimization for Motion Planning (CHOMP)
先生成一条不一定合法的路径(比如一条线段直接连到终点),然后通过优化的方法不断调整路径,使其变得合法且平滑
令\(p(t)\)表示运动轨迹,\(C_{smooth}=\int_0^T||\frac{d^2p(t)}{dt^2}||dt\),\(C_{obs}(p)=\int_0^T c(p(t))dt\),其中\(c(x)\)是\(x\)处的障碍物代价,离障碍物越近代价越大。则总代价\(C(p)=C_{smooth}(p)+C_{obs}(p)\),通过优化的方法使其最小化
-
Model-Predictive Control 模型预测控制
定义一个时间步长\(\Delta t\)。我们现在已经有一个模型,可以根据机器人当前运动状态向量\(x_k\)(包括位置、速度等)和该时刻试驾的控制向量\(u_k\)(包括各个关节的加速度、电机的扭矩等)来预测下一个时间步长的运动状态\(x_{k+1}\),即\(x_{k+1}=f(x_k,u_k)\)。然后我们定义一个代价函数\(J\),表示在未来\(N\)个时间步长内的总代价,比如\(J=\sum_{k=0}^N(w_1||x_k-y_k||+w_2||u_k||)\) ,其中\(y_k\)是期望的运动状态,\(w_1,w_2\)是权重。然后我们求解在未来\(N\)个时间步长内的最优控制向量序列\(u_0,u_1,\cdots,u_{N-1}\),使得\(J\)最小。最后执行第一个时间步长的控制向量\(u_0\),然后进入下一个时间步长,重复上述过程。\(J\)也可以按照需求选择其他的形式
-
-
-
Sensors 传感器
-
Characteristics 传感器特性
-
Accurary
测量值和实际值之间的接近程度
其误差可以分为\(e_{abs}=v_{measured}-v_{true}\)(绝对误差)和\(e_{rel}=\frac{v_{measured}-v_{true}}{v_{true}}\)(相对误差)两种
-
Precision
多次同样条件下测量值的方差
-
Sensitivity and Linearity
前者是该图像的斜率,后者是该图像的线性程度
-
-
Robot Internal Sensors 机械臂内部的传感器
-
Optical Encoder 光学编码器
由一束光源、一块带有透明和不透明区域的编码盘(Radial Grating)和一个光电探测器组成。编码盘连接在旋转轴上,光源发出的光通过编码盘照射到光电探测器上。当编码盘旋转时,光电探测器接收到的光强会发生变化,从而产生脉冲信号。通过计算脉冲信号的数量和频率,可以确定旋转轴的角位置和角速度
编码盘可以由两层组成,根据两层信号的时间差可以判断旋转方向,如图:
光学编码器一般安装在电机轴上。假设电机转速是输出轴转速的53倍,编码器转一圈产生512个脉冲,那么输出轴转一圈会产生\(53\times 512=27136\)个脉冲,因此输出轴的最小分辨率为\(\frac{360}{27136}=0.0133^\circ/count\)
-
Linear Force Sensor 线性力传感器
当受到的压力变化时,产生一个模拟电压信号。通过测量该电压信号,可以确定传感器受到的力的大小
-
Torque Sensor 力矩传感器
测量机械臂关节处的力矩。一般通过测量关节处的应变来计算力矩
-
Tactile Sensor 触觉传感器
一组覆盖一定面积的传感器阵列,可以测量接触点的位置和压力
-
-
Robot External Sensors 机械臂外部的传感器
-
Vision Sensors 视觉传感器
图像传感模块与处理模块两部分组成
对于相机,其原理可以大致近似为小孔成像。以小孔为原点建立Camera Frame,则世界中的景物会有一个相对于Camera Frame的坐标\((x_c,y_c,z_c)\),成像平面上对应的像素坐标为\((x,y)\)。小孔到成像平面的距离为焦距\(f\)。令从小孔向成像平面坐标系(Image Frame)作垂线的垂足坐标为\((x_0,y_0)\)
如图,令\((u,v)\)为景物投影在Image Frame中的坐标,有\(u=x_0+f\frac{x_c}{z_c},v=y_0+f\frac{y_c}{z_c}\),用矩阵表示则为\(\begin{pmatrix}u\\v\end{pmatrix}=\frac1{z_c}\begin{pmatrix}f&0&x_0\\0&f&y_0\end{pmatrix}\begin{pmatrix}x_c\\y_c\\z_c\end{pmatrix}\)
-
Range Sensors 距离传感器
用于测量机器人与周围物体的距离
-
Ultrasonic Sensor 超声波传感器
令发出与受到声波的时间差为\(\Delta t\),声速为\(v\),则距离\(d=\frac{v\Delta t}2\)
探测频率高,精度中等,受环境影响大,不适合复杂的环境
-
Light Detection And Ranging (LiDAR) Sensor 激光雷达传感器
以激光为媒介,通过接收反射光来测量距离,原理和超声波传感器类似
-
-
Accelerometer 加速度传感器
通过压电材料测量运动变化的传感器
-
-
-
Actuators 执行器
分类:
-
Hydraulic Actuator 液压执行器
通过液体的压力来产生运动和力,可以通过活塞横截面积的大小来控制输出的力的大小,但做功不变
-
Pneumatic Actuator 气动执行器
通过气体的压力来产生运动和力,原理和液压执行器类似
由于气体可以压缩,气动执行器的精度较低
-
Electrical Actuator 电动执行器
-
Brushed DC Motors 有刷直流电机
分为定子(Stator)和转子(Rotor)两部分。一般定子上有永磁体,转子上有线圈。当线圈通电时,产生磁场与定子上的磁场相互作用,产生力矩使转子旋转
就是高中讲过的那种。转动原理可以理解为磁场对通电导线的作用力。设磁场强度为\(B\),导线长度为\(L\),电流为\(I\),则作用力为\(F=ILBsin\theta\),其中\(\theta\)为导线与磁场的夹角,如图:
-
Brushless DC Motors 无刷直流电机
一般定子上有线圈,转子上有永磁体。通过电子换向器(Electronic Commutator)来控制线圈的通电顺序,从而产生旋转力矩。比有刷直流电机先进,成本高,常用于机械臂
-
AC Motors 交流电机
原理和直流电机类似,可以达到更高的功率和效率
-
Radio Controlled Servo Motor 无线遥控伺服电机
一般由一个小型直流电机、一个减速齿轮组和一个位置反馈传感器组成。通过控制电机的转动来调整输出轴的位置,用于实现精确的位置控制,可以用于航模的舵机等
-
-
Motion Transmission 传动方式
-
Gear Transmission 齿轮传动
有直齿轮(Spur Gear),蜗轮蜗杆(Pinion and Worm Gear,用于传递大扭矩),锥齿轮(Bevel Gear)等类型
存在反向间隙(齿之间空隙导致反向转动瞬间有延迟)、输入输出不同轴等问题
齿轮比被定义为主动轮角速度与从动轮角速度之比,也就是从动轮齿数与主动轮齿数之比,即\(GearRatio=\frac{\omega_{input}}{\omega_{output}}=\frac{N_{output}}{N_{input}}\)。齿轮比越大,输出轴的转速越低,输出扭矩越大
-
Belt Transmission 皮带传动
通过皮带连接滑轮(Pulley)来传递动力
-
Harmonic Drive 谐波减速器
分为刚轮(Circular Spline),柔轮(Flex Spline)和波发生器(Wave Generator)三部分,柔轮为输出端,波发生器为输入端。波发生器通过椭圆形的轴承使柔轮变形,从而使柔轮的齿与刚轮的齿啮合。由于柔轮的齿数比刚轮少2(或一个很小的偶数)个,因此每转动一圈,柔轮会相对于刚轮转动一个很小的角度,达到很高的减速比
-
-
-
Robot Motion Control
是根据输入随时调整机器人输出的过程
-
概念
-
System 系统
一个物理的或抽象的实体,可以接收输入并产生输出
-
States 状态
一个系统的状态是描述其当前情况的一组变量,可以是其输出,也可以是辅助描述输出的变量
-
Plant 被控对象
是系统输入-输出行为的映射模型
如图,以锅炉为例,被控对象从Controller处接受需要多少燃料的信号,然后根据燃料量和锅炉的热效率产生热水温度作为输出
和System的区别:Plant是一个抽象的模型,是一个数学函数;System是一个具体的实体,可以是物理的也可以是抽象的。Plant是System的模型化抽象,上图中写着Plant的部分其实也可以写System(但不够严谨)
-
-
Control System
上面给出的那一张图就是一个完整的Control System。注意,Control System和System不是一个东西,System是Control System的一部分
-
Open-Loop Control 开环控制
控制器根据期望输出直接产生控制信号并发送给被控对象,而不考虑反馈
-
Closed-Loop Control 闭环控制
控制器根据期望输出和实际输出的误差产生控制信号并发送给被控对象
-
-
Control和Planning的区别
Control是针对当前时刻的即时动作,而Planning是针对未来一段时间的整体规划,类似开车和导航的区别
-
Goal Pose 目标位姿
机械臂需要达到的目标位置和朝向,用矩阵\(T\)来描述
-
Control Laws and Strategies
-
PID基础控制律
-
Proportional Control 比例控制
控制信号强度与误差成正比。比如空调制冷的目标温度为\(T_d\),当前温度为\(T\),则可以令功率为\(-K(T-T_d)\),负值表示制冷
-
Proportional-Integral Controller 比例-积分控制
令目标状态为\(\theta_d\),当前状态为\(\theta\),误差为\(e=\theta-\theta_d\),则速度\(\theta'=-K_pe-K_i\int_{t_0}^te_{\tau}d\tau\)
相比于比例控制增加了积分项,消除了稳态误差。如果没有积分项,假设我们现在控制一个烧水的锅炉,目标为100度,当前为98度,没有积分项可能会导致锅炉一直保持在98度,因为98度时制热功率和散热功率平衡了,这就是稳态误差;而有了积分项后,锅炉会加热到100度
-
Proportional-Integral-Derivative Control 比例-积分-微分控制
相比于比例-积分控制又多了一项,\(\theta'=-K_pe-K_i\int_{t_0}^te_{\tau}d\tau-K_d\frac{de}{dt}\)。比如\(\frac{de}{dt}>0\)时表示误差正在变大,此时微分项会提供提前干预的效果
-
-
Task Space Control Strategy 任务空间控制策略
-
Position-Based Control 基于位姿的控制
令目标位姿矩阵为\(T_d=\begin{pmatrix}R_d&x_d\\0&1\end{pmatrix}\),当前位姿矩阵为\(T=\begin{pmatrix}R&x\\0&1\end{pmatrix}\),对应的欧拉角向量分别为\(w_d,w\),则令\(u_x=-K(x-x_d),u_w=-K(w-w_d)\),其中\(u_x,u_w\)分别为线速度和角速度控制信号
-
Velocity-Based Control 基于速度的控制
现同时要求目标位姿为\(r_d=<x_d,w_d>\),目标速度为\(r_d'=<x_d',w_d'>\)。
回顾雅可比矩阵的定义:\(x'=J\theta'\),其中\(x'\)为末端执行器的位置和朝向变化率,\(\theta'\)为各个关节的变化率。则可以令\(\theta'=-KJ^{-1}(r-r_d)+J^{-1}r_d'\)
-
Image-Based Control 基于图像的控制
前置知识见上面的"Vision Sensors"
令\(r\)为相机坐标系的位置和朝向向量,\(r'\)为其变化率,\(y\)为景物在Image Frame中的坐标,\(y'\)为其变化率。则有\(y'=Lr'\),其中\(L=\begin{pmatrix} -\frac{f}{z_c} & 0 & \frac{u}{z_c} & \frac{uv}{f} & -\frac{f^2+u^2}{f} & v \\ 0 & -\frac{f}{z_c} & \frac{v}{z_c} & -\frac{f^2+v^2}{f} & \frac{uv}{f} & -u \end{pmatrix}\)。由上一条,有\(r'=J\theta'\),因此\(y'=LJ\theta'\),任意时刻有\(\theta'=J^{-1}L^{-1}y'\)。仿照上一条,我们可以令\(\theta'=J^{-1}L^{-1}(-K(y-y_d)+y_d')\)
-
-
-
-
Human-Robot Interaction 人机交互
-
Teleoperation 遥操作
指人类通过某种设备远程控制机器人
-
分类
-
Unilateral Teleoperation 单向遥操作
机器人只接收人类的指令,不向人类反馈信息
-
Bilateral Teleoperation 双向遥操作
机器人不仅接收人类的指令,还向人类反馈信息
-
-
影响性能的因素
-
Consistency Between the Input Device and the Slave Robot 输入设备和从动机器人之间的一致性
Slave端和Master端运动的一致性和力觉的一致性
-
Communication Delay 通信时延
-
Trade-off Between Signal Recovery and Signal Filtering
信号传输过程中会有衰减和噪声,要在过滤噪声和恢复有用信息之间进行权衡
-
-
-
交互系统的组成
-
Interface
人类与机器人交互的媒介,可以是物理设备(操纵杆、按钮等)或虚拟设备(触摸屏、语音识别等)
-
Remote Robot
-
Links for transferring commands and feedback
-
-
Interaction Methods
-
Tele-Programming 遥编程
远程向机器人实时发送符号化指令,机器人执行这些指令
-
Master-Slave Systems 主从系统
人类操作一个结构和机器人类似的主设备(Master Device),主设备的运动通过通信链路传输给机器人,机器人模仿主设备的运动,并向主设备反馈力觉信息
令\(F_h\)为操作员施加给Master端的力,\(U_m\)为设备执行器施加的力,\(F_{zm}\)为主端动态力,即Master自身的惯性力、阻尼力等所有与自身运动相关的动态力之和,则有\(-F_h=F_{zm}+U_m\)。同样,令\(F_e\)为环境施加给Slave端的力,\(U_s\)为设备执行器施加的力,\(F_{zs}\)为从端动态力,则有\(-F_e=F_{zs}+U_s\)
主从系统有多种控制方法(Control Methods),如Position Forward Control/Position Exchange Control等
-
Position Forward Control
Master端直接将位置指令发送给Slave端,Slave端根据该位置指令运动,不把其位置信息反馈给Master端并对其进行调整
-
-
Shared Autonomy
由人类和机器人分工完成任务,比如机器人自主完成路径规划等简单任务,人类进行高级策略的制定
-
-
Human-Robot Interface
用于实现人和机器人之间交互的设备。一个键盘不能称为Human-Robot Interface,但输入设备+显示器+软件就可以称为
-
Design Consideration 设计准则
- Functions 功能
- Aesthetics and Style 美学和风格
- Ergonomics 人体工程学
-
Components 组成
- Input Devices 用于接收人类输入的设备,如操纵杆、按钮、触摸屏等
- Feedback Devices 用于向人类反馈信息的设备,如显示器、扬声器、力反馈装置等
-
-
-
Robots in Medical Applications
-
Assistive Robotics 辅助机器人
用于辅助运动或认知方面存在障碍的人群的独立生活,可以分为移动辅助设备(Mobility Assistance Devices)和操作辅助设备(Manipulation Assistance Devices)
-
Rehabilitation Robots 康复机器人
用于帮助患者进行康复训练的机器人,可以Upper Limb Exoskeletons, Lower Limb Exoskeletons, General-arm Rehabilitation Robots
-
Surgical Robotics 手术机器人
-
Minimally Invasive Surgery 微创手术
指通过小切口或自然孔道进行手术,减少对患者身体的损伤和恢复时间
指用于辅助或执行手术操作的机器人系统
在微创手术中,器械通过一个小孔进入体内,因此关节运动设计必须确保器械始终经过一个固定三维点(Remote the Center-of-motion Contraint, RCM约束)
-
-
Surgical Navigation 手术导航
通过计算机辅助技术,实时跟踪和显示手术器械和患者解剖结构的位置和姿态,帮助外科医生进行精确的手术操作,比如CT和MRI图像等
-
Level of Autonomy 自主程度
- L0:无自动化
- L1:机器人完全按照用户指示操作
- L2:特定任务可以自动执行,这个过程中用户仅监督
-