闭卷回忆卡 · 第四章:轨迹规划
这页不是摘要,而是一组检索练习。先只看问题,必须开口说或落笔写;「看着熟」不算会。每张卡答完再展开核对。全章共 28 张卡(定义 7 / 结论 7 / 公式 7 / 陷阱 7),一轮约 40 分钟。
用法:遮住答案,在空白纸上写;写完再展开对照。标记号:✓ 能完整写出 / △ 有关键词但缺条件 / × 完全想不起。下一轮只重做 △ 与 ×。本章老师的取舍很明确:梯形速度曲线(LSPB)是重点,三次 / 五次是「解方程」的基础练习,样条「主要是理解思路」,姿态规划「原理要清楚、细节从简」。
A. 定义卡
A1 · 路径、轨迹、运动规划
用一句话写出三层各自“比上一层多了什么“,并给每种规划一个典型应用。
路径(path):机械手执行指定运动时必须跟随的点的轨迹——运动的纯几何描述,只回答「经过哪些点、连成什么形状」,不回答「何时经过、多快经过」。轨迹(trajectory):指定了时间律的路径——不仅包括几何路径,还包括沿路径每一点的速度与加速度;控制提出更高要求时还可把加加速度也包含进来(计算量与成本更高,只在必要时做)。运动规划(motion planning):在轨迹规划之上再加避障与轨迹优化(时间最短 / 损耗最小)——它是一个动态过程,整个运动过程中都在规划,因此还要考虑动力学。关系:路径 ⊂ 轨迹 ⊂ 运动规划。应用示例:直线焊缝(路径)→ 焊缝 + 恒速(轨迹)→ 焊缝 + 恒速 + 绕开工件(运动规划)。(定义 4.1.1–定义 4.1.3)
A2 · 运动律的两条硬约束
写出两条约束,并各说明它限制的是哪个物理量。
(一)执行器施加到关节的广义力不得违反饱和限制。 加速度最终由电机输出的力矩决定,而电机力矩有限——若设计的加速度超过电机能提供的力矩,运动律根本实现不了;速度同理,最大速度受功率限制。(二)不得激发结构的典型谐振模式。 控制信号本身含有频率成分,要避免它与结构本身的固有频率重叠;一旦重叠就激起共振,很大的振幅会损伤结构甚至导致失效。两条合起来 ⇒ 工程上最常用的要求是设计光滑的轨迹;而「光滑到什么程度」是可选的档位:位置连续 / 速度连续(加速度跳跃)→ 加速度连续 → 加加速度连续,档位越高对电机的要求反而越低(曲线越柔和,力矩与功率峰值越小),代价是计算量与成本上升。(定理 4.1.A)
A3 · 轨迹规划器的接口与用户可指定的参量
写出输入 / 输出,并列出四类可指定参量。
输入:路径描述、路径约束,以及由机械手动力学施加的约束。输出:按时间顺序给出的位置、速度和加速度值所构成的末端执行器轨迹(即底层伺服的参考输入)。接口的另一半:因为控制是在关节空间中完成的,还要用适当的逆运动学算法把操作空间的序列重构成关节变量的时间序列;若规划通过示教再现(第 6 章)进行,则对关节变量直接测量。四类可指定参量:① 极值点(最大速度点、最大加速度点);② 可能的中间点(为避障等目的设定);③ 插入点的几何基元(两点之间用直线、圆弧还是抛物线连接);④ 整个轨迹的时间,以及对特别感兴趣的点指定的速度与加速度。工业上的一条反直觉设计:一般不让用户指定总时间 ,而是让用户指定相对最大容许速度 / 最大加速度的百分比(如 30% / 50% / 80%)——因为时间给得太短,所需速度加速度会超出机械手的物理极限,设计必然失败。(轨迹规划算法的输入输出接口、定义 4.1.4)
A4 · 三次与五次多项式时间律
写出两者各需要几个约束、分别因为什么,并说明五次为什么放弃最优。
三次 :4 个系数需 4 个约束 = 初终位置 + 初终速度 (一般设为 0——「一般的初始肯定是从零开始加速,终止完成任务一般也是回到零的」)。导数是抛物线形式的速度曲线与线性形式的加速度曲线。五次 :若还要同时指定初始与最终的加速度,约束增加到 6 个 ⇒ 至少需要五阶;系数由 与 处对 及前两阶导数的 6 个条件解出。代价:选五次等于放弃对性能指标的最小化——「通过理论推导,如果想要能量消耗最小的话,它只能是三阶的一个多项式」。何况阶次越高,计算量越大、系数求解的数值精度也越低。(定理 4.2.A、定义 4.2.1、定义 4.2.2)
A5 · 梯形速度曲线(LSPB)与两条标准假设
写出运动分段、两条假设,以及“两条假设为什么这么选“。
指定一条梯形速度曲线:起始段为常值加速度、中段维持巡航速度、末段为常值减速度;对速度积分得位置轨迹——由一条直线段和在其两端分别连接到初始位置与最终位置的两段抛物线组成,因此又称抛物线混合(linear segments with parabolic blends,LSPB)。类比电梯拖动:先匀加速、再巡航、再匀减速,正好到零停下来。两条标准假设:① 初始速度与最终速度都为零;② 两个常加速度分段的时间长度相同(因此两段加速度等量),轨迹在 时刻关于平均值点 对称。为什么取相等:可以减少需要解的参数与方程——实际过程中这种计算可能要做千万次以上,「你节省一点计算的时间,累积起来就非常多了」。(定义 4.2.3)
A6 · 圆形路径的三要素与随体坐标系
写出三要素、圆心公式,以及随体坐标系怎么建。
三要素:圆轴的单位向量 、圆轴上一点的位置向量 、圆上一点的位置向量 。令 ,为使 不在轴上(圆不退化成一点)必有 ,此时圆心为
随体坐标系 :原点 与圆心重合;轴 沿 ;轴 沿向量 的方向;轴 按右手系选取。在参考坐标系中圆的参数表达式为 (),换到一般参考系即 ,其中 。为什么这样建:「如果在经过它自己圆心、然后有一个面跟圆弧面重合的坐标系里表示,这个角是非常简单的」。(定义 4.3.3)
A7 · 操作空间位置轨迹、弧长时间律与多段路径
写出解耦形式、 的分解,以及多段路径的参数表达式。
解耦:令 为路径作为弧长 的函数(几何),时间律由标量函数 描述(时间)——于是 ,其中 为路径在点 的切向量; 表示速度向量的数量(模),正负号取决于 沿 的方向。关键: 是一维标量,上述针对关节轨迹的生成技术全部可以使用(三次、梯形、样条都能直接套在 上)。多段路径:,其中 分段定义(在 前为 0、在 中由 连续变化到 、之后保持);微分得 。问题:两条不共线分段之间,路径点处一阶导数不连续,机械手将不得不停下来——这类允许松弛约束的点称为经由点(via point)。(定义 4.3.4、定义 4.3.5)
B. 结论卡
B1 · 为什么最小能量解恰好是三次多项式
写出被优化的方程与指标,并说明结论的适用范围为什么更宽。
模型:绕定轴转动的刚体,转动惯量 ,转动由电机力矩 提供;令 ,求解 ,服从条件 ,使性能指标 最小化。其解的形式为
即速度是二阶多项式 ⇒ 位置是三阶(三次)多项式、加速度是线性函数。适用范围更宽:上面的推导把问题简化成定轴转动、也不计摩擦;即使关节动力学不能这样描述(事实上绕关节轴的转动惯量本身是位形的函数),选择三阶多项式来生成关节轨迹仍然是有效解——只是系数不同。方法论提示:这个问题本身是泛函问题(变分法 / 现代控制理论里的同类内容),所以课程直接给结论。(定理 4.2.A)
B2 · 四条修正路线与各自保证到几阶连续
列出四条路线、各自补的两个约束与连续性。
| 路线 | 补的两个约束 | 保证的连续性 |
|---|---|---|
| ① 在路径点指定速度 | 用户给出 与 | 位置、速度连续 |
| ② 按规则计算速度 | 用相邻分段斜率的平均值定 (异号则取 0) | 位置、速度连续 |
| ③ 要求加速度连续(样条) | 速度连续 + 加速度连续 | 位置、速度、加速度连续 |
| ④ 低于三阶的多项式 + 抛物线混合 | 用梯形速度曲线的做法 | 位置、速度连续(加速度跳跃) |
小结:前两条可以保证位置的平滑连续、速度连续,但不能保证速度的平滑性(加速度有跳跃);只有样条能保证加速度连续。三条路线的代价各不相同:① 的代价是可能超调(中间点速度由用户自由指定,故轨迹可能越过该点再返回来);② 用斜率规则算速度就不再超调(异号处速度取 0);③ 的代价是计算量最高(要解 元方程组);④ 的代价是轨迹不经过路径点(只能从附近经过,此时应把路径点改称经由点)。(四条修正路线)
B3 · 为什么不用单个高阶多项式
写出五条缺点,并说明“出路“的阶数下限为什么是三次。
① 不可能指定起始速度和终点速度——所有自由度都被「过点」用光了;② 阶数增加时振动特性增加,可能导致机械手产生不自然的轨迹(一个 10 阶多项式经过 10 个点,其导数有 9 个极值点,实际运动中会出现震荡);③ 阶数增加时系数计算的数值精度降低(方程系统的矩阵维度变大);④ 约束方程系统求解繁难(耗费大量计算资源);⑤ 系数取决于所有指定的点——「只要其中某一个点变了,所有的量都得重新算」。
出路:改用一组适当数量、在路径点处彼此连续的低阶插值多项式;下限是三次——三次多项式在满足两端位置约束后还剩两个自由度,正好可以用来施加速度的连续性。(为什么不用单个高阶多项式、定义 4.2.5)
B4 · 样条的方程计数与两个虚拟点
写出方程数与未知数的差距,以及三种出路。
计数:中间点贡献 个方程、两端点贡献 6 个方程,共 个;而 个三次多项式只有 个未知系数——方程比未知数多 2,系统不能直接求解。多出来的这两个,正是「初始与最终加速度」这两个可以任意指定的条件。三种出路:① 让第一段和最后一段改用四阶多项式(5 个系数容纳 5 个约束)——但算法通常要求各段形式一致,不理想;② 只要求在部分时间内保持轨迹一致(工程近似);③ 引入两个虚拟点:对它们施加位置、速度和加速度的连续性约束,但不指定其实际位置(由于位置约束只考虑连续性,虚拟点定位在何处无关紧要)。引入后: 个三次多项式即 个未知数;方程侧为 ——未知数与方程数相等,解存在且唯一。(定理 4.2.G)
B5 · 样条的降维:为什么最终是一个三对角系统
写出三个步骤,并说明 与关节的关系。
第一步 利用三次多项式的二阶导数必为时间的线性函数:,;对时间两次积分后 只取决于 4 个未知数(两端的 与 )。第二步 借助 个位置指定值 + 位置连续性 + 加速度连续性,把未知数从 降到 ,再降到 (被消掉的 是虚拟点位置)。第三步 用唯一还没用上的速度连续性补齐:左侧多项式右端点的速度等于右侧多项式左端点的速度,恰给出 个方程 , 非奇异且具有三对角带结构(前向 + 后向计算即可)。最大红利: 对所有关节都一样——因为它只依赖指定的时间间隔 ,而所有关节的时间间隔相同;唯一随关节变化的只有右端项 (它与关节角度相关)。(定理 4.2.H)
B6 · 位置规划的两次“降维“
写出操作空间规划把几维问题化成一维的两处,以及由此得到的统一图景。
第一次降维(位置):几何归几何、时间归时间——(路径决定形状)+ (一个标量函数决定沿路径走多快)。第二次降维(姿态):旋转矩阵不能逐元素插值(正交性会被破坏),于是或用欧拉角三个标量分别插值、或用角和轴把姿态化为「绕一根固定轴转过的角度」——轴是常量,只规划一个标量 。统一图景:位置落在 、姿态落在 ,两次降维把六维操作空间规划变回一维标量规划,于是关节空间的方法(三次、梯形、样条)全部复用。代价:每个设定点都要过一次逆运动学(定义 2.10.1 的操作空间到关节空间),运算量非常大,因此要给生成序列的最大采样率设上限;工程上的对策是规划时采样率不高,但把它输入底层伺服控制系统时先做一次线性微小内插——这样提高了参考输入的更新频率,「对于增强系统的动态性能是有关键的」。(操作空间轨迹的两种生成方式、4.3.2)
B7 · 关节空间还是操作空间
写出两个空间各自的优势与麻烦,并给出那条贯穿全章的结论。
操作空间规划:任务本身就在操作空间中描述(末端要走直线、要绕开某个障碍物),最直观;而且避障必须在操作空间做——「在关节空间中,我们不知道障碍物在什么地方,很可能就撞上了」。关节空间规划:控制直接在关节上做,所以关节空间是基础(「其实咱们大部分篇幅也是讲关节空间的规划」),而且关节空间的方法都可以推广到操作空间。两个空间之间隔着正运动学的非线性:关节空间里的一条直线映射到操作空间就成了一条曲线,反之亦然。为什么不能只在操作空间做:① 奇异位形邻域——在奇异位形附近做逆运动学,求出的关节速度可能非常大;② 冗余自由度——逆解有无穷多个解,难以直接求解。此时宁可在关节空间指定路径。贯穿全章的结论:即使在操作空间中规划,最后也要把它转到关节空间中,得到关节变量的值,才能实现对机械手的控制。(4.1.4)
C. 公式卡
C1 · 三次多项式的系数方程组
写出四个方程,并说明例 4.2.B(,)的解与三张曲线的形状。
例 4.2.B: ⇒ ,、 ⇒ ,即
读图要点:位置平滑且连续;速度连续但不平滑( 与 两处各有一个折点);加速度在这两点上跳跃(从 0 跳到 ,再从 跳回 0)。这正是「位置 / 速度光滑、加速度跳跃」那一档的典型代表。通用解法:整个过程都是「解方程 / 待定系数法」——根据任务找约束(约束就是方程),再把系数解出来;方程多了就超定(提高阶次或改解析式形式),方程少了就多解(补优化约束或工程约束)。(定义 4.2.1、例 4.2.B)
C2 · 梯形速度曲线: 方程与加速度下界
写出 、衔接条件、二次方程、根与下界,并说明等号对应什么形状。
取 的根:,并以 指定加速度方向。等号的形状:下界取等号时轨迹不再有常值速度段,只剩加速段与减速段——速度曲线退化为三角形()。分段位置序列: 段 ;巡航段 ;末段 。代价:性能指标比最优(三次)情形增加 12.5%——「但是折中考虑,它更简单、计算速度更快、轨迹没那么复杂,最后也是可接受的」。(定理 4.2.C)
C3 · 指定巡航速度与它的约束区间
写出两条式子与区间,并说明两个端点各对应什么形状。
若除 外直接指定巡航速度 ,它须服从
由此得到的 同样代入 LSPB 的分段序列生成轨迹。两端取等号的几何含义:右边取等号相当于三角形(没有直线段);左边取等号相当于矩形(没有抛物线混合段)——但矩形在实际中不可能出现(「速度不可能在零时间内从零加速到某个速度」),所以左边必须是严格不等号。(定义 4.2.4)
C4 · 按规则计算路径点速度
写出分段斜率与速度规则,并说明它与“指定速度“的差别。
令 为时间区间 内分段的斜率,则
读法:前后两段斜率异号(路径在此折返,该点是极值点)⇒ 该点速度取 0;同号(路径继续朝一个方向)⇒ 取两段斜率的平均。全部速度确定之后,插值多项式的求解与「指定速度」路线完全相同。与路线①的差别:路线①的速度由用户自由指定、因此可能超调(在中间点速度不为零时会越过该点再返回来);路线②的速度由斜率规则算出,异号处取 0 ⇒ 不再超调。看数值才看得清:同一组路径点,路线① 指定 时轨迹会超过 ;路线② 在 处斜率由正转负 ⇒ 速度取 0 ⇒「到这点的情况下它就是 的,没有到高,到 就往回返」。(线性分段斜率定速度)
C5 · 直线与圆弧路径的速度 / 加速度
写出两组的 、 与 Frenet 分解,并说明直线为什么是退化情形。
直线(参数式 ):
——速度与加速度都沿直线方向,模分别由 、 给出。圆弧:
(其中 为圆半径, 为法线单位向量。)Frenet 标架三关系:、、。直线的退化: ⇒ 法线方向无从定义,直线路径上不能唯一地定义坐标系 ——这不是推导出错,而是直线作为路径基元的固有性质。(定理 4.3.B、定义 4.3.2)
C6 · 多段路径与时间超前
写出 的分段定义与超前量的递归关系,并说明为什么需要它。
多段路径的弧长分量分段定义为:在 时为 0、在 时由 从 0 连续变化到 、在 时保持该值;于是 、。时间超前:在弧长规划中使用梯形速度曲线时,只要适当预测单个分段的生成、赶在前一个分段的计算完成之前就足够了;这带来对 的修正(在 区间内取 ),其中超前量按
递归估计——它等于前一分段已产生的时间超前加上当前分段开始的时间超前。为什么需要:如果每一段都等前一段算完再开始,整体时间就会被拖长(例 4.2.K:保守做法会让机械手在中间点「被强迫停在那里」——加速、匀速、减速到零、停住、再重新加速);用超前量做预测可以让关节仍到达最终点但不再保证在指定时刻穿越中间点( 点于是成了经由点),全局持续时间更短。老师提醒:这种规划没有考虑速度连续性,实际中要加抛线段做平滑过渡。(定理 4.3.D、例 4.2.K)
C7 · 角和轴法的姿态轨迹式
写出 、、 与回到基系的变换。
令 为初始 / 最终坐标系绕基系的旋转矩阵,两坐标系之间的旋转矩阵 ;当 时,
( 为 的元素——这不是新公式,它就是角和轴的逆解「取迹求角、反对称部分求轴」,即对数映射 )。矩阵 可视为 ,从而只需为标量 指定一个时间律(类型与单个关节的时间律相同,、)。因为 为常量:
为什么高明:「这个轴是固定的、不变的,那我们只要规划 就可以了——相当于把它变成一个一维的问题。」(定理 4.3.F)
D. 陷阱卡(先指出错在哪,再给正确说法)
D1 · 「路径和轨迹是同义词」
差一个时间律。 路径是纯几何描述(经过哪些点、连成什么形状),轨迹是指定了时间律的路径(沿路径每一点的速度与加速度)。实操判据:写「轨迹」时必须能说出每点的速度或加速度从哪来——说不出就说明你手上只有一条路径。连带的错:把运动规划也当同义词——它还要加避障与轨迹优化,且是一个动态过程(整个运动过程中都在规划)。(定义 4.1.1–定义 4.1.3)
D2 · 「用户可以直接指定总时间 」
工业上一般不这么干。 原因是时间给得太短时,所需的速度与加速度就可能超过机械手的物理极限,设计必然失败。正确做法:让用户指定相对最大容许速度 / 最大加速度的百分比(如最大速度的 30% / 50% / 80%),从源头避开「运动周期太短 ⇒ 速度加速度过高」的失效。更一般的纪律:几何轨迹不可能由用户完全指定——只能指定少量参量(极值点、可能的中间点、插入点的几何基元、总时间与个别点的速度加速度),其余各点的运动律由规划算法按约束反解出来。(定义 4.1.4、4.1.3)
D3 · 「约束数不够就升阶、次数越高越好」
前半句对、后半句错。 约束与阶次必须匹配:三次有 4 个系数、所以只能给 4 个条件,任务一旦要求指定初终加速度就必须升到五次;但升阶有代价——选五次等于放弃对性能指标的最小化(「如果想要能量消耗最小的话,它只能是三阶的一个多项式」),而且阶次越高计算量越大、系数求解的数值精度越低。更进一步:点一多就不要用一个 阶多项式穿所有点(为什么不用单个高阶多项式 的五条缺点),而应改用一组低阶多项式首尾相接——下限是三次,因为三次在满足两端位置后还剩两个自由度,正好用来施加速度连续性。(定义 4.2.2、为什么不用单个高阶多项式)
D4 · 「 就是 」
错, 只是上界。 只在三角形极限(加速度取到 (4.7) 的下界、常值速度段消失)时才成立。一般情形下解出的 由 (4.6) 给出:,随指定的 增大而减小(加速度越大,加速段越短、巡航段越长)。更常见的两个错误:① 把 的符号写反——必须 ,否则 (4.6) 的根无意义;② 忘了 (4.7) 的加速度下界——根号内为负就无解。(定理 4.2.C)
D5 · 「样条和抛物线混合的区别只是阶数」
不是阶数问题,而是两处本质差别。 ① 连续性档位不同:样条保证位置、速度、加速度都连续;抛物线混合的线性内插容忍加速度的不连续(位置、速度连续)。② 是否经过路径点不同:样条经过每个指定点;抛物线混合的轨迹不达到路径点中的任何一个,而是从附近经过——此时把路径点称为经由点(via point)更合适。混合加速度越大,通路与经由点越接近;混合时间越短,越贴近经由点,但以更高的加速度为代价(「在更短的时间内完成从一个速度到另一个速度的过渡,就需要更大的加速度」)。工业上的选择:当不要求轨迹恰在指定瞬时从经由点附近经过时,用梯形速度曲线开发轨迹规划算法就很有吸引力——因为足够简单。(定义 4.2.7、例 4.2.J)
D6 · 「 是个向量」
错, 是标量(速度的模)。 在 里,方向由切向量 承担; 表示与点 有关的速度向量的数量,其正负号取决于 沿 的方向。连带的错:算圆弧加速度时漏掉向心项——圆弧上 ,两项缺一不可:向心项只改方向、切向项只改大小。(定义 4.3.4、定理 4.3.B)
D7 · 「多段路径会自动在路径点处平滑过渡」
不会。 因为两条不共线分段之间,路径点处一阶导数不连续,机械手将不得不停下来,然后再沿下一个分段的方向前进。两条对策:① 用经由点(抛物线混合「削角」把分段连起来,至少保证一阶导数连续);② 用时间超前避免全局时间被拉长(——在前一段完成前就启动下一段)。但要清楚时间超前的代价:「咱们这个规划没有考虑速度连续性,就是从一段到另一段,它是不是平滑过渡的(不是)……实际过程中还需要加一个抛线段来进行平滑过渡,或者进行提前的规划。」(定义 4.3.5、定理 4.3.D)
导出到 Anki / CSV
- 建卡组与录入:Anki → 新建卡组「ROBOT-第 4 章」(与「ROBOT-全书」并列,勿混入默认卡组);正面放「编号 + 题干」、背面放「核对答案 + 依据([@def-…] / 章节链接)」,纯文本导入用
Tab分隔正反面、一行一张(本页 28 张按 A1–A7 / B1–B7 / C1–C7 / D1–D7 顺序录入)。 - 复习节点(1 / 3 / 7 天):当天 → 第 1 天(隔天)→ 第 3 天 → 第 7 天,共四轮,每轮只重做标 △ 与 × 的卡;四轮后仍未「✓」的卡,抄进 errata.md 的待核实条目或自己的薄弱点清单单独跟踪。
- 加一道保险:C1(三次多项式四方程)与 C2(LSPB 的 方程与下界)必须能手写默写,并各配一个数值实例——例如取 各走一遍三次、再走一遍 LSPB 与三角形极限;弧类内容请手绘一个圆弧 + Frenet 标架( 三向量与半径 ),并把「 就是向心加速度方向」标注上去。