
# 方案概述
在机器人模仿学习（Imitation Learning）中，行为克隆（Behavior Cloning）是最基础的方法，让机器人从人类演示数据中学习策略。但行为克隆存在一个根本性的缺陷分布偏移（Distribution Shift），训练时模型只看到人类专家的状态-动作分布，而推理时模型自身的误差会导致它进入训练时从未见过的状态，进而产生累积误差，最终偏离预期行为。
例如，在"抓笔放入杯中"任务中，如果模型在某一步抓取位置略有偏差，后续状态就与训练数据中的场景不同，模型在陌生状态下可能做出错误动作，导致任务失败。
目前，CloudRobo平台支持基于DAgger算法进行多轮模型训练，以提升机器人的模仿学习能力。该算法为开源参考代码，仅支持SO-ARM101机械臂。
本文档以SO-ARM101机械臂完成"抓笔放入笔筒"技能为例，演示如何基于CloudRobo平台完成DAgger算法模型多轮训练的完整流程。
#### DAgger算法原理
DAgger（Dataset Aggregation）由Ross等人于2011年提出，是一种迭代式模仿学习算法，核心思想是让专家在策略实际运行的状态分布下提供纠正数据，从而缓解分布偏移问题。
基本算法流程：
1. 用初始数据集训练策略模型π₁。
2. 在环境中运行策略π₁，收集实际运行的状态序列。
3. 人类专家对这些状态提供正确的干预纠正。
4. 将新标注数据聚合到数据集中：D₂ = D₁ ∪ D_new。
5. 用聚合后的数据集重新训练策略π₂。
6. 重复步骤2\~5，直到策略性能收敛。
该算法与行为克隆关键区别在于行为克隆的专家数据来自人类自己的轨迹，而DAgger的专家数据来自策略实际运行时的状态，人类只在策略出错的时刻介入纠正，因此训练数据更贴近策略的实际运行分布。
#### 为什么DAgger算法模型需要多轮训练
单轮DAgger不足以让策略收敛，原因如下：
- 策略改进是渐进的：每轮迭代只能修正部分错误状态，新策略可能暴露新的错误状态。
- 状态空间覆盖逐步扩大：每轮迭代都让策略访问到之前未覆盖的状态区域，逐步完善数据集。
- 人类干预的效率：多轮短时干预比一次性大量演示更高效，人类只需在策略出错时纠正。
 
#### 前置依赖
- 已采集的技能数据集（lerobot v3.0格式），已上传至CloudRobo平台并注册为空间资产，用于首次模型训练作业。
- 硬件依赖：SO-ARM101机械臂（主臂+从臂）、摄像头（正面+腕部）。
- 操作系统：Ubuntu（机器人接入与数据采集），推荐使用Ubuntu 22.04版本。
- 已获取CloudRobo平台账号及接入权限。
 
#### 使用流程
图1使用流程   
![](https://support.huaweicloud.com/bestpractice-cloudrobo/figure/zh-cn_image_0000002628937172.png)
表1使用流程 
| 流程                                                                                                         | 说明                                                                     |
|:---|:---|
| [创建模型训练作业（首次）](https://support.huaweicloud.com/bestpractice-cloudrobo/cloudrobo_05_0007.html)              | 基于CloudRobo平台预置的SO-ARM101机械臂模型创建模型训练作业，并完成首次模型训练作业。                    |
| [接入并激活机器人](https://support.huaweicloud.com/bestpractice-cloudrobo/cloudrobo_05_0008.html)                  | 按照文档指导先在本地安装LeRobot DAgger环境，然后在CloudRobo平台接入机器人，结合本地配置与云端显示激活机器人。     |
| [交互式数据采集](https://support.huaweicloud.com/bestpractice-cloudrobo/cloudrobo_05_0013.html)                   | 部署首次模型训练作业产生的模型，基于该模型服务将CloudRobo平台和DAGGER数据采集工具协同使用，采集机器人运行数据和人类干预数据。 |
| [基于合并数据集在CloudRobo平台执行模型重训](https://support.huaweicloud.com/bestpractice-cloudrobo/cloudrobo_05_0012.html) | 将交互式数据采集的数据集与原始准备的数据集合并，并上传至CloudRobo平台，并基于该数据集完成模型重训。                 |
   
上述使用流程代表一轮DAgger模型训练，如果要开始第二轮或者更多轮训练，需重复[交互式数据采集](https://support.huaweicloud.com/bestpractice-cloudrobo/cloudrobo_05_0013.html)\~[基于合并数据集在CloudRobo平台执行模型重训](https://support.huaweicloud.com/bestpractice-cloudrobo/cloudrobo_05_0012.html)操作。
