Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第六十六 机器人

机器人(Robot)是能够感知环境、自主决策并执行物理动作的机器。从工厂流水线的机械臂到家庭扫地机器人,从手术机器人到正在崛起的人形机器人,机器人是人工智能与物理世界交互的载体,也是“具身智能“的核心形态。


一、机器人概述

1.1 机器人的定义

根据国际标准化组织(ISO 8373),机器人是“具有一定程度的自主能力,可在其环境内运动以执行预期任务的执行机构“。

一个完整的机器人系统由四大部件组成:

┌────────────┐   ┌────────────┐   ┌────────────┐   ┌────────────┐
│  传感器     │ → │  控制器     │ → │  执行器     │ → │  工作环境   │
│ (感知)     │   │ (决策)     │   │ (行动)     │   │ (物理世界) │
└────────────┘   └────────────┘   └────────────┘   └────────────┘
       ↑                                            │
       └────────────── 反馈闭环 ────────────────────┘
部件说明示例
传感器感知自身与环境状态摄像头、激光雷达、IMU、编码器
控制器处理信息、做出决策CPU/GPU、MCU、AI 芯片
执行器产生运动与力电机、液压缸、气动装置
电源提供能量电池、电源管理

1.2 机器人发展简史

1920  捷克作家恰佩克在戏剧中首次使用"Robot"一词
1954  乔治·德沃尔申请第一项工业机器人专利
1961  Unimate 在通用汽车工厂上岗,工业机器人元年
1968  斯坦福研究所研制出第一台移动机器人 Shakey
1973  第一台电动六轴机械臂(KUKA)问世
1997  探路者号火星车;深蓝击败国际象棋世界冠军
2002  iRobot 推出 Roomba,家用机器人普及
2011  Watson 赢得《危险边缘》;Festo 仿生机器人兴起
2013  波士顿动力 Atlas 人形机器人亮相
2020s  人形机器人爆发:Optimus、Figure、宇树等

1.3 机器人三定律(阿西莫夫)

定律内容
第一定律机器人不得伤害人类,或因不作为而让人类受到伤害
第二定律机器人必须服从人类命令,除非与第一定律冲突
第三定律机器人必须保护自身存在,除非与前两条冲突

三定律是科幻设定,但对今天的机器人安全设计仍有启发意义。


二、机器人的分类

2.1 按应用场景分类

类型说明代表
工业机器人工厂中焊接、搬运、装配机械臂(KUKA、ABB、发那科)
服务机器人服务人类生活扫地机器人、送餐机器人
医疗机器人辅助手术、康复达芬奇手术机器人
特种机器人危险环境作业排爆、消防、水下机器人
物流机器人仓储分拣、配送AGV、Kiva 机器人
农业机器人播种、采摘、喷洒植保无人机、采摘机器人
人形机器人双足行走、拟人形态Optimus、Atlas、宇树 H1
仿生机器人模仿生物形态机器狗(Spot)、机器鱼、机器鸟

2.2 按运动方式分类

运动方式特点示例
轮式简单高效,适合平坦地形扫地机器人、AGV
履带式越野能力强排爆机器人
足式复杂地形适应强,控制难四足机器狗、双足人形
飞行三维机动无人机
水下防水耐压深海探测机器人

2.3 人形机器人的优势与挑战

优势挑战
适配人类环境(楼梯、门把手、工具)双足平衡控制困难
自然融入人类社会(交互、情感)成本高昂、量产困难
直接复用人类工具与流程续航、散热、可靠性不足

三、机器人的核心技术

3.1 感知(Perception)

传感器原理用途
摄像头光学成像视觉识别、SLAM
激光雷达(LiDAR)激光测距点云高精度三维建图
毫米波雷达电磁波测距远距离测速测距
IMU(惯性测量单元)加速度计+陀螺仪姿态估计
编码器电机角度测量关节位置反馈
力/触觉传感器压力、力矩感知抓取力控制

3.2 决策(Decision)

方法说明
状态机有限状态切换,简单可靠
行为树分层组织行为,可扩展
路径规划A*、Dijkstra、RRT 等算法
强化学习从奖励中学习策略(见第 39 章)
模仿学习从人类示范中学习(Teleop→学习)
大模型 + VLA视觉-语言-动作模型(如 RT-2)

