Skip to content

第6章 机器人运动与电机驱动

6 第 6 章 机器人运动与电机驱动

6.1 机器人运动概述

机器人的运动方式(Locomotion)决定了其活动范围和应用场景。从运动学角度看,不同方式对电机控制和驱动系统的要求差异很大,选对运动方式是机器人系统设计的第一步。

主要运动方式

表 6-1 主要运动方式

运动方式 典型平台 驱动元件 适用场景
轮式(Wheeled) 差速小车、全向平台、汽车 直流电机、步进电机 平坦地面、室内
履带式(Tracked) 坦克、排爆机器人 直流电机 崎岖地形、楼梯
足式(Legged) 四足狗、双足人形 舵机、关节电机 复杂地形、仿生
飞行(Aerial) 多旋翼、固定翼 无刷电机 + ESC 空中侦察、航拍
水下(Underwater) ROV、AUV 推进器电机 水下探测、维护

通过上表的对比可以看出,不同方案在运动方式、典型平台、驱动元件等等方面各有优劣,实际选型时应结合具体应用场景综合权衡。

行水

图 6-1 上图以框图形式描绘了主要运动方式的系统架构,清晰呈现了各模块之间的连接关系与信号流向。

本课程聚焦轮式机器人——它是最常见的教学和科研平台,驱动简单、控制理论成熟,且直接对应本章后续的 PWM 和电机驱动技术。

6.2 轮式机器人运动学基础

差速驱动模型(Differential Drive)

差速驱动是最常用的轮式机器人配置:两个独立驱动轮 + 一个或多个从动轮(万向轮)。通过控制左右轮的速度差实现前进、后退和转向。

v_R v, ω v_L v = (v_R + v_L) / 2 ω = (v_R - v_L) / L v_R = v + ωL/2 v_L = v - ωL/2

图 6-2 该框图展示了差速驱动模型(Differential Drive)的核心结构,读者可以从中把握各功能单元的层次划分与协作方式。

运动学公式

设左轮速度 $v_L$,右轮速度 $v_R$,轮距(两轮中心距离)为 $L$,则:

  • 正运动学(轮速 → 机器人速度):

$$ v = \frac{v_R + v_L}{2}, \quad \omega = \frac{v_R - v_L}{L} $$

  • 逆运动学(期望速度 → 轮速):

$$ v_R = v + \frac{\omega L}{2}, \quad v_L = v - \frac{\omega L}{2} $$

其中 $v$ 是线速度(m/s),$\omega$ 是角速度(rad/s)。

其他轮式配置

表 6-2 其他轮式配置

配置 特点 典型应用
阿克曼转向 前轮转向、后轮驱动,类似汽车 自动驾驶车辆
全向轮(Omni) 3/4 个全向轮,可任意方向平移 室内服务机器人、RoboCup
麦克纳姆轮 4 个麦轮,全向移动 仓储机器人、AGV

上表对其他轮式配置中各方案的特性进行了横向对比,便于读者根据实际需求选择最合适的技术路线。

从运动学到电机控制

运动学提供了「期望的轮速 → 电机目标转速」的映射。本章后续内容将解决「如何精确控制电机达到目标转速」的问题:

  1. PWM 调速(8.3-8.5 节):通过占空比控制电机电压 → 控制转速;
  2. 电机与驱动器(8.6-8.8 节):选择合适的电机和驱动硬件;
  3. 闭环控制(第 9 章 PID):结合编码器反馈实现精确速度控制。

6.3 PWM 波形简介

PWM(Pulse Width Modulation,脉宽调制)是一种通过改变脉冲占空比来调控平均功率或电压的技术。保持固定频率下,改变高电平持续时间(占空比)即可改变负载上的平均电压,从而控制电机转速或 LED 亮度等。

6.4 PWM 的等效原理

  • 平均值模型:对低通响应慢的负载(如电机转子和惯性系统),PWM 在周期内的快速开关相当于一个等效直流电平,其平均值为 Vavg = Vcc * DutyCycle。
  • 低通滤波器视角:在频率远高于机械或电气系统带宽时,负载+滤波元件(电感、电容)把 PWM 的高频分量滤除,只响应平均分量。
  • 等效功率与 RMS:在功率计算或发热评估时,用有效值(RMS)比平均值更合适,特别在电感较小时需注意谐波导致的附加损耗。

