|
| 1 | +# 项目说明(给 Claude / 协作者) |
| 2 | + |
| 3 | +本文件汇总 dive-into-embodied-ai 的项目定位、结构骨架、技术栈与关键实现位置,进入仓库做任何改动前先读一遍。文档写作风格另见 [docs/CLAUDE.md](docs/CLAUDE.md)。 |
| 4 | + |
| 5 | +## 项目定位 |
| 6 | + |
| 7 | +Datawhale 的具身智能开源教程,目标人群是**求职/转行**:应届生、从 ML/CV/NLP/自动驾驶/传统机器人转入具身的工程师、想跳头部具身公司的在职工程师。 |
| 8 | + |
| 9 | +- 仓库:`datawhalechina/dive-into-embodied-ai` |
| 10 | +- 发布地址:`https://datawhalechina.github.io/dive-into-embodied-ai/` |
| 11 | +- 许可:CC BY-NC-SA 4.0 |
| 12 | +- 状态:Alpha 内测(仍在迁移重构中,部分章节是占位页) |
| 13 | + |
| 14 | +教程路径理念是"**认知 → 项目 → 面试**"三步走:先建立行业与技术栈整体认知,再在四类本体(机械臂、四足、人形、移动操作)上做能展示的项目,最后整理成岗位技能 / 面经 / 招聘信息。 |
| 15 | + |
| 16 | +写内容、做架构决策时优先问"**这能帮读者拿到 offer 吗**",避免堆砌论文综述。占位页填充时先做能跑通的最小项目示例,再补理论。 |
| 17 | + |
| 18 | +## 四段入口骨架(2026-05 重构) |
| 19 | + |
| 20 | +教程从旧的「总览 + 基础篇 + 实践篇 + 求职篇」重构为四个一级入口,顶部导航顺序: |
| 21 | + |
| 22 | +``` |
| 23 | +首页 / 零基础入门 / 技能树进阶 / 项目实战 / 求职面试 |
| 24 | +``` |
| 25 | + |
| 26 | +最近 checkpoint:`5c55056 调整首页导航位置和颜色`、`e9ef0b2 重构教程四段入口骨架`。完整交接见仓库根 [STRUCTURE_REFACTOR_NOTES.md](STRUCTURE_REFACTOR_NOTES.md)。 |
| 27 | + |
| 28 | +### 1. 零基础入门(`docs/overview/`) |
| 29 | + |
| 30 | +只留两个入口: |
| 31 | + |
| 32 | +- `学习路径`:`/docs/overview/learning-path` |
| 33 | +- `从0到1搭建四足机器人`:指向 `/docs/practices/quadruped/cs123/intro` |
| 34 | + |
| 35 | +旧入口已从下拉、`overviewSidebar`、`docs/overview/intro.md` 中移除;文件保留避免链接断。 |
| 36 | + |
| 37 | +### 2. 技能树进阶(`docs/foundations/`) |
| 38 | + |
| 39 | +按机器人系统能力拆分,5 列。**用户明确要求:感知和仿真要单独分类出来**。 |
| 40 | + |
| 41 | +- **大脑:智能决策** — 强化学习决策、VLA、World-Model |
| 42 | +- **小脑:运动控制** — 运动学与 ROS2、强化学习控制、运动规划 |
| 43 | +- **感官:感知系统** — VLM、定位与触觉感知 |
| 44 | +- **仿真:模拟环境** — 仿真工具基础 |
| 45 | +- **神经 / 硬件 / 数据 / 安全** — CAN 与 MCU 通信、机械结构、模仿学习 + LeRobot、安全防护 |
| 46 | + |
| 47 | +### 3. 项目实战(`docs/practices/`) |
| 48 | + |
| 49 | +按"本体方向 + 课程入口 + 部署综合"组织。当前已可用: |
| 50 | + |
| 51 | +- CS123 四足课程 8 章(从 PD 控制到 LLM 控制) |
| 52 | +- LeRobot 中文课程主线 |
| 53 | +- SO-101 + LeRobot 真机教程入口 |
| 54 | + |
| 55 | +### 4. 求职面试(`docs/career/`) |
| 56 | + |
| 57 | +**用户最新要求:只保留三项核心准备** — `岗位技能拆解`、`面经与八股`、`招聘信息`。已从下拉、`careerOverviewSidebar`、`docs/career/intro.md` 中移除:简历与作品集、公司技术栈、社区与内推(文件保留,不展示为入口)。 |
| 58 | + |
| 59 | +> **重要约束**:用户对四段入口"什么进、什么出"非常明确,已转过几次结构。改动前先确认现状再下手,不要把已移除的入口又加回来。 |
| 60 | +
|
| 61 | +## 关键实现文件(改结构时必须协同更新) |
| 62 | + |
| 63 | +修改一级入口/导航/侧边栏时,下面这组文件必须一起更新;只改一处会让站点不自洽。 |
| 64 | + |
| 65 | +### 导航与首页 |
| 66 | + |
| 67 | +- 顶部导航配置:`docusaurus.config.ts` |
| 68 | +- Mega menu 数据(4 个一级入口下拉内容):`src/components/NavbarMegaMenu/data.ts` |
| 69 | +- Mega menu 样式:`src/components/NavbarMegaMenu/styles.css` |
| 70 | +- 首页四张入口卡片:`src/components/HomepageFeatures/index.tsx`(用 `lucide-react` 图标,4 种 accent:cyan/blue/green/amber) |
| 71 | +- 首页样式:`src/components/HomepageFeatures/styles.module.css` |
| 72 | + |
| 73 | +### 侧边栏 |
| 74 | + |
| 75 | +全部集中在 `sidebars.ts`,命名规律: |
| 76 | + |
| 77 | +- 入口概述:`overviewSidebar` / `foundationsOverviewSidebar` / `practicesOverviewSidebar` / `careerOverviewSidebar` |
| 78 | +- 子专题:`foundations<Topic>Sidebar` / `practices<Topic>Sidebar` / `career<Topic>Sidebar` |
| 79 | +- 内容多用 `autogenerated` 从目录生成;CS123 课程用显式 doc 列表锁定章节顺序 |
| 80 | + |
| 81 | +### 入口概述页 |
| 82 | + |
| 83 | +- 零基础入门:`docs/overview/intro.md` |
| 84 | +- 技能树进阶:`docs/foundations/intro.md` |
| 85 | +- 项目实战:`docs/practices/intro.md` |
| 86 | +- 求职面试:`docs/career/intro.md` |
| 87 | + |
| 88 | +### 改完结构的 checklist |
| 89 | + |
| 90 | +1. `sidebars.ts`、`src/components/NavbarMegaMenu/data.ts`、对应的 `docs/<section>/intro.md`、`src/components/HomepageFeatures/index.tsx` 是否同步? |
| 91 | +2. `npm run build` 是否通过? |
| 92 | +3. `npm run check:doc-sidebars` / `check:practice-sidebars` 是否通过? |
| 93 | + |
| 94 | +## 技术栈 |
| 95 | + |
| 96 | +- **框架**:Docusaurus 3.10(`@docusaurus/preset-classic` + `@docusaurus/faster` + `@docusaurus/theme-mermaid`) |
| 97 | +- **运行时**:React 19,TypeScript 5.6,Node ≥ 20 |
| 98 | +- **样式**:Tailwind 3.4 + PostCSS + CSS modules |
| 99 | +- **图标**:`lucide-react ^1.14.0`(注意版本较老) |
| 100 | +- **数学**:`remark-math` + `mathjax-full` |
| 101 | +- **搜索**:`@easyops-cn/docusaurus-search-local` |
| 102 | +- **媒体存储**:**Git LFS**(视频/GIF) |
| 103 | + |
| 104 | +### 常用脚本 |
| 105 | + |
| 106 | +| 命令 | 用途 | |
| 107 | +| :--- | :--- | |
| 108 | +| `npm run dev` | 本地预览(走 `scripts/dev.sh`) | |
| 109 | +| `npm run build` | docusaurus build;**改完结构必跑** | |
| 110 | +| `npm run typecheck` | tsc | |
| 111 | +| `npm run check:doc-assets` | 检查文档引用的图片/视频资源是否存在 | |
| 112 | +| `npm run check:doc-sidebars` | 文档与 `sidebars.ts` 一致性 | |
| 113 | +| `npm run check:practice-sidebars` | 项目实战侧边栏一致性 | |
| 114 | +| `npm run check:math-refs` | 数学公式引用 | |
| 115 | +| `npm run check:playgrounds` | playground 配置 | |
| 116 | +| `npm run assets:webp` | 图片转 WebP(依赖 Python3) | |
| 117 | + |
| 118 | +### Git LFS |
| 119 | + |
| 120 | +clone 后必须先: |
| 121 | + |
| 122 | +```bash |
| 123 | +git lfs install |
| 124 | +git lfs pull |
| 125 | +``` |
| 126 | + |
| 127 | +否则本地看到的 GIF/视频是 pointer 文本。若 `npm run build` 报 GIF/LFS 警告,多半是本地 LFS 未拉。 |
| 128 | + |
| 129 | +### 已知警告 |
| 130 | + |
| 131 | +- `docs/CLAUDE#anchor` broken anchor(既有) |
| 132 | +- GIF / LFS 图片读取警告,通常与本地 LFS 状态有关 |
| 133 | + |
| 134 | +## 文档写作风格 |
| 135 | + |
| 136 | +详见 [docs/CLAUDE.md](docs/CLAUDE.md)。简要: |
| 137 | + |
| 138 | +1. **不写元叙事过渡句**(禁「本节将…」「下一节用 Y 看一下成品」之类) |
| 139 | +2. **标题严谨且简短**(动作-对象短语,中文 ~10 字以内) |
| 140 | +3. **标题里只用中英文 + 空格**(禁 backtick / `+` / `/` / `→` / `:` 等) |
| 141 | +4. **跨节引用用 inline**(不要独立一段说"下面我们将…") |
| 142 | +5. **图表引用统一**用「如[图 X](#anchor) 所示」「如表 X 所示」「如式 $\eqref{...}$ 所示」 |
| 143 | + |
| 144 | +## 贡献者 |
| 145 | + |
| 146 | +| 姓名 | 职责 | |
| 147 | +| :--- | :--- | |
| 148 | +| 罗如意 | 项目负责人 | |
| 149 | +| 江季 | 项目负责人(蘑菇书 [easy-rl](https://github.com/datawhalechina/easy-rl) 作者) | |
| 150 | +| 康博 | 核心贡献者(nobl.ai 联合创始人 & 比利时根特大学访问教授) | |
0 commit comments