|
|
|
|
@ -135,8 +135,8 @@ $$
|
|
|
|
|
为了手算,我们先把推物简化成一维位置控制:
|
|
|
|
|
|
|
|
|
|
- 当前位置 $x_0=2$,目标位置 $g=5$;
|
|
|
|
|
- 观察就是当前位置:$o_t=x_t$;
|
|
|
|
|
- 动作是本步移动的距离:$a_t\in[-1,1]$;
|
|
|
|
|
- 观察就是当前位置: $o_t=x_t$;
|
|
|
|
|
- 动作是本步移动的距离: $a_t\in[-1,1]$;
|
|
|
|
|
- 暂不考虑接触、摩擦、惯性和传感器噪声。
|
|
|
|
|
|
|
|
|
|
人工策略定义为:
|
|
|
|
|
@ -309,14 +309,6 @@ while True:
|
|
|
|
|
4. 分别把 `gain` 改为 `0.2` 和 `1.2`,比较 6 步后的位置和误差。哪个更快?是否出现越过目标的情况?
|
|
|
|
|
5. 用自己的话解释:状态、观察、动作和策略分别是什么?反馈与奖励有什么区别?
|
|
|
|
|
|
|
|
|
|
完成本章后,你应该能够:
|
|
|
|
|
|
|
|
|
|
- 用自己的话解释“观察 → 决策 → 动作 → 反馈”的闭环;
|
|
|
|
|
- 区分状态和观察、反馈和奖励;
|
|
|
|
|
- 根据公式手算至少两个时间步;
|
|
|
|
|
- 运行 Demo,并解释扰动后动作为什么发生变化;
|
|
|
|
|
- 说明本章 Demo 是原理演示,不是真实机器人策略实验。
|
|
|
|
|
|
|
|
|
|
## 11. 参考资料与许可
|
|
|
|
|
|
|
|
|
|
- [Gymnasium:Basic Usage](https://gymnasium.farama.org/introduction/basic_usage/):`reset()`、`step()`、观察空间和动作空间的基础说明。
|
|
|
|
|
@ -325,3 +317,21 @@ while True:
|
|
|
|
|
- [Diffusion Policy 项目主页](https://diffusion-policy.cs.columbia.edu/):PushT 任务及扩散策略的代表性工作,后续第五章会展开介绍。
|
|
|
|
|
|
|
|
|
|
本章文字和一维控制代码为本教程原创。示例仅使用 Python 标准库,没有复制上游项目代码。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 参考答案(做完再对照)
|
|
|
|
|
|
|
|
|
|
1. $a_1=\mathrm{clip}(0.5(5-3),-1,1)=1$,$x_2=3+1=4$;与代码输出一致。
|
|
|
|
|
2. 同样观察到 $o_t=3$ 时,目标 $g=5$ 要向右,目标 $g=-2$ 要向左。策略需要同时知道观察和目标,即 $a_t=\pi(o_t,g)$;也可以把目标并入观察。
|
|
|
|
|
3. 动作会**变小**。原本下一步从 $x=4$ 出发,动作是 $0.5$;加入 `+0.8` 扰动后从 $x=4.8$ 出发,动作变成 $0.1$,因为它已经更接近目标。
|
|
|
|
|
4. 无扰动、运行 6 步:`gain=0.2` 到达 $x=4.213568$,误差为 $0.786432$;`gain=1.2` 到达 $x=5$,误差为 $0$,因此本例中后者更快。无扰动时没有越过目标;如果按前一题加入 `+0.8` 扰动,`gain=1.2` 会短暂越过目标(到达 $x=5.04$)再反向修正。结论只针对本章简化模型。
|
|
|
|
|
5. 状态是环境实际情况;观察是机器人能测到的信息,可能不完整;策略根据观察和目标选择动作;动作是交给控制器的指令。反馈通常是动作后的**新观察**。奖励是评价结果好坏的数值,例如 $r=-\lvert g-x\rvert$;目标 $g$ 是想去的位置,本身不是奖励。
|
|
|
|
|
|
|
|
|
|
完成本章后,你应该能够:
|
|
|
|
|
|
|
|
|
|
- 用自己的话解释“观察 → 决策 → 动作 → 反馈”的闭环;
|
|
|
|
|
- 区分状态和观察、反馈和奖励;
|
|
|
|
|
- 根据公式手算至少两个时间步;
|
|
|
|
|
- 运行 Demo,并解释扰动后动作为什么发生变化;
|
|
|
|
|
- 说明本章 Demo 是原理演示,不是真实机器人策略实验。
|
|
|
|
|
|