6.5 如何产生 PWM 波

  • 硬件定时器输出(推荐):微控制器(如 STM32)定时器的 PWM 模式,硬件直接产生高精度、稳定的 PWM 并可配合 DMA/中断。优点是精度高、占用 CPU 少。
  • 软件 PWM(软 PWM):通过周期性中断或轮询翻转 IO 引脚实现。适用于简单或低频场景,但精度、抖动和 CPU 占用较差。
  • 高级协议:针对无刷电机(BLDC),存在 DShot、OneShot、Multishot 等高速数字协议,替代传统 50Hz 或 400Hz 的伺服 PWM,提供更低延迟与更高分辨率。

示例(STM32 HAL 伪代码,生成 TIMx PWM):

// TIM 初始化略,确保计数频率与周期设定满足目标 PWM 频率
htim.Instance = TIM3;
htim.Init.Prescaler = 79;  // 例如 80MHz -> 1MHz
htim.Init.Period = 999;    // 1kHz PWM
HAL_TIM_PWM_Init(&htim);

sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 250;  // 25% duty
HAL_TIM_PWM_ConfigChannel(&htim, &sConfigOC, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim, TIM_CHANNEL_1);

6.6 电机分类与驱动方式

表 6-3 电机分类与驱动方式

电机类型 驱动方式 转速控制 位置精度 成本 典型应用
有刷 DC H 桥 + PWM 连续 需编码器 轮式机器人
无刷 DC (BLDC) 三相逆变器/ESC 连续 需编码器 无人机、高速电机
步进电机 步进驱动器 STEP/DIR 离散步进 开环高 3D 打印机、CNC
舵机 内置驱动,50Hz PWM 角度定位 内置电位器 机械臂关节

通过上表的对比可以看出,不同方案在电机类型、驱动方式、转速控制等等方面各有优劣,实际选型时应结合具体应用场景综合权衡。

u2500 u2500 u2500 u2500 u2500 u2500 u2500[ | ] u2500 u2500 u2500 u2500 u2500 u2500 u2500+ H \u6865\u7535\u8def\u539f\u7406\uff08\u6709\u5237 DC \u7535\u673a\u9a71\u52a8\uff09 V+ V+ Q1 Q3 (\u4e0a) (\u4e0a) \u7535\u673a M Q2 Q4 (\u4e0b) (\u4e0b) GND GND \u6b63\u8f6c: Q1+Q4 \u5bfc\u901a \u53cd\u8f6c: Q2+Q3 \u5bfc\u901a \u5236\u52a8: Q1+Q3 \u6216 Q2+Q4 \u5bfc\u901a

图 6-3 上图直观呈现了电机分类与驱动方式的组成要素与数据通路,有助于理解系统整体的工作机理。

  • 有刷直流电机(Brushed DC Motor)
  • 驱动方法:常用 H 桥(H-bridge)进行方向控制与 PWM 调速;PWM 控制电压,配合电流检测与限流保护。开关 MOSFET/晶体管需加续流二极管或使用带续流路径的桥堆。
  • 优点:驱动简单、成本低;缺点:有刷部件易磨损、寿命受限。

  • 无刷直流电机(BLDC / Brushless Motor)

  • 驱动方法:三相逆变器(电子换向器),通常使用外部 ESC(电调)或 MCU+驱动器实现六步/FOC 控制。输入信号可以是标准伺服 PWM(1-2ms)、OneShot/DShot 等。

  • FOC(Field-Oriented Control)可获得更高效率、更平稳的转矩输出。

  • 步进电机(Stepper Motor)
  • 驱动方法:步进驱动器(如 A4988、DRV8825、TMC 系列),通过细分步进与电流限制实现精确位置控制。驱动器通常接收 STEP/ DIR 信号或 SPI 控制(高级驱动器)。
  • 舵机(Servo)
  • 驱动方法:典型舵机内部集成直流电机与减速箱,外部通过 50Hz PWM(1~2ms)控制角度;现代数字舵机也支持高速信号或串行协议。

6.7 行星(Y)电机及其驱动注意事项

  • 行星(Y 或 Wye)连接常见于三相电机:三相绕组一端并联为公共点(中性点),另一端接三相电源或逆变器相输出。
  • 与三角形(Δ)连接对比:行星在相电压更低(相电压 = 线电压 / √3),适合高压或需要较低相电流的场景;三角形更适合低压高电流场景。
  • 驱动要点:三相逆变器需对三相绕组做 PWM 调制(正弦 PWM 或空间矢量 PWM),并处理换向、过流保护、死区时间等问题。带中性点的测量/监控可用于故障检测与更多控制策略。

