Example setup program for the 3DM-CX5-GNSS/INS, and 3DM-GX5-GNSS/INS using C++.
More...
This example shows a basic setup to configure the navigation filter with GNSS velocity and magnetometer as the heading source to stream filter data for the 3DM-CX5-GNSS/INS, and 3DM-GX5-GNSS/INS devices using C++. This is not an exhaustive example of all settings for those devices. If this example does not meet your specific setup needs, please consult the MIP SDK API documentation for the proper commands.
License
- Copyright
- Copyright (c) 2025 MicroStrain by HBK Licensed under MIT License
◆ logCallback()
static void logCallback |
( |
void * |
_user, |
|
|
const microstrain_log_level |
_level, |
|
|
const char * |
_format, |
|
|
va_list |
_args |
|
) |
| |
|
static |
Processes and formats log messages from the MIP SDK based on severity level. Routes messages to appropriate output streams - errors and fatal messages go to stderr while other levels go to stdout. Each message is prefixed with its severity level name.
- Parameters
-
_user | Pointer to user data (unused in this implementation) |
_level | Log message severity level from microstrain_log_level enum |
_format | Printf-style format string for the message |
_args | Variable argument list containing message parameters |
◆ captureGyroBias()
- Parameters
-
_device | Reference to the initialized MIP device interface |
◆ configureGnssMessageFormat()
Sets up GNSS data output by:
- Querying device base rate
- Validating desired sample rate against base rate
- Calculating proper decimation
- Configuring message format with:
- Parameters
-
_device | Reference to the initialized MIP device interface |
◆ configureFilterMessageFormat()
Sets up filter data output by:
- Querying device base rate
- Validating desired sample rate against base rate
- Calculating proper decimation
- Configuring message format with:
- Filter timestamp
- Filter status
- LLH position
- NED velocity
- Euler angles
- Parameters
-
_device | Reference to the initialized MIP device interface |
◆ configureAntennaOffset()
Sets up the physical antenna offset values relative to the device's reference point. The offset is specified in meters using a 3D vector:
- X: forward/back
- Y: left/right
- Z: up/down
- Parameters
-
_device | Reference to the initialized MIP device interface |
- Note
- Offset values are specific to physical device setup and may need to be adjusted based on actual antenna placement
◆ initializeFilter()
Configures the navigation filter by:
- Setting the magnetometer as the heading source
- Enabling filter auto-initialization
- Resetting the filter to apply new settings
- Parameters
-
_device | Reference to the initialized MIP device interface |
◆ displayGnssFixState()
Outputs readable messages for GNSS fix state transitions:
- 3D fix
- 2D fix
- Time-only fix
- No fix
- Invalid fix Also indicates whether the current fix is valid based on flag checks.
- Parameters
-
_fixInfo | Reference to the GNSS fix information structure containing fix type and validity flags |
◆ displayFilterState()
Outputs readable messages for filter state transitions:
- Initialization mode
- Run solution valid mode
- Run solution error mode
- Parameters
-
_filterState | Current filter mode from the MIP device interface |
◆ getCurrentTimestamp()
Provides system time measurement using std::chrono for milliseconds since epoch. Uses system_clock to get wall-clock time that corresponds to calendar time and can be synchronized with external time sources.
- Note
- Update this function to use a different time source if needed for your specific application requirements
- Returns
- Current timestamp in milliseconds since epoch
◆ initializeDevice()
Performs a complete device initialization sequence:
- Verifies device communication with a ping command
- Sets the device to idle mode to ensure reliable configuration
- Queries and displays detailed device information
- Loads default device settings for a known state
- Parameters
-
_device | Reference to a MIP device interface to initialize |
◆ terminate() [1/2]
Handles graceful shutdown when errors occur:
- Outputs provided error message
- Closes device connection if open
- Exits with appropriate status code
- Parameters
-
_connection | Pointer to the device connection to close |
_message | Error message to display |
_successful | Whether termination is due to success or failure |
◆ terminate() [2/2]
Handles command failure scenarios:
- Formats and displays an error message with command result
- Closes device connection
- Exits with failure status
- Parameters
-
_device | MIP device interface for the command that failed |
_cmdResult | Result code from a failed command |
_format | Printf-style format string for error message |
... | Variable arguments for format string |
◆ PORT_NAME
constexpr const char* PORT_NAME = "/dev/ttyACM0" |
|
staticconstexpr |
◆ BAUDRATE
constexpr uint32_t BAUDRATE = 115200 |
|
staticconstexpr |
- Note
- For native serial connections this needs to be 115200 due to the device default settings command Use mip::commands_3dm::*UartBaudrate() to write and save the baudrate on the device
◆ SAMPLE_RATE_HZ
constexpr uint16_t SAMPLE_RATE_HZ = 1 |
|
staticconstexpr |
◆ RUN_TIME_SECONDS
constexpr uint32_t RUN_TIME_SECONDS = 30 |
|
staticconstexpr |