LeRobot 硬件集成
本页面介绍 LeRobot 的硬件集成层,包括 Robot 和 Teleoperator 抽象、支持的硬件平台、校准流程和遥操作。
机器人和遥操作抽象
Robot 抽象基类
Robot(src/lerobot/robots/robot.py)是所有物理机器人的抽象基类。每个子类必须声明两个类级属性并实现所有抽象方法。
核心方法:
| 方法 | 描述 |
|---|---|
connect() | 初始化与硬件的连接 |
disconnect() | 断开与硬件的连接 |
getobservation() | 执行动作指令 |
calibrate() | 执行校准程序 |
Teleoperator 抽象基类
Teleoperator(src/lerobot/teleoperators/teleoperator.py)是所有输入设备的抽象基类(引导臂、键盘、游戏手柄等)。
核心方法:
| 方法 | 描述 |
|---|---|
connect() | 初始化与遥操作设备的连接 |
disconnect() | 断开连接 |
get_action() | 读取操作者的动作输入 |
工厂模式和设备创建
代码库使用工厂模式从配置对象实例化机器人和遥操作器:
makerobotfromconfig():类似的分发机制,支持物理引导臂到虚拟设备的广泛设备:根据RobotConfig创建机器人实例,通过robot.type字段分发到具体的机器人子类 *maketeleoperatorfromconfig()
支持的硬件
LeRobot 原生支持多种硬件平台:
| 平台 | 类型 | 特点 |
|---|---|---|
| SO100 | 低成本机械臂 | 入门级,适合教育和研究 |
| LeKiwi | 移动机器人 | 两轮差速平台 |
| Reachy2 | 双臂机器人 | 灵活的协作机器人 |
| Unitree G1 | 人形机器人 | 全尺寸人形,全身控制 |
| Franka | 七轴机械臂 | 研究级精度 |
遥操作设备支持:
- KochLeader:物理引导臂,主从控制
- GamepadTeleop:游戏手柄控制
- KeyboardTeleop:键盘控制
- MobileDevice:移动设备控制
配置系统
硬件配置通过数据类实现:
RobotConfig:定义机器人类型和连接参数TeleoperatorConfig:定义遥操作设备类型和参数- 配置可以通过 YAML 文件或 CLI 参数提供
校准和设置
完整的硬件设置流程包括四个阶段:
- 端口发现:识别 USB 串行路径或 CAN 接口
- 电机配置:分配唯一的 ID 和波特率到电机 EEPROM
- 校准:将原始编码器计数映射到物理单位(弧度)并记录零位
- 关节限制发现:通过 URDF 运动学确定安全操作范围和末端执行器边界
安全机制
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)
录制 episodes
使用 lerobot-record 通过遥操作录制数据:
- 连续录制帧序列
- 支持自动 episode 分段
- 录制数据通过
DatasetWriter写入LeRobotDataset
回放和验证
使用 lerobot-replay 在机器人上回放录制的 episodes,用于验证数据质量和安全性。
评论