6.8 驱动器硬件设计要点

  • MOSFET/IGBT 选择:注意导通损耗与开关损耗、门极驱动能力、耐压与电流余量。
  • 死区时间(Dead-time):防止高低侧同时导通造成直通短路,特别在半桥或逆变器设计中必不可少。
  • 续流/自由轮路径:电机感性负载需要合适续流路径,或在硬件上配置续流二极管/同步整流 MOSFET。
  • 电流检测与限流:使用电阻/霍尔/专用放大器进行闭环电流控制与过流保护。
  • EMI/滤波:PWM 切换引入高频噪声,需要布局、滤波(LC)与共模抑制设计。

6.9 工程例子:轮式机器人驱动电机

  • 场景:差速驱动的两轮或四轮机器人,使用有刷直流电机或无刷直流电机。
  • 常见做法(有刷 DC):
  • 硬件:电机 + H 桥驱动器(L298、DRV8871、TB6612、或 MOSFET H 桥)。
  • 控制:主控通过 PWM 控制占空比以调速,通过 DIR/EN 或 H 桥控制方向。编码器用于闭环速度/位置控制(PID)。
  • 保护:加速度限制、过流检测、欠压锁定(UVLO)与反接保护。

示例控制伪代码:

// 设置目标速度 -> 根据 PID 输出得出 PWM 占空比与方向
if (pid_output >= 0) {
  set_dir_forward();
  set_pwm(pid_output);
} else {
  set_dir_backward();
  set_pwm(-pid_output);
}
  • 无刷 BLDC 作差速驱动时通常使用小型 ESC 或专用三相驱动器,若自己实现需注意电子换向与闭环速度控制。

6.10 工程例子:多旋翼(无人机)驱动

  • 场景:多旋翼(四轴、六轴等)使用小型高转速 BLDC 电机与外置 ESC。
  • 驱动方式:飞控通过 PWM(或更高速的数字协议如 DShot)向 ESC 发送油门信号,ESC 负责电机的换向、转速控制与低层闭环(基于背 EMF 或霍尔/传感器)。
  • 特点与要求:高响应、低延迟的信号更利于飞控稳定;电调需支持足够的电流与功率(关注持续电流与峰值电流);电源与电调需合理布局以降低干扰。

示例:ESC 控制信号 - 传统伺服 PWM:1ms(停止) ~ 2ms(全油门),频率约 50Hz 到 400Hz(取决于 ESC)。 - DShot:数字协议,无需模拟 PWM,误差低且延迟小,广泛用于竞速与现代飞控系统。

工程注意事项: - 电调校准、动力匹配(电机-螺旋桨-电调-电池)是保证飞行安全的关键。 - 电源布线、滤波与 BEC(如需)设计也影响系统可靠性。

6.11 机械臂运动学基础

前面几节关注轮式/飞行器的刚体平移问题,本节转向机械臂——一种通过多关节串联实现末端执行器空间定位的机构。理解机械臂运动学是掌握工业机器人、协作机械臂和仿人手臂的必要前提。

运动学与动力学的关系

表 6-4 运动学与动力学的关系

关注问题 输入 输出
运动学(Kinematics) 关节角度 ↔ 末端位姿 关节变量 $q$ 末端位姿 $(x, y, z, R)$
动力学(Dynamics) 力/力矩 ↔ 运动 关节力矩 $\tau$ 关节加速度 $\ddot{q}$

本节聚焦运动学——给定关节角度求末端位置(正运动学),以及给定期望末端位置求关节角度(逆运动学)。

齐次变换矩阵

描述坐标系之间的旋转和平移,使用 $4 \times 4$ 齐次变换矩阵:

$$ T = \begin{bmatrix} R_{3 \times 3} & p_{3 \times 1} \ 0_{1 \times 3} & 1 \end{bmatrix} $$

其中 $R$ 为旋转矩阵,$p$ 为平移向量。多个变换的复合只需矩阵连乘:

$$ T_0^n = T_0^1 \cdot T_1^2 \cdot T_2^3 \cdots T_{n-1}^n $$

DH 参数法(Denavit-Hartenberg)

DH 参数是描述串联机械臂各连杆几何关系的标准方法。每个关节用 4 个参数定义:

表 6-5 DH 参数法(Denavit-Hartenberg)

参数 符号 含义
连杆长度 $a_i$ 沿 $x_i$ 轴,从 $z_{i-1}$ 到 $z_i$ 的距离
连杆扭角 $\alpha_i$ 绕 $x_i$ 轴,从 $z_{i-1}$ 到 $z_i$ 的旋转角
关节偏距 $d_i$ 沿 $z_{i-1}$ 轴,从 $x_{i-1}$ 到 $x_i$ 的距离
关节角度 $\theta_i$ 绕 $z_{i-1}$ 轴,从 $x_{i-1}$ 到 $x_i$ 的旋转角

对于旋转关节,$\theta_i$ 是变量;对于移动关节,$d_i$ 是变量。

