Transforms

In order to integrate more easily with other ROS tools, the microstrain_inertial_driver supports publishing several different transforms.

Frame IDs

When publishing transforms, we will use a configurable set of frame ids. The table below lists the frame IDs, their defaults, and what they should represent. Each of these names can be found in the params.yml and can be modified by the user.

Frame ID

Default

Description

frame_id

imu_link

Represents the location of the sensor itself. All sensor and filter measurements will be published in this frame ID

mount_frame_id

base_link

Represents the frame that the sensor is mounted on. We will never publish messages in this frame. It's main purpose it in conjunction with mount_to_frame_id_transform

map_frame_id

map

For more information, see the map section of REP 105

earth_frame_id

earth

For more information, see the earth section of REP 105

gnss1_frame_id

gnss_1_antenna_link

Represents the location of antenna 1. All GNSS measurements from antenna 1 will be reported in this frame ID

gnss2_frame_id

gnss_2_antenna_link

Represents the location of antenna 2. All GNSS measurements from antenna 2 will be reported in this frame ID

odometer_frame_id

odometer_link

Represents the location of the odometer attached to the device (GQ7 only right now). All measurements from the odometer will be reported in this frame ID

target_frame_id

base_link

Should be set to whatever Frame ID you want to publish a transform to. For more information see Global and Relative

Transform Mode

The transforms we publish or do not publish is controlled by the tf_mode parameter. Below are the different options.

Off

The driver will operate in this mode when tf_mode: 0.

In this mode, the driver will not publish any dynamic transforms. What this means is that transforms containing global or relative position information will not be published. However, see Independently Controlled Transforms for a list of transforms that may still be published in this mode.

Global

The driver will operate in this mode when tf_mode: 1

In this mode, the driver will publish the following transforms:

  • earth_frame_id -> target_frame_id

    • Description:

      • This transform will be the transform of target_frame_id with respect to the ECEF frame.

      • The rate at which this transform is published is controlled by the filter_odometry_earth_data_rate configuration option

This mode has been added for those who want to operate in an entirely global context. Most standard ROS tools do not play nicely with this, and it is recommended to instead use relative mode if you wish to use tools such as rviz, nav2, move_base, etc.

Relative

The driver will operate in this mode when tf_mode: 2

In this mode, the driver will publish the following transforms:

  • earth_frame_id -> map_frame_id

    • Description:

      • This transform will be the location of the local tangent plane in ECEF.
      • This transform requires that the user has also configured relative position. See Relative Position Configuration for more information on how to do that.

  • map_frame_id -> target_frame_id

    • Description:

      • This transform will be the location of target_frame_id with respect to the local tangent plane.

      • The rate at which this transform is published is controlled by the filter_odometry_map_data_rate configuration option

This mode has been added to allow for easy integration with tools such as rviz, nav2, move_base etc.

Independently Controlled Transforms

The following frames may be published regardless of tf_mode. See the list below for more information on the parameters to use to configure them and what they represent.

  • frame_id -> gnss1_frame_id

    • Configured With Parameter: gnss1_antenna_offset

    • Description:

      • This transform will be published if the device has at least 1 GNSS antenna, and will be the transform from the device to GNSS antenna 1.
      • If the device supports streaming Multi Antenna Offset Correction, setting mip_filter_multi_antenna_offset_correction_data_rate to a non-zero value will cause this transform to be updated at that rate with corrections from the device

  • frame_id -> gnss2_frame_id

    • Configured With Parameter: gnss2_antenna_offset

    • Description:

      • This transform will be published if the device has at least 2 GNSS antennas, and will be the transform from the device to GNSS antenna 2.
      • If the device supports streaming Multi Antenna Offset Correction, setting mip_filter_multi_antenna_offset_correction_data_rate to a non-zero value will cause this transform to be updated at that rate with corrections from the device

  • frame_id -> odometer_frame_id

    • Configured With Parameter: filter_speed_lever_arm_offset

    • Description:

      • This transform will be published if the device supports an external odometer, and will be the transform from the device to the odometer
  • mount_frame_id -> frame_id

    • Configured With Parameter: mount_to_frame_id_transform

    • Description:

      • This transform will be published if publish_mount_to_frame_id_transform is true and represents the transform between the sensor and wherever it is mounted.

      • In many cases this should be disabled as this transform will be published by something else, but it has been added as a convenience feature when first integrating.

Wiki: microstrain_inertial_driver/transforms (last edited 2023-10-19 22:11:13 by RobFisher)