Skip to content

Solution charts: remaining work after #579 #578

Description

@siddhss5

#579 lands charts of the self-motion manifold: SelfMotionManifold / Chart, q(t), tangent by implicit differentiation, frame(t, metric), in_limits subdomains, arc-length length / sample, sheets / gap / escape / locate, branch label and tracking with monodromy, solve_path, a native mirror, and 0-D charts for ikgeo.three_parallel.

This issue is what remains.

API gaps

  • pullback_metric(t, metric): expose g_phi = Dphi^T G Dphi. length and sample already compute it internally, and it is what a null-space-optimization caller needs.
  • Rename the accessor: Manipulator.charts(T) returns a manifold, so callers write arm.charts(T).charts(). Prefer arm.self_motion(T).

Coverage gaps

Charts today exist only for seven_r.spherical_shoulder, seven_r.srs and ikgeo.three_parallel. Everything else raises NotImplementedError.

  • Jointlock: needs implicit differentiation of the unlocked 6R system. Blocked on a labelling question, since jointlock branches carry no stable label across lock samples.
  • Polished / approximate-SRS: differentiate implicitly at the corrected solution rather than through every LM iteration.
  • ikgeo.general_6r, Husty-Pfurner, spherical_two_parallel: no chart at all. Relevant to M7, which targets general_6r (see Define independent IK soundness, recovery, and branch-completeness contracts #573).

Contracts to settle

  • label semantics: universal stable identity, or explicitly family-scoped? The tracking design depends on it, and the families above cannot all provide the same guarantee. Decide before more consumers rely on it.
  • Metric catalogue: which ship, identity, constant weighted SPD, configuration-dependent inertia.
  • What "differentiable" means: analytic Jacobian only, or JAX / PyTorch compatibility too. Root sorting, dedup and branch creation are not globally smooth, so autodiff through the solver is a separate question from exposing Dphi.
  • Serialization and the native boundary: Add self-motion charts #579 answers this de facto with a Python/C++ wrapper object. Ratify, or decide whether generated native artifacts should expose the same ABI directly.

Cross-cutting

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions