roboplan.roboplan_ext.optimal_ik
Classes
Abstract base class for IK tasks. |
|
Parameters for FrameTask. |
|
Task to reach a target pose for a specified frame. |
|
Parameters for ConfigurationTask. |
|
Task to reach a target joint configuration. |
|
Abstract base class for IK constraints. |
|
Constraint to enforce joint position limits. |
|
Constraint to enforce joint velocity limits. |
|
Optimal Inverse Kinematics solver. |
Module Contents
- class roboplan.roboplan_ext.optimal_ik.Task
Abstract base class for IK tasks.
- property gain: float
Task gain for low-pass filtering.
- Return type:
float
- property weight: Annotated[numpy.typing.NDArray[numpy.float64], dict(shape=None, None, order='F')]
Weight matrix for cost normalization.
- Return type:
Annotated[numpy.typing.NDArray[numpy.float64], dict(shape=(None, None), order=’F’)]
- property lm_damping: float
Levenberg-Marquardt damping.
- Return type:
float
- property num_variables: int
Number of optimization variables.
- Return type:
int
- class roboplan.roboplan_ext.optimal_ik.FrameTaskOptions(position_cost=1.0, orientation_cost=1.0, task_gain=1.0, lm_damping=0.0)
Parameters for FrameTask.
- Parameters:
position_cost (float)
orientation_cost (float)
task_gain (float)
lm_damping (float)
- property position_cost: float
Position cost weight.
- Return type:
float
- property orientation_cost: float
Orientation cost weight.
- Return type:
float
- property task_gain: float
Task gain for low-pass filtering.
- Return type:
float
- property lm_damping: float
Levenberg-Marquardt damping.
- Return type:
float
- class roboplan.roboplan_ext.optimal_ik.FrameTask(target_pose, num_variables, options=...)
Bases:
TaskTask to reach a target pose for a specified frame.
- Parameters:
target_pose (roboplan_ext.core.CartesianConfiguration)
num_variables (int)
options (FrameTaskOptions)
- property frame_name: str
Name of the frame to control.
- Return type:
str
- property frame_id: std::optional<unsigned long>
Index of the frame in the scene’s Pinocchio model.
- Return type:
std::optional<unsigned long>
- property target_pose: roboplan_ext.core.CartesianConfiguration
Target pose for the frame.
- Return type:
- setTargetFrameTransform(arg, /)
Sets the target transform for this frame task.
- Parameters:
arg (Annotated[numpy.typing.NDArray[numpy.float64], dict(shape=(4, 4), order='F')])
- Return type:
None
- class roboplan.roboplan_ext.optimal_ik.ConfigurationTaskOptions(task_gain=1.0, lm_damping=0.0)
Parameters for ConfigurationTask.
- Parameters:
task_gain (float)
lm_damping (float)
- property task_gain: float
Task gain for low-pass filtering.
- Return type:
float
- property lm_damping: float
Levenberg-Marquardt damping.
- Return type:
float
- class roboplan.roboplan_ext.optimal_ik.ConfigurationTask(target_q, joint_weights, options=...)
Bases:
TaskTask to reach a target joint configuration.
- Parameters:
target_q (Annotated[numpy.typing.NDArray[numpy.float64], dict(shape=(None, ), order='C')])
joint_weights (Annotated[numpy.typing.NDArray[numpy.float64], dict(shape=(None, ), order='C')])
options (ConfigurationTaskOptions)
- property target_q: Annotated[numpy.typing.NDArray[numpy.float64], dict(shape=None, order='C')]
Target joint configuration.
- Return type:
Annotated[numpy.typing.NDArray[numpy.float64], dict(shape=(None, ), order=’C’)]
- property joint_weights: Annotated[numpy.typing.NDArray[numpy.float64], dict(shape=None, order='C')]
Weights for each joint in the configuration task.
- Return type:
Annotated[numpy.typing.NDArray[numpy.float64], dict(shape=(None, ), order=’C’)]
- class roboplan.roboplan_ext.optimal_ik.Constraints
Abstract base class for IK constraints.
- class roboplan.roboplan_ext.optimal_ik.PositionLimit(num_variables, gain=1.0)
Bases:
ConstraintsConstraint to enforce joint position limits.
- Parameters:
num_variables (int)
gain (float)
- property config_limit_gain: float
Gain for position limit enforcement.
- Return type:
float
- class roboplan.roboplan_ext.optimal_ik.VelocityLimit(num_variables, dt, v_max)
Bases:
ConstraintsConstraint to enforce joint velocity limits.
- Parameters:
num_variables (int)
dt (float)
v_max (Annotated[numpy.typing.NDArray[numpy.float64], dict(shape=(None, ), order='C')])
- property dt: float
Time step for velocity calculation.
- Return type:
float
- property v_max: Annotated[numpy.typing.NDArray[numpy.float64], dict(shape=None, order='C')]
Maximum joint velocities.
- Return type:
Annotated[numpy.typing.NDArray[numpy.float64], dict(shape=(None, ), order=’C’)]
- class roboplan.roboplan_ext.optimal_ik.Oink(num_variables)
Optimal Inverse Kinematics solver.
- Parameters:
num_variables (int)
- solveIk(tasks, constraints, scene, delta_q, regularization=1e-12)
Solve inverse kinematics for given tasks and constraints.
Solves a QP optimization problem to compute the joint velocity that minimizes weighted task errors while satisfying all constraints. The result is written directly into the provided delta_q buffer.
- Parameters:
tasks (collections.abc.Sequence[Task]) – List of weighted tasks to optimize for.
constraints (collections.abc.Sequence[Constraints]) – List of constraints to satisfy.
scene (roboplan_ext.core.Scene) – Scene containing robot model and state.
delta_q (Annotated[numpy.typing.NDArray[numpy.float64], dict(shape=(None, ))]) – Pre-allocated numpy array for output (size = num_variables). Must be a contiguous float64 array. Modified in-place.
regularization (float) – Tikhonov regularization weight added to the Hessian diagonal. Provides numerical stability. Higher values increase regularization but may reduce task tracking accuracy. Default is 1e-12.
- Raises:
RuntimeError – If the QP solver fails to find a solution.
- Return type:
None
Example
delta_q = np.zeros(oink.num_variables) oink.solveIk(tasks, constraints, scene, delta_q) # Or with custom regularization: oink.solveIk(tasks, constraints, scene, delta_q, regularization=1e-6)