From Bits to the Physical World

A Full-Stack Robotics Guide for AI and Software Developers

01The Big Picture

What Is a Robot, Really?The Full-Stack Map of RoboticsWho's Who in the Industry?

02Hardware

SensorsActuatorsCompute Platforms

03Operating System

ROS 2DDS Deep Dive

04Algorithms

SLAMNav2MoveIt 2PerceptionBehavior Trees

05Simulation & Training

Why Simulation?NVIDIA Isaac Sim

06AI Meets Robotics

Reinforcement LearningImitation LearningFoundation Models

07Toolchain

Visualization & DebuggingDev Environment & DevOps

08The Harsh Reality of Deployment

Real-Robot DeploymentReliability EngineeringFleet Management

09Industry Reality

Business ModelsChina vs. GlobalCareer Advice

Part 2: Hardware · The robot's body

Chapter 5

执行器 - 机器人的肌肉和关节

上一章讲的传感器解决了“看到”的问题。但光看不动是没用的 - 你还需要让机器人动起来。

你的身体之所以能动,是因为 600 多块肌肉在收缩和舒张,带动骨骼绕关节旋转。机器人用电机(motor)代替肌肉,用连杆(link)代替骨骼,用机械关节代替生物关节。电机旋转 → 关节运动 → 末端执行器(手/夹爪)到达目标位置。

对软件开发者来说,执行器是“你发出一条指令之后,真正让事情在物理世界发生的东西”。你写了一行 move_joint(angle=30) - 从这行代码到机器人手臂真的转了 30 度之间,发生的一切都是执行器层面的事。你不需要设计电机,但你得理解它的能力边界,才能写出靠谱的控制代码。


电机 - 你的代码能”要求”什么样的运动?

你写了一行 move_joint(angle=30, velocity=1.0) - 电机类型决定了这行代码执行时的真实物理行为:它能转多快?能输出多大力?被外力推动时你能不能感知到?

伺服电机(Servo Motor) 是机器人关节的主力。它自带编码器(encoder),形成闭环控制 - 你说转 30 度,它转到 30 度后会自己保持住。对开发者来说,这意味着你发位置指令就行,电机自己搞定”怎么到达”的问题。大部分工业机械臂(UR、FANUC)和人形机器人(宇树 G1、Fourier GR-1)都用伺服电机。你打交道最多的就是这种。

步进电机(Stepper Motor) 每收到一个脉冲信号转一小步(比如 1.8 度),没有反馈回路。好处是控制逻辑简单 - 发 100 个脉冲就转 180 度,跟数数一样。坑在于:高速时电机可能跟不上脉冲频率,丢步了你不知道 - 你以为转了 180 度,实际上只到了 170 度,而且没有编码器告诉你出错了。3D 打印机和 CNC 用步进电机,机器人关节很少用。

直驱电机(Direct Drive Motor) 不经过减速器,轴直接连关节。对开发者最重要的特性是 backdrivability(反向可驱动性):有人推机器人的手臂时,电机能立刻感受到外力,你的代码可以读取这个力反馈。这对力控和安全的人机交互至关重要。代价是扭矩小 - 没有减速器放大力矩,同样大小的电机能举起的东西少得多。


减速器 - 你的精度天花板在这里

你的 IK 求解器算出了完美的关节角度,控制器精确地把指令发给了电机 - 但夹爪到达的位置偏了 1.7 毫米。Bug 在哪?不在你的代码里。

这 1.7 毫米来自减速器的回差(backlash) - 齿轮之间总有微小间隙,关节正转和反转时会”空走”一小段。一个关节 0.1 度的回差,经过 1 米长的臂展放大,末端就偏了 1.7 毫米。你的算法再精确也吃不掉这个物理误差。对于精密装配来说,这可能就是”插得进去”和”插不进去”的区别。

回差的大小取决于减速器类型。大部分电机的原始输出是”转速高、扭矩小”,减速器把转速换成力矩 - 像自行车的低速档,慢但有劲。

谐波减速器(Harmonic Drive) 是机器人关节的主流选择。减速比大(通常 50:1 到 160:1),回差极小,结构紧凑。缺点是贵、寿命有限(柔轮会疲劳磨损)。几乎所有工业机械臂和人形机器人手臂都在用。日本的 Harmonic Drive Systems 长期垄断高端市场,国内的绿的谐波在追赶。

行星减速器(Planetary Gearbox) 承载能力强,效率高,但回差比谐波大。适合负载大、精度要求相对低的场景,比如移动底盘的驱动轮。


