Skip to content

Latest commit

 

History

History
66 lines (49 loc) · 2.72 KB

File metadata and controls

66 lines (49 loc) · 2.72 KB

Software Documentation

Simulation: ROS2 Jazzy Language: Python | C++

📐 Inverse Kinematics Formulation

Inverse Kinematics (IK) determines the required cable lengths to achieve a desired End-Effector (EE) pose ($p$, $R$).

Notation

  • $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.

Mathematical Formulation

1. Transform EE Local Points to Global Frame Each local attachment point $e_i^{local}$ is transformed into the world frame: $$e_i^{global} = p + R \cdot e_i^{local} \quad \text{for } i = 1, \dots, 8$$

2. Compute Cable Vectors The cable vector from motor $i$ to the EE attachment point is: $$c_i = e_i^{global} - m_i$$

3. Compute Cable Lengths The length of each cable is the Euclidean norm of the cable vector: $$L_i = ||c_i|| = \sqrt{(e_i^{global} - m_i)^T (e_i^{global} - m_i)} \quad \text{for } i = 1, \dots, 8$$

� Assumptions

  • 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.

�🖥️ Implementation in Simulation (ROS2 Jazzy)

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

Visualizer (RViz)

🔮 Extensions & Future Work

  • 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