学习路线图#

学习目标

读完本页你能:

  • 按自己的目标选定一条路线

  • 知道每条路线要读哪些页、大约花多少时间

  • 根据已有基础跳过不必要的页面

前置自测#

这一节回答:开始之前,我需要会什么?

逐条对照,不会的项目给出了补救办法:

  • ☐ Python:能读懂类、装饰器、dataclass。本站所有代码都是 Python,这一条是必需的。

  • ☐ Linux 命令行:会用终端、环境变量、conda 或 venv。主线安装以 Linux 为准,见 1.4。

  • ☐ 刚体与线性代数基础:知道位姿、四元数、关节角是什么。不熟也可以开始,遇到时回查 0.8 术语表。

  • ☐ ROS 2(可选):只有"数字孪生与 ROS 2"路线需要。

  • ☐ 强化学习:不要求。需要的概念在 第 5 部分 从零讲起。

四条路线#

这一节回答:按我的目标,该按什么顺序读?

下图每一行是一条路线,节点是页面编号,从左往右读:绿色实线是黄金路径,橙色长虚线是"导入机器人",蓝色点线是"数字孪生与 ROS 2",紫色长点划线是"合成数据"。

        %%{init: {"flowchart": {"rankSpacing": 14, "nodeSpacing": 10, "padding": 3}}}%%
