Stewart/Gough Platform

 

 

A Stewart/Gough Platform (AKA motion base) is an incredibly versatile parallel manipulator that parameterizes prismatic actuators (linear movement) to achieve a desired pose.  This dynamic structure uses linear algebra to efficiently perform inverse kinematics calculations that parameterize actuations and yields the desired platform position and orientation. 

The degrees of freedom (DOF) depend on how the system’s dynamics are mathematically modeled.  I will introduce the inverse kinematics calculations with a 3DOF system (x, y, θ), then expand upon it with a 6DOF system (x, y, z, α, β, γ).

6DOF Systems

6DOF systems with 3, 4, and 6 actuation links

 

The base frame is fixed to a ground surface and secures the actuators.  The actuators are oriented upwards and link to a platform frame that outputs the desired pose.  Objects can be mounted to the platform frame to harness its movement for various applications, including flight simulators, robotics, and entertainment (theme park attractions, movie/television production sets, videogaming, etc.).

 

3DOF

A 3DOF system allows the platform frame to translate along the X and Y axes, and rotate an angle, , on a 2D plane.  We will first focus on translating the platform frame along the X-axis without rotation, then introduce translating along the Y-axis and rotation.

 

3DOF Stewart/Gough Platform expressed in the base frame

 

This example will follow the 2D diagram shown above. The purple line represents link 1 and the green line represents link 2.  The bottom dashed line represents the base frame and the top dashed line represents the platform frame.

 

We begin by defining the link joint coordinates in the joints’ respective frames:

System diagram indicating the base frame and platform frame

 

 

We need to express these joints in their respective frames to properly define the system dynamics.  The goal is to represent the joints so that their coordinates do not change within their frames.  To better illustrate this, I’ve represented each joint coordinate relative to its frame origin with the orange vectors and indicated their coordinates within their respective frames:

 

Base Frame

Platform Frame

 

 

Let’s Understand Reference Frames!

Imagine there’s an observer at the base frame origin observing the base frame joints, and there’s another observer at the platform frame origin observing the platform frame joints.  As the reference frames move through space (translation or rotation), the joints’ positions appear unchanged.  This is like observing the earth’s rotation from inside the earth – imperceptible!

Now let’s place an observer at the base frame origin observing the platform frame joints.  As the reference frames move, the observer will see the platform frame joints moving relative to the base frame.  This is like observing the earth’s rotation from the surface of the moon – perceptible!

 

The math that solves the inverse kinematics aims to observe the movement of the platform frame relative to the base frame origin.

 

The platform frame is arbitrarily placed relative to the base frame, but the frames are related by prismatic actuators.  As the links actuate in the base frame, the platform frame’s pose will change relative to the base frame.  Links in this system are prismatic joints that achieve linear movement with linear actuators, hydraulic actuators, or servos (among others). 

 

Base Frame Coordinates

First, we define the coordinates of the base of the prismatic joint,  in the base frame.  These joints don’t change the position of the base frame, so we can assume that they are permanently fixed in the base frame.  Frame joints are usually set on passive U-joints or ball joints that allow the link to hinge freely during actuation.

 

Platform Frame Coordinates

Next, we define the coordinates of the end of the prismatic joints, , in the platform frame.  These platform frame joints coordinates are not defined in the base frame, so we define their coordinates relative to the platform frame origin.  These are the points where the links are fastened to the platform frame, making the platform frame’s position in the base frame a function of the links’ actuation in the base frame. 

 

Focus Point

Next, we define a point on the platform that we are defining an end position for in the base frame, denoted by .  This end position achieves is the desired X, Y, and θ of the platform at the end of actuation, which are the algorithm inputs when calculating the inverse kinematics.

 

Link Joint Coordinates Expressed in their Corresponding Frames

Point Description

Reference Frame

Vector

Coordinate (x, y)

Link 1 Base Joint

Base

Link 2 Base Joint

Base

Focus Point, Desired Pose

Base

