A Stewart-Gough platform (SGP) is a parallel manipulator widely used in applications such as flight simulators, robotic manipulators, haptic devices, surgical robots, radio telescopes, etc. It consists of a fixed base and a movable platform linked by six independently extensible legs. Each leg is attached to both the base and the platform via spherical joints, allowing for a wide range of motion, see Figure. The leg lengths are typically adjusted using actuators - such as hydraulic or pneumatic cylinders - allowing precise control over the platform's position and orientation
The general SGP makes no assumptions about planarity or symmetry in either the fixed base or movable platform. This fully parallel mechanism has six degrees of freedom, meaning it can move in three translational directions and three rotational directions (pitch, roll, yaw). This allows the platform to move freely in 3-dimensional space.
The general Stewart-Gough platform
The forward kinematics problem for a Stewart-Gough platform involves determining the position and orientation of the movable platform given the lengths of the six extensible legs and the internal geometries of the platform and base. This problem is inherently complex due to the parallel structure of the platform, resulting in a system of non-linear polynomial equations. It has been shown that the problem has exactly 40 solutions in complex space.
This repository contains MATLAB, Julia, and Python forward kinematics solvers for the following SGP types:
- general 6-6 SGP
- semi-planar 6P-6 SGP
- fully planar 6P-6P SGP
- general 6-5 SGP
- semi-planar 6P-5 SGP
- fully planar 6P-5P SGP
Key advantages:
- computation of all 40 solutions (real and complex);
- simultaneous maintenance of numerical accuracy and computational efficiency;
- reliance on standard linear algebra decompositions (QR/PLU and QZ).
The implementations have been tested on
- MATLAB R2019b
- Julia 1.12.1
- Python 3.13.2 + numpy-2.2.2 + scipy-1.15.1
The solvers have been generated using the automatic solver generator from https://github.com/martyushev/eliminationTemplates
If you use this code, please cite:
@article{martyushev2025forward,
title={Forward kinematics of a general Stewart--Gough platform by elimination templates},
author={Martyushev, Evgeniy},
journal={Mechanism and Machine Theory},
volume={215},
pages={106170},
year={2025},
issn={0094-114X},
doi={https://doi.org/10.1016/j.mechmachtheory.2025.106170 },
url={https://www.sciencedirect.com/science/article/pii/S0094114X25002599 }
}