flowchart TB
    subgraph R_golden[" "]
        direction LR
        golden_lbl["黄金路径"]:::lbl
        golden_0_1["0.1"]
        golden_1_4["1.4"]
        golden_2_2["2.2"]
        golden_3_4["3.4"]
        golden_4_9["4.9"]
        golden_5_1["5.1"]
        golden_6_1_2["6.1.2"]
        golden_6_1_6["6.1.6"]
        golden_6_4_1["6.4.1"]
        golden_6_5_1["6.5.1"]
        golden_6_6_1["6.6.1"]
        golden_0_1 --> golden_1_4
        golden_1_4 --> golden_2_2
        golden_2_2 --> golden_3_4
        golden_3_4 --> golden_4_9
        golden_4_9 --> golden_5_1
        golden_5_1 --> golden_6_1_2
        golden_6_1_2 --> golden_6_1_6
        golden_6_1_6 --> golden_6_4_1
        golden_6_4_1 --> golden_6_5_1
        golden_6_5_1 --> golden_6_6_1
        golden_lbl ~~~ golden_0_1
    end
    subgraph R_robot[" "]
        direction LR
        robot_lbl["导入机器人"]:::lbl
        robot_0_1["0.1"]
        robot_1_4["1.4"]
        robot_2_1["2.1"]
        robot_2_2["2.2"]
        robot_2_4["2.4"]
        robot_3_3["3.3"]
        robot_3_4["3.4"]
        robot_3_5["3.5"]
        robot_6_1_1["6.1.1"]
        robot_6_1_2["6.1.2"]
        robot_6_1_3["6.1.3"]
        robot_6_1_4["6.1.4"]
        robot_6_1_5["6.1.5"]
        robot_6_1_6["6.1.6"]
        robot_0_1 --> robot_1_4
        robot_1_4 --> robot_2_1
        robot_2_1 --> robot_2_2
        robot_2_2 --> robot_2_4
        robot_2_4 --> robot_3_3
        robot_3_3 --> robot_3_4
        robot_3_4 --> robot_3_5
        robot_3_5 --> robot_6_1_1
        robot_6_1_1 --> robot_6_1_2
        robot_6_1_2 --> robot_6_1_3
        robot_6_1_3 --> robot_6_1_4
        robot_6_1_4 --> robot_6_1_5
        robot_6_1_5 --> robot_6_1_6
        robot_lbl ~~~ robot_0_1
    end
    subgraph R_twin[" "]
        direction LR
        twin_lbl["数字孪生 / ROS 2"]:::lbl
        twin_0_1["0.1"]
        twin_0_4["0.4"]
        twin_1_4["1.4"]
        twin_2_2["2.2"]
        twin_2_6["2.6"]
        twin_3_1["3.1"]
        twin_3_2["3.2"]
        twin_3_6["3.6"]
        twin_3_10["3.10"]
        twin_6_7_2["6.7.2"]
        twin_0_1 --> twin_0_4
        twin_0_4 --> twin_1_4
        twin_1_4 --> twin_2_2
        twin_2_2 --> twin_2_6
        twin_2_6 --> twin_3_1
        twin_3_1 --> twin_3_2
        twin_3_2 --> twin_3_6
        twin_3_6 --> twin_3_10
        twin_3_10 --> twin_6_7_2
        twin_lbl ~~~ twin_0_1
    end
    subgraph R_sdg[" "]
        direction LR
        sdg_lbl["合成数据"]:::lbl
        sdg_0_1["0.1"]
        sdg_1_4["1.4"]
        sdg_2_2["2.2"]
        sdg_3_2["3.2"]
        sdg_3_6["3.6"]
        sdg_3_8["3.8"]
        sdg_3_9["3.9"]
        sdg_0_1 --> sdg_1_4
        sdg_1_4 --> sdg_2_2
        sdg_2_2 --> sdg_3_2
        sdg_3_2 --> sdg_3_6
        sdg_3_6 --> sdg_3_8
        sdg_3_8 --> sdg_3_9
        sdg_lbl ~~~ sdg_0_1
    end
    R_golden ~~~ R_robot
    R_robot ~~~ R_twin
    R_twin ~~~ R_sdg
    linkStyle 0 stroke:#76b900,stroke-width:2px
    linkStyle 1 stroke:#76b900,stroke-width:2px
    linkStyle 2 stroke:#76b900,stroke-width:2px
    linkStyle 3 stroke:#76b900,stroke-width:2px
    linkStyle 4 stroke:#76b900,stroke-width:2px
    linkStyle 5 stroke:#76b900,stroke-width:2px
    linkStyle 6 stroke:#76b900,stroke-width:2px
    linkStyle 7 stroke:#76b900,stroke-width:2px
    linkStyle 8 stroke:#76b900,stroke-width:2px
    linkStyle 9 stroke:#76b900,stroke-width:2px
    linkStyle 11 stroke:#f57c00,stroke-width:2px,stroke-dasharray:6 3
    linkStyle 12 stroke:#f57c00,stroke-width:2px,stroke-dasharray:6 3
    linkStyle 13 stroke:#f57c00,stroke-width:2px,stroke-dasharray:6 3
    linkStyle 14 stroke:#f57c00,stroke-width:2px,stroke-dasharray:6 3
    linkStyle 15 stroke:#f57c00,stroke-width:2px,stroke-dasharray:6 3
    linkStyle 16 stroke:#f57c00,stroke-width:2px,stroke-dasharray:6 3
    linkStyle 17 stroke:#f57c00,stroke-width:2px,stroke-dasharray:6 3
    linkStyle 18 stroke:#f57c00,stroke-width:2px,stroke-dasharray:6 3
    linkStyle 19 stroke:#f57c00,stroke-width:2px,stroke-dasharray:6 3
    linkStyle 20 stroke:#f57c00,stroke-width:2px,stroke-dasharray:6 3
    linkStyle 21 stroke:#f57c00,stroke-width:2px,stroke-dasharray:6 3
    linkStyle 22 stroke:#f57c00,stroke-width:2px,stroke-dasharray:6 3
    linkStyle 23 stroke:#f57c00,stroke-width:2px,stroke-dasharray:6 3
    linkStyle 25 stroke:#3b82f6,stroke-width:2px,stroke-dasharray:2 3
    linkStyle 26 stroke:#3b82f6,stroke-width:2px,stroke-dasharray:2 3
    linkStyle 27 stroke:#3b82f6,stroke-width:2px,stroke-dasharray:2 3
    linkStyle 28 stroke:#3b82f6,stroke-width:2px,stroke-dasharray:2 3
    linkStyle 29 stroke:#3b82f6,stroke-width:2px,stroke-dasharray:2 3
    linkStyle 30 stroke:#3b82f6,stroke-width:2px,stroke-dasharray:2 3
    linkStyle 31 stroke:#3b82f6,stroke-width:2px,stroke-dasharray:2 3
    linkStyle 32 stroke:#3b82f6,stroke-width:2px,stroke-dasharray:2 3
    linkStyle 33 stroke:#3b82f6,stroke-width:2px,stroke-dasharray:2 3
    linkStyle 35 stroke:#a855f7,stroke-width:2px,stroke-dasharray:10 4
    linkStyle 36 stroke:#a855f7,stroke-width:2px,stroke-dasharray:10 4
    linkStyle 37 stroke:#a855f7,stroke-width:2px,stroke-dasharray:10 4
    linkStyle 38 stroke:#a855f7,stroke-width:2px,stroke-dasharray:10 4
    linkStyle 39 stroke:#a855f7,stroke-width:2px,stroke-dasharray:10 4
    linkStyle 40 stroke:#a855f7,stroke-width:2px,stroke-dasharray:10 4
    classDef lbl fill:none,stroke:none,font-weight:bold
    

