ROS 2 Python simulation of a six-DoF Stewart platform (or Stewart-Gough platform1,2), which is a parallel manipulator comprising a fixed base platform, a moving end-effector platform, and six serial SPS sturctures2.
The inverse kinematics (IK) and differential kinematics (DK) problems are solved as to obtain the required leg lengths and leg velocities for driving the robot to achieve a desired motion in
The map for IK,
$\boldsymbol{s} = f_{\mathrm{ik}}(^b\boldsymbol{\xi}_e)$ -
$\boldsymbol{s} \in \mathbb{R}^6$ is the leg length -
$^b\boldsymbol{\xi}_e \in SE(3)$ is the end-effector pose w.r.t. base.
The inverse Jacobian for DK,
$\dot{\boldsymbol{s}} = J_b^{-1} \cdot \mathcal{V}_b = J_b^{-1} \cdot \mathrm{Ad}(^b\boldsymbol{\xi}_e) \cdot \mathcal{V}_e$ -
$\dot{\boldsymbol{s}} \in \mathbb{R}^6$ is the leg velocity -
$J_b^{-1} \in \mathbb{R}^{6\times 6}$ and$\mathcal{V}_b \in se(3)$ are the base inverse Jacobian and base twist, respectively -
$\mathcal{V}_e \in se(3)$ is the end-effector twist (spatial velocity for both linear and angular) that can be transformed into$\mathcal{V}_b$ through the adjoint map$\mathrm{Ad}(^b\boldsymbol{\xi}_e) \in \mathbb{R}^{6\times 6}$ .
Run the simulation in ros2:
# Simulate in ros2 and visualise in rivz2
cd ~/stewart_platform_sim && python3 sim_ros2.py
rviz2
-
Picture of the Stewart-Gough platform mechanism:
- [1] J.-P. Merlet, C. Gosselin, and Tian Huang. Parallel mechanisms. In B. Siciliano and O. Khatib, editors, Handbook of Robotics, Second Edition, pages 443–461. Springer-Verlag, 2016.
-
Stewart platform IK and DK:
- [2] K. M. Lynch and F. C. Park, Modern Robotics: Mechanics, Planning, and Control. Cambridge University Press, 2017.
- Author: Wei-Hsuan Cheng ([email protected])
- Homepage: wei-hsuan-cheng
- GitHub: wei-hsuan-cheng