每个关节的变换矩阵为:

$$ T_{i-1}^{i} = \begin{bmatrix} \cos\theta_i & -\sin\theta_i \cos\alpha_i & \sin\theta_i \sin\alpha_i & a_i \cos\theta_i \ \sin\theta_i & \cos\theta_i \cos\alpha_i & -\cos\theta_i \sin\alpha_i & a_i \sin\theta_i \ 0 & \sin\alpha_i & \cos\alpha_i & d_i \ 0 & 0 & 0 & 1 \end{bmatrix} $$

{0} {1} {2} DH ... T 0^n T 0^1 * T 1^2 * ... * T n 1 ^n 1. 2. 3. 4. 5. DH z0, z1, ..., zn T01 T12 和x 姿 1 2

图 6-4 上图以框图形式描绘了 DH 参数法(Denavit-Hartenberg)的系统架构,清晰呈现了各模块之间的连接关系与信号流向。

正运动学实例:平面二连杆机械臂

最简单的机械臂——两个旋转关节在平面内运动(2-DOF Planar Arm):

x, L2 y L1 x q2 q1

图 6-5 该框图展示了正运动学实例:平面二连杆机械臂的核心结构,读者可以从中把握各功能单元的层次划分与协作方式。

DH 参数表

表 6-6 正运动学实例:平面二连杆机械臂

关节 $i$ $a_i$ $\alpha_i$ $d_i$ $\theta_i$
1 $L_1$ 0 0 $\theta_1$
2 $L_2$ 0 0 $\theta_2$

正运动学方程(末端坐标):

$$ x = L_1 \cos\theta_1 + L_2 \cos(\theta_1 + \theta_2) $$

$$ y = L_1 \sin\theta_1 + L_2 \sin(\theta_1 + \theta_2) $$

逆运动学(给定目标 $(x, y)$,求 $\theta_1, \theta_2$):

利用余弦定理:

$$ \cos\theta_2 = \frac{x^2 + y^2 - L_1^2 - L_2^2}{2 L_1 L_2} $$

$$ \theta_2 = \arccos\left(\frac{x^2 + y^2 - L_1^2 - L_2^2}{2 L_1 L_2}\right) $$

$$ \theta_1 = \text{atan2}(y, x) - \text{atan2}\left(L_2 \sin\theta_2,\; L_1 + L_2 \cos\theta_2\right) $$

注意 $\theta_2$ 有两个解(肘上/肘下构型),实际应用中根据约束选取。

Python 实现

import numpy as np
import matplotlib.pyplot as plt

def forward_kinematics(L1, L2, theta1, theta2):
    """正运动学:关节角度 -> 末端坐标"""
    x = L1 * np.cos(theta1) + L2 * np.cos(theta1 + theta2)
    y = L1 * np.sin(theta1) + L2 * np.sin(theta1 + theta2)
    return x, y

def inverse_kinematics(L1, L2, x, y, elbow_up=True):
    """逆运动学:末端坐标 -> 关节角度"""
    D = (x**2 + y**2 - L1**2 - L2**2) / (2 * L1 * L2)
    if abs(D) > 1.0:
        raise ValueError("目标点超出工作空间")
    theta2 = np.arccos(D) if elbow_up else -np.arccos(D)
    theta1 = np.arctan2(y, x) - np.arctan2(
        L2 * np.sin(theta2), L1 + L2 * np.cos(theta2))
    return theta1, theta2

def plot_arm(L1, L2, theta1, theta2):
    """绘制机械臂姿态"""
    # 关节位置
    x0, y0 = 0, 0
    x1 = L1 * np.cos(theta1)
    y1 = L1 * np.sin(theta1)
    x2, y2 = forward_kinematics(L1, L2, theta1, theta2)

    plt.figure(figsize=(6, 6))
    plt.plot([x0, x1, x2], [y0, y1, y2], 'o-', lw=3,
             markersize=8, label='Arm')
    plt.plot(x2, y2, 'r*', markersize=15, label='End-effector')
    plt.xlim(-L1-L2-0.5, L1+L2+0.5)
    plt.ylim(-L1-L2-0.5, L1+L2+0.5)
    plt.grid(True)
    plt.axis('equal')
    plt.legend()
    plt.title(f'q1={np.degrees(theta1):.1f} deg, '
              f'q2={np.degrees(theta2):.1f} deg')
    plt.show()

# 示例:正运动学
L1, L2 = 1.0, 0.8
theta1, theta2 = np.radians(45), np.radians(30)
x, y = forward_kinematics(L1, L2, theta1, theta2)
print(f"末端坐标: ({x:.3f}, {y:.3f})")

