PinocchioSolver#
PinocchioSolver solves single-target numerical IK with
Pinocchio. Its active solve path
iterates on pose error with damped Jacobian updates; the CasADi optimization
path is currently disabled.
Configuration Example#
from embodichain.data import get_data_path
from embodichain.lab.sim.motion.solvers.pinocchio_solver import PinocchioSolver
from embodichain.lab.sim.motion.solvers.pinocchio_solver import PinocchioSolverCfg
cfg = PinocchioSolverCfg(
urdf_path=get_data_path("UniversalRobots/UR5/UR5.urdf"),
end_link_name="ee_link",
root_link_name="base_link",
max_iterations=1000,
pos_eps=1e-4,
rot_eps=1e-4,
dt=0.05,
damp=1e-6,
num_samples=30,
is_only_position_constraint=False,
)
solver = PinocchioSolver(cfg)
Solver-specific behavior#
See shared FK/IK conventions for the common call pattern and return order.
get_ik() currently solves one target per call: if given (B, 4, 4), it
uses the first pose. Call it separately for each target. It returns success
first and joint positions second. A failed solve may return its last iterate;
check the success flag before using the result.