# Kinetica Inverse Kinematics > Target TCP pose → all joint solutions found, residuals, joint limits and reachability. Solves the inverse kinematics of a serial robot (DH table, URDF subset or library robot) for a target TCP pose with damped least squares from several deterministic seeds, plus closed-form solutions for planar 2-link arms and SCARAs. Lists every distinct solution with its residual, joint-limit and singularity status, and explains why a target is unreachable. Part of usefulweb.site (https://usefulweb.site/). Results are deterministic calculations from the inputs and the listed assumptions; the API returns exactly what the web page shows. ## Use it - Human interface: https://kineticainversekinematics.usefulweb.site/ (interactive tool at https://kineticainversekinematics.usefulweb.site/tool) - JSON API: POST https://kineticainversekinematics.usefulweb.site/api/v1/calculate with a JSON object of inputs (schema: https://kineticainversekinematics.usefulweb.site/api/v1/tool) - OpenAPI: https://kineticainversekinematics.usefulweb.site/openapi.json - MCP (Streamable HTTP): https://kineticainversekinematics.usefulweb.site/mcp - tool `kinetica_inverse_kinematics` ## Inputs - robot (select): Robot - A library robot, or choose a custom DH table, URDF or Kinetica robot JSON. - convention (select): DH convention (custom table) - dh (table): DH table (custom) - One row per joint. Lengths in mm, angles in degrees. For revolute joints θ is the zero offset, for prismatic joints d is. - robotText (textarea): URDF or robot JSON - Used when Robot is “URDF” or “Kinetica robot JSON”. URDF subset: links with box/cylinder/sphere, revolute/continuous/prismatic/fixed joints. - tool (text): Tool offset (TCP) - x, y, z (mm), roll, pitch, yaw (deg) in the flange frame, e.g. “0, 0, 150, 0, 0, 0”. Empty = robot default. - x (number, required): Target x - y (number, required): Target y - z (number, required): Target z - roll (number): Roll - pitch (number): Pitch - yaw (number): Yaw - mode (select): Task - seed (text): Preferred configuration - Joint values the solutions are sorted by (closest first). Empty = home pose. - restarts (integer): Random restarts - rngSeed (integer): Random seed - Seeds the deterministic restart generator, so the same input always gives the same solutions. ## Method - Error e = [Δp / L; Δφ] with Δφ the rotation vector from current to target orientation and L the arm’s characteristic length, restricted to the task rows the robot can actually control (e.g. x, y, z, yaw for a SCARA; x, y for a planar arm). - Damped least squares step Δq = Jᵀ(J·Jᵀ + λ²I)⁻¹e with adaptive damping λ (decrease after an improving step, increase after a failed one), step-size limit 0.5 rad, and projection onto the joint limits (revolute joints wrap by 2π when the range allows). - Restarts: the preferred configuration, the home pose, then pseudo-random configurations from a seeded mulberry32 generator; distinct converged solutions (position residual ≤ 1e-6 mm, orientation ≤ 1e-8 rad) are kept and sorted by distance to the preferred configuration. - Closed forms: planar 2R and SCARA use the law of cosines (two elbow branches), then FK verifies and a short DLS polish removes any remaining residual. - Unreachable targets report the distance from the first joint versus the skeleton length (upper bound of reach) and the closest configuration found. ## Limits - Kinematic simulation for planning and teaching. It is not a certified safety function: verify every program on the real controller with reduced speed and the cell safety system active.