Gyroscopic Stabilization of a Hexapod

Gyroscopic Stabilization of Working Surface with a Hexapod 6-DOF Motion Platform

There are many optics and metrology-related applications which require a stable work surface in an unstable environment, whether that environment is vibrating, in an aircraft, on a vessel at sea, or elsewhere. Under normal conditions, the work surface is subject to these environmental disturbances.  Hexapod motion platforms provide a good basis to compensate for motion in 6 degrees of freedom.  In previous articles, the use for these parallel kinematic mechanisms has been explained in camera quality testing applications and for improving image stabilization algorithms.

In a recent test, we used a gyroscope to provide feedback to a hexapod controller in order to compensate for multi-degree-of-freedom disturbances and to maintain a horizontal top plate during the process.

Hexapod Background

A hexapod (or Stewart Platform) is a six-axis parallel positioner. Most common hexapods are based on six actuators arranged in parallel between a top and bottom platform. By using six actuators, the top plate is able to move in all six degrees of freedom (the linear axes X, Y, and Z; and the rotational axes U (roll), V (pitch), and W (yaw)). A parallel kinematic system, such as a hexapod, also provides several advantages over conventional serial kinematic stages, including lower inertia, improved dynamics, smaller package size, higher stiffness, and less compounding errors.

PI hexapods are controlled from a designated controller (model C-887). The C-887 handles all of the inverse kinematic equations, meaning the user simply inputs a target position for the top platform, and the controller determines and executes the displacement required for each of the six struts. The controller also has several features which make applications easier to perform. For example:

  • The coordinate systems are freely definable. They can be translated and/or rotated. This reduces the effort of transforming position values, if the hexapod is mounted in any non-horizontal orientation.
  • The pivot point can be freely defined. This is the point about which all rotations occur. By default, the pivot point is at the default origin: radially centered on the top plate, and level with the bottom surface of the top plate. However, the pivot point can be moved to any XYZ point in space, allowing the user to rotate about exactly where they need.
  • There is a configurable data recorder. This allows the user to record various aspects of the application, including target position, actual position, the amplitude of an analog signal, etc.
  • There is a waveform generator. This allows the user to predefine a motion profile. By default, the C-887 can configure sinusoidal profiles, linear profiles, or ramps. However, the user can also define a completely custom profile point by point.
  • The C-887 is capable of storing macros. This allows for semi-autonomy. The macros can be programmed to run at initialization, or can be called/triggered as needed.

The following equipment was used in this test:

  • 1x PC with Matlab
  • 1x VN-300 gyroscope (etc.) from VectorNav
  • 1x H-811/C-887 hexapod system from PI to be stabilized
  • 1x H-8xx/C-887 hexapod system from PI to simulate environmental disturbances
  • Brackets for mounting, as necessary

During each trial, the gyroscopic position data was used in a control loop for an H-811. A bracket was 3D printed using PET, to hold the VN-300 to the top plate of an H-811. The environmental angular disturbances were generated using a second hexapod. This way, the disturbances would be repeatable, easily measurable, and readily configurable. During the course of the project, several hexapod systems with different size, load and velocity specifications were used.

The Matlab Program

The controlling program was developed using Matlab. PI offers Matlab drivers for application development, and the VN-300 could readily be operated as a serial device. A single Matlab script was written, which would be able to run both phases of the project. Only a select handful of parameters had to be set to configure the program for a specific trial (which phase, which hexapod systems, etc.).

The program would load the PI command libraries then establish communication with the VN-300 over USB and with both hexapod systems over TCP/IP. The hexapod systems were referred to as Master and Follower. Master was the system which created the disturbances, while Follower used the feedback from the VN-300 to close the loop.

Next, the motion profile of the Master hexapod system was configured. The profile was to move ±5 degrees in pitch and roll.  The gyroscope was configured, and then the motion of the Master system was initiated. Once moving, the VN-300 would be read, and the motion of the Follower system would be commanded accordingly. While systems were in motion, the data recorder of each hexapod system was triggered, recording the target position and actual position of the axes. A separate record was kept for the VN-300 data, with a time stamp.

Configuring the Gyroscope

The gyroscope was configured by sending three commands to the VN-300, sent as ASCII strings over the open USB connection:

  1. $VNWRG,06,1*XX (This indicates that it is to output Yaw, Pitch, and Roll values.)
  2. $VNWRG,07,50*XX (This indicates the frequency at which the Yaw, Pitch, and Roll is to be output (here, 50Hz).)
  3. VNRRG,05*XX (This command reads the output, and must be looped to read the values.)

The frequency of the output of the VN-300 could be set to one of eleven different values, from 1Hz to 200Hz. Setting an output frequency of 50Hz or less guaranteed consistently correctly-formatted results from the VN-300. Setting it to 100Hz resulted in roughly 1% of all output responses being incorrectly formatted, which was likely caused by a USB issue.