图 1:四条学习路线。节点编号对应下面各表中的页面。四条路线都从 0.1 起步,除"数字孪生"先插入 0.4 外,第二步都是 1.4 安装,之后按目标分叉。

各页的用时是估计:概念页按阅读约 2000 字加看图估 10–15 分钟;实操页按跟做一遍估 45–90 分钟,不含等待训练完成的时间。

黄金路径:零基础到训练出第一个策略#

合计约 6 小时 35 分钟(估计)。

把自己的机器人导进来#

合计约 6 小时 45 分钟(估计)。

数字孪生与 ROS 2#

合计约 4 小时 45 分钟(估计)。

合成数据#

合计约 3 小时 20 分钟(估计)。

我已经会 X,可以跳过什么#

这一节回答:有基础的读者怎么省时间?

会 ROS 与 URDF:URDF 的概念你已经熟悉,2.1 为什么是 USD 可以快速浏览,重点放在 USD 与 URDF 的差异上。3.5 资产导入 仍然要读,因为导入选项直接决定碰撞体和关节驱动的质量。ROS 2 相关的 3.10 ROS 2 Bridge 可以直接跳到与 Isaac ROS 的边界部分。

会 MuJoCo 或 Isaac Gym:并行仿真与 RL 的思路你已经有了,第 5 部分可以只看 5.8 训练不收敛时看什么。要重点读的是 0.3 产品谱系与改名史(旧代码怎么换算)和 0.6 一个 RL step 里发生了什么(Isaac Lab 的调用链与 Isaac Gym 的差别)。

会 USD:第 2 部分可以只看 2.4 Schema:USD 如何描述物理,其余跳过。物理 schema 是 USD 通用知识之外、仿真最依赖的部分。

3.0 前沿专栏怎么并入#

这一节回答:想了解 Isaac Lab 3.0,什么时候读第 8 部分?

先走完主线路线中的任意一条,再读 8.1 3.0 改了什么、为什么改。第 8 部分基于 3.0.0-EA,内容可能变动;它默认你已经理解 2.3 的概念,重点讲差异。主线示例全部在 Isaac Sim 5.1.0 + Isaac Lab 2.3.2 上验证,不要在 3.0 环境里直接照做主线页面。

常见误解#

误解:必须从第 0 部分按顺序读到第 9 部分

不需要。本站按主题分部分,路线才是阅读顺序。第 9 部分(源码导读)和第 7 部分(工程基础设施)是在需要时查阅的,不在任何一条入门路线里。

延伸阅读#

版本说明#

路线中的页面按 Isaac Sim 5.1.0 + Isaac Lab 2.3.2 编写。3.0 的读法见上文。