第二节:运动学与动力学基础

说实话,做规划控制这些年,我见过太多人一上来就怼复杂的动力学模型。结果呢?调参调到怀疑人生,车还是跑得歪歪扭扭。我个人习惯是——先把运动学模型吃透,再慢慢引入动力学。今天咱们就聊聊这个基础中的基础。

2.1 车辆运动学模型(自行车模型)

为什么叫自行车模型?你想想看,自行车只有两个轮子,前轮转向,后轮驱动。把四轮汽车简化成这个形式,其实挺合理的。我在实际项目中,90%以上的低速场景都用这个模型,够用,还快。

核心假设就两条:

  • 车辆在平面上运动,忽略垂向跳动
  • 轮胎侧偏角为零,即车轮方向就是速度方向

状态量通常取 [x, y, θ, v, δ],其中:

  • x, y —— 后轴中心位置
  • θ —— 航向角
  • v —— 纵向速度
  • δ —— 前轮转角

微分方程长这样:

dx/dt = v * cos(θ)
dy/dt = v * sin(θ)
dθ/dt = v * tan(δ) / L
dv/dt = a
dδ/dt = ω

其中 L 是轴距,a 是加速度,ω 是转向角速度。嗯,这里要注意——tan(δ) 在 δ 接近 ±90° 时会爆炸,所以实际中我们会限制最大转角。

关键点:自行车模型是 非完整约束 系统。什么意思?就是你不能像螃蟹一样横着走。这个约束在规划中特别重要,很多新手规划的路径,车辆根本执行不了,就是因为没考虑这个。

2.2 动力学模型简介

运动学模型假设轮胎不打滑,但车速一上来(比如超过 10m/s),这个假设就不成立了。这时候就得请出动力学模型。

我记得有一次做高速避障项目,用运动学模型规划的轨迹,实车一跑就偏。查了半天,原来是轮胎侧偏角在作怪。从那以后,高速场景我必用动力学模型。

简化的二自由度动力学模型状态量:

状态: [x, y, θ, v, β, ω]
输入: [a, δ]

其中 β 是质心侧偏角,ω 是横摆角速度。微分方程:

dx/dt = v * cos(θ + β)
dy/dt = v * sin(θ + β)
dθ/dt = ω
dv/dt = a
dβ/dt = (Fyf + Fyr) / (m * v) - ω
dω/dt = (lf * Fyf - lr * Fyr) / Iz

轮胎力 Fyf 和 Fyr 通常用线性模型近似:

Fyf = -Cf * αf
Fyr = -Cr * αr

αf 和 αr 是前后轮的侧偏角,Cf、Cr 是侧偏刚度。说白了,就是轮胎越硬,侧偏角越小。

实战建议:侧偏刚度 Cf、Cr 不是常数,跟轮胎垂直载荷、路面附着系数都有关系。我一般会在实车上做一次 阶跃转向实验 来标定这些参数,别信仿真里的默认值。

2.3 加速度与 jerk 约束

讲完了模型,咱们聊聊约束。加速度和 jerk(加加速度)是规划控制里最容易被忽视的两个东西。

为什么会这样?因为很多人在仿真里跑得飞起,一上车就晕车。乘客的舒适度,说白了就是 jerk 在作怪。

加速度约束:

  • 纵向加速度:通常限制在 ±3 m/s²(舒适)到 ±5 m/s²(极限)
  • 横向加速度:通常限制在 ±2 m/s²(舒适)到 ±4 m/s²(极限)
  • 合成加速度:sqrt(ax² + ay²) ≤ μ * g(摩擦圆约束)

jerk 约束:

  • 纵向 jerk:通常限制在 ±2 m/s³(舒适)到 ±5 m/s³(运动模式)
  • 横向 jerk:通常限制在 ±1 m/s³(舒适)到 ±3 m/s³(运动模式)

我曾经踩过的坑:有一次做泊车规划,只约束了加速度,没约束 jerk。结果规划出来的轨迹加速度变化特别剧烈,车在最后停车时猛地一抖,像被踹了一脚。后来加了 jerk 约束,问题就解决了。记住——加速度决定力,jerk 决定力的变化率。

在代码里怎么加约束?以纵向规划为例:

# 加速度约束
a_min ≤ a(t) ≤ a_max

# jerk 约束
j_min ≤ da/dt ≤ j_max

# 离散化形式(常用)
a[k] = (v[k] - v[k-1]) / dt
j[k] = (a[k] - a[k-1]) / dt

# 约束条件
a_min ≤ a[k] ≤ a_max
j_min ≤ j[k] ≤ j_max

嗯,这里要注意——jerk 约束会让轨迹变得更平滑,但也会增加求解时间。我一般会在舒适模式下用严格的 jerk 约束,运动模式下适当放宽。

2.4 本章知识体系

下面这张图是我自己总结的,把运动学、动力学和约束的关系理清楚了:

车辆运动学与动力学知识体系 运动学模型(自行车模型) 适用场景:低速(≤10m/s)、小转角 状态量:[x, y, θ, v, δ] 核心假设:轮胎无侧偏 约束:非完整约束 动力学模型(二自由度) 适用场景:高速(>10m/s)、大转角 状态量:[x, y, θ, v, β, ω] 核心参数:侧偏刚度 Cf, Cr 约束:摩擦圆、轮胎力饱和 速度增加 规划控制约束 • 加速度约束:纵向 ±3~5 m/s²,横向 ±2~4 m/s² • jerk 约束:纵向 ±2~5 m/s³,横向 ±1~3 m/s³ • 合成约束:摩擦圆 sqrt(ax² + ay²) ≤ μg 输出:平滑、安全、可执行的轨迹

这张图把三者的关系说清楚了:低速用运动学,高速用动力学,不管哪种模型,加速度和 jerk 约束都得加上。少了任何一个,你的规划控制方案都会出问题。

我的个人习惯:在项目初期,先用运动学模型快速验证算法逻辑。等基本功能跑通了,再切换到动力学模型做精细化调优。这样既节省时间,又能保证最终效果。

好了,运动学和动力学的基础就聊到这儿。记住一句话——模型是工具,约束是底线。把这两样东西搞明白,规划控制就成功了一半。

可可精品资料库