An example of a correctly formatted response, as output by the VN-300, can be seen in Table 1. It has the prefix $VNYPR (VN-300, Yaw, Pitch, Roll), three numerical values for each angle measurement, and then a suffix beginning with the asterisk. However, when the output frequency was set to 100Hz or higher, the responses would occasionally be incorrectly formatted in one of two ways. The first option has the response truncated and terminated at the decimal point of the Roll value. The second option would truncate the response at the decimal of the Roll value, and then append a complete response. See the examples below.

Correctly Formatted Result$VNYPR,-043.928,-001.449,+000.058*6B
Incorrectly Formatted Result, Option 1$VNYPR,-043.928,-001.449,+000
Incorrectly Formatted Result, Option 2$VNYPR,-043.928,-001.449,+000$VNYPR,-043.928,-001.449,+000.058*6B

Table 1: Examples of queried responses from VN-300


A section of code was written to discard all incorrectly formatted responses. Of the roughly 5,000 responses recorded per trial, there were 30-50 responses that had to be discarded.

In Sync - Follower Hexapod Mimicking the Motion of the Master Hexapod

Multiple tests were run with different hexapods. The first test had two H-811 systems, as the Master and the Follower placed side by side. The VN-300 was mounted on the Master. As the Master executed the motion profile, the Follower would mimic the motion.

By using the waveform generator in the hexapod controller, the motion profile of the Master was configured as a sinusoid for both the Pitch (V) and Roll (U) axes, with a 90˚ phase shift in the two profiles. The gyroscope data was processed, and those values then sent to the Follower as a series of point-to-point move commands.

The mimicking was done as a first attempt, as it was easier to visually judge the performance, and to graphically compare the recorded results at the end.  The profile was a sine wave with a 10˚ peak-valley amplitude and a frequency of 0.1Hz. The graphs below display the results.

Although there are five separate lines on the graphs, it quickly becomes one line. The overlapping of the Master Target and Master Actual positions indicates that there was no position following error of the Master hexapod. The same can be said about the Follower. The closeness of the VN-300 with the Master position plots also confirms the accuracy of the VN-300.

Stabilizing – Follower Hexapod Countering the Motion of the Master Hexapod

Phase 2 used the H-811 system as Follower to a larger, slower hexapod, the H-850.H11. The H-811 mini hexapod was mounted on the H-850 with a custom bracket. The VN-300 gyroscope was mounted on the H-811. As the Master executed the motion profile, the Follower would counter the motion, to maintain a zero-value Pitch and Roll.

This particular H-850 was an older model with a maximum angular velocity of 6mrad/sec and it did not have a waveform generator, so the motion profile was generated using point-to-point motion. As the H-850 was moving through the motion, the position data from both the VN-300 and the Follower were queried. The Follower was then commanded to move to the difference between the two readings, as outlined in Equations 1 and 2.

Equation 1

Target Pitch = (Current Follower Pitch) - (Gyroscope Pitch Reading) 

Equation 2

Target Roll = (Current Follower Roll) - (Gyroscope Roll Reading) 


The graphs below show the results from this test. There was no position following error for each hexapod, so the Target Position and Actual Position lines overlap. The positions of the H-850 Master and the H-811 Follower were equal in magnitude but opposite in direction, resulting in a gyroscopic reading of approximately 0˚.

Due to the velocity limitations of the H-850, it was replaced with the faster H-840.D2. This unit was driven by the newer C-887.52 controller with the waveform generator – the results can be seen in the video above. 


The purpose of this feasibility project was to determine if it was possible to gyroscopically stabilize a hexapod top plate, if the base plate was subjected to environmental disturbances. This proved to be possible, simply by continuously reading the gyroscopic position data, and sending a series of point-to-point motion commands to the hexapod. Given the time limitations of the project, the setup and programming could not be optimized, but there were several conclusions that could be drawn.

The query rate of the VN-300 had to be limited due to some formatting issue that might have been related to a USB issue but could not further be investigated.   A higher data rate would result in even better stabilization and smoother motion.

The tests were run with standard hexapod controllers, operated over a TCP/IP connection. PI offers the C-887.53, which allows for communication over EtherCAT protocol. This hexapod controller provides better interpolation capabilities, and the EtherCAT® standard has better real time capabilities which can further smooth the motion between individual point-to-point motion commands coming from the EtherCAT® master.

High Load / High Speed Hexapods

A larger hexapod for applications requiring higher load, speed, and longer travel ranges is also available. The H-900KSCO Hexapod can handle loads up to 60kg, while providing motion ranges to 200mm (XYZ) and 66° (pitch, yaw and roll). It provides velocity to 80mm/sec and 30°/sec, respectively.

For high-frequency (low load) operation, the voice-coil driven, flexure guided H-860 hexapod is available. This unit uses fixed carbon fiber struts and voice-coil linear motors with integrated linear encoders on all 6 legs for the highest dynamic performance.