第6章 机器人运动与电机驱动
6 第 6 章 机器人运动与电机驱动¶
6.1 机器人运动概述¶
机器人的运动方式(Locomotion)决定了其活动范围和应用场景。从运动学角度看,不同方式对电机控制和驱动系统的要求差异很大,选对运动方式是机器人系统设计的第一步。
主要运动方式¶
表 6-1 主要运动方式
| 运动方式 | 典型平台 | 驱动元件 | 适用场景 |
|---|---|---|---|
| 轮式(Wheeled) | 差速小车、全向平台、汽车 | 直流电机、步进电机 | 平坦地面、室内 |
| 履带式(Tracked) | 坦克、排爆机器人 | 直流电机 | 崎岖地形、楼梯 |
| 足式(Legged) | 四足狗、双足人形 | 舵机、关节电机 | 复杂地形、仿生 |
| 飞行(Aerial) | 多旋翼、固定翼 | 无刷电机 + ESC | 空中侦察、航拍 |
| 水下(Underwater) | ROV、AUV | 推进器电机 | 水下探测、维护 |
通过上表的对比可以看出,不同方案在运动方式、典型平台、驱动元件等等方面各有优劣,实际选型时应结合具体应用场景综合权衡。
图 6-1 上图以框图形式描绘了主要运动方式的系统架构,清晰呈现了各模块之间的连接关系与信号流向。
本课程聚焦轮式机器人——它是最常见的教学和科研平台,驱动简单、控制理论成熟,且直接对应本章后续的 PWM 和电机驱动技术。
6.2 轮式机器人运动学基础¶
差速驱动模型(Differential Drive)¶
差速驱动是最常用的轮式机器人配置:两个独立驱动轮 + 一个或多个从动轮(万向轮)。通过控制左右轮的速度差实现前进、后退和转向。
图 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 |
上表对其他轮式配置中各方案的特性进行了横向对比,便于读者根据实际需求选择最合适的技术路线。
从运动学到电机控制¶
运动学提供了「期望的轮速 → 电机目标转速」的映射。本章后续内容将解决「如何精确控制电机达到目标转速」的问题:
- PWM 调速(8.3-8.5 节):通过占空比控制电机电压 → 控制转速;
- 电机与驱动器(8.6-8.8 节):选择合适的电机和驱动硬件;
- 闭环控制(第 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 | 角度定位 | 内置电位器 | 低 | 机械臂关节 |
通过上表的对比可以看出,不同方案在电机类型、驱动方式、转速控制等等方面各有优劣,实际选型时应结合具体应用场景综合权衡。
图 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} $$
图 6-4 上图以框图形式描绘了 DH 参数法(Denavit-Hartenberg)的系统架构,清晰呈现了各模块之间的连接关系与信号流向。
正运动学实例:平面二连杆机械臂¶
最简单的机械臂——两个旋转关节在平面内运动(2-DOF Planar Arm):
图 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 实验与练习建议¶
- 使用单片机定时器生成 PWM,控制直流电机的转速并通过编码器实现速度闭环(PID)。
- 使用三相逆变器或 ESC 控制小型 BLDC,尝试观察不同 PWM 协议(PWM/OneShot/DShot)的响应差异。
- 设计并测试 H 桥的热耗、开关损耗与加装电流限流保护。
-
对比行星与三角形连接电机的相电压与性能差异(在安全范围内实验)。
-
使用
roboticstoolbox-python创建一个 6-DOF 机械臂模型,验证正/逆运动学。 - 修改平面二连杆 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
(本章为综合性工程级概述,具体项目请结合目标电机、电源与驱动器手册进行设计与验证。)