9.4 lerobot-infer 模型推理(实机)

模型推理(lerobot-record + policy.path)

LeRobot 的模型推理通过 lerobot-record 加载训练好的权重实现,核心是加上 --policy.path 参数。

⚠️ lerobot-infer 不是官方命令,推理请用 lerobot-record --policy.path=...。

基础推理命令

lerobot-record \
  --robot.type=so101_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=R12252801 \
  --teleop.type=so101_leader \
  --teleop.port=/dev/ttyACM1 \
  --teleop.id=R07252801 \
  --robot.disable_torque_on_disconnect=true \
  --robot.cameras="{'wrist': {'type': 'opencv', 'index_or_path': 0, 'width': 640, 'height': 360, 'fps': 30}}" \
  --display_data=true \
  --dataset.single_task="Put lego brick into the transparent box" \
  --policy.path=outputs/pretrained_model \
  --policy.device=cuda \
  --dataset.repo_id=${HF_USER}/eval_so101 \
  --dataset.push_to_hub=false

推理核心参数

参数 类型 默认值 说明
--policy.path str 必填 训练好的模型路径,必须是 name/pretrained_model 两级目录
--policy.device str None 推理设备:cuda / cpu / mps
--policy.use_amp bool False 启用自动混合精度(节省显存)
--robot.* — 同 teleoperate 机器人配置(type / port / id / cameras 等)
--dataset.repo_id str None 推理时录制的新数据集名称,不能与训练数据集同名
--dataset.single_task str "" 任务描述,与训练时保持一致
--dataset.push_to_hub bool True 是否上传推理数据到 Hub;建议设为 false
--fps float 30 控制循环帧率

动作平滑

推理时可使用指数移动平均平滑动作输出,减少抖动:

参数 类型 默认值 说明
--policy.temporal_ensemble_coeff float None 时序集成系数(ACT 专属),值越大平滑越强
--no-amp flag False 禁用 AMP(如果推理不稳定可尝试关闭)

推理前检查清单

  1. 重新检查标定:确认 Follower 和 Leader 的标定参数正确
  2. 确认安全空间:机械臂运动范围内不要有障碍物
  3. 检查模型路径:确认 policy.path 指向正确的训练输出目录
  4. 动作异常时:立即按 Ctrl+C 停止,排查问题

常见推理问题

问题 可能原因 解决方法
机械臂抖动 D_Coefficient 过大或供电不足 调整 so101_follower.py 中 set_so100_robot_preset() 的 D_Coefficient 改小(如 0),检查电源 7.4V≥2A
动作偏移 标定不准确或相机不一致 重新标定,检查相机视角/光照是否与训练时一致
推理无法启动 模型路径错误或文件不完整 确认 pretrained_model 目录存在,检查路径格式为两级目录
动作幅度过大 缺少安全限制 添加 --robot.max_relative_target 限制单步最大位移

v0.5.2 用户可使用 lerobot-rollout(策略部署引擎)获得更灵活的推理控制,详见对应版本的 CLI 参数章节。