自由度(DoF) - 一个系统能在多少个方向上动

自由度(Degrees of Freedom,DoF) 是描述机器人灵活程度的核心指标。一个关节能在几个方向上独立运动,就贡献几个自由度。

直觉建立:

  • 一扇门的合页:1 DoF(只能开/关)
  • 你的手腕:大约 3 DoF(上下弯、左右弯、旋转)
  • 你的整条手臂(肩 + 肘 + 腕):7 DoF
  • 宇树 G1 人形机器人全身:23-43 DoF(取决于配置)

6 DoF 是一个关键数字 - 在三维空间中,要让一个物体到达任意位置 [x, y, z] 和任意朝向 [roll, pitch, yaw],至少需要 6 个自由度。这就是为什么大部分工业机械臂是 6 轴的。

7 DoF 的手臂(比如 KUKA iiwa、Franka Emika Panda)多出来的那一个自由度叫“冗余自由度”。它让手臂在到达同一个目标位姿时有多种关节构型可选 - 就像你伸手拿桌上的杯子,你的肘关节可以抬高也可以放低,手还是能到同一个位置。这个冗余度对避障非常有用 - 手臂可以“绕过”障碍物到达目标。

DoF 越多越灵活,但控制复杂度也急剧上升。一个 7 DoF 手臂的逆运动学就已经需要优化求解了(无穷多解中选最优的),一个 43 DoF 的人形机器人全身运动规划至今没有真正实时的通用解决方案。


末端执行器 - 机器人的”手”

手臂规划了完美的轨迹、精确到达了目标位置 - 但如果”手”拿不住东西,一切白费。选什么手,完全取决于你要抓什么。

标准纸箱、玻璃板、金属片 → 用吸盘(Suction Gripper)。真空吸附,速度快、成功率高。Amazon 仓库的分拣机器人大量使用。限制是多孔物体(布料)吸不住,不规则表面密封不了。

瓶瓶罐罐、规则零件 → 用平行夹爪(Parallel Gripper)。两根手指平行开合,控制简单(就一个 open/close),夹持力大,可靠。Robotiq 2F-85 是工业里用得最多的。大概能覆盖 70% 的工业抓取场景。

食品、农产品 → 考虑软体夹爪(Soft Gripper)。柔性材料自适应物体形状,不会捏坏水果。代价是控制精度有限,夹持力不大。

拧瓶盖、翻书页、打结 → 理论上需要灵巧手(Dexterous Hand)。LEAP Hand、Shadow Hand、Ability Hand 是比较知名的,一只手可能有 16-20 个 DoF。控制难度是平行夹爪的一百倍,目前大部分还在研究阶段。

很多团队的务实做法是装一个快换接口(tool changer),根据任务切换不同的末端执行器 - 不追求一只手解决所有问题。


从仿真到真机:执行器让你的代码”说谎”

仿真里你发 move_joint(angle=30),关节精确地到了 30 度。真机上同样的指令,可能到了 29.8 度,可能到了 30 度但在晃,可能到了一半电机就过热降速了。以下是最常见的几种”说谎”方式:

电机过热降速。 你的程序让机器人手臂伸直举着东西 - 仿真里可以举到天荒地老,真机上电机持续大力矩输出会过热。伺服电机的过热保护会自动降功率甚至停转。你的 demo 跑到一半机器人手臂突然”软”了,大概率是这个原因。

回差晃动。 手臂到达目标位置后松开力矩,关节会有微小的”晃动” - 这就是减速器回差的实际表现。做插入操作(peg-in-hole)时,这个晃动可能是反复失败的原因。解决方案通常是在接近目标时切换到力控模式,用力反馈来”挤”到位。

关节撞限位。 每个关节都有物理旋转范围。IK 求解器给出一个超出范围的解,执行时关节会撞到机械限位块 - 那个”咔”的声音就是硬件在骂你。这件事在仿真里通常只是一个 warning,在真机上可能是一次维修。

负载变了,一切都变了。 仿真里调好了一套运动参数,真机上把夹爪里的物体从一瓶水换成一箱水,速度、加速度、停止距离全部失效。电机需要的力矩变了,惯量变了,刹车距离变了。

这些问题有一个共同的根源:仿真器按你说的做,真机按物理定律做。 缩小这个差距 - 或者说让你的算法 robust 到能容忍这个差距 - 是 sim-to-real 迁移最核心的工程挑战之一。

← Previous04. SensorsNext→06. Compute Platforms