4、曲率约束原理:曲率定义与几何意义,最大曲率限制,曲率连续性要求。

各位好,我是老张。今天咱们聊聊路径规划里一个绕不开的话题——曲率约束。

说实话,我刚开始做路径规划那会儿,觉得只要路径能走通就行。结果呢?第一次实车测试,机器人原地打转,差点把货架撞翻。后来我才明白,没有曲率约束的路径,就像没有驾照的司机上路——迟早要出事。

4.1 曲率的定义与几何意义

先说说曲率到底是什么。你想想看,一条直线和一条弯道,区别在哪?

数学上,曲率 κ 定义为:

κ = 1 / R

其中 R 是曲线在该点的曲率半径。说白了,曲率就是曲线弯曲程度的度量。半径越小,曲率越大,弯越急。

举个例子:

  • 直线:R = ∞,κ = 0(不弯)
  • 大弯道:R = 10m,κ = 0.1(缓弯)
  • 急转弯:R = 1m,κ = 1.0(急弯)

我个人习惯用这个公式来理解:曲率就是单位弧长上切线方向的变化率。你开车时方向盘转得越猛,曲率变化就越剧烈。

核心要点:曲率 κ = 1/R,单位是 1/m。数值越大,弯越急。

4.2 最大曲率限制

为什么要有最大曲率限制?

我在项目中遇到过一台AGV,设计最大曲率是 0.2(对应转弯半径 5m)。结果规划出来的路径有一段曲率到了 0.3。你猜怎么着?车子直接侧滑,差点翻车。

最大曲率限制主要来自三个方面:

限制来源 典型值 说明
车辆最小转弯半径 R_min = 3~8m 机械结构决定,改不了
轮胎摩擦系数 μ = 0.7~0.9 路面湿滑时更严格
速度限制 v_max = 2m/s 速度越快,曲率要越小

嗯,这里要注意:最大曲率不是固定值。它跟速度、路面条件都有关系。我一般会留 20% 的安全余量,比如理论最大 0.25,我设成 0.2。

避坑指南:我曾经吃过一次亏,把最大曲率设得太接近极限值。结果地面有点水,车子就失控了。从那以后,我坚持留余量。

4.3 曲率连续性要求

曲率连续性,说白了就是路径不能有「急转弯」。

你想想看,开车时如果方向盘突然猛打,会怎样?乘客会前仰后合,货物可能倾倒。路径规划也一样,曲率必须平滑过渡。

曲率连续性通常分三个等级:

  • C0 连续:位置连续。路径没断开,但可能有尖角。
  • C1 连续:切线方向连续。路径光滑,但曲率可能突变。
  • C2 连续:曲率连续。路径不仅光滑,曲率变化也平滑。

我个人习惯要求至少 C2 连续。为什么?因为 C1 连续虽然看起来光滑,但曲率突变会导致加速度突变,车子会「抖」一下。

小技巧:检查曲率连续性时,可以画曲率图。如果曲率曲线有「尖角」,说明连续性不够。我一般用三次样条插值来保证 C2 连续。

4.4 知识体系框架

下面这张图,是我自己总结的曲率约束知识体系。你看一眼,心里就有数了:

曲率约束知识体系 曲率定义 κ = 1/R 弯曲程度度量 切线方向变化率 最大曲率限制 κ ≤ κ_max 车辆转弯半径 轮胎摩擦系数 曲率连续性 C0/C1/C2 位置连续 切线/曲率连续 实际应用 路径平滑 → 轨迹跟踪 → 运动控制 三者缺一不可:定义是基础,限制是约束,连续性是质量

4.5 实战中的曲率处理

讲完理论,说说实际怎么用。

我一般这样处理曲率约束:

  1. 先算曲率:对路径采样,计算每个点的曲率值
  2. 再检查:看有没有超过最大曲率限制
  3. 最后优化:对超限区域做平滑处理

代码实现其实不复杂,核心就几步:

def check_curvature(path, max_curvature):
    """
    检查路径曲率是否超限
    path: 路径点列表 [(x1,y1), (x2,y2), ...]
    max_curvature: 最大允许曲率
    """
    violations = []
    for i in range(1, len(path)-1):
        # 计算三点确定的曲率
        p1, p2, p3 = path[i-1], path[i], path[i+1]
        curvature = compute_curvature(p1, p2, p3)
        
        if curvature > max_curvature:
            violations.append((i, curvature))
    
    return violations

嗯,这里要注意:曲率计算对噪声很敏感。路径点稍微抖一下,曲率值可能差好几倍。我一般会先做平滑滤波,再算曲率。

经验之谈:曲率约束不是越严格越好。太严格会导致路径过于平滑,反而绕远路。我一般根据实际车辆性能来定,留 20% 余量就够了。

好了,曲率约束的原理就讲到这里。记住三点:曲率定义是基础,最大曲率是硬约束,曲率连续性是质量要求。三者缺一不可。

可可精品资料库