{{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:命令行界面|命令行界面]]