3、B样条曲线核心概念:节点向量、控制点、基函数、阶数与连续性
B样条曲线是轨迹规划领域最核心的数学工具之一,它通过一组控制点与基函数的线性组合,生成一条光滑且局部可控的参数曲线。与贝塞尔曲线相比,B样条曲线在保持高阶连续性的同时,允许对曲线局部进行精细调整而不影响全局形状,这一特性使其在机器人路径规划、自动驾驶轨迹生成、数控加工刀具路径设计等场景中占据主导地位。要真正掌握B样条曲线的工程应用,必须透彻理解五个相互关联的核心概念:节点向量(Knot Vector)、控制点(Control Points)、基函数(Basis Functions)、阶数(Degree/Order)以及连续性(Continuity)。这五个概念并非孤立存在,而是通过数学公式紧密耦合,共同决定了曲线的几何形状与参数化质量。本章将逐一拆解这些概念的内在逻辑,并结合轨迹规划中的实际约束,给出可操作的判断方法与工程建议。
上图展示了B样条曲线五个核心概念之间的逻辑关系。节点向量定义了参数域的分割方式,控制点提供了几何形状的“把手”,基函数则建立了参数u到控制点权重的映射,阶数决定了基函数的多项式次数与局部支撑范围,而连续性则描述了曲线在节点处的光滑程度。在轨迹规划中,这五个要素的选取直接决定了生成路径是否满足运动学约束(如最大加速度、加加速度限制)以及是否具备足够的灵活性来避开障碍物。下面我们将逐一深入剖析每个概念的本质与工程应用。
3.1 节点向量:参数域的骨架
核心原理:节点向量是一个非递减的实数序列 U = [u₀, u₁, ..., uₘ],其中 m = n + p + 1(n为控制点数量,p为阶数)。它将参数区间 [u₀, uₘ] 划分为若干子区间,每个子区间对应一段多项式曲线。节点向量的分布方式决定了B样条曲线的参数化特性:均匀节点向量(如 [0,1,2,3,4])使曲线在参数域上等距分布,但几何形状可能不均匀;非均匀节点向量(如 [0,0,0,1,2,3,3,3])则允许在特定区域集中更多曲线段,从而增强局部控制能力。在轨迹规划中,节点向量的选择直接影响曲线对时间参数的响应——如果节点分布与期望速度曲线不匹配,可能导致轨迹在时间轴上出现不必要的波动。
判断方法:工程实践中,节点向量的构造通常遵循以下流程:
- 确定控制点数量 n 与阶数 p,计算节点总数 m+1 = n+p+2。
- 根据边界条件(如起点/终点位置、速度、加速度约束)设置重复节点。例如,要求曲线通过首尾控制点时,需在节点向量两端各重复 p+1 次节点值。
- 内部节点可根据路径复杂度均匀分布,或根据障碍物密度、曲率变化需求进行非均匀加密。
- 检查节点向量是否满足非递减且最大重复度不超过 p+1 的合法性条件。
| 节点向量类型 | 示例 | 特点 | 适用场景 |
|---|---|---|---|
| 均匀节点 | [0,1,2,3,4] | 参数等距,计算简单 | 形状较平滑的路径 |
| 准均匀节点 | [0,0,0,1,2,3,3,3] | 两端重复,曲线通过首尾点 | 需要严格经过起终点的轨迹 |
| 非均匀节点 | [0,0,0,0.2,0.5,1,1,1] | 局部加密,灵活控制 | 复杂环境避障、曲率突变段 |
| 贝塞尔端点节点 | [0,...,0,1,...,1] | 仅两个不同节点值 | 退化为贝塞尔曲线 |
常见误区:初学者常将节点向量与控制点混淆,认为节点位置就是曲线经过的点。实际上,节点向量是参数域的分割点,与几何坐标无关。另一个误区是忽略节点重复度对连续性的影响——节点重复度 r 每增加1,曲线在该节点处的连续性阶数就降低1(C^(p-r))。若在内部节点重复度达到 p,则曲线在该点仅保持 C⁰ 连续(位置连续但切线不连续),这在轨迹规划中通常需要避免,因为会导致加速度突变。
3.2 控制点:几何形状的操纵杆
核心原理:控制点 Pᵢ(i=0,1,...,n)是定义B样条曲线形状的几何点集。曲线并不一定经过控制点(除非使用插值型B样条),而是通过基函数加权组合逼近控制多边形。控制点的数量直接决定了曲线的自由度:控制点越多,曲线越能拟合复杂形状,但也会增加计算负担和振荡风险。在轨迹规划中,控制点通常由路径规划算法(如A*、RRT*)生成的离散路径点转换而来,或通过优化算法直接求解得到。
操作流程:将离散路径点转换为B样条控制点,常用方法包括:
- 全局插值法:构造线性方程组,使曲线精确通过所有数据点。适用于数据点较少且需要严格经过的场景。
- 最小二乘逼近法:在数据点较多或存在噪声时,通过最小化误差平方和求解控制点,获得平滑逼近曲线。
- 直接优化法:将控制点作为优化变量,结合障碍物距离、曲率限制、动力学可行性等目标函数进行求解。
案例拆解:假设移动机器人在仓库中规划路径,初始A*算法给出10个离散路径点(含起点与终点)。采用三阶B样条(p=3),控制点数量 n=10,节点向量构造为 [0,0,0,0,1,2,3,4,5,6,7,7,7,7]。通过全局插值法求解控制点,得到的B样条曲线在起点和终点处与路径点重合,且内部路径点处切线连续。但仿真发现,在第二个路径点附近曲率过大,导致机器人转向时加速度超限。解决方案:在该路径点附近增加一个控制点(n=11),并调整节点向量,使曲线在该区域获得更多弯曲自由度,最终曲率峰值降低了32%,满足动力学约束。
3.3 基函数:局部支撑的权重分配器
核心原理:B样条基函数 Nᵢₚ(u) 由Cox-de Boor递推公式定义,具有局部支撑性——每个基函数仅在参数域的一个局部区间内非零。这一特性是B样条曲线局部可控的根本原因:移动一个控制点,只影响曲线在对应参数区间内的形状,不影响全局。基函数的递推公式为:
Nᵢ₀(u) = 1, 若 uᵢ ≤ u < uᵢ₊₁;否则为0
Nᵢₚ(u) = (u - uᵢ)/(uᵢ₊ₚ - uᵢ) · Nᵢ,ₚ₋₁(u) + (uᵢ₊ₚ₊₁ - u)/(uᵢ₊ₚ₊₁ - uᵢ₊₁) · Nᵢ₊₁,ₚ₋₁(u)
基函数的性质包括:非负性、权性(所有基函数之和为1)、局部支撑性(支撑区间为 [uᵢ, uᵢ₊ₚ₊₁])。在轨迹规划中,基函数的局部支撑性意味着我们可以对轨迹的某个局部段进行微调,而不影响其他部分——这是B样条相比贝塞尔曲线的核心优势。
判断方法:评估基函数对轨迹规划的影响,主要关注以下指标:
- 支撑区间长度:p+1个节点区间,决定了控制点的影响范围。
- 峰值位置:基函数峰值出现在参数 u ≈ (uᵢ + uᵢ₊ₚ₊₁)/2 附近,影响控制点对曲线形状的“拉动”效果。
- 重叠程度:相邻基函数的重叠区域决定了控制点之间的耦合强度。
3.4 阶数与连续性:光滑性的数学度量
核心原理:阶数 p 是基函数的多项式次数,决定了曲线的最高导数阶数。连续性 Cᵏ 描述了曲线在节点处的光滑程度,k 表示 k 阶导数连续。对于B样条曲线,在节点 uᵢ 处(重复度为 r),连续性为 C^(p-r)。这意味着:若节点无重复(r=1),则曲线在该点保持 C^(p-1) 连续;若节点重复度 r=p,则仅保持 C⁰ 连续(位置连续)。在轨迹规划中,通常要求轨迹至少 C² 连续(加速度连续),以避免执行机构产生冲击。
操作流程:根据轨迹规划需求确定阶数与连续性:
- 明确运动学约束:若执行器对加加速度(jerk)敏感,需保证 C³ 连续,则选择 p≥4 且内部节点无重复。
- 确定控制点数量:n = m - p - 1,其中 m+1 为节点总数。
- 设置边界条件:在起点和终点处,通过重复节点(重复度 p+1)强制曲线经过端点,并可通过调整节点值控制端点处的导数。
- 验证连续性:计算节点处的导数阶数,确保满足设计要求。
| 阶数 p | 内部节点无重复时连续性 | 典型应用 | 计算复杂度 |
|---|---|---|---|
| 2(二次) | C¹ | 简单路径预览 | 低 |
| 3(三次) | C² | 移动机器人轨迹 | 中 |
| 5(五次) | C⁴ | 高速自动驾驶、飞行器 | 高 |
| 7(七次) | C⁶ | 高精度数控加工 | 很高 |
案例拆解:某自动驾驶项目要求轨迹在换道场景中满足 C³ 连续(加加速度连续),以提升乘客舒适度。设计采用五次B样条(p=5),节点向量为 [0,0,0,0,0,0,1,2,3,4,4,4,4,4,4],内部节点无重复。此时曲线在内部节点处保持 C⁴ 连续,远超 C³ 要求。但仿真发现,在节点 u=2 附近,由于控制点分布不均,曲率出现局部尖峰。通过调整该节点附近的控制点位置(将第5个控制点向内侧移动0.3m),曲率峰值从 0.12 m⁻¹ 降至 0.08 m⁻¹,同时保持连续性不变。该调整仅影响了 u∈[1,3] 区间内的曲线形状,验证了局部支撑性的工程价值。