本文档概述构成 LeRobot 框架的核心架构概念和组件。它介绍主要的子系统,并解释它们如何相互作用以实现机器人学习。
。。。。。。继续。。。。。。
机器人控制系统
机器人控制系统提供统一的接口来控制实体机器人。它支持不同的控制模式和机器人类型,并与数据集系统集成以进行数据采集。
目的和范围
机器人控制系统是 LeRobot 框架的核心组件,提供用于操作、标定和记录物理机器人数据的接口。该系统支持遥操作、记录演示数据集、重放动作以及在真实机器人上运行已训练的策略。它充当用户、物理机器人硬件和训练流程之间的桥梁。
架构概述
机器人控制系统以 control_robot.py 脚本为中心,该脚本支持多种控制模式,包括遥操作、记录、重放、标定和远程控制。该系统可与各种类型的机器人(机械手和移动机器人)和设备接口(电机和摄像头)进行交互。
控制模式
LeRobot 支持多种机器人操作控制模式:
机器人控制系统提供多种由 control_robot.py 脚本管理的操作模式:每种控制模式都有各自的配置类和相应的函数来实现其行为:
标定模式
用于标定机器人电机并确保正确定位。这通常是设置新机器人或移动机器人时的第一步。
遥控模式
允许手动控制机器人。在机械臂机器人中,这通常涉及通过移动引导臂来控制从动臂。
记录模式
记录遥操作或策略执行过程中的数据集。此模式可捕捉机器人状态、动作和摄像头图像,用于训练策略。
重播模式
在机器人上重播录制的片段,以便验证录制的数据。
远程机器人模式
用于在边缘设备上运行的远程控制机器人(例如 LeKiwi)。
控制配置
每种控制模式都通过特定的配置类进行配置:
机器人类型和硬件集成
机器人控制系统通过通用接口支持各种类型的机器人。每种类型的机器人都有特定的配置和硬件要求:
机械臂机器人
机械臂机器人(Koch、Aloha、SO-100、Moss)通常采用主从式架构:
主臂:用于远程操作,通常具有较低的摩擦力
从臂:执行实际任务,由主臂或策略控制
移动机器人
移动机器人(LeKiwi、Stretch)将移动性与操控性相结合:
LeKiwi:带有 SO-100 机械臂的移动基座,可远程操作
Stretch:集成移动机械臂,带有机械臂和夹持器
电机控制接口
机器人控制系统通过专用总线类与不同类型的电机连接:
DynamixelMotorsBus
与 Dynamixel 电机(Koch、Aloha 使用)的接口:
FeetechMotorsBus
与 Feetech 电机接口(SO-100、Moss、LeKiwi 使用):
摄像头集成
机器人控制系统支持多种摄像头类型:
OpenCVCamera
与大多数 USB 摄像头接口:
RealSenseCamera
与 Intel RealSense 摄像头接口(用于深度感知):
控制循环
核心控制逻辑在 control_loop 函数中实现,该函数处理不同的控制模式:
控制循环:
捕获观测值(机器人状态、摄像头图像)
以下任一:2.1)处理远程操作输入以生成动作;2.2)根据观测值使用策略预测动作
将动作发送给机器人
(可选)将数据记录到数据集
显示数据并记录信息
记录和数据集集成
记录模式与 LeRobotDataset 系统集成:
记录期间:
系统初始化数据集并(可选)加载策略
预热记录以使设备同步
对于每个episode:3.1)使用控制循环记录数据;3.2)留出时间在 episode 之间重置环境
最后,如果要求,它将数据集推送到 Hugging Face Hub
使用示例
标定机器人
遥操作机器人
记录数据集
在一个机器人上运行策略
操作一个远程机器人
记录期间的键盘控制
机器人控制系统支持在数据集录制过程中使用键盘控制:
这些键盘控制可以灵活地控制记录过程。
使用 Rerun 进行可视化
机器人控制系统可以使用 Rerun 可视化工具包实时可视化数据:
这将显示:
摄像头反馈
机器人状态值
动作值
对于远程机器人,还可以指定远程查看器:
训练和评估工作流程
训练和评估工作流程整合策略、数据集和环境系统,以实现有效的机器人学习。
配置系统
LeRobot 使用全面的配置系统来参数化框架的各个方面。配置按层次结构组织,可以通过命令行参数、配置文件或编程方式指定。
主要配置类包括:
配置目标被传递给工厂函数,以使用所需的参数创建相应的组件。
实用系统
LeRobot 包含多个支持主要组件的实用系统:
日志记录 - 通过标准 Python 日志记录和可选的 WandB 集成进行可配置日志记录
检查点 - 在训练期间保存和加载模型检查点
可视化 - 用于可视化数据集片段和策略部署的工具
指标 - 跟踪和报告训练和评估指标