Link 1 Platform Joint

Platform

Link 2 Platform Joint

Platform

* The subscript labels correspond to the link number in the system

 

The variable that this algorithm calculates is vector , which represents the distance that a prismatic joint on link  must actuate from its starting position at  so that the focus point in the platform frame can achieve the desired pose in the base frame.  Remember – the platform joint coordinates in the are not known in the base frame until the inverse kinematics calculate the actuation length vector, .

 

We want to represent the platform frame in the base frame as a result of prismatic joint actuations such that the focus point arrives at its desired pose.

 

 

Let’s do some math!

We start by defining our system dynamics relative to the reference frames’ origins.  Let’s reference the labeled system below with the understanding that the lengths of link 1 and link 2 from the base frame to the platform frame are defined by vector .

Base Frame

Platform Frame

 

Now that the system coordinates are defined, we can set up an equation that sums vectors that define the coordinates of the link joints in the platform frame.  This allows us to relate the link vectors to the focus point vector, .

 

Vector Sum Defining Link Joints in the Platform Frame

 

Recall that the vector we are solving for is the prismatic joints’ actuation distance, .  Let’s rearrange the equation we derived from the system dynamics to isolate :

 

 

 

We now define the known vector values based on the system dynamics:  and .  These vectors are the joint coordinates we defined in the base frame and platform frame.  We continue to maintain each coordinate in its corresponding reference frame.

Point Description

Reference Frame

Vector

Coordinate (x, y)

Vector

Link 1 Base Joint

Base

Link 2 Base Joint

Base

Link 1 Platform Joint

Platform

Link 2 Platform Joint

Platform

 

 

Next, we create a vector that defines the desired end position of the platform frame: .

Point Description

Reference Frame

Vector

Coordinate (x, y)

Vector

Focus Point, Desired Pose

Base

 

 

Notice that all the vectors in the dynamic model are represented in the base frame except for .  All vectors need to be represented in a common frame to ensure accurate calculations.  Let’s take  in the platform frame and represent it in the base frame by right multiplying  and a rotation matrix:

 

 

Right Multiplication of  and

 

Right multiplying with a rotation matrix now accounts for rotations in the platform frame that may influence the pose calculations.  Since this transformation does not have any rotational inputs, we set  to 0, which yields an identity matrix:

 

 

 

Now that we have our system defined, we can calculate the distance that each prismatic joint must actuate the base frame so that the focus point in the platform frame achieves the desired focus point pose, represented in the base frame:

Link 1

Link 2

 

 

We notice that  is comprised of the ‘x’ and ‘y’ displacement component vectors.  Prismatic joints typically require a single displacement vector input, so we use the distance formula to calculate the resultant vector of :

Link 1

Link 2

 

 

Now we know that prismatic joint 1 will need to actuate 3.04 units, and prismatic joint 2 will need to actuate 3.04 units.  Let’s confirm that the actuations we calculated for each joint yields the desired pose:

Link 1

Link 2

 

These calculations confirm that the actuation on each prismatic joint yields the same pose at the focus point!

 

 

Horizontal Translation Example

 

Let’s perform the same calculations to horizontally translate the platform frame to  with  rotation:

 

 

Define the joint coordinates in the system:

Point Description

Reference Frame

Vector

Coordinate (x, y)

Vector

Link 1 Base Joint

Base

Link 2 Base Joint

Base

Link 1 Platform Joint

Platform

Link 2 Platform Joint

Platform

 

 

Define the desired final pose:

Point Description

Reference Frame

Vector

Coordinate (x, y)

Vector

Focus Point, Desired Pose

Base

 

 

Perform the inverse kinematics calculations using the dynamic model that we derived to solve for :

 

·         There’s no rotation performed in this transformation, so we can use the identity rotation matrix

 

Link 1

Link 2

 

Let’s confirm our calculations:

Link 1

Link 2

 

These calculations confirm that the actuation on each prismatic joint yields the same pose at the focus point!

 

 

