本页面介绍 LeRobot 的硬件集成层,包括 Robot 和 Teleoperator 抽象、支持的硬件平台、校准流程和遥操作。
Robot(src/lerobot/robots/robot.py)是所有物理机器人的抽象基类。每个子类必须声明两个类级属性并实现所有抽象方法。
核心方法:
| 方法 | 描述 |
|---|---|
connect() | 初始化与硬件的连接 |
disconnect() | 断开与硬件的连接 |
getobservation() | 执行动作指令 |
calibrate() | 执行校准程序 |
Teleoperator(src/lerobot/teleoperators/teleoperator.py)是所有输入设备的抽象基类(引导臂、键盘、游戏手柄等)。
核心方法:
| 方法 | 描述 |
|---|---|
connect() | 初始化与遥操作设备的连接 |
disconnect() | 断开连接 |
get_action() | 读取操作者的动作输入 |
代码库使用工厂模式从配置对象实例化机器人和遥操作器:
makerobotfromconfig():根据 RobotConfig 创建机器人实例,通过 robot.type 字段分发到具体的机器人子类
* maketeleoperatorfromconfig():类似的分发机制,支持物理引导臂到虚拟设备的广泛设备LeRobot 原生支持多种硬件平台:
| 平台 | 类型 | 特点 |
|---|---|---|
| SO100 | 低成本机械臂 | 入门级,适合教育和研究 |
| LeKiwi | 移动机器人 | 两轮差速平台 |
| Reachy2 | 双臂机器人 | 灵活的协作机器人 |
| Unitree G1 | 人形机器人 | 全尺寸人形,全身控制 |
| Franka | 七轴机械臂 | 研究级精度 |
遥操作设备支持:
硬件配置通过数据类实现:
RobotConfig:定义机器人类型和连接参数TeleoperatorConfig:定义遥操作设备类型和参数完整的硬件设置流程包括四个阶段:
ensuresafegoalposition 限制目标位置,防止高速碰撞或电机损坏。
实用函数用于在发送目标位置到机器人前,基于 maxrelative_target
遥操作循环(用于 lerobot-teleoperate 和 lerobot-record)的核心交互流程:
while recording:
action = teleoperator.get_action()
processed_action = processor_pipeline(action)
robot.send_action(processed_action)
obs = robot.get_observation()
dataset_writer.add_frame(obs, action)
使用 lerobot-record 通过遥操作录制数据:
DatasetWriter 写入 LeRobotDataset
使用 lerobot-replay 在机器人上回放录制的 episodes,用于验证数据质量和安全性。