AI × CAD × 机器人
一份覆盖 CAD 内核、机器人学、3D 前端、Agent 工程的 12 个月深度路径。项目源地址:https://github.com/earthtojake/text-to-cad
🗺️ Text-to-CAD 全栈学习路线图
按"先共同地基,再分支专精"的顺序。每节预估时长按"每天 1-2 小时"算。括号是核心资源。
📐 L0 · 数学和编程地基(2-4 周)
不学这层,后面所有的旋转矩阵、关节链、shader 都看不进去。
| 知识 | 用在哪里 | 推荐 |
|---|---|---|
| 线性代数:矩阵乘法、齐次坐标、SVD | 装配体 transform、URDF 关节、three.js Matrix4 | Gilbert Strang《Linear Algebra and Its Applications》前 4 章;3Blue1Brown 视频 |
| 三维旋转:旋转矩阵、欧拉角、四元数、轴角 | URDF rpy、机器人正逆解、相机轨道 | 《Robotics: Modelling, Planning and Control》(Siciliano) Ch 2,或《Quaternions for Computer Graphics》 |
| Python 3.11+ 进阶 | build123d、OCP 脚本 | 《Fluent Python》(Luciano Ramalho) |
| JS / TypeScript ES Modules + async/await | Explorer 前端 | MDN 现代 JS 教程 |
| Git + Git LFS | 项目里 STEP/STL/GLB 走 LFS | git-lfs.github.com 官方 tutorial |
✅ 通关标准:能闭眼写出 4×4 齐次变换矩阵手算,知道四元数和欧拉角的优劣。
🧰 L1 · CAD 内核与文件格式(4-6 周)
Text-to-CAD 的 Python 端全靠这层。
1.1 OpenCascade(OCC/OCP)
- 是什么: 3D B-Rep CAD 内核,法国 OpenCascade 社区 30 年作品,STEP/IGES/Brep 解析的事实标准
- 怎么学:
- 先看 OpenCascade 官方 manual 的 “Modeling Algorithms” 和 “Data Exchange” 两章
- Python 绑定:CadQuery 文档 顺带学(底层一样)
- Hands-on: 用 OCP 直接打开本仓的
STEP/r6_arm.step,枚举所有 face,统计 GeomType
- 关键概念:
TopoDS_Shape→Solid→Face→Edge→Vertex,B-Rep 拓扑、参数曲面、布尔运算
1.2 build123d
- 高层 Python DSL,封装 OCP
- Tutorial: 官方 build123d.readthedocs.io 全过一遍
- Builder 模式 vs Algebra 模式都要会(本仓
STEP/r6_link*.py用的 Algebra,industrial_pallet.py也是) - Hands-on: 复现并改进
STEP/industrial_pallet.py(加上叉车口、防滑板)
1.3 STEP / STL / 3MF / DXF / GLB
- STEP (AP203/AP214/AP242): ISO-10303,B-Rep 精确几何,工业互操作金标准。读《Express Language Reference》前面几章足够
- STL: 三角面片,无单位,只能装配显示。看 Wikipedia 即可
- 3MF: 微软主推的 3D 打印 STEP 替代,XML + ZIP,带颜色/材质。3mf.io 规范
- DXF: AutoCAD 中性格式,2D/3D 图元都有。
ezdxfPython 库文档 - GLB / glTF 2.0: 浏览器端 3D 标准。Khronos glTF tutorial
- 拓扑 sidecar: 本项目自有,看
.agents/skills/cad/scripts/common/step_scene.py
✅ 通关标准:看到一个 STEP 文件能用 OCP/build123d 打开、改、再导出。
🤖 L2 · 机器人学(6-10 周)
URDF 只是一种序列化格式,后面的运动学/动力学才是真功夫。
2.1 URDF
- ROS 官方 URDF tutorial
- 看本仓
URDF/r6_arm.urdf全部理解<link>/<joint>/<inertial>/<visual>/<collision>含义 - 工具:
yourdfpy、urchin、urdfdom,看着官方仓玩
2.2 DH 与 MDH 参数
- 必读:John J. Craig《Introduction to Robotics: Mechanics and Control》第 3 章(Modified DH)
- 对比 Spong《Robot Modeling and Control》第 3 章(Standard DH)
- Hands-on: 把本仓
find_pivots.py抽出的 6 个轴自己手算 MDH,跟URDF/r6_arm.py对照
2.3 正向运动学 FK
- 关节角 → 末端位姿
- 矩阵链相乘,几行 numpy 搞定
- 看 Explorer 的
lib/urdf/kinematics.js是怎么用 three.js Matrix4 做 FK 的
2.4 逆向运动学 IK
- 末端位姿 → 关节角,难点在这里
- 解析法(球腕分离法,Pieper 1968):适用于 r6_arm 这种最后三轴交于一点的结构
- 数值法:Jacobian transpose / pseudo-inverse / DLS / TRAC-IK
- 推荐:Siciliano《Robotics》Ch 3,代码看
ikpyPython 库 - Hands-on: 给 r6_arm 写个解析 IK,验证可达性
2.5 路径规划 + 动力学(进阶)
- 路径规划:RRT、PRM、CHOMP、STOMP → MoveIt 2 是工业事实标准
- 动力学:牛顿欧拉法、拉格朗日法,用于扭矩计算和实时控制
- 仿真:Gazebo / Isaac Sim / MuJoCo / PyBullet,各有侧重
✅ 通关标准:给一个 URDF 和目标 TCP 位姿,能算出关节角并验证可达。
🎨 L3 · 前端 3D(4-6 周)
Explorer 这一侧的全部知识。
3.1 WebGL / GPU 渲染基础
- WebGL Fundamentals 通读
- 顶点/片段 shader、深度缓冲、变换矩阵管线
- 不需要写 raw WebGL,但必须知道 three.js 在底层做什么
3.2 three.js 0.160
- 官方 examples 和 docs 必看
- 重点:
- Scene / Camera (PerspectiveCamera vs OrthographicCamera) / Renderer
- BufferGeometry、Mesh、Material(MeshStandardMaterial 物理材质)
- 灯光:DirectionalLight / Ambient / HemisphereLight / IBL
- 控制器:OrbitControls / TransformControls
- 加载器:GLTFLoader / STLLoader
- Raycaster(picking)
- Hands-on: 写一个最小 three.js 程序加载本仓
STEP/.r6_arm.step/model.glb+ OrbitControls
3.3 Explorer 自家代码(深入)
读源码顺序建议:
package.json→ 找入口index.html→main.jsx→App→CadExplorercomponents/explorer/hooks/useExplorerRuntime.js— three.js 场景初始化lib/render/{glbMeshData,stlMeshData,threeMfMeshData}.js— 各格式加载lib/urdf/parseUrdf.js+kinematics.js— URDF 解析与 FKlib/dxf/parseDxf.js+buildPreviewMesh.js— DXF 拉伸预览lib/selectors/runtime.js—@cad[...]引用系统(本仓独门设计)
3.4 React 18 + Vite 7 + Tailwind 4 + radix-ui
- React: 官方新文档 react.dev,重点看 hooks、ref、Suspense
- Vite: 看官方 guide(配置 dev server / 静态资源 / dynamic import)
- Tailwind 4 + tw-merge + class-variance-authority:看官方 utility-first 思想
- radix-ui: 无样式 headless 组件,看几个常用的(Dialog、Dropdown)
✅ 通关标准:能给 Explorer 加一个新功能(比如一个剖面工具或测距工具)。
🔧 L4 · 工程化与协作(2-3 周)
4.1 Agent Skills 机制
- Codex 的
.agents/skills/加载约定 - Claude Code 的
.claude/skills/符号链接 - SKILL.md 的格式(frontmatter + 文档体)
- 看本仓
.agents/skills/{cad,urdf,robot-motion}/SKILL.md
4.2 Generator Contract
gen_step()/gen_dxf()/gen_urdf()envelope 规范- 看
.agents/skills/cad/references/generator-contract.md - Hands-on: 写一个新的 generator,加上 STL/3MF/DXF 三个 sidecar
4.3 @cad[...] 引用系统
- 这是本仓独有的"几何稳定句柄"机制,让 LLM 跨多次编辑还能锁定同一面/边/点
- 看
.agents/skills/cad/references/prompt-refs.md与.agents/skills/cad/scripts/cadref/
4.4 Git LFS + Pre-commit
- LFS:
.gitattributes配置、bandwidth 配额、LFS 与 PR review 的痛点 - 大型 CAD 仓的目录策略
✅ 通关标准:能从 0 搭一个新的 sub-skill,符合本仓全部约定。
🚀 L5 · 选学进阶分支
分支 A — CAD/CAM 理论(深耕几何)
- 《Geometric Modeling》 Mortenson
- 《An Introduction to NURBS》 Rogers
- CAM 编程、五轴刀路、有限元前处理
分支 B — 机器人物理仿真
- ROS 2 Humble/Iron 教程
- MoveIt 2 + OMPL planner
- Isaac Sim(NVIDIA,GPU 加速)
- MuJoCo 3 + Python(DeepMind)
- PyBullet for RL
分支 C — 渲染管线进阶
- Real-Time Rendering 4th Edition 系统补
- WebGPU(下一代,three.js r166+ 已支持)
- PBR、HDR、BVH 加速 ray casting
分支 D — Agent / LLM 工程
- Claude Code SDK 实操
- 自己写 skill 和 hook
- 把这套接到内部 LLM(本地 vLLM + tool calling)
分支 E — 工业互操作
- STEP AP242 BO Model XML(下一代 STEP)
- JT、QIF、3D PDF
- PMI(Product Manufacturing Information)
📅 推荐节奏(全职 vs 业余)
| 阶段 | 全职(每天 6h) | 业余(每天 1h) | 输出物 |
|---|---|---|---|
| L0 数学+编程 | 2 周 | 2 个月 | numpy 旋转工具箱 |
| L1 CAD 内核 | 3 周 | 3 个月 | 自己写一个齿轮生成器 |
| L2 机器人学 | 4 周 | 4 个月 | 给 r6_arm 写解析 IK |
| L3 前端 3D | 3 周 | 3 个月 | 给 Explorer 加剖面工具 |
| L4 工程化 | 2 周 | 1 个月 | 自己的 sub-skill |
| L5 任一分支 | 持续 | 持续 | 个人项目 |
总计:全职大概 3-4 个月入门到能改主仓代码,业余 12 个月。要"学透"(能独立设计类似系统)需要 1-2 年。
💡 反向工程式学习法(本仓最适合)
不要从教科书顺序学。用本仓的真实问题驱动:
- “为啥 r6_arm 在 Explorer 里能拖动关节?” → 从 URDF 解析追到 three.js 矩阵链
- “为啥 r6_arm 的 STEP 进来 17MB 还能秒开?” → 追到 GLB 转换、LOD 思路
- “为啥
@cad[f5]能跨编辑保持稳定?” → 钻进 selector 系统 - “为啥 build123d 写两行就能出 STEP?” → 一路追到 OCP 的
STEPControl_Writer - “为啥 OpenMind 那张 MDH 表填错了正向运动学就乱?” → 自己手推一遍 FK
每个"为啥"答完都比读 50 页教科书有用。本仓代码是一份用 production 质量写的、覆盖几乎所有相关知识的活教材,建议抄进 IDE 一行行单步调试。