机器人、汽车运动学与动力学模型选型指南(运动学 + 动力学 + 行业落地)
这里说的"模型"不是AI大模型,是车辆、机器人的运动学与动力学数学模型。搞机器人、自动驾驶,第一件事不是写代码,是选模型——选错了,后面的控制算法全是白做。从差速小车到高速NOA,从两轮自行车到7自由度动力学,全讲一遍。别再拿运动学模型去跑高速了。
一、为什么需要模型?不建模行不行?
先看三个场景:
- 路径规划:规划模块要算"从当前位置到目标点,方向盘打多少度、油门踩多深"。没有模型,这就算不出来。
- 轨迹跟踪控制:MPC(模型预测控制)需要预测"我打了这个方向盘角度,0.5 秒后车会在哪"。没有模型,预测就是瞎猜。
- 运动预测:自动驾驶要预测周围车辆未来 3 秒的轨迹。没有模型,就只能假设别人匀速直线——这在弯道里完全不靠谱。
主流开源项目用的是什么模型?
| 项目 | 模型 | 用途 |
|---|---|---|
| 百度 Apollo | 2 自由度动力学自行车模型 + 线性轮胎模型 | LQR / MPC 横向控制 |
| Autoware (TIER IV) | 运动学自行车模型 | 位姿推算、仿真 |
| openpilot (comma.ai) | 纵向 3 阶动力学模型(位置→速度→加速度→加加速度) | 纵向 MPC 控制 |
| ROS2 Nav2 | 差速/全向/阿克曼运动学模型 | 机器人路径规划+控制 |
| Carla_iLQR_MPC (295 stars) | 动力学自行车模型 + 系统辨识 | iLQR 轨迹跟踪 |
| Multi-Purpose-MPC (278 stars) | 空间自行车模型(非线性) | 路径跟踪 + 避障 |
模型选错了什么后果?Carla 上实测过:用运动学自行车模型做高速(25 m/s)紧急变道,车辆直接冲出车道;换成混合扩展自行车模型(加了侧偏角预测),同样的控制器,轨迹误差从米级降到厘米级。
二、机器人、汽车怎么分类?各自用什么模型?
先看你研究的东西长什么样,再决定用什么模型。
每种平台对应什么模型?
| 平台类型 | 运动学模型 | 动力学模型 | 说明 |
|---|---|---|---|
| 扫地机(差速) | 差速小车模型 | 一般不需要 | 低速,不打滑,运动学够用 |
| 仓储AGV(全向轮) | 全向运动学模型 | 不需要 | 全向轮无侧滑约束,运动学即完整描述 |
| 无人配送车(阿克曼) | 四轮阿克曼 / 自行车 | 不需要(低速) | < 30 km/h 运动学够用 |
| 家用车(L2 辅助驾驶) | 不适用(高速) | 2 自由度动力学自行车 | 高速必须算轮胎侧偏 |
| 高速 NOA(L2+) | 不适用 | 2 自由度动力学 | 横向+纵向解耦控制 |
| 四驱电车(扭矩分配) | 不适用 | 7 自由度动力学 | 离线仿真,不上实车 |
| 机器狗(四足) | 不适用 | 整机动力学 + 足端力控 | 需要腿足动力学,这里不展开 |
| 无人机 | 不适用 | 6 自由度刚体动力学 | 推力+力矩控制 |
| 底盘研发 | 不适用 | 多体仿真 | 悬挂、转向全复刻 |
下面重点讲轮式机器人和汽车的运动学/动力学模型。腿足、无人机模型这里不展开。
复杂平台(如轮式人形机器人)底盘和手臂的运动学是耦合的,需要合并成全身运动学方程统一求解,不能分开建模。江南大学李宽宽的论文中有详细推导。
三、两大类模型
运动学模型:只看怎么走——几何路线,纯数学。轮胎永远不打滑,没有质量,没有惯性。说白了就是"画线"。差速轮机器人、全向轮AGV,不管跑多快,运动学模型就是它的完整描述——因为它根本没有转向机构,不存在侧偏问题。
动力学模型:把轮胎侧偏、离心力、车速惯性全算进去。不是质点,有重量、有速度、转弯时外侧轮胎吃更多力。汽车和带阿克曼转向的机器人,速度上来后必须换动力学模型。
汽车的速度分水岭在 30~40 km/h——低于这个速度,轮胎侧偏角 < 2°,运动学模型误差 < 3%;超过这个速度,侧偏角迅速增大,误差从厘米级跳到米级。差速机器人没有这个分水岭——它压根没有侧偏角这个概念,运动学模型就是它的全部。
四、运动学模型详解(低速专用)
运动学模型的核心假设:轮胎和地面之间没有滑动。所有车轮绕着同一个圆心转,纯滚动。
4.1 差速小车模型
没有转向机构,没有前轮转角。靠左右轮子快慢差来拐弯——左轮比右轮快就右转,反过来就左转。全程硬磨轮胎。
只用在:扫地机器人、仓储AGV、小型轮式机器人。家用汽车不用这个,轮胎磨不起。
4.2 两轮自行车模型(最常用简化版)
把汽车左右前轮合成一个虚拟前轮,左右后轮合成一个虚拟后轮,车身等效为一辆自行车。只用一个前轮转角 δ 就能算出整车的运动轨迹。
| 优点 | 缺点 |
|---|---|
| 计算量极小,一个转角参数搞定 | 看不出四个车轮各自的轨迹 |
| 适合实时路径规划和导航 | 无法判断车身宽度是否擦碰障碍物 |
| 高速场景下也能用作预测模型的骨架 | 忽略了左右轮差速 |
用途:导航路径规划、高速车道级路线预测。L2+ 辅助驾驶的规划模块底层都用这个模型。Autoware 的仿真器(scenario_simulator_v2)直接用自行车运动学模型做位姿推算。
自行车模型的关键公式就一个:转向半径 R = L / tan(δ),L 是轴距,δ 是前轮转角。轴距越长、转角越小,转弯半径越大。
4.3 四轮阿克曼模型
真实还原四个车轮的独立运动。转弯时,内侧前轮转得比外侧前轮更大,四个轮子绕着同一个圆心纯滚动,不磨胎。
| 优点 | 缺点 |
|---|---|
| 四个车轮各自轨迹全知道 | 比自行车模型多算几个参数 |
| 能算车身宽度够不够过窄路 | 低速场景才准 |
| 倒车蹭不蹭路牙一眼就知道 | — |
用途:自动泊车、车轮轨迹线可视化、窄路转弯辅助。车机上看到的"倒车轨迹线"就是阿克曼模型算出来的。
阿克曼的核心公式:cot(δo) - cot(δi) = 轮距 / 轴距。轮距越宽、轴距越短,内外轮转角差越大。
五、动力学模型详解(高速专用)
运动学模型有 5 个隐藏假设,速度一上来全崩:
- 低速假设(< 5 m/s ≈ 18 km/h):模型默认轮胎横向力可以忽略
- 无滑移假设:轮胎速度方向与车轮平面一致(侧偏角 ≡ 0)
- 刚性车身假设:忽略悬挂带来的姿态变化
- 瞬时转向中心假设:前后轮转向延长线总有完美交点
- 阿克曼几何近似:把复杂转向几何简化为单轮等效
动力学模型把这些假设一个个拆掉,把轮胎侧偏、惯性效应全算进去。
5.1 2 自由度动力学自行车模型(行业标配)
在两轮自行车模型的基础上,加两个东西:
- 轮胎侧偏刚度:轮胎不是刚体,过弯时会侧向变形,产生侧偏角。侧偏角 × 侧偏刚度 = 侧向力。
- 横摆角速度:车身绕垂直轴的旋转速度,用来描述推头(转向不足)和甩尾(过度转向)。
有了这两个参数,模型就能模拟高速过弯时车子的真实反应——方向盘打多了会不会甩尾,打少了会不会推头。
百度 Apollo 的 LQR 和 MPC 横向控制,底层全是这个模型。 状态向量包含横向误差、航向角误差、横向速度误差、横摆角速度误差四个量,控制输入是前轮转角。轮胎侧偏刚度从实车标定获取,不能随便填。
2 自由度 = 横向位移 + 横摆角。纵向速度当外部输入,不参与状态估计。
5.2 7 自由度四轮动力学
把四个车轮拆开,每个轮子单独建模。能控制每个轮的抓地力、制动力、驱动力分配。
| 适用场景 | 说明 |
|---|---|
| 四驱电车扭矩分配 | 前后轴、左右轮扭矩怎么分 |
| 极限操控仿真 | 漂移、冰雪路面、紧急变道 |
| 底盘标定参考 | 给实车标定提供理论值 |
不上车。7 自由度算力太大,实车控制器跑不动,只在电脑上做离线仿真和标定参考。
5.3 多体仿真模型
精细到悬挂几何、转向拉杆、减震器阻尼曲线、衬套刚度。完全复刻真实底盘的每一个零件。
只在车企研发部门用——底盘结构设计、悬挂调校、碰撞仿真。算力要求极高,根本装不到车上。
六、行业落地:不同场景选什么模型
机器人 + 汽车低速场景(运动学模型)
汽车高速 + 研发场景(动力学模型)
| 场景 | 推荐模型 | 复杂度 | 上实车/机器人 | 开源参考 |
|---|---|---|---|---|
| 扫地机定位导航 | 差速小车运动学 | 低 | 是 | Nav2 dwb_controller(motion_model: DiffDrive) |
| 仓储AGV全向移动 | 全向运动学 | 低 | 是 | Nav2 nav2_mppi_controller(motion_model: Omni) |
| 无人配送车(低速) | 阿克曼/自行车运动学 | 低 | 是 | Autoware 仿真器 |
| 汽车导航路径规划 | 两轮自行车运动学 | 低 | 是 | Autoware 仿真器 |
| 高速车道保持 / ACC | 2 自由度动力学 | 中 | 是 | Apollo LQR |
| 高速 NOA 横纵控制 | 2 自由度动力学 | 中 | 是 | Apollo MPC |
| 自动泊车 / 轨迹线 | 四轮阿克曼运动学 | 低 | 是 | — |
| 电车四驱扭矩分配 | 7 自由度动力学 | 高 | 否(离线) | — |
| 底盘结构设计 / 调校 | 多体仿真 | 极高 | 否(研发) | — |
多 AGV 协同场景中,运动模型的选择直接影响路径规划和冲突避免的效率。差速模型可以原地转向,全向模型可以横向平移,两者在窄通道里的避让策略完全不同。张增的研究里,改进 CBS 算法做多 AGV 路径规划时,第一步就是明确每台 AGV 的运动学模型——模型类型不同,冲突检测的约束条件也不一样。
七、研究选型速查
| 你要做什么研究 | 选哪个模型 | 理由 |
|---|---|---|
| 路径规划 | 两轮自行车运动学 | 一个转角搞定,算得快 |
| 低速轨迹跟踪(< 20 km/h) | 两轮自行车运动学 | 误差可接受,计算量小 |
| 高速轨迹跟踪(> 30 km/h) | 2 自由度动力学 | 轮胎侧偏必须算进去 |
| 自动泊车、轨迹线可视化 | 四轮阿克曼运动学 | 四个轮子各自轨迹,倒车不蹭 |
| 扫地机器人定位导航 | 差速小车运动学 | 结构最简单,ROS 自带 |
| 仓储AGV全向移动 | 全向运动学 | 麦克纳姆轮无侧滑约束 |
| MPC 控制算法研究 | 2 自由度动力学 | Apollo 标准用法,可复现 |
| 系统辨识 + 控制 | 动力学自行车 + 辨识 | Carla_iLQR_MPC 的套路 |
| 四驱扭矩分配仿真 | 7 自由度动力学 | 四轮独立,离线跑 |
| 底盘结构设计 | 多体仿真 | 悬挂转向全复刻 |
记住:低速画线用运动学,高速控制用动力学,底盘研发用多体。别拿自行车模型去做泊车,也别拿阿克曼去跑高速——模型选错了,后面的控制算法全是白做。
八、工程落地要点
几个典型问题,记录下来供参考。
1:高速场景用了运动学模型
运动学模型默认轮胎不打滑。实际过弯时侧偏严重,控制器输出和实际响应差一大截,LKA 跑着跑着就画龙。
某园区自动驾驶项目,直角弯总是"切西瓜"。排查发现速度过 30 km/h 后,运动学模型预测误差从 5 cm 跳到 50 cm。换成动力学模型,解决。
运动学模型在 15 km/h 以下误差 < 3%,30 km/h 以上迅速放大。弯道控制失效,第一件事先看模型选对没有。
2:泊车用了自行车模型
自行车模型只算一个虚拟轮的轨迹,看不到四个车轮各自走哪。倒车时左后轮蹭路牙了,模型根本不知道。
3:动力学模型参数随便填
侧偏刚度、转动惯量,要么从轮胎厂拿数据,要么自己标定。随便填个值,精度还不如运动学模型。Apollo 是先跑系统辨识拿初始值,再上实车微调。
4:阿克曼模型轴距量错了
轴距差 5 cm,泊车轨迹线偏移十几厘米。倒车影像里的轨迹线不准,多半是轴距参数没填对。
5:线性轮胎模型用在不该用的工况
线性轮胎模型(侧偏力 = 侧偏刚度 × 侧偏角)只在侧偏角 < 5° 时管用。急转弯、漂移,侧偏角一过 5°,线性模型就崩了。这种工况得上 Pacejka 魔术公式等非线性模型。
6:拿神经网络直接替代物理模型
有人在 Carla 上试过:拿全连接网络直接拟合车辆动力学,没有物理先验,长期预测漂得厉害,也不保证运动学可行性。正确的用法是 hybrid——物理模型做骨架,网络只拟合残差。Carla_iLQR_MPC 就是这么干的。
7:差速轮底盘配了阿克曼模型
差速轮底盘没有转向机构,靠左右轮速差原地转向。用了阿克曼模型做路径规划——阿克曼强制最小转弯半径,差速轮可以原地转。实际轨迹与规划偏差 > 15 cm,窄通道里直接卡死。
Nav2 里的做法:nav2_mppi_controller 配置里指定 motion_model 为 DiffDrive。模型类型和底盘不一致,角速度指令就是错的。
8:全向轮 AGV 配了差速模型
麦克纳姆轮可以横向平移,差速模型做不到。仓库里 AGV 本来能横着进窄巷道,用了差速模型,控制器只会原地转圈再前进,效率直接腰斩。
Nav2 的 nav2_mppi_controller 支持 motion_model: Omni,需要显式指定,默认是 DiffDrive。
9:机器人里程计融合时传感器配置不当
ROS2 的 robot_localization 包做 EKF 融合时,odom0_config 是一个 15 位的布尔向量,控制哪些状态量参与融合。差速底盘如果配置了全向模式的融合向量(比如把 Y 方向速度也 fuse 了),EKF 会以为你的机器人能横向漂移,融合出来的位姿一直偏。排查这类问题,先打印 odom0_config 向量,确认只开启了差速底盘实际能产生的运动分量。
轮式人形机器人(底盘+手臂)这类复杂平台,底盘运动学和手臂运动学是耦合的——底盘移动会改变手臂末端位置,手臂摆动也会影响底盘重心。江南大学李宽宽的论文里,把底盘运动学和手臂运动学合并成全身运动学方程,再用 CBF+QP 或 MPC 统一求解。如果简单地把底盘和手臂分开控制,碰撞检测和轨迹精度都会出问题。