Kinematics of the Stewart Platform

Kathleen McLane, Paul McNulty, and Tim Reid,


Introduction

A Stewart platform is a platform that is held up by arms which have variable lenght. The position of the platform is controlled by the length of the arms. For each length of the arms, there exists multiple positions the platform can be in. The different positions of the platform are denoted by the angle the platform takes in relation to the horizontal axis. We denote this angle by \(\theta\). The values of \(\theta\) for the specified parameters are the zeros of the function \[f(\theta )=N_1^2+N_2^2-p_1^2D^2 \] where \begin{align*} N_1 &= B_3(p_2^2-p_1^2-A_2^2-B_2^2)-B_2(p_3^2-p_1^2A_3^2-B_3^2) \\ N_2 &= -A_3(p_2^2-p_1^2-A_2^2-B_2^2)+A_2(p_3^2-p_1^2A_3^2-B_3^2) \\ D &= 2(A_2B_3-B_2A_3) \\ A_2 &= L_3\cos \theta -x_1 \\ B_2 &= L_3 \sin \theta \\ A_3 &= L_2 \cos (\theta +\gamma )-x_2 \\ B_3 &= L_2 \sin (\theta +\gamma )-y_2 \\ x &= \frac{N_1}{D} \\ y &= \frac{N_2}{D}. \end{align*} The values \(L_1,L_2,L_3,x_1,x_2,y_2, \text{ and } \gamma \) are parameters that are fixed by the setup of the Stewart platform. The values \(p_1,p_2,p_3 \) are the lengths of the legs of the Stewart platform.


Solving the Equation

We built a function for \(f(\theta)\) and tested it at the recommended values to make sure it was working well. The code for \(f(\theta)\) can be found here: f.m

In order to find the zeros of \(f(\theta)\), corresponding to the theta values for each postion the platform could take, we chose to use the bisection method. In order to do this, we needed a way to pass theta values into the bisection method given the values for gamma, the strut lengths, the strut anchors, and the triangle side lengths. So we built functions that would calculate the value of theta such that \(f(\theta)\), and then used an analogous code to calculate x and y for the first vertex of the triangle. The formulas found in these codes were given in equations (1.39) and (1.40) in the book. These three scripts can be viewed here: P1Bisect.m, Project1FInputs.m, and Project1xy.m.

Finally, we needed a script to give the other two vertices of the triangle given x, y, and theta, as well as a way to reliably check the strut length. It was noticed that equation (1.38) in the book that gives the strut length seems to cause some kind of circular referencing, so instead we calculated the strut lengths directly from the plotted vertex values. The vertex locations and strut lengths were calculated using this script: vertices.m

These scripts were written in order to complete parts 4, 5, and 6 of the problem, and the details of each part can be found here: Part 4, Part 5, and Part 6.

Also worth noting, parts 2 and 3 asked for some plotting in order to verify our scripts were working properly, so those plots can be seen here:

Numerical Analysis II Homepage

Tim Reid Homepage