Differential Drive(差速驱动)运动学模型

差速底盘结构
x(车体前进方向)
↑
│
左轮 │ 右轮
┌──────┐ │ ┌──────┐
│WheelL│ │ │WheelR│
└──────┘ │ └──────┘
<---- L ---->
O (机器人中心)
其中:
- 左轮速度:
v_L - 右轮速度:
v_R - 两轮中心距离:
L(Wheel Base) - 轮半径:
r
机器人在世界坐标系中的状态表示为:
\[(x,\;y,\;\theta)\]其中:
x:世界坐标 Xy:世界坐标 Yθ:机器人航向角(Heading)
轮速与机器人速度关系-正运动学
这是控制器最常用的公式。
假设左右轮线速度分别为:
\[v_L,\quad v_R\]那么机器人整体的线速度为:
\[v=\frac{v_R+v_L}{2}\]机器人角速度为:
\[\omega=\frac{v_R-v_L}{L}\]因此:
\[\boxed{ \begin{aligned} v &= \frac{v_R+v_L}{2}\\ \omega &= \frac{v_R-v_L}{L} \end{aligned} }\]这就是正运动学(Forward Kinematics)。
机器人运动方程
机器人当前位姿:
\[(x,y,\theta)\]运动学微分方程为:
\[\boxed{ \begin{aligned} \dot x &= v\cos\theta\\ \dot y &= v\sin\theta\\ \dot\theta &= \omega \end{aligned} }\]将轮速代入,可得到完整运动学模型:
\[\boxed{ \begin{aligned} \dot x &= \frac{v_R+v_L}{2}\cos\theta\\ \\ \dot y &= \frac{v_R+v_L}{2}\sin\theta\\ \\ \dot\theta &= \frac{v_R-v_L}{L} \end{aligned} }\]这就是经典 Differential Drive Model。
- $\dot{x}$:机器人在水平方向($X$ 轴)的速度分量。
- $\dot{y}$:机器人在竖直方向($Y$ 轴)的速度分量。
- $\dot{\theta}$(即 $\omega$):机器人的旋转角速度(偏航角的变化率)。
逆运动学
ROS2 控制器发送的是:
cmd_vel
linear.x
angular.z
也就是:
- 线速度
v - 角速度
ω
但电机真正需要的是左右轮速度,因此需要进行逆运动学计算:
\[\boxed{ \begin{aligned} v_L &= v-\frac{L}{2}\omega\\ \\ v_R &= v+\frac{L}{2}\omega \end{aligned} }\]例如:
cmd_vel
linear.x = 1.0
angular.z = 0.5
若:
L = 0.4 m
计算得到:
左轮:
\[v_L=1-0.1=0.9m/s\]右轮:
\[v_R=1+0.1=1.1m/s\]控制器只需要将两个目标速度发送给左右轮即可。
电机 RPM 与线速度转换
RPM 是 Revolutions Per Minute(每分钟转数)的缩写,它是一个转速单位,表示某个旋转物体在一分钟内绕自身轴转了多少圈
轮毂电机通常反馈的是:
RPM(转/分钟)
需要转换成线速度。
轮子的角速度:
\[\omega=\frac{2\pi n}{60}\]其中:
n为 RPM
线速度:
\[v=\omega r\]因此:
\[\boxed{ v=\frac{2\pi r n}{60} }\]例如:
轮径 D = 0.20 m
半径:
r = 0.10 m
电机:
100 RPM
计算:
\[v = \frac{2\pi\times0.1\times100}{60} = 1.047m/s\]ROS2 控制链路
Nav2
│
▼
geometry_msgs/Twist
linear.x
angular.z
│
▼
Diff Drive Controller
│
(逆运动学)
▼
左轮目标速度 右轮目标速度
│
▼
PID速度闭环
│
▼
轮毂电机驱动
│
▼
编码器反馈(霍尔传感器反馈)
│
▼
Odom
有编码器和只有霍尔的区别
编码器方案
电机
│
▼
编码器
│
高精度角度反馈
│
▼
里程计 Odom
编码器可以知道:
- 转过多少角度
- 累计位移
- 速度
- 方向
霍尔方案
电机
│
▼
三相霍尔传感器
│
▼
电机控制器
霍尔主要作用:
- BLDC换相
- 检测转速
- 判断方向
但是:
它通常不能精确知道转角。
三相霍尔轮毂电机详细介绍
三相霍尔轮毂电机(Three-phase Hall BLDC Hub Motor)是无人车、AGV、电动车、小型机器人中非常常见的一种驱动方案。
它本质上是:
把无刷直流电机(BLDC)+ 减速结构(部分型号)+ 车轮 + 霍尔位置传感器集成在一个轮子里面。
对于你的园区配送无人车(100kg级、ROS2差速底盘),轮毂电机是一个非常合适的方案。
结构组成
轮胎
┌────────────┐
│ │
│ 转子 │
│ 永磁磁钢 │
│ │
│ ┌────────┐ │
│ │ 定子 │ │
│ │ 三相线圈│ │
│ └────────┘ │
│ │
└────────────┘
│
│
霍尔传感器
│
BLDC电机控制器
| 部件 | 作用 |
|---|---|
| 永磁转子 | 产生旋转磁场 |
| 三相定子绕组 | 产生电磁力 |
| 霍尔传感器 | 检测转子位置 |
| 电机控制器 | 控制三相电流 |
| 轮胎 | 输出机械运动 |
接线
BLDC电机控制器与三相霍尔轮毂电机接线详解
三相霍尔轮毂电机和 BLDC 控制器之间通常通过两组线连接:
三根粗动力线(三相线) 五根霍尔信号线
整体关系:
BLDC电机控制器
┌───────────┐
│ │
│ MOS驱动 │
│ │
└───────────┘
│
┌───────┴────────┐
│ │
三相动力线 霍尔信号线
│ │
U V W 5V GND HA HB HC
│ │
▼ ▼
┌────────────────────────┐
│ │
│ 三相霍尔轮毂电机 │
│ │
│ U V W Hall │
│ │
└────────────────────────┘
动力线
电池
|
|
MOSFET三相桥
|
┌────┼────┐
│ │ │
U V W
|
电机
MOS管不断切换电流方向形成旋转磁场。
三相六步换相过程

