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