Inverse Kinematics (IK) determines the required cable lengths to achieve a desired End-Effector (EE) pose (
-
$p \in \mathbb{R}^3$ : Position vector of the EE's center in the world frame. -
$R \in \mathbb{R}^{3 \times 3}$ : Rotation matrix representing EE orientation. -
$e_{local} \in \mathbb{R}^{8 \times 3}$ : Local coordinates of the EE's cable attachment points. -
$M \in \mathbb{R}^{8 \times 3}$ : Positions of the motors in the world frame. -
$e_{global} \in \mathbb{R}^{8 \times 3}$ : Global coordinates of EE attachment points. -
$L \in \mathbb{R}^8$ : Vector of cable lengths.
1. Transform EE Local Points to Global Frame
Each local attachment point
2. Compute Cable Vectors
The cable vector from motor
3. Compute Cable Lengths
The length of each cable is the Euclidean norm of the cable vector:
- Cables are straight, massless, and inelastic.
- No cable collisions or routing constraints are considered.
- The EE attachment points are rigidly fixed in the local frame.
The IK solution is implemented within a ROS2 environment.
- Input: Desired pose (subscribed via
/desired_pose) - Output: Computed cable lengths (published to
/cable_lengths) - Visualization: Cable markers displayed in RViz via
/cable_markers
- Tension Optimization: Incorporate wrench feasibility algorithms to ensure positive cable tensions (no slack).
- Workspace Constraints: Algorithms to avoid singularities and detect cable slack regions.
- Dynamic Control: Implementation of PID controllers for stabilization and precise error correction.
For hardware documentation, please see the Hardware README
