feat(solver): Phase 1 — IKCSolver C++ API and SolverRegistry #287
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Define the pluggable solver C++ API and refactor the Assembly module to call OndselSolver through it.
Scope
Per INTER_SOLVER.md Phase 1:
Core types (IKCSolver.h / Types.h)
JointTypeId,BaseJointKindenum (22 joint categories)JointDef— solver-registered joint descriptor (DOF, params, limits, friction)Constraint— instance with geometry refs and param valuesSolveContext— full problem definition (constraints, placements, grounded set, tolerances, warm-start)SolveResult— output (status, iterations, residual, placements, diagnostics, input hash)IKCSolver interface
id(),name(),version()— identitysupported_joints()— joint type registrysolve(ctx)— main entry pointupdate(ctx, changed)— incremental (default falls back to full solve)diagnose(ctx)— well-posedness checkis_deterministic()SolverRegistry
scan(plugin_dir)— discover .so/.dll/.dylib plugins viakcsolve_create()/kcsolve_api_version()register_solver()— manual registration (for built-in Ondsel)get(),available(),get_default(),set_default()joints_for(kind)— which solvers support a given BaseJointKindOndselAdapter
Assembly module integration
File locations
Open questions (from spec)
References