想象你是一家智能仓储公司的路线维护员。规划算法给机器人画出一条路径:它像在方格纸上走出的楼梯锯齿,每一步都要急转弯,还时不时绕一段冤枉路。如果直接让搬运小车照着跑,小车每到一个拐角就要猛打方向盘,不仅晃得厉害,轮子磨损也快。此时你要做的,就像经验丰富的修路师傅:把这条“石头台阶路”重新铺成一条平缓的公路,让车能顺顺畅畅地沿着中心线开过去。 修路师傅手里有几样工具:一根柔韧的钢尺样条用来穿过所有标记点,几段可局部调整的柔性杆用来只修一小段,还有一套“弹簧加路障”的平衡术用来在安全边界内拉直路线。它们对应着运动规划中的三类路径平滑策略:样条插值、B样条拟合、数值优化。路径平滑要做的事情,就是消除规划器输出中的尖角与冗余,在“平滑”“贴近原路径”“避开障碍”之间找到平衡,最终让跟踪控制器更容易执行。

岗位关联

对 AI 从业者来说,路径平滑是让规划算法从“能到”变为“开得稳”的关键一环。无论是在机器人、自动驾驶还是无人机系统中,掌握平滑策略与选型方法,是算法落地的必备技能。

目录
  1. 可视化演示
  2. 问题缘起:尖角与冗余
  3. 样条插值:让路径穿过关键点
  4. B样条拟合:局部调控曲线
  5. 数值优化:约束下的平衡
  6. 平滑评估:如何才算“平滑”
  7. 实践选型:按场景选方法
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

通过原始折线与平滑路径对比、Catmull-Rom样条拟合过程、以及曲率分布分析,展示路径平滑如何消除尖角冗余提升跟踪控制精度。

本节配有交互动效(进入视口后自动加载,约 3KB)。

原始折线与平滑路径对比 RRT/A*输出离散waypoints形成尖角折线路径 样条平滑后路径连续曲率无突变 C2连续=位置+速度+加速度连续 平滑路径保证跟踪器速度平滑变化

问题缘起:尖角与冗余

拿到一张网格地图时,基于栅格或拓扑搜索的规划器往往会给出“踏步式”路径:直行一段、转弯九十度、再直行,偶尔还夹杂着为了绕开一个栅格而出现的来回冗余。你可以把它想成老城区里用石板错落铺成的台阶路,人走没问题,但让带轮子的搬运车走,每个台阶都会让车头猛地一摆。

路径平滑是运动规划的一步“后处理”:输入是几何路径点,输出是更适合跟踪控制器执行的平滑曲线。它要处理两类核心问题:一类是尖角,也就是路径上曲率过大甚至趋于无穷大的折点;另一类是冗余,也就是不必要的抖动、锯齿和绕圈。平滑的目标不是简单“把路拉直”,而是在保持原路径意图的前提下,降低尖角、去除抖动,并控制与原路径的偏差。

曲率是衡量尖角程度的天然指标。假设路径参数化为 \(x(s), y(s)\),点沿路径的切向变化越剧烈,曲率就越大。

直线段上曲率为零,圆弧半径为 \(r\) 时曲率为 \(1/r\),而直角折点处方向会在瞬间改变,曲率趋近于无穷大。修路时第一件事不是画线,而是先判断哪些尖角必须拆掉,哪些冗余弯道可以抹平。

对跟踪控制器来说,曲率越大,需要的横向加速度就越大;一旦超过车辆物理极限,实际轨迹就会偏离规划路径。因此,路径平滑首先要回答的问题就是:这条路最急的弯在哪里,它是否在车能承受的范围内。

