机器人(Robot)是能够感知环境、自主决策并执行物理动作的机器。从工厂流水线的机械臂到家庭扫地机器人,从手术机器人到正在崛起的人形机器人,机器人是人工智能与物理世界交互的载体,也是“具身智能“的核心形态。
根据国际标准化组织(ISO 8373),机器人是“具有一定程度的自主能力,可在其环境内运动以执行预期任务的执行机构“。
一个完整的机器人系统由四大部件组成:
┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐
│ 传感器 │ → │ 控制器 │ → │ 执行器 │ → │ 工作环境 │
│ (感知) │ │ (决策) │ │ (行动) │ │ (物理世界) │
└────────────┘ └────────────┘ └────────────┘ └────────────┘
↑ │
└────────────── 反馈闭环 ────────────────────┘
| 部件 | 说明 | 示例 |
| 传感器 | 感知自身与环境状态 | 摄像头、激光雷达、IMU、编码器 |
| 控制器 | 处理信息、做出决策 | CPU/GPU、MCU、AI 芯片 |
| 执行器 | 产生运动与力 | 电机、液压缸、气动装置 |
| 电源 | 提供能量 | 电池、电源管理 |
1920 捷克作家恰佩克在戏剧中首次使用"Robot"一词
1954 乔治·德沃尔申请第一项工业机器人专利
1961 Unimate 在通用汽车工厂上岗,工业机器人元年
1968 斯坦福研究所研制出第一台移动机器人 Shakey
1973 第一台电动六轴机械臂(KUKA)问世
1997 探路者号火星车;深蓝击败国际象棋世界冠军
2002 iRobot 推出 Roomba,家用机器人普及
2011 Watson 赢得《危险边缘》;Festo 仿生机器人兴起
2013 波士顿动力 Atlas 人形机器人亮相
2020s 人形机器人爆发:Optimus、Figure、宇树等
| 定律 | 内容 |
| 第一定律 | 机器人不得伤害人类,或因不作为而让人类受到伤害 |
| 第二定律 | 机器人必须服从人类命令,除非与第一定律冲突 |
| 第三定律 | 机器人必须保护自身存在,除非与前两条冲突 |
三定律是科幻设定,但对今天的机器人安全设计仍有启发意义。
| 类型 | 说明 | 代表 |
| 工业机器人 | 工厂中焊接、搬运、装配 | 机械臂(KUKA、ABB、发那科) |
| 服务机器人 | 服务人类生活 | 扫地机器人、送餐机器人 |
| 医疗机器人 | 辅助手术、康复 | 达芬奇手术机器人 |
| 特种机器人 | 危险环境作业 | 排爆、消防、水下机器人 |
| 物流机器人 | 仓储分拣、配送 | AGV、Kiva 机器人 |
| 农业机器人 | 播种、采摘、喷洒 | 植保无人机、采摘机器人 |
| 人形机器人 | 双足行走、拟人形态 | Optimus、Atlas、宇树 H1 |
| 仿生机器人 | 模仿生物形态 | 机器狗(Spot)、机器鱼、机器鸟 |
| 运动方式 | 特点 | 示例 |
| 轮式 | 简单高效,适合平坦地形 | 扫地机器人、AGV |
| 履带式 | 越野能力强 | 排爆机器人 |
| 足式 | 复杂地形适应强,控制难 | 四足机器狗、双足人形 |
| 飞行 | 三维机动 | 无人机 |
| 水下 | 防水耐压 | 深海探测机器人 |
| 优势 | 挑战 |
| 适配人类环境(楼梯、门把手、工具) | 双足平衡控制困难 |
| 自然融入人类社会(交互、情感) | 成本高昂、量产困难 |
| 直接复用人类工具与流程 | 续航、散热、可靠性不足 |
| 传感器 | 原理 | 用途 |
| 摄像头 | 光学成像 | 视觉识别、SLAM |
| 激光雷达(LiDAR) | 激光测距点云 | 高精度三维建图 |
| 毫米波雷达 | 电磁波测距 | 远距离测速测距 |
| IMU(惯性测量单元) | 加速度计+陀螺仪 | 姿态估计 |
| 编码器 | 电机角度测量 | 关节位置反馈 |
| 力/触觉传感器 | 压力、力矩感知 | 抓取力控制 |
| 方法 | 说明 |
| 状态机 | 有限状态切换,简单可靠 |
| 行为树 | 分层组织行为,可扩展 |
| 路径规划 | A*、Dijkstra、RRT 等算法 |
| 强化学习 | 从奖励中学习策略(见第 39 章) |
| 模仿学习 | 从人类示范中学习(Teleop→学习) |
| 大模型 + VLA | 视觉-语言-动作模型(如 RT-2) |
| 控制方式 | 说明 |
| 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
}
}
}
| 概念 | 说明 |
| 正运动学 | 已知关节角度,求末端位置(唯一解) |
| 逆运动学 | 已知末端目标位置,求关节角度(可能多解/无解) |
关节 2(肩)
╱│
L1 ╱ │ 关节 3(肘)
╱ ╱
╱ ╱ L2
╱ ╱
关节1 末端执行器(手)
机器人每个可独立运动的关节就是一个自由度。典型配置:
| 机器人 | 自由度 |
| 平面两关节臂 | 2 DOF |
| 工业六轴机械臂 | 6 DOF |
| 四足机器狗 | 12 DOF |
| 人形机器人 | 30~50+ DOF |
六自由度足以让末端到达三维空间中的任意位置和姿态,这也是工业机械臂多为六轴的原因。
| 表示 | 说明 | 优点/缺点 |
| 旋转矩阵 | 3×3 矩阵 | 直观,有冗余(9 个参数) |
| 欧拉角 | 绕轴依次旋转(roll/pitch/yaw) | 直观,有万向节锁问题 |
| 四元数 | 4 参数(w,x,y,z) | 无奇点、插值平滑,广泛使用 |
SLAM(Simultaneous Localization and Mapping,同步定位与建图):机器人在未知环境中一边构建地图,一边确定自身位置。
传感器数据(激光/视觉)
│
▼
┌───────────────┐
│ 前端:帧间匹配 │ ──> 位姿估计
└───────┬───────┘
│
┌───────▼───────┐
│ 后端:图优化 │ ──> 全局一致轨迹
└───────┬───────┘
│
┌───────▼───────┐
│ 建图:占据栅格 │ ──> 环境地图
└───────────────┘
| 方案 | 传感器 | 特点 |
| 激光 SLAM | 激光雷达 | 精度高,室外强光鲁棒 |
| 视觉 SLAM | 摄像头 | 成本低,纹理依赖 |
| 视觉-惯性 | 摄像头+IMU | 弱纹理场景互补(VINS) |
建图 → 定位 → 全局路径规划 → 局部避障 → 运动控制
│ │ │ │
│ │ │ └─ 实时躲避动态障碍
│ │ └─ A*/Dijkstra 找全局路径
│ └─ AMCL/粒子滤波 实时定位
└─ SLAM 构建环境地图
| 算法 | 说明 |
| Dijkstra | 找最短路径,遍历多 |
| A* | 启发式搜索,高效实用 |
| RRT | 随机采样,适合高维空间 |
| DWA(动态窗口法) | 局部避障,考虑速度约束 |
ROS(Robot Operating System)不是真正的操作系统,而是一套面向机器人的分布式通信框架:节点(Node)通过话题(Topic)、服务(Service)、动作(Action)通信。
┌─────────┐ 发布 /odom ┌─────────┐ 订阅 /cmd_vel ┌─────────┐
│ 里程计节点 │ ──────────> │ 主节点 │ ──────────────> │ 运动控制 │
└─────────┘ 话题 └─────────┘ └─────────┘
| 通信方式 | 模式 | 适用 |
| Topic(话题) | 发布/订阅,异步 | 高频传感器数据 |
| Service(服务) | 请求/响应,同步 | 一次性调用 |
| Action(动作) | 长时任务 + 反馈 | 导航、机械臂运动 |
| 版本 | 说明 |
| ROS 1(Noetic) | 经典版本,生态成熟,已停止维护 |
| ROS 2(Humble/Iron) | 新一代,基于 DDS,支持实时与多机器人 |
// 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 在物理世界中感知、推理、行动。
VLA 模型(Vision-Language-Action)
│ 输入:图像 + 语言指令
▼
输出:动作指令(关节角度/末端轨迹)
▼
机器人执行 → 传感器反馈 → 闭环迭代
| 模型 | 提出者 | 特点 |
| RT-2 | Google DeepMind | 视觉-语言-动作大模型 |
| PaLM-E | Google | 具身多模态大模型 |
| Figure 01 | Figure + OpenAI | 与人类对话并执行任务 |
| 范式 | 说明 |
| 示范学习 | 从人类遥操作数据中学习 |
| 强化学习 | 在仿真/现实中试错学习 |
| 仿真到现实(Sim2Real) | 仿真训练后迁移到真机 |
| 世界模型 | 在内部模拟环境预演行动 |
| 平台 | 说明 |
| MuJoCo | 高效物理仿真(DeepMind) |
| Isaac Sim | NVIDIA 机器人仿真与合成数据 |
| Gazebo | ROS 常用开源仿真器 |
| Matterport/合成数据 | 训练感知模型 |
| 议题 | 说明 |
| 物理安全 | 力控、急停、安全距离(ISO 10218 等标准) |
| 隐私 | 家庭/医疗机器人的数据采集边界 |
| 责任 | 机器人造成损害时谁负责(厂商/用户/算法) |
| 就业 | 自动化替代与再就业 |
| 武器化 | 自主武器系统的伦理争议 |
| 人机信任 | 过度依赖与情感依附问题 |
#![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 |
- PID 调参:写一个 PID 控制器模拟小车直线行驶,调节 kp/ki/kd 观察过冲、震荡与稳态误差。
- 逆运动学实现:用 nalgebra 为两关节平面机械臂实现逆运动学求解,画出末端轨迹。
- A* 寻路:实现 A* 算法在一个栅格地图上找最短路径,并用字符画可视化。
- 仿真实验:在 MuJoCo 或 Isaac Sim 中加载一个简单机器人,用强化学习训练它完成一个任务。
- ROS 2 初探:安装 ROS 2,用 rclrs 创建一个发布/订阅对,实现话题通信。
- 机器人伦理讨论:针对“人形机器人进入家庭“的场景,从隐私、责任、情感三个角度写一份风险分析报告。