┌───────┬────────────┬─────────────┐
│ 步骤 │ 导通相 │ Hall状态 │
├───────┼────────────┼─────────────┤
│ Step1 │ U+ → V- │ 001 │
│ Step2 │ U+ → W- │ 101 │
│ Step3 │ V+ → W- │ 100 │
│ Step4 │ V+ → U- │ 110 │
│ Step5 │ W+ → U- │ 010 │
│ Step6 │ W+ → V- │ 011 │
└───────┴────────────┴─────────────┘
霍尔在里面做什么?
控制器需要知道:转子现在在哪里?
否则不知道下一步给哪个绕组通电。
霍尔反馈:
读取Hall
↓
判断转子位置
↓
选择MOS管开关组合
↓
改变U/V/W电流方向
↓
产生旋转磁场
↓
转子跟随旋转
两轮差速 VS 四轮差速
| 两轮差速 | 四轮差速 | |
|---|---|---|
| 承重 | 较低 | 较高 |
| 结构刚度 | 一般 | 强 |
| 载货能力 | 几十kg | 几十~几百kg |
| 工业应用 | 少 | 多 |
四轮差速的RtabMap问题
四轮差速认为“车轮转了多少 = 车走了多少”;RTAB-Map认为“摄像头看到环境变化 = 车走了多少”。但是四轮差速转弯时,轮子会偷偷打滑,所以两个判断经常不一样。
四轮差速:像四个人穿着普通鞋搬桌子转弯
四轮:
前
O O
O O
假设向左转。
控制器说:
左边两个轮子慢
右边两个轮子快
于是希望:
左边走小圈
右边走大圈
但是问题来了:
所有轮子都是固定朝前的:
轮子方向:
↑ ↑
↑ ↑
可是转弯时,轮子的实际运动方向应该:
左前轮:
↖
右前轮:
↗
怎么办?
轮子不能拐方向。
只能:
一边滚
一边横着蹭地
这就是侧滑。
阿克曼底盘
- 问题1:不能原地旋转
- 问题2:低速灵活性差
- 问题3: 高速时需要转向机构
低速当然可以不用转向机构,这也是机器人行业常见方案;但随着重量增加,决定因素从“速度”变成了“轮胎侧向摩擦力”。300kg已经进入一个需要认真考虑底盘运动学的级别。
四轮全向
四轮全向并不是搭配 RTAB-Map 的最佳方案,甚至在很多情况下比四轮差速更难做 SLAM。
| 底盘 | 运动模型 | RTAB-Map难度 |
|---|---|---|
| 两轮差速 | 简单 | ★★★★★ |
| 四轮差速 | 中等 | ★★★★ |
| 阿克曼 | 准确 | ★★★★★ |
| 麦克纳姆全向 | 复杂 | ★★ |
| 四轮转向 | 复杂但准确 | ★★★★ |
基本结构
前
转向舵机/电机
|
↖ ↗
左前轮 右前轮
| |
驱动电机 驱动电机
| |
左后轮 右后轮
↙ ↘
|
转向舵机/电机
后
控制复杂度
你不能只控制轮子的转速,还必须同时控制每个轮子的方向,而且速度和方向必须满足车辆运动学约束。
典型 Swerve Module(侧面剖面图)
Swerve Drive = 独立转向驱动(四轮独立转向底盘)
↑ 转向轴(Steering Axis)
│
┌───────────────┐
│ 转向编码器 │ ← 测量轮子朝向(0~360°)
└──────┬────────┘
│
┌──────▼──────┐
│ 转向减速器 │
└──────┬──────┘
│
┌────────▼────────┐
│ 转向电机Servo │
└─────────────────┘
│
=================┼================== 整个轮组绕这里旋转
│
┌─────────────────┐
│ 驱动电机 BLDC │
│ │
│ U V W │ ← 三相动力线
│ │
│ Hall A B C │ ← 霍尔传感器
└──────┬──────────┘
│
行星减速器
│
▼
┌─────────┐
│ 轮子 │
└─────────┘
编码器
编码器(Encoder)是机器人、电机控制中非常核心的传感器,本质作用是:
把机械运动(角度、速度、位置)转换成电信号,让控制系统知道“现在转到哪里了”。
在你关注的 四轮全向/Swerve底盘 中,编码器主要用于两个地方:
- 转向角检测(Steering Encoder)
- 驱动轮速度/里程检测(Motor Encoder)
松灵机器人