κ=∣x′y′′−y′x′′∣(x′2+y′2)3/2\displaystyle \kappa = \frac{|x' y'' - y' x''|}{(x'^2 + y'^2)^{3/2}}
  1. 一阶导数这里的 \(x'\)、\(y'\) 表示路径在该点的速度方向,相当于车头当前的朝向。
    (x′,y′)=(dxds,dyds)(x', y') = \left(\frac{dx}{ds}, \frac{dy}{ds}\right)
  2. 二阶导数\(x''\)、\(y''\) 表示方向变化的快慢,对应司机打方向盘的速度。
    (x′′,y′′)=(d2xds2,d2yds2)(x'', y'') = \left(\frac{d^2x}{ds^2}, \frac{d^2y}{ds^2}\right)
  3. 交叉项分子\(|x'y'' - y'x''|\) 把位置变化与方向变化交叉起来,度量“转弯有多急”。
    ∣x′y′′−y′x′′∣|x'y'' - y'x''|
  4. 速度归一化分母\((x'^2 + y'^2)^{3/2}\) 是速度大小的三次方,用来消除车速对曲率的影响。
    (x′2+y′2)3/2(x'^2 + y'^2)^{3/2}

样条插值:让路径穿过关键点

老修路师傅手里有一根弹性很好的钢制样条。他把木桩钉在地上,钢条被迫弯曲,结果会给出一条柔和的曲线,并且精确地穿过每一根木桩。样条插值做的事情正是如此:构造一条曲线,让它严格经过所有给定的路径点。

工程中最常用的是三次样条。它把路径分成若干小区间,每个区间用一条三次多项式曲线表示,同时要求相邻区间在连接点处不仅位置一致,切线方向甚至曲率也保持一致。这样拼出来的曲线整体连续、平滑,又不会像高次多项式那样随意摆动。

三次样条能够保证 \(C^2\) 连续,也就是位置、切线和曲率都连续,这是它受欢迎的重要原因。但它也有一个“强求”的缺点:因为曲线必须穿过每个点,如果某个路径点是噪声或冗余点,曲线就会被迫拐一个不自然的弯。而且样条是全局求解的,移动一个木桩,整根钢条的形状都会发生变化。这就像修路时如果硬要穿过每一块凸起的石头,路面反而会起伏不平。

