This directory contains comprehensive examples demonstrating how to use the MIP SDK with MicroStrain inertial sensors. The examples are organized by device series and programming language, providing both C and C++ implementations for most use cases.
The MicroStrain 7-series devices represent the latest generation of tactical-grade inertial sensors with advanced capabilities, compact designs, and flexible packaging options.
| Device Model | Description |
|---|---|
| 3DM-GQ7-GNSS/INS | Dual-antenna RTK GNSS/INS with centimeter-level accuracy |
| 3DM-CV7-AR | Embeddable tactical-grade IMU/VRU |
| 3DM-CV7-AHRS | Embeddable tactical grade IMU/AHRS |
| 3DM-CV7-INS | Embeddable tactical grade Inertial Navigation System |
| 3DM-CV7-GNSS/INS | Embeddable tactical grade GNSS-aided Inertial Navigation System |
| 3DM-GV7-AR | IP68 ruggedized tactical grade IMU/VRU |
| 3DM-GV7-AHRS | IP68 ruggedized tactical grade IMU/AHRS |
| 3DM-GV7-INS | IP68 ruggedized tactical grade Inertial Navigation System |
The MicroStrain 5-series devices are industrial-grade inertial sensors featuring fully calibrated and temperature-compensated sensors with high-performance capabilities.
| Device Model | Description |
|---|---|
| 3DM-CX5-IMU | Embeddable high performance IMU |
| 3DM-CX5-AR | Embeddable high performance IMU/VRU |
| 3DM-CX5-AHRS | Embeddable high performance IMU/AHRS |
| 3DM-CX5-GNSS/INS | Embeddable high performance GNSS-aided Inertial Navigation System |
| 3DM-CV5-IMU | Embeddable industrial grade IMU |
| 3DM-CV5-AR | Embeddable industrial grade IMU/VRU |
| 3DM-CV5-AHRS | Embeddable industrial grade IMU/AHRS |
| 3DM-GX5-IMU | High performance IMU in precision anodized aluminum enclosure |
| 3DM-GX5-AR | High performance IMU/VRU in precision anodized aluminum enclosure |
| 3DM-GX5-AHRS | High performance IMU/AHRS in precision anodized aluminum enclosure |
| 3DM-GX5-GNSS/INS | High performance GNSS-aided Inertial Navigation System in precision anodized aluminum enclosure |
The examples demonstrate various aspects of working with MicroStrain devices, from basic sensor data streaming to advanced navigation solutions. Each example includes comprehensive documentation and error handling.
| Name | C | C++ | Description |
|---|---|---|---|
| AR Filter Examples | 5_series_ar_example_c | 5_series_ar_example_cpp | Basic attitude filter configuration for streaming filter data |
| 7_series_ar_example_c | 7_series_ar_example_cpp | ||
| AHRS Filter Examples | 5_series_ahrs_example_c | 5_series_ahrs_example_cpp | Basic attitude filter configuration with magnetometer heading for streaming filter data |
| 7_series_ahrs_example_c | 7_series_ahrs_example_cpp | ||
| INS External Aiding Examples | 7_series_ins_example_c | 7_series_ins_example_cpp | Complete INS example with external aiding measurements and reference frame configuration using simulated external data |
| GNSS/INS Navigation Examples | 5_series_gnss_ins_example_c | 5_series_gnss_ins_example_cpp | Full navigation solution combining GNSS and inertial data for position, velocity, and attitude |
| 7_series_gnss_ins_example_c | 7_series_gnss_ins_example_cpp | ||
| IMU Data Streaming Examples | 5_series_stream_imu_example_c | 5_series_stream_imu_example_cpp | Basic IMU sensor data streaming with accelerometer, gyroscope, and magnetometer output |
| 7_series_stream_imu_example_c | 7_series_stream_imu_example_cpp | ||
| Multithreaded Examples | 5_series_threading_example_c | 5_series_threading_example_cpp | Multithreaded data streaming example showing concurrent data processing patterns |
| 7_series_threading_example_c | 7_series_threading_example_cpp | ||
| Device Information Examples | device_info_example_c | device_info_example_cpp | Retrieve and display device information from any MIP-enabled device |
| MIP Packet Examples | mip_packet_example_c | mip_packet_example_cpp | Create, manipulate, and work with raw MIP packets for custom applications |
- Serial port configuration and management
- MIP protocol packet handling
- Error detection and recovery
- Cross-platform compatibility (Windows/Unix)
- Real-time sensor data output
- Configurable sample rates
- Multiple data format support
- Dynamic sensor capability detection
- Gyroscope bias capture and compensation
- Filter initialization and configuration
- Heading source selection
- External aiding integration
- C Examples: Traditional C patterns with manual memory management, explicit error checking, and direct hardware interface programming
- C++ Examples: Modern C++ features including RAII, type safety, automatic data extraction, and STL integration
- Hardware Setup: Connect your MicroStrain device to a serial port (USB or RS-232)
- Build System: Use the provided CMakeLists.txt files to build examples with CMake
- Configuration: Update serial port settings in examples as needed
- Run Examples: Execute compiled examples to see device interaction
Most examples use these default settings:
- Port:
"COM1"(Windows) or"/dev/ttyACM0"(Unix) - Baud Rate:
115200 - Sample Rate:
1 Hz - Runtime:
30 seconds
All examples include comprehensive error handling:
- Command result validation
- Connection failure detection
- Graceful termination procedures
- Detailed error messages with context
- MicroStrain 5-series or 7-series device
- Serial connection capability
- MIP SDK library
- C11 or C++11 compiler (or later)
- MIP SDK Documentation
- MicroStrain Inertial Products
- Individual example README files for detailed implementation information
Each example directory contains detailed documentation, source code, and build instructions. Refer to the individual README files for specific implementation details and usage instructions.