# NOTE: This file is formatted to work with ROS and will not work if specified as the params_file argument in ROS2.
# If you want to override parameters for ROS2, start with https://github.com/LORD-MicroStrain/microstrain_inertial/blob/ros2/microstrain_inertial_driver/config/empty.yml
# port is the main port that the device will communicate over. For all devices except the GQ7, this is the only available port.
# aux_port is only available for the GQ7 and is only needed when streaming RTCM corrections to the device from ROS, or if you want to publish NMEA sentences from this node
port :"/dev/ttyACM0"
# You should change this section of config to match your setup
port :'/dev/microstrain_main'
baudrate :115200
aux_port :"/dev/ttyACM1"
aux_baudrate :115200
debug :False
# If set to true, this will configure the requested baudrate on the device for the main port.
# Note that this will be set on both USB and serial, but will only actually affect the baudrate of a serial connection.
set_baud :False
# Waits for a configurable amount of time until the device exists
# If poll_max_tries is set to -1 we will poll forever until the device exists
poll_port :False
poll_rate_hz :1.0
poll_max_tries :60
# Number of times to attempt to reconnect to the device if it disconnects while running
# If configure_after_reconnect is true, we will also reconfigure the device after we reconnect
#
# Note: It is strongly recommended to configure after reconnect unless device_setup is set to false
# as the device will likely initialize in a different state otherwise
reconnect_attempts :0
configure_after_reconnect :True
# Controls if the driver-defined setup is sent to the device
# false - The driver will ignore the settings below and use the device's current settings
# true - Overwrite the current device settings with those listed below
device_setup :True
# Controls if the driver-defined settings are saved
# false - Do not save the settings
# true - Save the settings in the device's non-volatile memory
save_settings :False
# Controls if the driver creates a raw binary file
# false - Do not create the file
# true - Create the file
#
# Note: The filename will have the following format -
# The mode in which we will publish transforms to the below frame IDs
# 0 - No transforms will be published between any of the non static frame ids. (if publish_mount_to_frame_id_transform is true, it will still be published, and so will the antenna and odometer transforms)
# 1 - Global mode:
# Transform will be published from earth_frame_id to target_frame_id containing global position
# 2 - Relative mode:
# Note: In order to use relative mode, you must configure filter_relative_position
# Transform will be published from earth_frame_id to map_frame_id using relative position configuration
# Transform between map_frame_id and target_frame_id will be published using position information reported by the device
# for more information, see: https://wiki.ros.org/microstrain_inertial_driver/transforms
tf_mode :0
# Frame ID that most header.frame_id fields will be populated with.
frame_id:"imu_link"
# Frame IDs determining the transforms published by this node to aid in navigation. See https://www.ros.org/reps/rep-0105.html
# Note: If use_enu_frame is false, these frames (with the exception of earth_frame_id) will automatically have "_ned" appended to them.
mount_frame_id :"base_link"# Frame ID that the device is mounted on.
map_frame_id :"map"
earth_frame_id :"earth"
gnss1_frame_id :"gnss_1_antenna_link"
gnss2_frame_id :"gnss_2_antenna_link"
odometer_frame_id :"odometer_link"
# Target frame ID to publish transform to. Note that there needs to be some path of transforms between this and frame_id
# If tf_mode is set to 1, a transform between earth_frame_id and target_frame_id will be published
# If tf_mode is set to 2, a transform between map_frame_id and target_frame_id will be published
target_frame_id :"base_link"
# Static transform between mount_frame_id and frame_id.
# Note: It is recommended to define this in a urdf file if you are building a robot, or are able to modify the robot's description.
# We will use base station relative position configuration for this example. This configuration does a couple things:
# We will setup a local tangent plane at the location of the RTK base station being used by the GQ7.
# We will publish this location as the transform from the earth_frame_id to map_frame_id frame
# Note: This configuration requires a 3DM-RTK to be connected to the aux port of the GQ7.
# If you do not have that device, see https://wiki.ros.org/microstrain_inertial_driver/relative_position_configuration for more options.
filter_relative_position_config :True
filter_relative_position_source :2
# Antenna #1 lever arm offset source
# 0 - Disabled: We will not configure the antenna offset, or publish it as a transform
# 1 - Manual: We will use the provided vector to configure the device, and publish it as the transform between frame_id and gnss1_frame_id
# 2 - Transform: We will lookup the transform between frame_id and gnss1_frame_id and use it to configure the device. We will ignore gns1_antenna_offset
# Antenna #1 lever arm offset vector
# For GQ7 - in the vehicle frame wrt IMU origin (meters)
# For all other models - in the IMU frame wrt IMU origin (meters)
# Note: Make this as accurate as possible for good performance
gnss1_antenna_offset_source :1
# Set the antenna offsets.
# Note: These should be changed for you setup, otherwise dual antenna heading will not initialize.
# 0 - Disabled: We will not configure the antenna offset, or publish it as a transform
# 1 - Manual: We will use the provided vector to configure the device, and publish it as the transform between frame_id and gnss2_frame_id
# 2 - Transform: We will lookup the transform between frame_id and gnss2_frame_id and use it to configure the device. We will ignore gns2_antenna_offset
# Antenna #2 lever arm offset vector
# For GQ7 - in the vehicle frame wrt IMU origin (meters)
# For all other models - in the IMU frame wrt IMU origin (meters)
# Note: Make this as accurate as possible for good performance
# 2 - WGS84 Latitude, Longitude, height above ellipsoid position, NED velocity and attitude
filter_init_condition_src :0
# This will set the heading alignment to be dual antenna
filter_auto_heading_alignment_selector :1
filter_init_reference_frame :2
filter_init_position :[0.0,0.0,0.0]
filter_init_velocity :[0.0,0.0,0.0]
filter_init_attitude :[0.0,0.0,0.0]
# (GQ7 only) Relative Position Configuration
# Reference frame =
# 1 - Relative ECEF position
# 2 - Relative LLH position
#
# Source =
# 0 - Position will be reported relative to the base station. filter_relative_position_ref will be ignored
# 1 - Position will be reported relative to filter_relative_position_ref
# 2 - Position will be reported relative to the first position reported by the device after it enters full nav. filter_relative_position_ref will be ignored
# 3 - We will wait for a transform to be made available between earth_frame_id and map_frame_id and use that as the relative position reference. filter_relative_position_ref will be ignored
#
# Reference position - Units provided by reference frame (ECEF - meters, LLH - deg, deg, meters)
# Note: The source selected here will determine the transform published between earth_frame_id and map_frame_id when running in relative transform mode
# For more information, see: https://wiki.ros.org/microstrain_inertial_driver/relative_position_configuration
filter_relative_position_config :False
filter_relative_position_frame :2
filter_relative_position_source :2
filter_relative_position_ref :[0.0,0.0,0.01]
# (GQ7 Only) Reference point lever arm offset control.
# Note: This offset will affect the position and velocity measurements in the following topics: nav/odometry, nav/relative_pos/odometry
# Note: This offset is in the vehicle reference frame.
# Note: This can cause strange behavior when also using the ROS transform tree.
# It is recommended to not use this if you want to use the ROS transform tree unless you really know what you are doing
filter_lever_arm_offset:[0.0,0.0,0.0]
# (GQ7 only) Wheeled Vehicle Constraint Control
# Note: When enabled, the filter uses the assumption that velocity is constrained to the primary vehicle axis.
# By convention, the primary vehicle axis is the vehicle X-axis
filter_enable_wheeled_vehicle_constraint :False
# (GQ7 only) Vertical Gyro Constraint Control
# Note: When enabled and no valid GNSS measurements are available, the filter uses the accelerometers to track
# pitch and roll under the assumption that the sensor platform is not undergoing linear acceleration.
# This constraint is useful to maintain accurate pitch and roll during GNSS signal outages.
filter_enable_vertical_gyro_constraint :False
# (GQ7 only) GNSS Antenna Calibration Control
# When enabled, the filter will enable lever arm error tracking, up to the maximum offset specified in meters.
# This allows the filter to compensate for antenna offsets when they are incorrect.
filter_enable_gnss_antenna_cal :True
filter_gnss_antenna_cal_max_offset :0.1
# (GQ7/CV7 only) PPS Source
# PPS Source =
# 0 - Disabled
# 1 - Reciever 1 (default)
# 2 - Reciever 2
# 3 - GPIO (provided by external source if supported). Use the GPIO config above to further configure
# 4 - Generated from system oscillator
filter_pps_source :1
# Sensor2vehicle frame transformation selector
# 0 = None
# 1 = Euler Angles
# 2 = matrix
# 3 = quaternion
# Note: These are different ways of setting the same parameter in the device.
# The different options are provided as a convenience.
# Support for matrix and quaternion options is firmware version dependent (GQ7 supports Quaternion as of firmware 1.0.07)
# Quaternion order is [i, j, k, w]
# Note: This can cause strange behavior when also using the ROS transform tree.
# It is recommended to not use this if you want to use the ROS transform tree unless you really know what you are doing
# (GQ7 only) NMEA message format. If set to false, all NMEA message configuration will not have any affect
nmea_message_config:False
# Allow NMEA messages with the same talker IDs on different data sources (descriptor sets)
# In most cases, this should be set to False, as multiple messages of the same type with the same talker ID from a different descriptor set could cause confusion when parsing.
nmea_message_allow_duplicate_talker_ids:False
# NMEA messages in the sensor (IMU) descriptor set
# In order to enable a message, set nmea_message_config to true, and then change the 'data_rate' of the sentences you want to the desired rate in hertz
imu_nmea_prkr_data_rate:0
# NMEA messages in the GNSS1 descriptor set
# In order to enable a message, set nmea_message_config to true, and then change the 'data_rate' of the sentences you want to the desired rate in hertz
#
# Note: gnss1_nmea_talker_id can be any of the follwing numeric values:
# 1 - Sentences will start with GN
# 2 - Sentences will start with GP
# 3 - Sentences will start with GA
# 4 - Sentences will start with GL
# The purpose of the talker ID is to differentiate when the same message_id comes from different data sources (descriptor sets)
# The gnss1_nmea_talker_id will be applied to all NMEA messages from the GNSS1 descriptor set
gnss1_nmea_talker_id:1
gnss1_nmea_gga_data_rate:0
gnss1_nmea_gll_data_rate:0
gnss1_nmea_gsv_data_rate:0# Note that this message_id will not use the gnss1_talker_id since the talker ID will come from the actual constellation the message originates from
gnss1_nmea_rmc_data_rate:0
gnss1_nmea_vtg_data_rate:0
gnss1_nmea_hdt_data_rate:0
gnss1_nmea_zda_data_rate:0
# NMEA messages in the GNSS2 descriptor set
# In order to enable a message, set nmea_message_config to true, and then change the 'data_rate' of the sentences you want to the desired rate in hertz
#
# Note: gnss2_nmea_talker_id can be any of the follwing numeric values:
# 1 - Sentences will start with GN
# 2 - Sentences will start with GP
# 3 - Sentences will start with GA
# 4 - Sentences will start with GL
# The purpose of the talker ID is to differentiate when the same message_id comes from different data sources (descriptor sets)
# The gnss2_nmea_talker_id will be applied to all NMEA messages from the GNSS2 descriptor set
gnss2_nmea_talker_id:2
gnss2_nmea_gga_data_rate:0
gnss2_nmea_gll_data_rate:0
gnss2_nmea_gsv_data_rate:0# Note that this message_id will not use the gnss1_talker_id since the talker ID will come from the actual constellation the message originates from
gnss2_nmea_rmc_data_rate:0
gnss2_nmea_vtg_data_rate:0
gnss2_nmea_hdt_data_rate:0
gnss2_nmea_zda_data_rate:0
# NMEA messages in the filter descriptor set
# In order to enable a message, set nmea_message_config to true, and then change the 'data_rate' of the sentences you want to the desired rate in hertz
#
# Note: filter_nmea_talker_id can be any of the follwing numeric values:
# 1 - Sentences will start with GN
# 2 - Sentences will start with GP
# 3 - Sentences will start with GA
# 4 - Sentences will start with GL
# The purpose of the talker ID is to differentiate when the same message_id comes from different data sources (descriptor sets)
# The filter_nmea_talker_id will be applied to all NMEA messages from the filter descriptor set
filter_nmea_talker_id:3
filter_nmea_gga_data_rate:0
filter_nmea_gll_data_rate:0
filter_nmea_rmc_data_rate:0
filter_nmea_hdt_data_rate:0
filter_nmea_prka_data_rate:0# Note that this message_id will not have any talker ID on it since it is proprietary and can only come from the filter descriptor set
# External aiding measurement configuration
subscribe_ext_time :False
subscribe_ext_fix :False
subscribe_ext_vel_ned :False
subscribe_ext_vel_enu :False
subscribe_ext_vel_ecef :False
subscribe_ext_vel_body :False
subscribe_ext_heading_ned :False
subscribe_ext_heading_enu :False
\ No newline at end of file
# This will contain the raw IMU data, NOT the filtered IMU data
imu_data_rate :100
# The default is to publish LLH position and velocity, but rviz has a hard time displaying that.
# Instead we will publish the position in the ECEF frame
gnss1_llh_position_data_rate :0
gnss1_velocity_data_rate :0
gnss1_odometry_earth_data_rate :2
gnss2_llh_position_data_rate :0
gnss2_velocity_data_rate :0
gnss2_odometry_earth_data_rate :2
# We will only publish the odometry messages from the filter in this example.
# Also publish the human readable message which can be echoed from the command line
filter_human_readable_status_data_rate :1
filter_odometry_earth_data_rate :10
filter_odometry_map_data_rate :10
# Turning on this will cause the transform between gq7_link and gnss_1_antenna_link/gnss_2_antenna_link to be updated from the filter