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