Horizontal Translation and Rotation Example

 

Now let’s perform the same platform frame horizontal translation to  with 45 rotation:

 

Define the joint coordinates in the system:

Point Description

Reference Frame

Vector

Coordinate (x, y)

Vector

Link 1 Base Joint

Base

Link 2 Base Joint

Base

Link 1 Platform Joint

Platform

Link 2 Platform Joint

Platform

 

 

Define the desired final pose:

Point Description

Reference Frame

Vector

Coordinate (x, y)

Vector

Focus Point, Desired Pose

Base

 

 

Perform the inverse kinematics calculations using the dynamic model that we derived to solve for :

·         There is a rotation performed in this transformation, so we calculate rotation matrix:

 

 

·         Now we substitute this rotation matrix in for  to express  in the base frame:

 

Link 1

Link 2

 

Let’s confirm our calculations:

Link 1

Link 2

 

These calculations confirm that the actuation on each prismatic joint yields the same pose at the focus point!

 

 

6DOF

Now that we understand how to calculate the inverse kinematics for a 3DOF system, we can expand the calculation to a 6DOF system!  A 3DOF system allows the platform frame to translate along the X, Y, and Z axes, and rotate angles  on a 3D plane.

The 6DOF system that we are going to solve will have 6 links, making it a hexapod.

 

 

Multi-Axis Translation and Rotation Example

 

Let’s translate the platform along the y-axis and the z-axis to (0.00, -2.00, 3.00), and rotate about the x-axis to (, , ):

6DOF Stewart/Gough Platform expressed in the base frame

 

Let’s define the joint coordinates in the system:

Point Description

Reference Frame

Vector

Coordinate (x, y, z)

Vector

Link 1 Base Joint

Base

Link 2 Base Joint

Base

Link 3 Base Joint

Base

Link 4 Base Joint

Base

Link 5 Base Joint

Base

Link 6 Base Joint

Base

Link 1 Platform Joint

Platform

Link 2 Platform Joint

Platform

Link 3 Platform Joint

Platform

Link 4 Platform Joint

Platform

Link 5 Platform Joint

Platform

Link 6 Platform Joint

Platform

 

Recall:

·          is a vector that represents a joint’s position in the base frame relative to the base frame origin.

·          is a vector that represents a joint’s position in the platform frame relative to the platform frame origin.

 

 

Define the desired final pose:

Point Description

Reference Frame

Vector

Coordinate (x, y)

Vector

Focus Point, Desired Pose

Base

 

Recall:

·       is a vector that represents the desired point’s position in the base frame relative to the base frame origin.

 

 

Perform the inverse kinematics calculations using the dynamic model that we derived to solve for :

·         There is a rotation performed in this transformation, so we calculate rotation matrix:

 

 

·         Now we substitute this rotation matrix in for  to express  in the base frame:

 

Movement Along x-Axis

Movement Along y-Axis

Movement Along z-Axis

 

 

Calculating the inverse kinematics for each link in this hexapod would be redundant, so I’m only calculating link 1.

These same calculations can be performed for all links using the joint coordinates defined above.

 

·         Now we perform the inverse kinematics calculations

o        Recall that we substitute this rotation matrix in for  to express  in the base frame:

 

Link 1

 

Let’s confirm our calculations:

Link 1

 

These calculations confirm that the actuation on each prismatic joint yields the same pose at the focus point!

 

 

BONUS!

I intentionally defined this hexapod’s movement to simulate a spaceship taking off!  Does this application look familiar?

This simulation orients the link joints in the same configuration as the platform that the ride vehicle sits on!  Developers can write an algorithm that defines the platform’s desired poses in a sequence that immerses audiences in exciting storylines!

We can also apply this logic to flight simulators or video games by replacing algorithmic pose definitions with joy stick or steering wheel pose inputs!

 

 

Helpful Links

·         Angela Sodemann: Parallel Manipulators Inverse Kinematics