7.1 本地推理

7.1 本地推理

XLeRobot 本地推理使用 LeRobot 官方的 lerobot-record 命令,通过 --policy.path 参数加载训练好的模型,在推理的同时记录评估数据集。

命令说明

lerobot-record 加上 --policy.path 参数即可从"录制模式"切换为"推理模式"——机器人由模型自主控制,不再需要 Leader 臂遥操作。

推理参数说明

参数 说明
--robot.type=xlerobot XLeRobot 双臂机器人类型
--robot.port1 Follower 左臂串口
--robot.port2 Follower 右臂串口
--robot.id 机器人编号,与标定时一致
--policy.path 训练好的模型路径,格式 outputs/train/<job_name>/checkpoints/last/pretrained_model
--policy.device 推理设备,cuda(GPU)或 cpu
--dataset.repo_id 推理时新建的数据集名称,不能与训练数据集同名
--dataset.single_task 任务描述,与录制时保持一致
--dataset.push_to_hub=false 不上传推理数据到 HuggingFace
--dataset.num_episodes 推理运行 episode 数量

推理前检查清单

  1. 确认模型路径:policy.path 指向正确的 checkpoint 目录,路径格式为两级目录(如 act_xlerobot_test/pretrained_model)
  2. 检查标定:确认左右臂的标定参数正确
  3. 安全空间:机械臂运动范围内无障碍物
  4. 紧急停止:动作异常时立即按 Ctrl+C 停止

常见问题

机械臂抖动:调整 set_so100_robot_preset() 函数的 D_Coefficient 参数为较小值(如 0)

动作偏移:重新校准关节零点;检查相机画面是否与训练时一致(视角、光照)
推理无法启动:确认 pretrained_model 目录存在且文件完整;检查 policy.path 格式是否正确

本地推理 (lerobot-record)

linux: lerobot-record \
    --robot.type=xlerobot \
    --robot.disable_torque_on_disconnect=true \
    --robot.port1=/dev/so101_follower_left \
    --robot.port2=/dev/so101_follower_right \
    --robot.id=joyandai_xlerobot \
    --display_data=false \
    --dataset.push_to_hub=false \
    --dataset.num_episodes=10 \
    --dataset.single_task="Task description" \
    --policy.path=outputs/train/act_xlerobot_test/checkpoints/last/pretrained_model \
    --policy.device=cuda \
    --dataset.repo_id=${HF_USER}/eval_xlerobot
macos: lerobot-record \
    --robot.type=xlerobot \
    --robot.disable_torque_on_disconnect=true \
    --robot.port1=/dev/tty.usbmodem58760431541 \
    --robot.port2=/dev/tty.usbmodem58760431551 \
    --robot.id=joyandai_xlerobot \
    --display_data=false \
    --dataset.push_to_hub=false \
    --dataset.num_episodes=10 \
    --dataset.single_task="Task description" \
    --policy.path=outputs/train/act_xlerobot_test/checkpoints/last/pretrained_model \
    --policy.device=cuda \
    --dataset.repo_id=${HF_USER}/eval_xlerobot
windows: lerobot-record `
    --robot.type=xlerobot `
    --robot.disable_torque_on_disconnect=true `
    --robot.port1=COM4 `
    --robot.port2=COM5 `
    --robot.id=joyandai_xlerobot `
    --display_data=false `
    --dataset.push_to_hub=false `
    --dataset.num_episodes=10 `
    --dataset.single_task="Task description" `
    --policy.path=outputs/train/act_xlerobot_test/checkpoints/last/pretrained_model `
    --policy.device=cuda `
    --dataset.repo_id=%HF_USER%/eval_xlerobot