3.3 控制(Control)

控制方式说明
PID 控制比例-积分-微分,最经典的控制算法
MPC(模型预测控制)滚动优化未来轨迹
LQR线性二次型最优控制
阻抗/导纳控制柔顺控制,适合人机交互
模型预测 + RL学习与优化结合
#![allow(unused)]
fn main() {
// PID 控制器示意
struct Pid {
    kp: f64, ki: f64, kd: f64,
    integral: f64,
    prev_error: f64,
}

impl Pid {
    fn update(&mut self, error: f64, dt: f64) -> f64 {
        self.integral += error * dt;
        let derivative = (error - self.prev_error) / dt;
        self.prev_error = error;
        self.kp * error + self.ki * self.integral + self.kd * derivative
    }
}
}

四、运动学与动力学

4.1 正运动学与逆运动学

概念说明
正运动学已知关节角度,求末端位置(唯一解)
逆运动学已知末端目标位置,求关节角度(可能多解/无解)
         关节 2(肩)
        ╱│
    L1 ╱  │ 关节 3(肘)
      ╱    ╱
    ╱    ╱ L2
  ╱    ╱
关节1  末端执行器(手)

4.2 自由度(DOF)

机器人每个可独立运动的关节就是一个自由度。典型配置:

机器人自由度
平面两关节臂2 DOF
工业六轴机械臂6 DOF
四足机器狗12 DOF
人形机器人30~50+ DOF

六自由度足以让末端到达三维空间中的任意位置和姿态,这也是工业机械臂多为六轴的原因。

4.3 位姿表示

表示说明优点/缺点
旋转矩阵3×3 矩阵直观,有冗余(9 个参数)
欧拉角绕轴依次旋转(roll/pitch/yaw)直观,有万向节锁问题
四元数4 参数(w,x,y,z)无奇点、插值平滑,广泛使用

五、SLAM 与自主导航

5.1 SLAM 是什么

SLAM(Simultaneous Localization and Mapping,同步定位与建图):机器人在未知环境中一边构建地图,一边确定自身位置。

传感器数据(激光/视觉)
      │
      ▼
┌───────────────┐
│ 前端:帧间匹配 │ ──> 位姿估计
└───────┬───────┘
        │
┌───────▼───────┐
│ 后端:图优化   │ ──> 全局一致轨迹
└───────┬───────┘
        │
┌───────▼───────┐
│ 建图:占据栅格 │ ──> 环境地图
└───────────────┘
方案传感器特点
激光 SLAM激光雷达精度高,室外强光鲁棒
视觉 SLAM摄像头成本低,纹理依赖
视觉-惯性摄像头+IMU弱纹理场景互补(VINS)

5.2 自主导航流程

建图 → 定位 → 全局路径规划 → 局部避障 → 运动控制
  │       │          │            │
  │       │          │            └─ 实时躲避动态障碍
  │       │          └─ A*/Dijkstra 找全局路径
  │       └─ AMCL/粒子滤波 实时定位
  └─ SLAM 构建环境地图

5.3 路径规划算法

算法说明
Dijkstra找最短路径,遍历多
A*启发式搜索,高效实用
RRT随机采样,适合高维空间
DWA(动态窗口法)局部避障,考虑速度约束

六、机器人操作系统(ROS)

6.1 ROS 是什么

ROS(Robot Operating System)不是真正的操作系统,而是一套面向机器人的分布式通信框架:节点(Node)通过话题(Topic)、服务(Service)、动作(Action)通信。

┌─────────┐ 发布 /odom  ┌─────────┐  订阅 /cmd_vel  ┌─────────┐
│ 里程计节点 │ ──────────> │ 主节点    │ ──────────────> │ 运动控制 │
└─────────┘  话题       └─────────┘                 └─────────┘
通信方式模式适用
Topic(话题)发布/订阅,异步高频传感器数据
Service(服务)请求/响应,同步一次性调用
Action(动作)长时任务 + 反馈导航、机械臂运动

6.2 ROS 版本

版本说明
ROS 1(Noetic)经典版本,生态成熟,已停止维护
ROS 2(Humble/Iron)新一代,基于 DDS,支持实时与多机器人

