机器人控制器开发(整体架构2 Lerobot介绍)

发布于:2025-09-04 ⋅ 阅读:(25) ⋅ 点赞:(0)

上一篇博文简单解释了AMR控制器的开发。

本篇文章基于控制器话题,重点围绕人形机器人控制器的设计展开讨论。

我将全面分析Lerobot的代码架构。

LeRobot 代码架构深度分析

🏗️ 整体架构设计理念

LeRobot 采用模块化、插件化的架构设计,主要特点:

  1. 硬件抽象层:将不同硬件(机器人、相机、电机)抽象为统一接口
  2. 策略插件系统:支持多种机器学习策略算法
  3. 数据管道:完整的数据收集、处理、存储流程
  4. 配置驱动:通过YAML配置文件管理所有组件

📁 核心模块详解

1. configs/ - 配置管理系统
# 配置层次结构
├── default.py      # 基础配置类
├── train.py        # 训练配置 (TrainPipelineConfig)
├── eval.py         # 评估配置 (EvalPipelineConfig) 
├── policies.py     # 策略配置 (PreTrainedConfig)
└── parser.py       # 命令行解析器

核心功能

  • 提供统一的配置管理接口
  • 支持命令行参数覆盖
  • 配置验证和默认值处理
  • 与HuggingFace Hub集成
2. policies/ - 策略模型库
# 支持的策略算法
├── act/           # Action Chunking Transformer
├── diffusion/     # Diffusion Policy  
├── tdmpc/         # Temporal Difference MPC
├── vqbet/         # Vector Quantized Behavior Transformer
├── sac/           # Soft Actor-Critic
├── pi0/pi0fast/   # Policy Iteration Zero
├── smolvla/       # Small Vision-Language-Action
└── factory.py     # 策略工厂模式

设计模式

  • 工厂模式factory.py 统一创建策略实例
  • 模板方法pretrained.py 定义预训练策略基类
  • 策略模式:每个算法独立实现
3. datasets/ - 数据集管理系统
├── lerobot_dataset.py    # 核心数据集类
├── utils.py              # 数据处理工具
├── video_utils.py        # 视频编解码
├── transforms.py         # 数据变换
├── online_buffer.py      # 在线数据缓冲
├── v2/ v21/             # 版本兼容性
└── factory.py           # 数据集工厂

核心特性

  • 支持多模态数据(图像、状态、动作)
  • 高效的视频压缩和流式加载
  • 与HuggingFace Datasets兼容
  • 支持增量数据收集
4. 硬件抽象层
robots/ - 机器人抽象
├── robot.py              # Robot基类
├── koch_follower/        # Koch机器人
├── so100_follower/       # SO-100机器人
├── bi_so100_follower/    # 双臂SO-100
├── hope_jr/              # HOPE-JR机器人
├── lekiwi/               # LeKiwi机器人
├── stretch3/             # Stretch3机器人
└── viperx/               # ViperX机器人
cameras/ - 相机抽象
├── camera.py             # Camera基类
├── opencv/               # OpenCV相机
└── realsense/            # Intel RealSense
motors/ - 电机抽象
├── motors_bus.py         # 电机总线管理
├── dynamixel/            # Dynamixel电机
├── feetech/              # Feetech电机
└── calibration_gui.py    # 电机标定GUI
teleoperators/ - 遥操作抽象
├── teleoperator.py       # Teleoperator基类
├── keyboard/             # 键盘遥操作
├── gamepad/              # 手柄遥操作
├── homunculus/           # Homunculus设备
└── koch_leader/          # Koch主控端
5. processor/ - 数据处理管道
├── pipeline.py                # 处理管道核心
├── observation_processor.py   # 观察数据处理
├── normalize_processor.py     # 数据标准化
├── device_processor.py        # 设备转换
└── rename_processor.py        # 数据重命名

管道设计

  • 责任链模式:数据依次通过多个处理器
  • 可组合性:处理器可以灵活组合
  • 类型安全:强类型约束确保数据一致性
6. envs/ - 环境系统

支持的环境:

  • Aloha:双臂操作任务
  • PushT:推动任务
  • XArm:机械臂操作
7. utils/ - 工具模块
├── train_utils.py           # 训练工具
├── control_utils.py         # 控制工具  
├── robot_utils.py           # 机器人工具
├── visualization_utils.py   # 可视化工具
├── buffer.py                # 数据缓冲
└── hub.py                   # HuggingFace Hub集成

🔄 数据流和控制流

训练流程
  1. 配置解析configs/parser.py
  2. 数据加载datasets/lerobot_dataset.py
  3. 策略创建policies/factory.py
  4. 训练循环utils/train_utils.py
  5. 模型权重保存utils/train_utils.py
数据收集流程
  1. 硬件初始化robots/, cameras/, motors/
  2. 遥操作设置teleoperators/
  3. 数据记录record.py
  4. 数据处理processor/
  5. 数据存储datasets/
推理流程
  1. 模型加载policies/pretrained.py
  2. 环境连接envs/
  3. 观察处理processor/
  4. 动作预测policies/
  5. 动作执行robots/

🎯 设计模式应用

  1. 抽象工厂模式factory.py 文件统一创建对象
  2. 策略模式:不同算法实现统一接口
  3. 观察者模式:数据流的监听和处理
  4. 模板方法模式:基类定义流程,子类实现细节
  5. 适配器模式:硬件接口的统一适配

🔧 核心特性

  1. 硬件无关性:统一的硬件抽象接口
  2. 算法可扩展性:插件式策略系统
  3. 数据标准化:统一的数据格式和处理流程
  4. 云端集成:与HuggingFace Hub深度集成
  5. 实时性能:高效的数据处理和控制循环
  6. 可视化支持:集成Rerun等可视化工具

📊 架构优势

  1. 模块解耦:各模块职责单一,易于维护
  2. 插件化:新硬件和算法易于集成
  3. 标准化:统一的接口和数据格式
  4. 可测试性:每个模块都可独立测试
  5. 社区友好:与开源生态深度集成

这种架构设计使得LeRobot能够支持多种机器人硬件平台,集成多种学习算法,并提供完整的数据收集到模型部署的工作流程。