目录
-
- [1. 检查训练状态和模型检查点](#1. 检查训练状态和模型检查点)
- [2. 测试方式](#2. 测试方式)
-
- 方式一:在仿真环境中测试(推荐用于快速验证)
- 方式二:在真实机器人上测试(推荐用于最终验证)
- [方式三:使用 Python 脚本测试(更灵活)](#方式三:使用 Python 脚本测试(更灵活))
- [3. 查看评估结果](#3. 查看评估结果)
-
- [如果使用 lerobot-eval(仿真环境)](#如果使用 lerobot-eval(仿真环境))
- [如果使用 lerobot-record(真实机器人)](#如果使用 lerobot-record(真实机器人))
- [4. 常见问题](#4. 常见问题)
-
- [Q: 如何找到最新的检查点?](#Q: 如何找到最新的检查点?)
- [Q: 如何确定环境类型?](#Q: 如何确定环境类型?)
- [Q: 模型路径格式](#Q: 模型路径格式)
- [Q: 如何指定特定的检查点?](#Q: 如何指定特定的检查点?)
- [5. 推荐流程](#5. 推荐流程)
1. 检查训练状态和模型检查点
首先,检查训练是否完成以及模型保存位置:
bash
# 检查训练日志
tail -f /home/fyw/Software/1.out
# 查找保存的检查点(每 10000 步保存一次)
find /home/fyw/Software/output_lerobot_train/pi0dot5/a -name "pretrained_model" -type d
训练完成后,检查点会保存在:
output_lerobot_train/pi0dot5/a/checkpoints/010000/pretrained_model/
output_lerobot_train/pi0dot5/a/checkpoints/020000/pretrained_model/
...
output_lerobot_train/pi0dot5/a/checkpoints/050000/pretrained_model/ # 最终检查点
output_lerobot_train/pi0dot5/a/checkpoints/last/pretrained_model/ # 最新检查点
2. 测试方式
方式一:在仿真环境中测试(推荐用于快速验证)
如果你的数据集有对应的仿真环境,可以使用 lerobot-eval 命令:
bash
lerobot-eval \
--policy.path=/home/fyw/Software/output_lerobot_train/pi0dot5/a/checkpoints/last/pretrained_model \
--env.type=<环境类型> \
--env.task=<任务名称> \
--eval.batch_size=1 \
--eval.n_episodes=10 \
--policy.device=cuda \
--output_dir=outputs/eval/pi05_orange_test \
--job_name=pi05_orange_eval
注意:由于你的数据集来自真实机器人(so101_follower),如果没有对应的仿真环境,需要:
- 创建一个自定义仿真环境(参考
docs/custom_environment_guide.md) - 或者使用方式二在真实机器人上测试
方式二:在真实机器人上测试(推荐用于最终验证)
使用 lerobot-record 命令配合策略路径,在真实机器人上运行策略并记录评估数据:
bash
lerobot-record \
--robot.type=so101_follower \
--robot.port=/dev/ttyUSB0 \ # 根据你的实际端口修改
--robot.id=my_so101_follower \
--control.policy.path=/home/fyw/Software/output_lerobot_train/pi0dot5/a/checkpoints/last/pretrained_model \
--control.policy.type=pi05 \
--control.policy.device=cuda \
--dataset.repo_id=TommyZihao/eval_orange_pi05 \
--dataset.root=/home/fyw/Dataset/huggingface/lerobot/TommyZihao/eval_orange_pi05 \
--fps=30 \
--episode.length=300 \
--job_name=eval_orange_pi05
参数说明:
--control.policy.path: 训练好的模型检查点路径--control.policy.type: 策略类型(pi05)--control.policy.device: 推理设备(cuda/cpu)--dataset.repo_id: 评估数据集仓库 ID(用于保存评估数据)--robot.port: 机器人串口端口(根据实际情况修改)
方式三:使用 Python 脚本测试(更灵活)
创建一个 Python 脚本来加载模型并在真实机器人上测试:
python
#!/usr/bin/env python
"""测试 pi0.5 模型在真实机器人上的表现"""
from lerobot.robots.so_follower import SO101Follower, SO101FollowerConfig
from lerobot.policies.factory import make_policy
from lerobot.policies.factory import make_pre_post_processors
from lerobot.cameras.opencv.configuration_opencv import OpenCVCameraConfig
# 1. 配置机器人
camera_config = {
"front": OpenCVCameraConfig(
index_or_path=0, # 根据你的摄像头修改
width=1920,
height=1080,
fps=30
)
}
robot_config = SO101FollowerConfig(
port="/dev/ttyUSB0", # 根据你的实际端口修改
id="test_so101",
cameras=camera_config,
use_degrees=True,
)
# 2. 加载策略
policy_path = "/home/fyw/Software/output_lerobot_train/pi0dot5/a/checkpoints/last/pretrained_model"
policy = make_policy(
cfg=None, # 会自动从检查点加载配置
pretrained_path=policy_path,
)
# 3. 创建预处理器和后处理器
preprocessor, postprocessor = make_pre_post_processors(
policy_cfg=policy.config,
pretrained_path=policy_path,
)
# 4. 连接机器人并测试
robot = SO101Follower(robot_config)
robot.connect()
if not robot.is_connected:
raise ValueError("机器人未连接!")
print("开始测试...")
policy.eval()
# 运行几个测试回合
for episode in range(5):
print(f"Episode {episode + 1}/5")
# 重置环境
obs = robot.get_observation()
# 运行一个回合
for step in range(300): # 假设每个回合最多 300 步
# 预处理观察
processed_obs = preprocessor(obs)
# 获取动作
with torch.no_grad():
action = policy.select_action(processed_obs)
# 后处理动作
processed_action = postprocessor(action)
# 执行动作
robot.set_action(processed_action)
# 获取新观察
obs = robot.get_observation()
# 检查是否完成(根据你的任务定义)
# if done:
# break
print(f"Episode {episode + 1} 完成")
robot.disconnect()
print("测试完成!")
3. 查看评估结果
如果使用 lerobot-eval(仿真环境)
评估结果会保存在:
outputs/eval/pi05_orange_test/eval_info.json
outputs/eval/pi05_orange_test/videos/ # 评估视频
查看结果:
bash
cat outputs/eval/pi05_orange_test/eval_info.json
如果使用 lerobot-record(真实机器人)
评估数据会保存在指定的数据集路径,可以:
- 查看记录的视频和数据
- 分析成功率、奖励等指标
- 上传到 Hugging Face Hub 进行分享
4. 常见问题
Q: 如何找到最新的检查点?
bash
# 查找最新的检查点
ls -lt /home/fyw/Software/output_lerobot_train/pi0dot5/a/checkpoints/ | head -10
# 或者直接使用 last 链接
ls -la /home/fyw/Software/output_lerobot_train/pi0dot5/a/checkpoints/last/pretrained_model/
Q: 如何确定环境类型?
由于你的数据集来自真实机器人,如果没有对应的仿真环境,建议:
- 使用真实机器人测试(方式二或方式三)
- 或者创建一个自定义仿真环境
Q: 模型路径格式
检查点路径应该指向包含以下文件的目录:
config.jsonmodel.safetensors或pytorch_model.binprocessor_config.json(如果有)
Q: 如何指定特定的检查点?
bash
# 使用特定步数的检查点
--policy.path=/home/fyw/Software/output_lerobot_train/pi0dot5/a/checkpoints/050000/pretrained_model
# 或使用 last(最新)
--policy.path=/home/fyw/Software/output_lerobot_train/pi0dot5/a/checkpoints/last/pretrained_model
5. 推荐流程
- 等待训练完成(目标 50000 步)
- 使用方式二或方式三在真实机器人上测试(最接近实际应用场景)
- 记录多个测试回合,分析成功率
- 如果效果不理想 ,可以:
- 调整超参数重新训练
- 增加训练数据
- 调整 LoRA 参数(r, lora_alpha)