S(x)=ai+bi(x−xi)+ci(x−xi)2+di(x−xi)3,x∈[xi,xi+1]\displaystyle S(x)=a_i + b_i(x-x_i) + c_i(x-x_i)^2 + d_i(x-x_i)^3, \quad x \in [x_i, x_{i+1}]
  1. 每段起点高度\(a_i\) 是第 \(i\) 段曲线在左端点 \(x_i\) 处的取值,也就是该处的路径点位置。
    ai=S(xi)a_i = S(x_i)
  2. 段内斜率\(b_i\) 是第 \(i\) 段在起点的切线斜率,决定了曲线刚进入该区间时的走向。
    bi=S′(xi)b_i = S'(x_i)
  3. 曲率相关项\(c_i\) 与二阶导数有关,控制曲线在该段内的弯曲程度。
    ci=12S′′(xi)c_i = \frac{1}{2}S''(x_i)
  4. 曲率变化率\(d_i\) 是三阶项系数,决定曲率沿路径的变化快慢,让曲线更加自然。
    di=16S′′′(xi)d_i = \frac{1}{6}S'''(x_i)
  5. 连接点连续条件相邻两段在公共点处满足位置、一阶导和二阶导连续。
    Si(xi+1)=Si+1(xi+1),Si′(xi+1)=Si+1′(xi+1)S_i(x_{i+1})=S_{i+1}(x_{i+1}), \quad S_i'(x_{i+1})=S_{i+1}'(x_{i+1})

B样条拟合:局部调控曲线

如果木桩太多太难伺候,师傅会换一种工具:不再用一根贯穿所有桩的钢条,而是用几段短柔性杆拼接,每一段只受附近几个控制桩的影响。拔掉其中一个桩,只有身边一小段曲线会变化,远处纹丝不动。这就是 B 样条的设计思路。

B 样条曲线由一组控制点 \(\mathbf{P}_i\) 和对应的基函数 \(N_{i,p}(u)\) 加权组合而成。控制点相当于修路时插在地面上的控制桩,曲线并不一定穿过它们,而是被它们“牵引”着走。因此 B 样条天然适合做拟合而非插值:面对大量带噪声的路径点时,可以让曲线从点群中间穿过,而不是勉强穿过每一个点。

在实际路径平滑中,节点向量可以预先确定,再通过最小二乘拟合求出控制点;也可以通过调节平滑因子控制曲线对原始路径点的“跟随程度”。B 样条兼顾了平滑性、局部性与计算效率,因此成为机器人运动规划后处理中最常用的工具之一。它相当于让修路师傅拥有了“哪里不平改哪里”的能力,而不必为了一个凸起重铺整条路。

C(u)=∑i=0nNi,p(u) Pi\displaystyle C(u)=\sum_{i=0}^{n} N_{i,p}(u)\,\mathbf{P}_i
  1. 参数变量\(u\) 是曲线的参数,通常归一化到 \([0,1]\),相当于沿路的里程读数。
    u∈[0,1]u \in [0, 1]
  2. 控制点\(\mathbf{P}_i\) 是第 \(i\) 个控制点的坐标,它牵引曲线,但不保证曲线经过它。
    Pi=(xi,yi)\mathbf{P}_i = (x_i, y_i)
  3. 基函数\(N_{i,p}(u)\) 是次数为 \(p\) 的 B 样条基函数,由节点向量递归定义。
    Ni,p(u)N_{i,p}(u)
  4. 局部支撑每个基函数只在相邻的 \(p+1\) 个区间内非零,所以移动一个控制点只影响局部。
    Ni,p(u)=0,u∉[ui,ui+p+1)N_{i,p}(u)=0,\quad u \notin [u_i, u_{i+p+1})
  5. 曲线求和把所有控制点按基函数权重叠加,得到曲线上每个参数位置对应的坐标。
    C(u)=∑i=0nNi,p(u) PiC(u) = \sum_{i=0}^{n} N_{i,p}(u)\,\mathbf{P}_i

数值优化:约束下的平衡

前面几种方法主要靠几何公式构造曲线,而数值优化提供了另一种思路:把路径平滑看成寻找一个“受力平衡”的位置。想象路径是一根有弹性的橡皮筋,它被弹簧拉向原始参考线,又被墙面和障碍物限制在安全区域内,反复松手后,橡皮筋最终停在一个既不过分偏离、又不碰到障碍的平衡位置。

数值优化把路径点当作决策变量,把“平滑程度”“路径长度”“与参考路径的偏差”等要求写成目标函数,再把“不能碰到障碍”“最大曲率不能超限”等写成约束条件。求解器通过迭代不断微调每个路径点的位置,直到满足条件且目标函数不再显著下降。

除了目标函数,实际工程通常还会加入约束,例如 \(\kappa_{\max}\) 不超过车辆转向极限,以及路径点必须在安全可行域内。这类带约束的二次规划或非线性优化问题,可以用梯度下降、增广拉格朗日、SQP 等迭代算法求解。数值优化的优点是“约束想加就加”,缺点是计算开销更大、参数需要仔细调。它适合在城市窄巷里修路——既要绕开墙,又不能为了平滑而跑到墙外去。

min⁡q  ∑i(α∥qi+1−qi∥2+β∥qi+1−2qi+qi−1∥2+γ∥qi−qiref∥2)\displaystyle \min_{\mathbf{q}} \; \sum_i \Big( \alpha \|\mathbf{q}_{i+1}-\mathbf{q}_i\|^2 + \beta \|\mathbf{q}_{i+1}-2\mathbf{q}_i+\mathbf{q}_{i-1}\|^2 + \gamma \|\mathbf{q}_i-\mathbf{q}_i^{ref}\|^2 \Big)
  1. 相邻点距离项\(\|\mathbf{q}_{i+1}-\mathbf{q}_i\|^2\) 惩罚相邻点之间的距离,相当于把橡皮筋拉紧,让路径更紧凑。
    ∥qi+1−qi∥2\|\mathbf{q}_{i+1}-\mathbf{q}_i\|^2
  2. 离散二阶导项\(\|\mathbf{q}_{i+1}-2\mathbf{q}_i+\mathbf{q}_{i-1}\|^2\) 衡量路径在局部是否“走直线”,值越小表示方向变化越平缓。
    ∥qi+1−2qi+qi−1∥2\|\mathbf{q}_{i+1}-2\mathbf{q}_i+\mathbf{q}_{i-1}\|^2
  3. 参考偏差项\(\|\mathbf{q}_i-\mathbf{q}_i^{ref}\|^2\) 让平滑后的路径不要离原始路径太远,防止修路修到别人院子里去。
    ∥qi−qiref∥2\|\mathbf{q}_i-\mathbf{q}_i^{ref}\|^2
  4. 权重系数\(\alpha, \beta, \gamma\) 分别控制路径长度、平滑程度和贴近原路径的优先级。
    α,β,γ>0\alpha, \beta, \gamma > 0

平滑评估:如何才算“平滑”

路修好了不能直接交工,验收时要检查三件事:最急的弯是否足够缓、路线偏离原勘测线是否在允许范围内、以及施工时间是否可接受。路径平滑的评估也类似,不能只看路径点是否连着,还要看曲率、偏差和计算开销。

一条“好看”的路径未必是曲率处处为零的直线,而应该是曲率连续、最大曲率有限、且整体没有突兀抖动的曲线。对于跟踪控制器来说,曲率连续尤其重要:如果曲率发生跳变,控制器就要在瞬间改变前轮转向指令,产生冲击和跟踪误差。因此,路径平滑质量常用曲率平方沿弧长的积分来衡量。

除了曲率能量,还需要关注与原路径的偏差包络:平滑后的路径不能离原始路径太远,否则可能压到障碍物或偏离任务走廊。工程上常用最大偏差 \(\max_s \|\mathbf{q}(s)-\mathbf{q}_{ref}(s)\|\) 来限定安全范围。此外,计算开销也是评估指标之一,尤其对于实时控制,平滑算法必须在几十毫秒内完成。验收一条路,弯道质量、边界安全、施工时效三者缺一不可。

Eκ=∫0Lκ(s)2 ds\displaystyle E_{\kappa}=\int_0^L \kappa(s)^2 \, \mathrm{d}s
  1. 弧长变量\(s\) 表示沿路径从起点走到终点的弧长,单位是米。
    0≤s≤L0 \le s \le L
  2. 局部曲率\(\kappa(s)\) 是位置 \(s\) 处的曲率,反映该点转弯有多急。
    κ(s)\kappa(s)
  3. 平方惩罚\(\kappa(s)^2\) 对大的曲率按平方放大,一个特别急的弯会比许多小弯更“扣分”。
    κ(s)2\kappa(s)^2
  4. 全路径积分从起点到终点积分,得到整条路径的曲率能量,数值越小说明整体越平滑。
    Eκ=∫0Lκ(s)2 dsE_{\kappa}=\int_0^L \kappa(s)^2 \, \mathrm{d}s

实践选型:按场景选方法

导航到不同工地,修路师傅会带不同工具:在开阔厂区修一条通道,用 B 样条局部调整就够;在障碍密集的狭窄巷道,则必须用数值优化把墙的约束直接放进计算。选型要先回答场景需求,再谈方法优劣。

样条插值适合路径点数量少、点位置准确且必须穿过的场景,比如机器人要依序经过几个固定工位;B 样条拟合适合路径点多、存在噪声、希望曲线平滑但不要求穿过每个点的场景;数值优化则适合带强约束的场景,比如汽车类机器人必须满足最大曲率限制,同时还要绕开障碍物。三者不是互斥的,也可以组合使用:先用 B 样条做快速平滑,再用优化做精细调整。

在实际项目中,跟踪控制精度与路径平滑质量直接相关:最大曲率越低、曲率越连续,控制器就越容易跟踪;反之,即使路径长度很短,一个过急的弯也会让车辆大幅偏离。建议先测量机器人的最小转弯半径和控制频率,再据此为平滑算法设定曲率上限。参数调优时,先固定一个平滑算法,再逐步调整权重,观察“平滑质量—路径偏差—计算耗时”三者之间的平衡,就像反复试铺一段路,直到车辆开上去又稳又不越界。

S=w1E^κ+w2E^dev+w3C^time\displaystyle S = w_1 \hat{E}_{\kappa} + w_2 \hat{E}_{dev} + w_3 \hat{C}_{time}
  1. 平滑得分项\(\hat{E}_{\kappa}\) 是归一化后的曲率能量,值越小表示路径越平滑。
    E^κ=EκEκmax\hat{E}_{\kappa}=\frac{E_{\kappa}}{E_{\kappa}^{max}}
  2. 偏差得分项\(\hat{E}_{dev}\) 是归一化后的最大路径偏差,控制与原路径的接近程度。
    E^dev=max⁡s∥q(s)−qref(s)∥Dmax\hat{E}_{dev}=\frac{\max_s \|\mathbf{q}(s)-\mathbf{q}_{ref}(s)\|}{D_{max}}
  3. 时间得分项\(\hat{C}_{time}\) 是归一化后的计算开销,越实时越好。
    C^time=TsolveTbudget\hat{C}_{time}=\frac{T_{solve}}{T_{budget}}
  4. 加权求和\(w_1, w_2, w_3\) 根据场景设定权重,形成最终选型评分 \(S\)。
    S=w1E^κ+w2E^dev+w3C^timeS = w_1 \hat{E}_{\kappa} + w_2 \hat{E}_{dev} + w_3 \hat{C}_{time}

AI 应用场景

智能仓储 AGV 路径后处理

阶段:运动规划后处理

解决的问题:栅格地图规划的路径充满 90 度折角和抖动,AGV 直接跟踪时频繁减速、打滑,且容易偏离目标。

具体案例:某电商仓库的潜伏式 AGV 在货架间运行,规划器输出几十个路径点。系统使用 B 样条拟合对路径做平滑,并将最大曲率限制在 0.4 rad/m 以内。平滑后 AGV 转弯不再急停,平均运行速度提升 20%,到位误差下降 35%。

自动驾驶局部路径平滑

阶段:局部路径规划

解决的问题:全局导航生成的参考线带有尖角,满足不了汽车运动学约束,必须重新优化出曲率连续且贴近参考线的可行驶路径。

具体案例:城市道路中,自动驾驶车辆检测到前方施工,变道路径经数值优化平滑后,最大曲率被限制在 0.08 rad/m,同时保留与障碍物的安全距离。车辆在变道过程中方向盘转角变化率显著降低,乘客体感更平顺。

无人机航迹平滑

阶段:航迹规划

解决的问题:无人机任务航点间用折线连接,飞行时因频繁转向导致姿态抖动和电量浪费。

具体案例:测绘无人机按固定航点飞行,系统用三次样条插值生成连续航迹,并对端点施加自然边界条件。航迹通过全部航点,曲率连续无突变,无人机在转弯处不再剧烈侧倾,单次任务续航提升约 12%。

Python 演示

python32 行
import numpy as npfrom scipy.interpolate import splprep, splev def build_smooth_path(points, smoothing=1.0):    pts = np.asarray(points, dtype=float).T    tck, _ = splprep(pts, s=smoothing, k=3)    u = np.linspace(0.0, 1.0, 200)    x, y = splev(u, tck)    return np.column_stack((x, y)) def path_curvature(path):    x = path[:, 0]    y = path[:, 1]    dx = np.gradient(x)    dy = np.gradient(y)    ddx = np.gradient(dx)    ddy = np.gradient(dy)    numerator = np.abs(dx * ddy - dy * ddx)    denominator = (dx * dx + dy * dy) ** 1.5    return numerator / np.maximum(denominator, 1e-12) def main():    raw = np.array([[0.0, 0.0], [1.0, 2.0], [2.0, 0.0],                    [3.0, 2.0], [4.0, 0.0]])    smooth = build_smooth_path(raw, smoothing=1.0)    curv = path_curvature(smooth)    print("平滑后点数:", len(smooth))    print("最大曲率:", round(float(np.max(curv)), 4))    print("起点:", smooth[0].round(3), "终点:", smooth[-1].round(3)) if __name__ == "__main__":    main()
目的:演示用三次 B 样条拟合离散路径点,并计算平滑后路径的曲率,直观地看到平滑前后路径的变化。
  1. tck, _ = splprep(pts, s=smoothing, k=3)用三次 B 样条拟合路径点,smoothing 控制平滑程度。
  2. x, y = splev(u, tck)在参数区间内均匀采样,生成平滑曲线的坐标点。
  3. numerator = np.abs(dx * ddy - dy * ddx)按曲率公式计算弯曲程度的分子部分。
  4. denominator = (dx * dx + dy * dy) ** 1.5用速度的立方做归一化,消除点密度影响。
  5. np.maximum(denominator, 1e-12)避免直线段处分母为零导致除零错误。

常见误区

误区既然是要消除尖角和冗余,那路径平滑的最佳结果就是一条从起点到终点的直线,路径越直越好。

正解平滑的目标是降低曲率、消除突变,而不是不惜代价拉直。真正修路时,直线可能穿过障碍物或超出车辆可达区域,所以平滑必须保留原路径的通行意图,同时控制与原路径的偏差。过度拉直会让路径严重偏离参考走廊,反而引发碰撞。

为何常见:因为“直线距离最短”的直觉太强,初学者容易把几何长度与平滑质量混为一谈。

误区样条插值能穿过所有路径点,误差为零,所以它一定优于不穿过点的 B 样条拟合。

正解路径点本身可能带噪声,插值把所有噪声都“认真对待”,甚至会在点与点之间甩出大波浪。拟合允许曲线从点群中穿过,牺牲少量贴合度,换来更稳定的平滑结果。路径平滑更关心全局可跟踪性,而不是让曲线精确经过每个原始点。

为何常见:人们习惯用“误差越小越好”评价算法,忽略了规划路径点并不是高精度测量值的现实。

误区B 样条曲线由控制点决定,那多加一些控制点,曲线应该会变得更平滑。

正解控制点越多,曲线越容易贴近每个控制点的细节,反而可能出现更多局部弯曲。真正决定平滑程度的是控制点的分布、曲线次数、平滑因子以及约束条件。就像路桩钉得越密,钢条反而更可能被顶出许多小鼓包。

为何常见:“点数多=信息多=质量好”的经验在其他场景成立,但在拟合问题中,过拟合同样会让形状变差。

误区只要路径看起来圆滑了,控制器就能完美跟踪,不需要考虑曲率连续性和物理极限。

正解如果路径只是视觉上圆滑,但曲率存在跳变,控制器仍会因转向指令突变而产生跟踪误差。对于汽车类机器人,还需要检查最大曲率是否小于最小转弯半径对应的曲率上限。平滑是为控制服务的,必须用控制端可接受的曲率指标来验收。

为何常见:可视化结果容易让人误以为“曲线很顺”,而几何平滑与运动学可执行之间存在本质差别。

面试题

Q1. 路径平滑最直接要解决的核心问题是?

单选题 · easy

  • A.把路径变直
  • B.消除尖角冗余← 正确答案
  • C.减少路径点数
  • D.增加控制精度

答案:B。路径平滑的核心是消除规划输出中的尖角与冗余抖动。把路径变直只是表象,减少点数也不是最终目的。增加控制精度更多是控制器和感知模块的任务,而不是路径平滑的直接目标。

Q2. 关于路径曲率,下列说法正确的是?

单选题 · easy

  • A.直线段曲率为零← 正确答案
  • B.直角处曲率为零
  • C.曲率越大越平滑
  • D.曲率仅与长度相关

答案:A。直线段方向不变,曲率为零。直角处方向骤然改变,曲率趋于无穷大。曲率越大说明转弯越急,路径越不光滑;曲率还依赖途经点的几何形态,不是只与长度相关。

Q3. 三次样条插值曲线的主要特点是?

单选题 · mid

  • A.不经过任何原始点
  • B.分段三次多项式拼接← 正确答案
  • C.只能处理直线路径
  • D.不需要端点条件

答案:B。三次样条在每个小区间用三次多项式表示,并保证连接点处位置、一阶导和二阶导连续,因此必须经过原始点。求解时需要端点条件才能唯一确定系数,并非只能处理直线路径。

Q4. B样条曲线相对插值方法的典型优势是?

单选题 · mid

  • A.计算速度必定更快
  • B.移动控制点只影响局部← 正确答案
  • C.必须穿过全部数据点
  • D.不依赖节点向量

答案:B。B 样条基函数具有局部支撑性,移动一个控制点只改变附近一段曲线,而插值方法往往全局联动。B 样条通常不要求穿过全部控制点,并且必须依赖节点向量定义,计算速度也不一定更快。

Q5. 数值优化平滑中的参考路径偏差项意义是?

单选题 · mid

  • A.使路径远离原路径
  • B.防止平滑后偏离太远← 正确答案
  • C.增大路径曲率
  • D.减少计算迭代次数

答案:B。偏差项把平滑后的路径“拉”向原始参考路径,防止为了平滑而把路修到安全走廊之外。它不会主动远离原路径,也不会增大曲率或缩短迭代时间。

Q6. 对车辆跟踪而言,最关注路径的哪级连续性?

单选题 · hard

  • A.仅点位置连续
  • B.切线方向连续
  • C.曲率连续可导← 正确答案
  • D.控制点数量连续

答案:C。位置连续是最低要求,切线连续可以保证方向不顺滑突变,但真实车辆还要求曲率连续,避免方向盘转角跳变。控制点数量与几何连续性无关,因此 C 最全面。

Q7. 汽车类机器人平滑路径必须满足的关键约束是?

单选题 · hard

  • A.最大曲率不超转向极限← 正确答案
  • B.路径颜色足够鲜艳
  • C.路径点数量是偶数
  • D.所有线段长度相等

答案:A。汽车有最小转弯半径,路径上任一点的曲率都不能超过对应的上限,否则实际车辆无法沿路径行驶。颜色、点数奇偶、线段等距都不是运动学层面的必要条件。

Q8. 典型路径平滑目标包含哪些?

多选题 · easy

  • A.降低最大曲率← 正确答案
  • B.消除冗余抖动← 正确答案
  • C.扩大障碍物体积
  • D.限定路径偏移量← 正确答案

答案:ABD。平滑目标包括降低最大曲率、消除冗余抖动,并让平滑路径保持在原路径附近的安全包络内。扩大障碍物体积不是平滑操作,而是膨胀地图的策略。

Q9. 选择路径平滑方法通常要考虑?

多选题 · mid

  • A.场景几何复杂度← 正确答案
  • B.实时计算开销← 正确答案
  • C.机器人转向能力← 正确答案
  • D.路径颜色美观度

答案:ABC。场景越复杂越需要带约束的优化方法;实时系统要求算法计算开销可控;机器人转向能力决定最大曲率约束。路径颜色与平滑质量无关,不应成为选型依据。

Q10. 关于路径平滑方法的评价,正确的有?

多选题 · hard

  • A.插值法可能引发多余摆动← 正确答案
  • B.B样条具有局部支撑性← 正确答案
  • C.优化法必须考虑约束← 正确答案
  • D.平滑程度越强越好

答案:ABC。插值法为了穿过所有点,在噪声点处容易产生摆动;B 样条基函数只在局部非零;优化法通过约束保证安全与运动学可行。平滑程度并非越强越好,过度平滑会造成大偏差甚至碰撞。