上篇回顾
今天早上,我们了解了具身智能的基本概念——让AI不再只是”活在屏幕里”的程序,而是能感知物理世界、用身体与环境互动的智能体。核心知识点回顾:
- 具身智能的本质:AI + 身体(传感器 + 执行器)= 能在真实世界中行动的智能
- 为什么需要”身体”:纯语言AI无法理解”重力”是什么感觉,但一个机器人摔倒一次就懂了
- 发展现状:从波士顿动力的Atlas到Figure的人形机器人,具身智能正从实验室走向产业化
今晚的实践课,我们换个角度——不聊概念,动手体验。即使你没有实体机器人,也能通过仿真环境、在线平台和AI工具,感受具身智能的魅力。
实操一:用MuJoCo亲手”控制”一个机器人
MuJoCo是DeepMind开源的物理仿真引擎,也是目前具身智能研究最主流的平台之一。好消息是——它完全免费,而且安装超简单。
第一步:安装MuJoCo
`bash
# 创建虚拟环境
python3 -m venv mujoco-env
source mujoco-env/bin/activate
# 安装
pip install mujoco
`
第二步:运行你的第一个机器人仿真
`python
import mujoco
import mujoco.viewer
import time
# 加载一个经典环境:倒立摆(Inverted Pendulum)
model = mujoco.MjModel.from_xml_string(“””
“””)
data = mujoco.MjData(model)
# 运行仿真并可视化
with mujoco.viewer.launch_passive(model, data) as viewer:
while viewer.is_running():
mujoco.mj_step(model, data)
viewer.sync()
time.sleep(0.01)
`
运行后你会看到一个可视化窗口,显示一个简单的机械臂在物理规律下运动。这就是具身智能的起点——在虚拟世界中模拟真实物理。
小贴士:如果你用的是服务器没有显示器,可以用mujoco.mj_resetData()重置状态,然后用matplotlib渲染帧:
`python
import matplotlib.pyplot as plt
import numpy as np
renderer = mujoco.Renderer(model, height=480, width=640)
mujoco.mj_forward(model, data)
renderer.update_scene(data)
img = renderer.render()
plt.imshow(img)
plt.axis(‘off’)
plt.savefig(‘robot_sim.png’, dpi=150)
print(“截图已保存到 robot_sim.png”)
`
实操二:用Gymnasium训练一个”会走路”的机器人
Gymnasium(原OpenAI Gym)是最流行的强化学习环境库。我们用它来训练一个四足机器人学会走路。
第一步:安装环境
`bash
pip install gymnasium[mujoco]
`
第二步:让机器人”乱动”——随机策略
`python
import gymnasium as gym
# 创建四足机器人环境
env = gym.make(“Ant-v5″, render_mode=”human”)
obs, info = env.reset()
total_reward = 0
for step in range(1000):
# 随机选择动作
action = env.action_space.sample()
obs, reward, terminated, truncated, info = env.step(action)
total_reward += reward
if terminated or truncated:
obs, info = env.reset()
print(f”随机策略总奖励: {total_reward:.1f}”)
print(“机器人在乱动——它还不会走路!”)
env.close()
`
运行后你会看到一只”蚂蚁”机器人在屏幕上疯狂抽搐。它完全没有目标,只是在随机摆动四肢。
第三步:对比——用训练好的模型
`python
# 安装 stable-baselines3(强化学习算法库)
# pip install stable-baselines3
from stable_baselines3 import PPO
# 创建环境
env = gym.make(“Ant-v5”)
# 训练一个PPO智能体(大约需要几分钟)
print(“开始训练…这需要几分钟”)
model = PPO(“MlpPolicy”, env, verbose=1)
model.learn(total_timesteps=100_000)
# 测试训练好的模型
obs, info = env.reset()
total_reward = 0
for step in range(1000):
action, _ = model.predict(obs, deterministic=True)
obs, reward, terminated, truncated, info = env.step(action)
total_reward += reward
if terminated or truncated:
break
print(f”训练后总奖励: {total_reward:.1f}”)
print(“机器人学会走路了!”)
env.close()
`
对比两次运行的结果,你就理解了强化学习在具身智能中的核心作用:从随机乱动到有目标地前进,这就是”学习”的过程。
实操三:用自然语言控制机器人——LLM+机器人
2025-2026年最火的方向之一,就是用大语言模型直接控制机器人。你不需要写代码告诉机器人”先迈左腿,再迈右腿”,只需要用自然语言说”走到桌子旁边”。
我们来体验这个概念:
`python
import json
# 模拟一个机器人控制场景
# 真实系统中,LLM会输出机器人的运动参数
def llm_robot_controller(user_command: str) -> dict:
“””
用大语言模型将自然语言转化为机器人动作序列
这是一个概念演示——真实系统会调用LLM API
“””
# 预定义的命令映射(真实场景中由LLM生成)
action_map = {
“走到桌子旁边”: {
“actions”: [
{“type”: “move”, “direction”: “forward”, “distance”: 2.0},
{“type”: “turn”, “angle”: -45},
{“type”: “move”, “direction”: “forward”, “distance”: 1.0},
{“type”: “stop”}
],
“description”: “前进2米→左转45度→前进1米→停止”
},
“拿起水杯”: {
“actions”: [
{“type”: “locate”, “object”: “cup”},
{“type”: “move_arm”, “target”: “cup_position”},
{“type”: “gripper”, “action”: “close”},
{“type”: “lift”, “height”: 0.1}
],
“description”: “定位水杯→移动机械臂→夹爪闭合→抬起10厘米”
},
“打扫房间”: {
“actions”: [
{“type”: “scan”, “area”: “room”},
{“type”: “plan_path”, “algorithm”: “zigzag”},
{“type”: “clean”, “mode”: “vacuum”},
{“type”: “return”, “position”: “charging_station”}
],
“description”: “扫描房间→规划路径→吸尘清扫→返回充电站”
}
}
# 找到最匹配的命令
for key, value in action_map.items():
if key in user_command:
return value
return {
“actions”: [{“type”: “error”, “message”: “未理解命令,请重试”}],
“description”: “无法识别的指令”
}
# 测试
commands = [“请走到桌子旁边”, “帮我拿起水杯”, “打扫一下房间”]
for cmd in commands:
result = llm_robot_controller(cmd)
print(f”n命令: {cmd}”)
print(f”动作分解: {result[‘description’]}”)
print(f”详细步骤: {json.dumps(result[‘actions’], ensure_ascii=False, indent=2)}”)
`
关键概念:这就是Google RT-2、OpenAI Figure等项目的核心思路——用LLM作为机器人的”大脑”,把人类的自然语言翻译成机器人的底层动作指令。
试着想想:如果你有一个家用机器人,你会对它说什么命令?这些命令需要分解成哪些基本动作?
实操四:体验Hugging Face的LeRobot——开源机器人学习平台
LeRobot是Hugging Face推出的开源机器人学习框架,目标是让每个人都能训练自己的机器人策略。
`bash
# 安装 LeRobot
pip install lerobot
# 或者从源码安装(获取最新功能)
pip install git+https://github.com/huggingface/lerobot.git
`
体验一:下载预训练的机器人策略
`python
from lerobot.common.policies.factory import make_policy
from lerobot.common.datasets.lerobot_dataset import LeRobotDataset
# 查看可用的数据集
# Hugging Face Hub上有大量机器人操作数据集
# 例如:抓取物体、推动物体、倒水等
# 下载一个数据集示例
dataset = LeRobotDataset(“lerobot/aloha_sim_transfer_cube_human”, episodes=[0])
print(f”数据集包含 {len(dataset)} 个时间步”)
print(f”观测空间: {dataset.meta.camera_keys}”)
print(f”动作维度: {dataset.meta.action_dim}”)
# 查看第一个样本
sample = dataset[0]
print(f”观测数据: {list(sample.keys())}”)
`
体验二:理解”模仿学习”
LeRobot的核心理念是模仿学习(Imitation Learning)——让机器人通过”看”人类示范来学习操作。
`python
# 模仿学习的基本流程
learning_flow = “””
模仿学习(Imitation Learning)流程:
- 人类示范 → 采集操作数据
- 人类用遥控器/手柄操作机器人完成任务
- 同时记录:摄像头画面 + 关节角度 + 力矩数据
- 数据处理 → 构建训练集
- 将视频帧与动作标签配对
- 数据增强:旋转、裁剪、色彩变换
- 模型训练 → 学习”看到什么→做什么”
- 输入:当前摄像头画面
- 输出:机器人各关节的目标角度/力矩
- 损失函数:预测动作与示范动作的差距
- 策略部署 → 机器人自主执行
- 将训练好的模型部署到真实机器人
- 机器人看到场景后自动输出动作
“””
print(learning_flow)
`
这个方法的革命性在于:你不需要手动编写每个动作的代码,只需要”教”机器人一次,它就能学会。
实操五:动手搭建你的”桌面机器人”——从零到一的方案
即使没有工业级机器人,你也可以用极低成本搭建一个属于自己的小型机器人系统。
方案一:树莓派+摄像头(最经典)
`bash
# 硬件清单
# – 树莓派4B/5(约300-500元)
# – Pi Camera摄像头模块(约60元)
# – 舵机驱动板 PCA9685(约20元)
# – 2个SG90舵机(约10元/个)
# – 杜邦线若干
# 总成本:约400-600元
# 软件安装
sudo apt update
sudo apt install python3-pip python3-opencv
pip install picamera2 adafruit-circuitpython-pca9685
# 基本控制代码示例
# from picamera2 import Picamera2
# import board
# import busio
# from adafruit_pca9685 import PCA9685
#
# i2c = busio.I2C(board.SCL, board.SDA)
# pca = PCA9685(i2c)
# pca.frequency = 50 # 舵机频率
#
# # 控制舵机转到中间位置
# pca.channels[0].duty_cycle = 0x7FFF # 通道0
`
方案二:用Webots仿真(免费且强大)
Webots是一个开源的机器人仿真器,自带大量机器人模型,比MuJoCo更适合初学者。
`bash
# 安装 Webots
# 从 https://cyberbotics.com 下载
# 或通过包管理器安装
pip install webots-r2023b # Python接口
# Webots自带的机器人模型包括:
# – TurtleBot3(轮式移动机器人)
# – Nao(人形机器人)
# – UR5e(工业机械臂)
# – DJI Mavic(无人机)
# 等等
`
方案三:纯软件方案——Isaac Sim的免费替代品
`bash
# NVIDIA Isaac Sim 有免费的教育版
# 但如果你想要完全开源的替代:
# 1. Gazebo(ROS生态,工业标准)
sudo apt install ros-humble-gazebo-ros-pkgs
# 2. PyBullet(轻量级,适合学习)
pip install pybullet
# PyBullet快速体验
import pybullet as p
import pybullet_data
physicsClient = p.connect(p.GUI)
p.setAdditionalSearchPath(pybullet_data.getDataPath())
p.setGravity(0, 0, -10)
planeId = p.loadURDF(“plane.urdf”)
robotId = p.loadURDF(“r2d2.urdf”, [0, 0, 1])
# 运行仿真
for i in range(1000):
p.stepSimulation()
print(“R2D2机器人仿真运行成功!”)
p.disconnect()
`
今日总结
今天下午的实践课,我们完成了5个动手实验:
核心收获:
- 物理仿真引擎(MuJoCo、PyBullet、Webots)让没有机器人的人也能体验具身智能
- 强化学习能让机器人从”乱动”变成”会走路”,核心是奖励函数的设计
- LLM+机器人是2025-2026年最热的方向,用自然语言就能控制机器人
- 模仿学习(LeRobot)让机器人通过”看”人类示范来学习,降低编程门槛
- 从零搭建桌面机器人的成本已经降到500元以内,树莓派+舵机就能开始
一个关键认知:
具身智能的核心难题不是”硬件太贵”,而是从仿真到真实世界的”Sim-to-Real”鸿沟。在MuJoCo里训练的策略,直接搬到真实机器人上往往会失败——因为真实世界有摩擦、延迟、传感器噪声这些仿真器无法完美模拟的因素。
今日行动项
今天试试看:
- 入门级:安装MuJoCo,运行本文的倒立摆示例代码,观察物理仿真效果
- 进阶级:用Gymnasium的Ant环境,对比随机策略和训练策略的效果差异
- 挑战级:思考一个日常场景(如”倒一杯水”),用自然语言写出分解为5个基本动作的指令
📖 地铁深读:具身智能的”iPhone时刻”何时到来?
这个板块专为地铁通勤设计,每篇5-10分钟。不想深读可以跳过,不影响主线学习。
从ChatGPT到机器人的”涌现”
2022年11月ChatGPT发布时,AI的”iPhone时刻”到来了——一个产品让全世界突然意识到AI已经这么强了。
具身智能也在等待自己的iPhone时刻。但这个时刻迟迟没有到来,为什么?
原因很简单:语言是离散的,物理是连续的。
- 语言模型只需要预测下一个token(从固定词表中选一个)
- 机器人需要预测下一帧的力矩(一个连续的浮点数向量)
- 语言错误可以撤回,物理错误可能摔碎一个杯子
这种本质差异意味着,物理世界的AI比数字世界的AI难一个数量级。
2025-2026年的关键突破
尽管如此,过去两年具身智能取得了几个重要进展:
1. 大规模机器人数据集的出现
Google DeepMind的Open X-Embodiment项目汇集了来自22个不同机器人的超过100万条操作数据。这就像ImageNet之于计算机视觉——有了大规模数据,模型才能学到通用的”物理直觉”。
2. 基础模型(Foundation Model)在机器人中的应用
RT-2(Robotic Transformer 2)证明了:在互联网图文数据上预训练的视觉语言模型,可以直接输出机器人的动作。这意味着机器人可以”理解”它从未见过的指令——比如”把垃圾扔到垃圾桶里”,即使训练数据中没有”垃圾”和”垃圾桶”的配对。
3. 人形机器人的产业化竞赛
Figure、Tesla Optimus、1X、Unitree等公司正在激烈竞争。2026年,Figure的机器人已经在BMW工厂开始实训,Unitree的G1售价已经降到10万元以内。人形机器人的”特斯拉时刻”可能在未来2-3年内到来。
一个值得深思的问题
想一个问题:如果有一天机器人真的能做到所有家务,人类的生活会发生什么变化?
比如:
- 家务劳动时间从每天2小时降为0——多出来的时间用来做什么?
- “做饭”变成一种爱好而非必需——就像现在骑马是一种运动而非交通方式
- 老人独居的安全问题大幅缓解——机器人可以24小时陪伴和监护
这些变化不是科幻,而是具身智能成熟后的必然结果。问题不是”会不会发生”,而是”什么时候发生”。
留个悬念:Day 66我们会讲”AI+科学”——你会发现,具身智能在科学实验中的应用,可能比家用机器人来得更早、影响更深远。
明日预告
明天早上8点:Day66——早课 AI+科学:加速发现
明晚5点:Day66——晚课 AI+科学:加速发现
发表回复