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电流方向
↓
产生旋转磁场
↓
转子跟随旋转
0
次点赞