接入KDL native IK与链路采样

This commit is contained in:
wangdequan
2026-06-27 09:19:57 -04:00
parent ef5f14aa2a
commit 2817cba164
7 changed files with 504 additions and 37 deletions

View File

@@ -1185,3 +1185,47 @@
1. 若继续深化 KDL native 主线,优先接入 native `fkAllLinks` JSON 输出和 native IK。
2. native IK 稳定后,再逐步把 `planMoveL/planMoveC/planPath` 从 TypeScript baseline 切到 native solver。
### 轮次 025
日期2026-06-27
关联任务:`KW-003``KW-004``KW-007``KW-013`
本轮目标:闭合轮次 024 遗留的 native `fkAllLinks` JSON 输出、native IK 和 native sampleTrap C ABI 基线。
做了什么:
1. C ABI 增加 native `kdl_fk_all_links` JSON 序列化,输出 `{ ok, linkPoses, diagnostics }`,并过滤 KDL 内部 origin 辅助段。
2. CMake 接入 Orocos KDL `ChainIkSolverPos_LMA` 源文件。
3. `RobotRecord` 持有 native IK solver随 KDL Chain 生命周期稳定构造。
4. 实现 native `kdl_ik`,从 pose7 归一化四元数构造 KDL Frame并输出 joint buffer。
5. 实现 native `kdl_sample_trap`,输出完整 trapezoid/triangle profile JSON覆盖 zero length、triangle fallback 和非法输入诊断。
6. 扩展 `cAbi.test.ts`,覆盖 native FK、fkAllLinks、Jacobian、IK、sampleTrap 和结构化失败路径。
7. 更新 `README.md`、任务矩阵和验收证据,修正 native IK/fkAllLinks 的旧待办表述。
改了哪些文件:
1. `/home/meswork/kdl_work/kdl-wasm/CMakeLists.txt`
2. `/home/meswork/kdl_work/kdl-wasm/bindings/kdl_c_api.cpp`
3. `/home/meswork/kdl_work/kdl-wasm/web/tests/kdl/cAbi.test.ts`
4. `/home/meswork/kdl_work/working/README.md`
5. `/home/meswork/kdl_work/working/03-推进台账.md`
6. `/home/meswork/kdl_work/working/04-任务矩阵.md`
7. `/home/meswork/kdl_work/working/05-验收证据.md`
验证了什么:
1. `cmake --build kdl-wasm/build-wasm -j16` 通过。
2. `npm run test -- kdl cAbi trapProfile` 通过27 个测试文件共 109 个测试通过。
3. `npm run typecheck` 通过。
4. `npm test` 通过27 个测试文件共 109 个测试通过。
问题和风险:
1. Worker runtime 当前仍由 TypeScript registry 管理高层机器人句柄native C ABI 已覆盖 FK、fkAllLinks、Jacobian、IK 和 sampleTrap但尚未成为 Worker 默认计算路径。
2. native `planMoveJ/planMoveL/planMoveC/planPath` 仍保留稳定导出边界,高层轨迹规划继续由 TypeScript runtime 基线承载。
3. C ABI 轻量 JSON 解析仍只覆盖当前 `NormalizedRobotModel` 和 trap options 必需字段,后续 schema 扩展需要同步增强。
下一步:
1. 若继续深化 KDL native 主线,优先设计 Worker 中 TypeScript handle 与 native RobotHandle 的映射关系。
2. 映射稳定后,再逐步把 `planMoveJ/planMoveL/planMoveC/planPath` 从 TypeScript runtime 切到 native solver 或 native-assisted solver。