# 示例:逆运动学
target_x, target_y = 1.2, 0.8
q1, q2 = inverse_kinematics(L1, L2, target_x, target_y)
print(f"关节角度: q1={np.degrees(q1):.1f} deg, "
      f"q2={np.degrees(q2):.1f} deg")
plot_arm(L1, L2, q1, q2)

雅可比矩阵简介

雅可比矩阵 $J$ 建立了关节速度与末端速度之间的线性映射:

$$ \dot{x} = J(q) \cdot \dot{q} $$

对于平面二连杆:

$$ J = \begin{bmatrix} -L_1 \sin\theta_1 - L_2 \sin(\theta_1+\theta_2) & -L_2 \sin(\theta_1+\theta_2) \ L_1 \cos\theta_1 + L_2 \cos(\theta_1+\theta_2) & L_2 \cos(\theta_1+\theta_2) \end{bmatrix} $$

雅可比矩阵的重要应用:

  • 速度控制:通过 $\dot{q} = J^{-1} \dot{x}$ 将笛卡尔空间速度映射到关节空间
  • 力映射:$\tau = J^T F$,末端力 $F$ 映射为关节力矩 $\tau$
  • 奇异性分析:$\det(J) = 0$ 时机械臂处于奇异构型,失去某方向运动能力

工业机器人运动学拓展

表 6-7 工业机器人运动学拓展

机器人类型 自由度 运动学特点 典型代表
SCARA 4-DOF 平面运动 + 垂直升降,逆解简单 Epson T6
六轴串联 6-DOF 全空间位姿,逆解复杂(最多 8 组解) UR5、ABB IRB
并联机构 6-DOF 刚度高、速度快,正解复杂 Delta、Stewart
协作臂 7-DOF 冗余自由度,可避障/优化姿态 Franka Emika

对于 6-DOF 及以上的工业机器人,运动学求解通常使用现成的库(如 roboticstoolbox-python、MoveIt 2 中的 KDL/TRAC-IK 求解器),而非手动推导。

6.12 实验与练习建议

  1. 使用单片机定时器生成 PWM,控制直流电机的转速并通过编码器实现速度闭环(PID)。
  2. 使用三相逆变器或 ESC 控制小型 BLDC,尝试观察不同 PWM 协议(PWM/OneShot/DShot)的响应差异。
  3. 设计并测试 H 桥的热耗、开关损耗与加装电流限流保护。
  4. 对比行星与三角形连接电机的相电压与性能差异(在安全范围内实验)。

  5. 使用 roboticstoolbox-python 创建一个 6-DOF 机械臂模型,验证正/逆运动学。

  6. 修改平面二连杆 Python 代码,添加轨迹动画——让末端沿圆形路径运动。

6.13 本章小结

本章涵盖了机器人运动学基础、PWM 原理与生成方法、电机分类及驱动方式、行星电机驱动注意事项、轮式机器人与多旋翼驱动工程实例,以及机械臂正逆运动学。读者应能将运动学理论与电机驱动实践相结合,为机器人系统的运动控制奠定基础。


6.14 参考资料

  • 电力电子、功率半导体与电机驱动相关书籍与资料
  • 各类电机驱动器与 ESC 的数据手册
  • STM32、Arduino 等平台 PWM 与定时器应用示例

  • Craig, J.J. Introduction to Robotics: Mechanics and Control(机器人运动学经典教材)
  • Lynch & Park. Modern Robotics: Mechanics, Planning, and Control(开源教材,配套 Python 代码)
  • Peter Corke. Robotics, Vision and Control(配套 roboticstoolbox-python

6.15 本章测验

Quiz results are saved to your browser's local storage and will persist between sessions.

#

1) PWM(脉宽调制)的等效平均电压计算公式是:

#

2) 在电机驱动中,"低通响应"视角下 PWM 能等效为直流电平的原因是:

#

3) 有刷直流电机最常用的驱动电路是:

#

4) 无刷直流电机(BLDC)的驱动方式通常使用:

#

5) 舵机(Servo)的典型控制信号是:

#

6) 在半桥或全桥驱动电路中,死区时间(Dead-time)的作用是:

#

7) 步进电机的驱动通常需要:

#

8) 以下关于行星(Y)连接电机的描述,正确的是:

#

9) 多旋翼无人机的电调(ESC)通常使用什么信号接收油门指令?

#

10) 对于电机感性负载,续流路径(Freewheeling Path)的作用是:

Quiz Progress

0 / 0 questions answered (0%)

0 correct


(本章为综合性工程级概述,具体项目请结合目标电机、电源与驱动器手册进行设计与验证。)