This package provides ROS2 support for u-blox ZED F9P GPS receivers. Most of this driver has been written based off the original ROS(1) driver that can be found here. Changes made to support the latest firmware are listed below:
Features:
BESTPOS
, BESTVEL
, and PSRDOP2
logs together in order to produce
gps_common/GPSFix messages- Ubuntu 20.04 (Tested)
- Ubuntu 22.04 (Untested)
- ROS2 Foxy and ROS2 Galactic (Tested)
- ROS2 Humble (Untested)
- Colcon
- Firmware 9
mkdir -p ublox_ws/src
cd ublox_ws/src
git clone https://github.com/gokulp01/ros2-ublox-zedf9p.git
cd ..
colcon build
ros2 launch ublox_gps ublox_gps_node_zedf9p-launch.py
Note: Values are published on /fix
topic
Could NOT find asio (missing: ASIO_INCLUDE_DIR)
: To fix it, install the asio package on your system.
sudo apt-get install libasio-dev
Source and build again.
The ublox_gps
node supports the following parameters for all products and firmware versions:
device
: Path to the device port. Defaults to /dev/ttyACM0
.raw_data
: Whether the device is a raw data product. Defaults to false. Firmware <= 7.03 only.load
: Parameters for loading the configuration to non-volatile memory. See ublox_msgs/CfgCFG.msg
load/mask
: uint32_t. Mask of the configurations to load.load/device
: uint32_t. Mask which selects the devices for the load command.save
: Parameters for saving the configuration to non-volatile memory. See ublox_msgs/CfgCFG.msg
save/mask
: uint32_t. Mask of the configurations to save.save/device
: uint32_t. Mask which selects the devices for the save command.uart1/baudrate
: Bit rate of the serial communication. Defaults to 9600.uart1/in
: UART1 in communication protocol. Defaults to UBX, NMEA & RTCM. See CfgPRT
message for possible values.uart1/out
: UART1 out communication protocol. Defaults to UBX, NMEA & RTCM. See CfgPRT
message for possible values.frame_id
: ROS name prepended to frames produced by the node. Defaults to gps
.rate
: Rate in Hz of measurements. Defaults to 4.nav_rate
: How often navigation solutions are published in number of measurement cycles. Defaults to 1.enable_ppp
: Enable precise-point-positioning system. Defaults to false.gnss/sbas
: Enable satellite-based augmentation system. Defaults to false.sbas/max
: Maximum number of SBAS channels. Defaults to 0.sbas/usage
: See CfgSBAS
message for details. Defaults to 0.dynamic_model
: Possible values below. Defaults to portable
. See u-blox documentation for further description.
portable
stationary
pedestrian
automotive
sea
airborne1
: Airborne, max acceleration = 1Gairborne2
: Airborne, max acceleration = 2Gairborne4
: Airborne, max acceleration = 4Gwristwatch
fix_mode
: Type of fixes supported: 2d
, 3d
or both
.dr_limit
: Max time in seconds to use dead reckoning after signal is lost. Defaults to 0.dat
: Configuring the datum type (optional). See the CfgDAT message.
dat/set
: If true, the node will the datum based on the parameters below (required if true). Defaults to false. dat/majA
: Semi-major Axis [m]dat/flat
: 1.0 / Flatteningdat/shift
: [X-axis, Y-axis, Z-axis] shift [m]dat/rot
: [X, Y, Z] rotation [s]dat/scale
: scale change [ppm]use_adr
: Enable ADR/UDR. Defaults to true.nav_rate
should be set to 1 Hz.tmode3
: Time Mode. Required. See CfgTMODE3 for constants.arp/lla_flag
: True if the Fixed position is in Lat, Lon, Alt coordinates. False if ECEF. Required if tmode3
is set to fixed. arp/position
: Antenna Reference Point position in [m] or [deg]. Required if tmode3
is set to fixed. arp/position_hp
: Antenna Reference Point High Precision position in [0.1 mm] or [deg * 1e-9]. Required if tmode3 is set to fixed. arp/acc
: Fixed position accuracy in [m]. Required if tmode3
is set to fixed. sv_in/reset
: Whether or not to reset the survey in upon initialization. If false, it will only reset if the TMODE is disabled. Defaults to true.sv_in/min_dur
: The minimum Survey-In Duration time in seconds. Required tmode3 is set to survey in.sv_in/acc_lim
: The minimum accuracy level of the survey in position in meters. Required tmode3
is set to survey in.dgnss_mode
: The Differential GNSS mode. Defaults to RTK FIXED. See CfgDGNSS
message for constants.tim_tm2
: Enable this message for GPS time-stamps everytime an external interrupt signal is received.FtsProduct
class in ublox_gps
package node.h
& node.cpp
files.~fix
(sensor_msgs/NavSatFix)
Navigation Satellite fix.
~fix_velocity
(geometry_msgs/TwistWithCovarianceStamped)
Velocity in local ENU frame.
To enable printing INF messages to the ROS console, set the parameters below.
inf/all
: This is the default value for the INF parameters below, which enable printing u-blox INF
messages to the ROS console. It defaults to true. Individual message types can be turned off by setting their corresponding parameter to false.inf/debug
: Whether to configure the UBX and NMEA ports to send Debug messages and print received INF-Debug
messages to ROS_DEBUG
console.inf/error
: Whether to enable Error messages for the UBX and NMEA ports and print received INF-Error
messages to ROS_ERROR
console.inf/notice
: Whether to enable Notice messages for the UBX and NMEA ports and print received INF-Notice messages to
ROS_INFO` console.inf/test
: Whether to enable Test messages for the UBX and NMEA ports and print received INF-Test
messages to ROS_INFO
console.inf/warning
: Whether to enable Warning messages for the UBX and NMEA ports and print received INF-Warning
messages to the ROS_WARN
console.To publish a given u-blox message to a ROS topic, set the parameter shown below to true. The node sets the rate of the u-blox messages to 1 measurement cycle.
publish/all
: This is the default value for publish/<class>/all
parameters below. It defaults to false. Individual message classes and messages can be enabled or disabled by setting the parameters described below to false.publish/aid/all
: This is the default value for the publish/aid/<message>
parameters below. It defaults to publish/all
. Individual messages can be enabled or disabled by setting the parameters below.publish/aid/alm
: Topic ~aidalm
publish/aid/eph
: Topic ~aideph
publish/aid/hui
: Topic ~aidhui
publish/rxm/all
: This is the default value for the publish/rxm/<message>
parameters below. It defaults to publish/all
. Individual messages can be enabled or disabled by setting the parameters below.publish/rxm/alm
: Topic ~rxmalm
publish/rxm/eph
: Topic ~rxmeph
publish/rxm/raw
: Topic ~rxmraw
. Type is either RxmRAW
or RxmRAWX
depending on firmware version.publish/rxm/rtcm
: Topic ~rxmrtcm
. Firmware >= 8 onlypublish/rxm/sfrb
: Topic ~rxmsfrb
. Type is either RxmSFRB
or RxmSFRBX
depending on firmware version.publish/mon/all
: This is the default value for the publish/mon/<message>
parameters below. It defaults to publish/all
. Individual messages can be enabled or disabled by setting the parameters below.publish/mon/hw
: Topic ~monhw
publish/nav/all
: This is the default value for the publish/mon/<message>
parameters below. It defaults to publish/all
. Individual messages can be enabled or disabled by setting the parameters below.publish/nav/att
: Topic ~navatt
. ADR/UDR devices onlypublish/nav/clock
: Topic ~navclock
publish/nav/posecef
: Topic ~navposecef
publish/nav/posllh
: Topic ~navposllh
. Firmware <= 6 only. For firmware 7 and above, see NavPVTpublish/nav/pvt
: Topic ~navpvt
. Firmware >= 7 only.publish/nav/relposned
: Topic ~navrelposned
. HPG Rover devices onlypublish/nav/heading
: Topic ~navheading
. HP Position receiver devices only. For firmware 9 and abovepublish/nav/sat
: Topic ~navsat
publish/nav/sol
: Topic ~navsol
. Firmware <= 6 only. For firmware 7 and above, see NavPVTpublish/nav/status
: Topic ~navstatus
publish/nav/svin
: Topic ~navsvin
. HPG Reference Station Devices onlypublish/nav/svinfo
: Topic ~navsvinfo
publish/nav/velned
: Topic ~navvelned
. Firmware <= 6 only. For firmware 7 and above, see NavPVTpublish/esf/all
: This is the default value for the publish/esf/<message>
parameters below. It defaults to publish/all
for ADR/UDR devices. Individual messages can be enabled or disabled by setting the parameters below.publish/esf/ins
: Topic ~esfins
publish/esf/meas
: Topic ~esfmeas
publish/esf/raw
: Topic ~esfraw
publish/esf/status
: Topic ~esfstatus
publish/hnr/pvt
: Topic ~hnrpvt
. ADR/UDR devices onlypublish/tim/tm2
: Topic timtm2
. TIM devices onlygetRosParams()
method in the appropriate implementation of ComponentInterface (e.g. UbloxNode, UbloxFirmware8, HpgRefProduct, etc.) and get the parameter. Group multiple related parameters into a namespace. Use all lower case names for parameters and namespaces separated with underscores.
ublox_node::getRosUint
method which will verify the bounds of the parameter.ublox_nod::getRosInt
method which will verify the bounds of the parameter. (This method can also be used for int32's but ROS has methods to get int32 parameters as well).ComponentInterface
's configureUblox()
method to send the appropriate configuration message. Do not send configuration messages in getRosParams()
..yaml
configuration files in ublox_gps/config
to include the parameter or add a new sample .yaml
for your device.For debugging messages set the debug parameter to > 0. The range for debug is 0-4. At level 1 it prints configuration messages and checksum errors, at level 2 it also prints ACK/NACK messages and sent messages. At level 3 it prints the received bytes being decoded by a specific message reader. At level 4 it prints the incoming buffer before it is split by message header.
Consult the official protocol spec for details on packets supported by u-blox devices.