Overview

ROS driver for all of Microstrain's current G and C series products.

Supported Devices

3DM-GQ7, 3DM-CV7, 3DM-GX5-45, 3DM-GX5-25, 3DM-GX5-15

Installation

Buildfarm

This package is being built and distributed by the ROS build farm. If you do not need to modify the source, it is recommended to install directly from the buildfarm by running the following commands where ROS_DISTRO is the version of ROS you are using such as noetic or humble:

Driver:

sudo apt-get update && sudo apt-get install ros-ROS_DISTRO-microstrain-inertial-driver

Docker

The microstrain_inertial_driver is distributed as a docker image. More information on how to use the image can be found on DockerHub.

Source

For more info on source code and how to build from source, visit the Source section of our README.md on our microstrain_inertial GitHub page.

For more information on the ROS distros and platforms we support, please see our index.ros.org page.

Usage

Configure Parameters

This node uses a params.yml file for ease of configuration. This file contains all available parameters for the node, so please refer to that file for more information on the available parameters and how to use them.

Override Parameters for ROS

1. Copy and paste the line(s) you desire to change from params.yml into a new .yml file. We will call it /home/user/my_params.yml for this example. This new .yml file will override the default params.yml and if there are multiple lines of the same parameter, the last instance of the parameter will take precedence.

2. Launch the driver and specify the new params file:

roslaunch microstrain_inertial_driver microstrain.launch params_file:=/home/user/my_params.yml

Override Parameters for ROS2

1. Copy the file empty.yml to a new .yml file. For this example we will call the new file /home/user/my_params.yml. This new .yml file will override the default params.yml and if there are multiple lines of the same parameter, the last instance of the parameter will take precedence.

2. Copy and paste the line(s) you desire to change from params.yml into /home/user/my_params.yml.

3. Launch the driver and specify the new params file:

ros2 launch microstrain_inertial_driver microstrain_launch.py params_file:=/home/user/my_params.yml

Publishers

See below for a mapping between the ROS topics and messages to the MIP messages that populate them

Standard ROS Messages

The following topics contain standard ROS messages often used by other nodes. Sensor data is often massaged or converted to be fit into what the ROS standards dictate.

MIP Messages

The following topics contain messages that are exact copies of their MIP counterparts. The topic format is /mip/<descriptor_set_name>/<field_descriptor_name>. For more information on what descriptor_set_name and field_descriptor_name mean, see the MIP Protocol page.

See the message definitions for links to their MIP fields as well as field documentation

Other Messages

The following topics do not fall into any of the above categories and are likely addons to the device not specifically from the MIP protocol

  • /ekf/status microstrain_inertial_msgs/HumanReadableStatus

    • Human readable status of the device. This message will contain strings that should be easily readable, but SHOULD NOT be used in a production application

  • /nmea nmea_msgs/Sentence

    • GGA NMEA sentences may be published from the aux port of a GQ7 if it is connected and the following configuration is set:
         aux_port: '/dev/ttyACM1'  # The serial port that the aux port is connected on
         ntrip_interface_enable: True  # Enable the sending of NMEA messages
    • Several types of NMEA sentences may be published from the main port of the GQ7 if this section of config is configured to stream NMEA.

Subscriptions

The following topics are subscribed to by the node. Most are controlled by individual booleans in the configuration and need to be enabled in order to be subscribed to

  • /rtcm rtcm_msgs/Message

    • Will be enabled if ntrip_interface_enable is true and the device is a GQ7. Will subscribe to RTCM in order to pass to the aux port of the GQ7

  • /ext/time sensor_msgs/TimeReference

    • Will be enabled if subscribe_ext_time is true and the device supports external GPS time updates. Will subscribe to external time updates and send them to the device.

    • NOTE: The time update command should be done once a second within the top 250 milliseconds of the second.

  • /ext/llh_position sensor_msgs/NavSatFix

    • Will be enabled if subscribe_ext_fix is true and the device supports the LLH position aiding command. Will subscribe to external LLH position and send it to the device.

  • /ext/velocity_ned geometry_msgs/TwistWithCovarianceStamped

    • Will be enabled if subscribe_ext_vel_ned is true and the device supports the NED velocity aiding command. Will subscribe to external NED velocity and send it to the device.

  • /ext/velocity_enu geometry_msgs/TwistWithCovarianceStamped

    • Will be enabled if subscribe_ext_vel_enu is true and the device supports the NED velocity aiding command. Will subscribe to external ENU velocity and send it to the device.

  • /ext/velocity_ecef geometry_msgs/TwistWithCovarianceStamped

    • Will be enabled if subscribe_ext_vel_ecef is true and the device supports the ECEF velocity aiding command. Will subscribe to external ECEF velocity and send it to the device.

  • /ext/velocity_body geometry_msgs/TwistWithCovarianceStamped

    • Will be enabled if subscribe_ext_vel_body is true and the device supports the body velocity aiding command. Will subscribe to external body velocity and send it to the device.

  • /ext/heading_ned geometry_msgs/PoseWithCovarianceStamped

    • Will be enabled if subscribe_ext_heading_ned is true and the device supports the true heading aiding command. Will subscribe to external heading in the NED frame and send it to the device.

  • /ext/heading_enu geometry_msgs/PoseWithCovarianceStamped

    • Will be enabled if subscribe_ext_heading_enu is true and the device supports the true heading aiding command. Will subscribe to external heading in the ENU frame and send it to the device.

Services

The following services are available on this node. All services that your device supports will be created when the node is activated.

More Resources

Getting Started with GQ7

Getting Started with GQ7

Transforms and Frame IDs

The driver now supports publishing several different transforms. See Transforms for more information on the transforms and frame IDs used.

Relative Position Configuration

All devices with global postiion capabilities can now publish relative position. See Relative Position Configuration for more detailed information.

Frames and use_enu_frame

The use_enu_frame parameter considerably changes the behavior of this application. See use_enu_frame for more information.

Examples

See Examples for more information.

Wiki: microstrain_inertial_driver (last edited 2023-11-02 21:36:39 by RobFisher)