Yes, the inertial sensor programming interface is comprised of a compact set of setup and control commands and a very flexible user-configurable data output format. The commands and data are divided into 4 command sets and 3 data sets corresponding to the internal architecture of the device. The four command sets consist of a set of “Base” commands (a set that is common across many types of devices), a set of unified “3DM” (3D Motion) commands that are specific to the LORD Sensing MicroStrain inertial product line, a set of “Estimation Filter” commands that are specific to LORD Sensing MicroStrain navigation and advanced AHRS devices, and a set of “System” commands that are specific to sensor systems comprised of more than one internal sensor block. The three data sets represent the three types of data that the inertial sensor is capable of producing: “IMU” (Inertial Measurement Unit) data, “GPS” (Global Positioning Sensor) data, and “Estimation Filter” (Position, Velocity, and Attitude) data. The type of estimation filter used in the inertial sensor is an Extended Kalman Filter (EKF).
Base commands: Ping, Idle, Resume, Get ID Strings, etc.
3DM commands: Poll IMU Data, Poll GPS Data, etc.
Estimation Filter commands: Reset Filter, Sensor to Vehicle Frame Transformation, etc.
System commands: Switch Communications Mode, etc.
IMU data: Acceleration Vector, Gyro Vector, etc.
GPS data: Latitude, Longitude, UTC, Satellites in view, etc.
Estimation Filter data: Position, Velocity, Attitude, Acceleration Estimates, etc.
The protocol is packet based. All commands, replies, and data are sent and received as fields in a message packet. Commands are all confirmed with an ack/nack (with a few exceptions). The packets have a descriptor type field based on their contents, so it is easy to identify if a packet contains commands, replies, IMU data, GPS data, or Estimation Filter data.