6.3 ROS 2 与 Rust

Crate说明
rclrsROS 2 官方 Rust 客户端库
ros2-client轻量级 ROS 2 客户端
// rclrs 发布节点示意(简化)
use rclrs::*;

fn main() -> Result<(), RclrsError> {
    let context = Context::new(std::env::args())?;
    let node = context.create_node("rust_publisher")?;
    let publisher = node.create_publisher::<std_msgs::msg::String>("chatter", 10)?;
    loop {
        publisher.publish(StringMsg::default());
        std::thread::sleep(std::time::Duration::from_millis(500));
    }
}

七、机器人中的 AI

7.1 具身智能(Embodied AI)

具身智能 = 大模型(大脑)+ 机器人(身体):让 AI 在物理世界中感知、推理、行动。

VLA 模型(Vision-Language-Action)
   │ 输入:图像 + 语言指令
   ▼
输出:动作指令(关节角度/末端轨迹)
   ▼
机器人执行 → 传感器反馈 → 闭环迭代
模型提出者特点
RT-2Google DeepMind视觉-语言-动作大模型
PaLM-EGoogle具身多模态大模型
Figure 01Figure + OpenAI与人类对话并执行任务

7.2 机器人学习范式

范式说明
示范学习从人类遥操作数据中学习
强化学习在仿真/现实中试错学习
仿真到现实(Sim2Real)仿真训练后迁移到真机
世界模型在内部模拟环境预演行动

7.3 仿真平台

平台说明
MuJoCo高效物理仿真(DeepMind)
Isaac SimNVIDIA 机器人仿真与合成数据
GazeboROS 常用开源仿真器
Matterport/合成数据训练感知模型

八、机器人安全与伦理

议题说明
物理安全力控、急停、安全距离(ISO 10218 等标准)
隐私家庭/医疗机器人的数据采集边界
责任机器人造成损害时谁负责(厂商/用户/算法)
就业自动化替代与再就业
武器化自主武器系统的伦理争议
人机信任过度依赖与情感依附问题

九、Rust 机器人生态

Crate用途
rclrsROS 2 Rust 客户端
ev3devLEGO EV3 机器人
embedded-hal嵌入式硬件抽象层
tokio-serial串口异步通信
nalgebra线性代数(运动学计算)
k机械臂运动学库
#![allow(unused)]
fn main() {
// 用 k 库计算机械臂逆运动学(示意)
use k::Chain;
use nalgebra::Isometry3;

fn ik_example() {
    let chain = Chain::from_urdf_file("robot.urdf").unwrap();
    // 设定目标位姿
    let target = Isometry3::translation(0.5, 0.0, 0.5);
    // 逆运动学求解(迭代)
    let solutions = chain.iter_joint_positions().collect::<Vec<_>>();
    println!("关节数: {}", solutions.len());
}
}

十、总结与练习

本章小结

知识点要点
机器人构成传感器、控制器、执行器、电源
分类工业/服务/医疗/特种/人形/仿生
核心技术感知、决策、控制(PID/MPC)
运动学正运动学、逆运动学、自由度、四元数
SLAM同步定位与建图(激光/视觉)
导航全局规划 + 局部避障
ROS节点、话题、服务、动作
具身智能VLA 模型、强化学习、Sim2Real
安全伦理物理安全、隐私、责任、武器化
Rust 生态rclrs、k、nalgebra、embedded-hal

练习建议

  1. PID 调参:写一个 PID 控制器模拟小车直线行驶,调节 kp/ki/kd 观察过冲、震荡与稳态误差。
  2. 逆运动学实现:用 nalgebra 为两关节平面机械臂实现逆运动学求解,画出末端轨迹。
  3. A* 寻路:实现 A* 算法在一个栅格地图上找最短路径,并用字符画可视化。
  4. 仿真实验:在 MuJoCo 或 Isaac Sim 中加载一个简单机器人,用强化学习训练它完成一个任务。
  5. ROS 2 初探:安装 ROS 2,用 rclrs 创建一个发布/订阅对,实现话题通信。
  6. 机器人伦理讨论:针对“人形机器人进入家庭“的场景,从隐私、责任、情感三个角度写一份风险分析报告。