ssik 1.1 delivers analytical IK for 6R/7R arms with pure Python
13 prebuilt arms, all branches enumerated, zero seed-dependent jumps
ssik 1.1, released to PyPI by the Personal Robotics Lab, is the spiritual successor to Rosen Diankov's IKFast. It provides analytical inverse kinematics for 6R and 7R revolute manipulators entirely in pure Python, making it easy to install and integrate. Unlike numerical solvers that return a single solution, ssik enumerates every analytical branch for a target pose, delivering consistent, jump-free trajectories critical for teleoperation and demonstration collection. Each solution includes the full joint state and the forward-kinematics residual.
Out of the box, ssik supports 13 prebuilt arms, including challenging classes like non-Pieper 6R (Kinova JACO 2) and non-SRS 7R (Flexiv Rizon 4). The library is tested with 500-pose hypothesis fuzz sweeps on every PR to ensure FK closure within tolerance. For custom arms, the 'ssik build' command generates a single-file Python artifact from a URDF. Debugging is streamlined with explain=True, which reports which dispatch tier failed and residuals. ssik complements existing ROS tools like MoveIt's KDL and TracIK, offering a faster, deterministic alternative when all branches are needed.
- Returns every analytical IK branch for a target pose, not just one converged config, enabling jump-free joint trajectories.
- Supports 13 prebuilt arms including non-Pieper 6R (Kinova JACO 2) and non-SRS 7R (Flexiv Rizon 4), tested with 500-pose fuzz sweeps per PR.
- Debug unreachable targets with explain=True, which reports failed dispatch tiers and residuals; custom arms via 'ssik build' from URDF.
Why It Matters
Deterministic, jump-free IK is vital for robot teleop and data collection pipelines used in modern AI training.