松灵机器人成立于2016年,是全球领先的机器人技术平台型企业,致力于通过全栈机器人技术与开源生态体系,加速具身智能技术革新与全球机器人市场化进程。
| 系列 | 产品 | 运动方式 | 优点 | 场景 |
|---|---|---|---|---|
| SCOUT | MINI/2.0 | 四轮差速 | 成熟稳定 | SLAM开发 |
| TRACER | 2.0 | 两轮差速 | 简单便宜 | 室内AGV |
| BUNKER | MINI/PRO | 履带 | 越野强 | 户外巡检 |
| HUNTER | SE/2.0 | 阿克曼 | 像汽车 | 园区道路 |
| RANGER | MINI/标准 | 四轮四转 | 最灵活 | 高端AMR |
| UMR | 工业平台 | 模块化 | 扩展性强 | 工业应用 |
RANGER
RANGER 单轮模块
转向电机
|
|
┌──────────┐
│ │
│ 轮毂电机 │ ← 驱动轮
│ │
└──────────┘
|
转向轴
|
车体
严格说,RANGER 更接近:4WIS / 4WID(Four Wheel Independent Steering + Drive)
轮毂电机也有缺点
- 非簧载质量增加
- 散热困难
- 大负载困难
松灵 NAVIS 导航系统
前端里程计:LiDAR + IMU + 轮式里程计融合
轮编码器
│
▼
Wheel Odometry
│
│
IMU ──────┐
│
▼
State Estimator
│
▼
LiDAR Odometry / Scan Matching
│
▼
Pose
| RTAB-Map | 工业 NAVIS 类 | |
|---|---|---|
| 主要传感器 | RGB-D/双目 | LiDAR |
| 定位 | 视觉回环 | 激光匹配 |
| 环境要求 | 纹理丰富 | 结构丰富 |
| 白墙 | 弱 | 强 |
| 仓库 | 一般 | 强 |
| 动态环境 | 一般 | 强 |
| 4WS支持 | 需要改 | 天然支持 |
| 坡道 | 弱 | 强 |
| 反光板 | 无 | 支持 |
| 成本 | 低 | 高 |
| 开发难度 | 中 | 高 |
| 商业可靠性 | 一般 | 高 |
Coco Robotics
Coco Robotics 通过结合精准地图绘制、端到端神经网络和人工监控,在密集的城市环境中高效导航。其配送车辆专为应对洛杉矶等城市常见的复杂地形而设计,例如拥挤的人行道、崎岖不平的路面和光线昏暗的环境。凭借车载摄像头、激光雷达和 GPS,Coco 的机器人能够安全地穿梭于复杂的道路,快速可靠地完成货物配送,并能适应不断变化的街道环境。
| Coco 2 | 松灵 NAVIS | |
|---|---|---|
| 定位核心 | AI+地图+多传感器 | LiDAR SLAM |
| 环境 | 开放城市 | 工业园区 |
| 动态障碍 | ★★★★★ | ★★★ |
| 固定地图 | ★★★ | ★★★★★ |
| 白墙 | 一般 | 强 |
| 货架环境 | 一般 | 强 |
| 道路规则 | 强 | 弱 |
| 工业稳定性 | 中 | 强 |
| 研发方向 | 自动驾驶 | AMR |
Ultra-Fusion
Ultra-Fusion 可以理解为近年来比较有代表性的一个方向:面向工业/自动驾驶级机器人的“大一统紧耦合多传感器 SLAM 框架”。
它的目标不是替代 RTAB-Map、LIO-SAM,而是解决一个更现实的问题:
真实机器人运行时,不可能永远有完美传感器。摄像头会黑、激光会退化、轮子会打滑、GPS 会丢,系统必须自动降级。
Ultra-Fusion 想解决什么问题?
视觉 SLAM
例如:
Camera
|
Feature
|
VIO
问题:
黑暗
白墙
强光
无纹理
LiDAR SLAM
例如:
LiDAR
|
ICP/NDT
|
Pose
问题:
长走廊
大空旷区域
几何退化
轮速里程计
Encoder
|
Odometry
问题:
打滑
例如:
雪地:
轮子转了 100m
实际移动 70m
Ultra-Fusion 的思想
Camera
\
\
LiDAR ---- Factor Graph ---- Robot Pose
/
/
Wheel
\
IMU
\
GNSS
| RTAB-Map | Ultra-Fusion | |
|---|---|---|
| 核心 | 视觉SLAM | 多传感器定位 |
| 输入 | RGB-D为主 | LiDAR/Camera/IMU/Wheel/GNSS |
| 后端 | Pose Graph | Sliding Window Factor Graph |
| 视觉依赖 | 高 | 低 |
| 工业场景 | 一般 | 更适合 |
| 白墙 | 弱 | 强 |
| 轮滑 | 无感知 | 可降权 |
| 4WS底盘 | 需要改 | 天然适合 |
| 室外 | 弱 | 强 |
| 计算量 | 中 | 较高 |
在机器人系统中的位置
Nav2
|
|
/cmd_vel
|
|
Controller
|
|
机器人底盘
|
------------------
| |
Encoder IMU
| |
------------------
|
|
Localization
|
---------------------
| |
AMCL Ultra-Fusion
| |
| |
LiDAR LiDAR
Camera
IMU
Wheel
项目案例
假如硬件配置是:
- Orbbec Gemini 335(RGB-D + 内置 IMU)
- 两个对角安装 2D LiDAR
- 轮编码器(底盘)
- RK3588
- 4WS/全向底盘
推荐的架构
Nav2
|
|
/odom
|
|
Ultra-Fusion
Factor Graph
|
---------------------------------
| | |
| | |
LiDAR Factor Vision Factor Wheel Factor
| | |
| | |
2D LiDAR Gemini 335 4WS Encoder
|
|
Scan Matching
|
|
Gemini IMU
视觉没有消失。
它提供:
- Visual Odometry
- RGB-D约束
- 回环候选
- 特征匹配
| 传感器 | 作用 |
|---|---|
| 双2D LiDAR | 主几何约束 |
| Gemini RGB | 视觉特征、语义 |
| Gemini Depth | 近距离3D障碍 |
| Gemini IMU | 姿态约束 |
| 轮编码器 | 运动模型 |