关节空间的算法回答的是「关节怎么动」;从这一节开始,问题换成操作空间的问法:「末端要沿一条给定的几何曲线走」。几何曲线得先能被解析地写出来——这类基本曲线就是路径基元。本节先把任意路径参数化(参数 σ 与弧长 s),再引入随曲线走的三个单位向量(切向 / 法向 / 副法向),最后落实到两种最常用的基元:直线与圆弧。录播 1:57:28–2:14:03。
关节空间的轨迹规划算法生成 q(t) 的时间序列,把机械手从初始位形带到最终位形(沿途经过一系列中间位形)。但正运动学是非线性的,末端执行器的运动不易预测(2:00:00)。所以,如果希望末端遵循在操作空间中用几何方法指定的路径,就必须在同一空间中规划:
操作空间轨迹的两种生成方式(教材 §4.3)
- 内插一个规定的路径点序列:不需要精确遵循路径时,只需指定 N 个点 xk(xe 是六维量:3 位置 + 3 姿态),点与点之间用光滑内插函数过渡(把 4.2.2 的方法逐分量套用);
- 按时间生成分析运动基元:需要精确遵循路径时,则要把路径解析地表示出来,并分别定义运动基元(表达路径的几何特性)与时间基元(表达路径自身的时间律)。
落地时还有两个工程要点(2:00:00、教材 §4.3):
- 采样率上限:操作空间的轨迹生成与逆运动学计算叠加在一起,运算量非常大,因此要给生成序列的最大采样率设一个上限——采样率不能太大,否则「太大的话计算就计算不过来了」;
- 线性微小内插:实际做法是:规划时采样率不高,但把它输入底层伺服控制系统时先做一次线性微小内插——在相邻两点之间再插一个点。这样提高了参考输入的更新频率,「对于增强系统的动态性能是有关键的」。
定义 4.3.1 · 路径的参数表示与弧长参数化
令 p 为 (3×1) 向量,f(σ) 为定义在区间 [σi,σf] 上的连续向量函数。考虑方程
p=f(σ).(4.31)
随着 σ 在区间上变化,p 的取值序列称为空间路径,σ 称为参数。σ 增大时,p 沿给定方向在路径上移动,该方向称为由 (4.31) 导出的路径方向。若终点与起点重合,即 p(σf)=p(σi),路径是闭的;否则是开的。
弧长参数化:令 pl 为方向固定的开路径 Γ 上的一点,s 为一般点 p 的弧长。若 p 在 pl 之后,s 为 Γ 上连接 p 与 pl 的弧的长度;若 p 在 pl 之前,s 取相反值。pl 称为弧长的起点(s=0)。于是每个 s 都对应着唯一的路径点,弧长也就可以充当路径的参数:
p=f(s).(4.32)
一般路径用参数 σ 表示即可;弧长 s 则是更「自然」的参数——它把参数增量与几何长度绑在一起,后面规划时间律 s(t) 时正要以它为落脚点。
定理 4.3.A · Frenet 标架:三个单位向量与弧长的关系
除特殊情形外,路径上相应于弧长 s 的点 p 处,可以定义 3 个表征路径的单位向量:它们所在的直线只由路径几何决定,而向量的正负指向还取决于路径方向:
- 切线单位向量 t:指向沿 s 导出的路径方向;
- 法线单位向量 n:沿过 p 且与 t 垂直的直线,位于密切平面(p′→p 时包含 t 与 p′ 的平面所趋于的极限平面)内;它的正负指向由「使路径 Γ 位于 n 的同一侧」确定;
- 副法线单位向量 b:与前两者一起使 (t,n,b) 构成右手系。
三者与路径表达式之间有如下简单关系:
t=dsdp,n=ds2d2pds2d2p,b=t×n.(4.33)
证明的两个关键落点(老师课堂口述,2:06:38–2:08:08)
① t=dp/ds 为什么是切向单位向量。 从物理直觉迁移过来:速度方向的单位向量就是「速度除以速度的模长」,
∥p˙∥p˙=dsdps˙dsdps˙=∥dp/ds∥dp/ds,
而 ds/dt=s˙ 只是一个标量,可以约掉——于是 dp/ds 本身就是单位向量(弧长参数化下切向量自动归一),方向也与速度一致。
② n 为什么是 d2p/ds2 的方向。 t 是单位向量,故 tTt=1;两边对 s 求导,得 tTdsdt=0——这说明 dsdt=ds2d2p 与 t 正交。于是取它的方向、再除以自身的模长,就得到单位向量 n。几何含义:n 指向曲线凹侧,也就是向心加速度的方向(2:14:00)。
□
定义 4.3.2 · 直线路径
考虑连接 pl 与 pf 的线段,路径的参数表达式为
p(s)=pl+∥pf−pl∥s(pf−pl).(4.34)
注意 p(0)=pl、p(∥pf−pl∥)=pf,可见由 (4.34) 导出的路径方向正是从 pl 指向 pf。对 s 求导:
dsdp=∥pf−pl∥1(pf−pl),(4.35)
ds2d2p=0.(4.36)
退化提示:二阶导数为零,法线方向便无从定义——直线路径上不能唯一地定义坐标系 (t,n,b)(2:10:01)。这不是推导出了错,而是直线作为路径基元的固有性质。
圆比直线复杂,但有一条捷径:「如果在经过它自己圆心、然后有一个面跟圆弧面重合的坐标系里表示,这个角是非常简单的」——这用的其实就是初中平面几何的知识(2:10:32)。
定义 4.3.3 · 圆形路径
参数:圆轴的单位向量 r、圆轴上一点的位置向量 d、圆上一点的位置向量 pl(图 4.12)。令
δ=pl−d.
为使 pl 不在轴上(即圆不退化成一点),必有
∣δTr∣<∥δ∥.
在此情形下,圆心的位置向量为
c=d+(δTr)r.(4.37)
随体坐标系 o′−x′y′z′:原点 o′ 与圆心重合;轴 z′ 沿 r 方向;轴 x′ 沿向量 pl−c 的方向;轴 y′ 按右手系选取。在参考坐标系中,圆的参数表达式为
p′(s)=ρcos(s/ρ)ρsin(s/ρ)0,ρ=∥pl−c∥(4.38)
(已假定 pl 为弧长的起点)。换到一般参考坐标系 o−xyz:
p(s)=c+Rp′(s),R=[x′ y′ z′](4.39)
其中 R 为坐标系 o′−x′y′z′ 相对 o−xyz 的旋转矩阵(其列为各轴单位向量在 o−xyz 中的表示)。对 s 求导:
dsdp=R−sin(s/ρ) cos(s/ρ)0,ds2d2p=R−cos(s/ρ)/ρ−sin(s/ρ)/ρ0.(4.40,4.41)
Frenet 标架与圆弧三要素(本教程绘):左图的 t,n,b 是后面所有操作空间轨迹的局部坐标架;右图的 c=d+(δTr)r 把「圆心在哪」变成一次投影——圆心就是轴上点 d 沿轴方向「挪」到与 pl 垂直的位置。
考点 · 老师原话(录播时间点)
圆弧要在随体坐标系里写。 「我们表示这个圆弧,如果在经过它自己圆心、然后有一个面跟圆弧面重合的坐标系里表示这个角是非常简单的——这是咱们初中平面几何就知道的知识」(2:10:32)。考试/作业里推圆弧轨迹,第一步就是把随体坐标系建出来。
法向向量就是向心加速度方向。 「二阶对 s 求二阶导数,就是法向单位向量,或者是向心加速度的方向,它一定是沿着半径的一条线」(2:13:56)。
直线是退化情形。 「因为法线方向的向量是零,证明这个直线它是没有向心加速度的方向……这种情况下就不能唯一地来定义这个坐标系」(2:10:01)。
采样率与线性内插。 「实际应用过程中有一个最大采样率的限制……输入给底层伺服控制系统的时候,我们可以进行一个微小的线性内插,相当于提高了底层控制参考输入的更新频率,这对于增强系统的动态性能是有关键的」(2:00:02)。
默写点 · 合上书再写(主动回忆)
先不翻正文与速查表,凭记忆写出下面几条,再展开核对。写不出来,就说明这一节还没真正「拿走」。
- 写出 Frenet 标架三个单位向量与 s 的关系 (4.33),并说明 n 的几何含义。
- 写出直线路径的 p(s) 与 d2p/ds2;直线为什么不能唯一定义 (t,n,b)?
- 写出圆心公式 c=d+(δTr)r 与退化条件。
核对
t=dp/ds;n=∥d2p/ds2∥d2p/ds2;b=t×n。n 指向曲线凹侧,即向心加速度方向(tTt=1 求导 ⇒ d2p/ds2⊥t)。
p(s)=pl+∥pf−pl∥s(pf−pl);ds2d2p=0。二阶导为零 ⇒ 法线方向无定义 ⇒ 坐标系 (t,n,b) 不唯一。
c=d+(δTr)r,其中 δ=pl−d;退化条件 ∣δTr∣<∥δ∥(否则 pl 落在轴上,圆退化为一点)。
- 一条主线:操作空间规划要先有解析路径(操作空间轨迹的两种生成方式 的两条生成方式)⇒ 路径参数化(σ 或弧长 s)⇒ Frenet 标架 (t,n,b) ⇒ 两种最常用基元:直线(退化、无 n)与圆弧(随体坐标系 + 圆心投影公式)。
- 一个技巧:圆弧的圆心 = 轴上点沿轴方向投影到过 pl 的垂面——c=d+(δTr)r。
- 一句话:「一般路径用参数 σ 就够了;一旦要规划时间律,就换到弧长 s——因为 s 的增量就是走过的几何长度。」
常见错误清单 · 自查三条
- 把参数 σ 当弧长:一般参数下 ∥dp/dσ∥=1,t 必须再归一化;只有弧长参数化才有 t=dp/ds。
- 忘了退化条件:算圆弧前先检查 ∣δTr∣<∥δ∥,否则圆心公式给出的「圆」是一个点。
- R 的列写错:R=[x′ y′ z′] 是随体坐标系三轴在基系中的表示,不是把基系轴写进随体系——2.2.2 的上下标约定在这里最容易翻车。