无人车底盘

差速 全向 阿克曼

Posted by LXG on July 15, 2026

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

差速底盘结构


             x(车体前进方向)
                  ↑
                  │
        左轮      │      右轮
      ┌──────┐   │   ┌──────┐
      │WheelL│   │   │WheelR│
      └──────┘   │   └──────┘
            <---- L ---->

        O (机器人中心)

其中:

  • 左轮速度:v_L
  • 右轮速度:v_R
  • 两轮中心距离:L(Wheel Base)
  • 轮半径:r

机器人在世界坐标系中的状态表示为:

\[(x,\;y,\;\theta)\]

其中:

  • x:世界坐标 X
  • y:世界坐标 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管不断切换电流方向形成旋转磁场。

三相六步换相过程

six_step_commutation


┌───────┬────────────┬─────────────┐
│ 步骤   │ 导通相      │ 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难度
两轮差速 简单 ★★★★★
四轮差速 中等 ★★★★
阿克曼 准确 ★★★★★
麦克纳姆全向 复杂 ★★
四轮转向 复杂但准确 ★★★★

基本结构



       转向舵机/电机
             |
      ↖              ↗
    左前轮          右前轮
      |              |
    驱动电机       驱动电机


      |              |
    左后轮          右后轮
      ↙              ↘
             |
       转向舵机/电机

             后

控制复杂度

你不能只控制轮子的转速,还必须同时控制每个轮子的方向,而且速度和方向必须满足车辆运动学约束。