Exwayz GNSS to pose aims at outputing a 6DoF pose from one our multiple GNSS inputs.
It can work in multiple modes explained briefly below
| Inputs | 6Dof pose estimation method |
|---|---|
| Single GNSS | Estimate a heading by using consecutive GNSS projected positions with a minimum distance between them (typically 10cm) |
| Dual GNSS | Estimate a heading using the two GNSS projected positions, which give a first axis and deduce the remaining ones with basic geometry. |
| Quad GNSS | Estimate a heading using the 4 GNSS projected positions for deducing a pose with basic geomtry |
More explanation and schemes can be found in Understand the GNSS to pose modes.
Below is the example gnss_to_pose.yaml configuration file with all parameters open to the user. The comments are the main documentation of each parameters.
# [optional] custom proj directory if you want to specify a custom location
# on your computer
# proj_dir: <path-to-proj-dir>
gnss_to_pose:
# [optional, default=0] pose generation mode
# * 0: single antenna
# * 1: (rtmaps only) single antenna + heading
# * 2: dual antenna
# * 3: quad antenna
mode: 0
# [optional] Destination CRS. e.g. use EPSG:32631 for UTM zone 31N.
dst_crs: EPSG:32631
# [optional, default=[0.0, 0.0, 0.0]] Offset retrieved from the projected
# position for generating the output pose.
offset: [0.0, 0.0, 0.0]
# [optional] Maximum standard deviation. Measure coming with a great stddev
# than the defined value will be ignored.
max_std_dev: 1.0
# [optional] Quality filter. All incoming GNSS values who's quality indicator
# isn't part of the list below are discarded. In ROS, the NavSatFix status
# is used as a quality filter.
quality_filter: [4]
# [optional, default=0.2(m)] (mode 0 only) Minimum distance between measures
# to estimate heading
d_heading_estimation: 0.2
# [required] (ros only) ROS parameters
ros:
# [optional, default=/exwayz/gnss_to_pose] output namespace, prepends
# all outputs.
namespace: /exwayz/gnss_to_pose
# [required] (mode 0 only) Input NavSatFix settigs.
input_navsatfix:
# [required] topic name
topic: <topic-name>
# [required] (mode 2 only) Input NavSatFix settigs of the left antenna
input_navsatfix_left:
# [required] topic name
topic: <topic-name>
# [required] (mode 2 only) Input NavSatFix settigs of the right antenna
input_navsatfix_right:
# [required] topic name
topic: <topic-name>
# [optional] Output Odometry settings.
output_odometry:
# [optional, default=/odometry] Topic name
topic: /odometry
# [optional, default=xyz_map] Odometry message header frame_id
parent_frame_id: xyz_map
# [optional, default=gnss_to_pose] Odometry message child_frame_id
child_frame_id: gnss_to_pose
# [optional, default=false] Optionally inverts output pose and
# frame_ids
invert: false
# [optional] (rtmaps only) rtmaps parameters
rtmaps:
# [optional] Number of satellites filter. All incoming GNSS values
# who's number of satellites is below the minimum are discarded
min_num_satellites: 5
# [optional, default=100] Synchronization tolerance between the multiple
# GNSS inputs in milliseconds
sync_tolerance: 100
# [optional, default=2000] read timeout in milliseconds
input_reads_timeout: 2000
# [optional, default=0] UTC time mode
# * 0: hhmmss.ssss in a single number, as output by the RTMaps GGA
# converter
# * 1: UTC time in seconds
# * 2: UTC time in microseconds
# * 3: UTC time in nanoseconds
utc_time_mode: 2
# [optional, default=false] In UTC time mode 0 the output timestmap is
# in seconds from top of the day. Set this boolean to true so GNSSToPose
# computes the timestamp offset between top of the day and unix
# timstamp by using message software timestamp.
timestamp_auto_offset: true
# [optional, default=false] When plugged to GGA NMEA component the lla
# vector size is 4:
# * lla[2] contains geoidal height.
# * lla[3] contains ellipsoidal height.
# By default, GNSSTOPose outputs geoidal height. Set this boolean to
# true to force output ellipsoidal height.
gga_height_ellipsoid: false
modedst_crsoffsetmax_std_devquality_filterd_heading_estimationrosrtmaps