接入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

@@ -109,7 +109,7 @@ emcmake/emcc: /home/meswork/emsdk/upstream/emscripten
3. 产物存在:`kdl-wasm/build-wasm/kdl.js``kdl-wasm/build-wasm/kdl.wasm``kdl-wasm/build-wasm/kdl.d.ts`
4. `npm run test -- kdl rpc` 通过2 个测试文件共 11 个测试通过。
5. Node 动态加载 `kdl.js` 并调用 `kdl_init`,输出 `{"rc":0,"hasCwrap":true}`
6. 当前 C ABI 在 `KW-013` 已补稳定导出、RobotHandle 生命周期和结构化错误边界;轮次 024 已进一步接入 native KDL Chain、FK 和 Jacobiannative IK 和轨迹计算仍由 TypeScript runtime 基线承载。
6. 当前 C ABI 在 `KW-013` 已补稳定导出、RobotHandle 生命周期和结构化错误边界;轮次 024/025 已进一步接入 native KDL Chain、FK、fkAllLinks、Jacobian、IK 和 sampleTrap高层轨迹规划仍由 TypeScript runtime 基线承载。
是否通过:通过。
@@ -148,7 +148,7 @@ Vitest 3.2.6
4. `NormalizedRobotModel` 生成 `activeJointNames``limits``source.urdfHash`
5. base/tip 不连通、unsupported joint type 返回 `KDL_INVALID_MODEL` 结构化诊断。
6. Worker runtime 支持 `loadRobotFromUrdf/createRobotFromModel/getRobotInfo/getJointLimits/destroyRobot` 的 RobotHandle 生命周期。
7. Worker runtime 当前仍由 TypeScript registry 管理 RobotHandleC ABI 已可根据同一 `NormalizedRobotModel` 构造 native KDL Chain 并执行 FK/Jacobian
7. Worker runtime 当前仍由 TypeScript registry 管理 RobotHandleC ABI 已可根据同一 `NormalizedRobotModel` 构造 native KDL Chain 并执行 FK、fkAllLinks、Jacobian、IK 和 sampleTrap
是否通过:通过。
@@ -187,7 +187,7 @@ Vitest 3.2.6
4. `fk` 返回 `ok/flange/tcp/joints/diagnostics`
5. `fkAllLinks` 返回 base-to-tip link pose 顺序。
6. 覆盖零位 FK、revolute + prismatic 关节、tool TCP 偏移、link 顺序和关节维度结构化诊断。
7. Worker `fk/fkAllLinks` 当前为 TypeScript 标准模型数值基线C ABI 已补 native `kdl_fk` golden 测试`fkAllLinks` native JSON 序列化仍待后续接入
7. Worker `fk/fkAllLinks` 当前为 TypeScript 标准模型数值基线C ABI 已补 native `kdl_fk` pose7 golden 测试`kdl_fk_all_links` JSON link pose 顺序测试
是否通过:通过。
@@ -224,7 +224,7 @@ Vitest 3.2.6
2. `npm run test -- kdl ik` 通过8 个测试文件共 34 个测试通过。
3. `ik` 返回 `ok/joints/iterations/residualPosition/residualOrientation/reason/diagnostics`
4. 覆盖可达目标 IK、FK 回代误差、`ikBatch` 顺序保持、关节限位失败、unsupported model 的 `invalid_model` reason。
5. 当前 IK 为 TypeScript 基线几何求解器,支持 single-prismatic 和 Rz+Px 链;native 通用 6 轴迭代 IK 与 Orocos KDL solver 接入后继续扩展
5. Worker IK 当前为 TypeScript 基线几何求解器,支持 single-prismatic 和 Rz+Px 链;C ABI 已补 native Orocos KDL `ChainIkSolverPos_LMA` IK 回代测试,后续可继续把 Worker IK 路由切到 native solver
是否通过:通过。
@@ -611,20 +611,23 @@ Emscripten emcc 6.0.0
1. `npm run typecheck` 通过。
2. `cmake --build kdl-wasm/build-wasm -j16` 通过。
3. `npm test -- kdl-wasm/web/tests/kdl/cAbi.test.ts` 通过1 个测试文件共 5 个测试通过。
4. `npm run test -- kdl fk jacobian checks c-abi` 通过27 个测试文件共 108 个测试通过。
5. `npm test` 通过27 个测试文件共 108 个测试通过。
3. `npm test -- kdl-wasm/web/tests/kdl/cAbi.test.ts` 通过1 个测试文件共 6 个测试通过。
4. `npm run test -- kdl cAbi trapProfile` 通过27 个测试文件共 109 个测试通过。
5. `npm test` 通过27 个测试文件共 109 个测试通过。
6. C ABI 稳定导出 `kdl_init/create_robot/destroy_robot/get_robot_info/fk/fk_all_links/jacobian/ik/plan_movej/plan_movel/plan_movec/plan_path/sample_trap/last_error`
7. C++ ABI 现支持 `kdl_create_robot/kdl_destroy_robot/kdl_get_robot_info` 的 handle 生命周期和 JSON 输出。
8. WASM wrapper 链接 Orocos KDL 最小源码集C ABI 可从 `NormalizedRobotModel` 构造 native KDL Chain。
9. `kdl_fk` 通过 `ChainFkSolverPos_recursive` 输出 pose7测试覆盖 Rz+Px 链 `[pi/2, 0.4]` 的位置和四元数 golden。
10. `kdl_jacobian` 通过 `ChainJntToJacSolver` 输出 6 x dof 行主序矩阵,测试覆盖线速度和角速度分量
11. 修复 native solver 生命周期FK/Jacobian solver 在 map 内稳定 `RobotRecord` 上构造,避免持有 move 前 Chain 引用
12. C ABI 失败统一通过 `kdl_last_error` 返回结构化 `code/message/diagnostics`,覆盖 `KDL_NOT_IMPLEMENTED``KDL_BUFFER_TOO_SMALL`
13. 新增 `KdlNativeAbi` 封装 C ABI 导出检查、缓冲区读取、返回码检查和错误归一化
14. 新增 `fkPose7` TypedArray 高频 FK 接口,支持复用输出缓冲区并覆盖输出维度错误
15. 性能基线已记录 6 轴初始化、TypedArray FK、平面 IK、1000 点批量可达性和 10 秒 4 ms 轨迹采样
16. native IK、fkAllLinks JSON 序列化和 native 轨迹规划仍未接入;这些能力继续由 TypeScript baseline 覆盖
10. `kdl_fk_all_links` 输出 JSON link pose 列表,测试覆盖 `base_link/link_1/tool0` 顺序和 tip 位姿
11. `kdl_jacobian` 通过 `ChainJntToJacSolver` 输出 6 x dof 行主序矩阵,测试覆盖线速度和角速度分量
12. `kdl_ik` 通过 `ChainIkSolverPos_LMA` 求解,测试覆盖 native IK 后 FK 回代到 `[pi/2, 0.4]`
13. `kdl_sample_trap` 输出完整梯形/三角速度曲线 JSON测试覆盖 trapezoid、triangle 和非法输入结构化错误
14. 修复 native solver 生命周期FK/Jacobian/IK solver 在 map 内稳定 `RobotRecord` 上构造,避免持有 move 前 Chain 引用
15. C ABI 失败统一通过 `kdl_last_error` 返回结构化 `code/message/diagnostics`,覆盖 `KDL_INVALID_HANDLE``KDL_INVALID_TRAP_PROFILE``KDL_BUFFER_TOO_SMALL`
16. 新增 `KdlNativeAbi` 封装 C ABI 导出检查、缓冲区读取、返回码检查和错误归一化
17. 新增 `fkPose7` TypedArray 高频 FK 接口,支持复用输出缓冲区并覆盖输出维度错误。
18. 性能基线已记录 6 轴初始化、TypedArray FK、平面 IK、1000 点批量可达性和 10 秒 4 ms 轨迹采样。
19. native `planMoveJ/planMoveL/planMoveC/planPath` 仍由 TypeScript runtime 基线承载;底层 C ABI 已保留稳定导出,后续可逐步切到 native solver。
是否通过:通过。