Skip to content

ethz-asl/ublox_utils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ublox_utils

Repository with ROS tools for the u-blox RTK receiver.

Table of Contents

  1. Installation
  2. Hardware Setup
    1. Electronics
    2. Part List
    3. Firmware
  3. ROS Sensor Launch
    1. Single Receiver
    2. Dual Receivers
    3. NTRIP Corrections
    4. Dual Receivers with NTRIP

Installation

source /opt/ros/noetic/setup.bash
export ROS_VERSION=`rosversion -d`

sudo apt install -y python3-catkin-tools \
  ros-$ROS_VERSION-ublox \
  ros-$ROS_VERSION-ntrip-client \
  ros-$ROS_VERSION-nmea-msgs \
  ros-$ROS_VERSION-mavros-msgs \
  ros-$ROS_VERSION-rtcm-msgs
  
cd ~
mkdir -p catkin_ws/src
cd catkin_ws
catkin init
cd ~/catkin_ws/src
git clone [email protected]:ethz-asl/ublox_utils.git
catkin build

Hardware Setup

This section describes the hardware setup with one or two receivers on the rover. The following considerations should be taken into account:

  • Optimal sky coverage of the antennas.
  • Antennas far distanced from other electronics to avoid interference (especially LiDAR and USB 3.0 devices).
  • Omnidirectional helical antennas preferable over patch antennas as they do not require ground plane and have a better attitude coverage (see ZED-FP9 Moving base applications, p.8).
  • Multi-band antennas that support all receiver frequencies with well-defined phase center and small phase center variation (see for example HC882 Dual-Band Helical Antenna + L-Band).
  • Known phase center position with respect to rover body frame (see r_BP and r_BM in Figure below).
  • Rover antenna at least 20cm distanced from moving base antenna (see ZED-FP9 Moving base applications, p.7).

Hardware GNSS setup.

Electronics

The NTRIP setup does not require a base station. Instead the corrections are provided by an NTRIP caster online. The wiring is shown in the Figure below. In case of a moving baseline setup, corrections from the moving base receiver (Receiver 1) will be sent to the rover (Receiver 2) via UART2.

Electronic wiring of dual RTK setup.

Part List

This is the part list for the standard moving baseline setup above. The prices are regular retail prices. For some, e.g., NTRIP corrections or Tallysman antennas research discounts may apply.

No. Pc. No. Description Source Object Supplier Supplier Number Cost per Unit Cost Total
1 2 Sparkfun u-blox ZED-F9P GPS-RTK-SMA receiver GPS-16481 digikey 1568-GPS-16481-ND CHF 260.- CHF 520.-
2 2 Tallysman HC882 dual-band helical antenna 33-HC882-28 digikey 1526-33-HC882-28-ND CHF 250.- CHF 500.-
3 1 Swipos GIS/GEO NTRIP license swipos GIS/GEO swisstopo swipos-GIS/GEO CHF 2000.- p.a. CHF 2000.- p.a.
4 2 USB-C connector cable (300mm) CAB-15426 digikey 1568-CAB-15426-ND CHF 4.- CHF 8.-
5 2 Coaxial SMA to SMA (500mm) 415-0031-MM500 digikey J10300-ND CHF 16.- CHF 32.-

Firmware

The latest tested firmware was 1.32 on ZED-F9P receiver. To update the firmware follow the sparkfun tutorial.

When using a dual receiver setup update the configuration of the moving base receiver and rover receiver. The configuration is elaborated in ZED-FP9 Moving base applications, p.16. To flash the configuration go to u-center and select View->Generation 9 Configuration View->Advanced Configuration->Load from file...->Send config changes

Note: If you are only using a single rover, the default config is fine.

To revert to the default config select View->Messages view->UBX->CFG->CFG->Revert to default configuration->Send.

ROS Sensor Launch

ublox.launch provides the launch file to start the u-blox receivers ROS interface.

Single Receiver

The default startup with a single receiver is

roslaunch ublox_utils ublox.launch device_position_receiver:=/dev/ttyACM0

The relevant ROS topics are

/ublox_position_receiver/fix
/ublox_moving_baseline_receiver/fix_velocity

Additionally, you should monitor the fix status.

/ublox_position_receiver/navstatus

Dual Receivers

At first use, setup the firmware.

To startup two receivers where the second receiver estimates the moving baseline run

roslaunch ublox_utils ublox.launch device_position_receiver:=/dev/ttyACM0 use_moving_baseline:=true device_moving_baseline_receiver:=/dev/ttyACM1

The relevant ROS topic is

/ublox_moving_baseline_receiver/navheading

Additionally, you should monitor a valid fix flag as well as the distance between the antennas in

/ublox_moving_baseline_receiver/navrelposned

Note: You may want to find a smart way to allocate the device ID.

NTRIP Corrections

We use the swipos-GIS/GEO caster in conjunction with the ROS ntrip client. Our ublox2nmea node makes sure the caster receives the current VRS location. It receives the NavPVT from the u-blox receiver and outputs it as NMEA $GPGGA sentence.

roslaunch ublox_utils ublox.launch device_position_receiver:=/dev/ttyACM0 use_ntrip:=true ntrip_username:=YOUR_USER ntrip_password:=YOUR_PASSWORD

The rosgraph should look like this: Rosgaph of NTRIP connection.

Dual Receivers with NTRIP

roslaunch ublox_utils ublox.launch device_position_receiver:=/dev/ttyACM0 use_moving_baseline:=true device_moving_baseline_receiver:=/dev/ttyACM1 use_ntrip:=true ntrip_username:=YOUR_USER ntrip_password:=YOUR_PASSWORD