{"id":18621387,"url":"https://github.com/ethz-asl/ublox_utils","last_synced_at":"2025-04-11T02:31:45.897Z","repository":{"id":39885367,"uuid":"493640175","full_name":"ethz-asl/ublox_utils","owner":"ethz-asl","description":"Repository with tools for the ublox RTK receiver.","archived":false,"fork":false,"pushed_at":"2023-03-08T09:40:02.000Z","size":45,"stargazers_count":35,"open_issues_count":1,"forks_count":7,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-25T08:23:21.912Z","etag":null,"topics":["baseline","caster","client","f9p","gnss","gps","hardware","list","moving","ntrip","part","robotics","ros","rtk","server","setup","ublox","zed"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ethz-asl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-18T11:48:19.000Z","updated_at":"2025-01-07T00:42:33.000Z","dependencies_parsed_at":"2024-11-07T04:11:32.451Z","dependency_job_id":"4479399a-040c-439d-b56d-ef873c166637","html_url":"https://github.com/ethz-asl/ublox_utils","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethz-asl%2Fublox_utils","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethz-asl%2Fublox_utils/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethz-asl%2Fublox_utils/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethz-asl%2Fublox_utils/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ethz-asl","download_url":"https://codeload.github.com/ethz-asl/ublox_utils/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248329618,"owners_count":21085568,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["baseline","caster","client","f9p","gnss","gps","hardware","list","moving","ntrip","part","robotics","ros","rtk","server","setup","ublox","zed"],"created_at":"2024-11-07T04:11:28.295Z","updated_at":"2025-04-11T02:31:45.511Z","avatar_url":"https://github.com/ethz-asl.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ublox_utils\nRepository with ROS tools for the u-blox RTK receiver.\n\n## Table of Contents\n1. [Installation](#installation)\n2. [Hardware Setup](#hardware-setup)  \n     1. [Electronics](#electronics)\n     2. [Part List](#part-list)\n     3. [Firmware](#firmware)\n4. [ROS Sensor Launch](#ros-sensor-launch)  \n     1. [Single Receiver](#single-receiver)\n     2. [Dual Receivers](#dual-receivers)\n     3. [NTRIP Corrections](#ntrip-corrections)\n     4. [Dual Receivers with NTRIP](#dual-receivers-with-ntrip)\n\n## Installation\n```\nsource /opt/ros/noetic/setup.bash\nexport ROS_VERSION=`rosversion -d`\n\nsudo apt install -y python3-catkin-tools \\\n  ros-$ROS_VERSION-ublox \\\n  ros-$ROS_VERSION-ntrip-client \\\n  ros-$ROS_VERSION-nmea-msgs \\\n  ros-$ROS_VERSION-mavros-msgs \\\n  ros-$ROS_VERSION-rtcm-msgs\n  \ncd ~\nmkdir -p catkin_ws/src\ncd catkin_ws\ncatkin init\ncd ~/catkin_ws/src\ngit clone git@github.com:ethz-asl/ublox_utils.git\ncatkin build\n```\n\n## Hardware Setup\nThis section describes the hardware setup with one or two receivers on the rover.\nThe following considerations should be taken into account:\n- Optimal **sky coverage** of the antennas.\n- Antennas **far distanced** from other electronics to avoid interference (especially LiDAR and USB 3.0 devices).\n- **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](https://content.u-blox.com/sites/default/files/ZED-F9P-MovingBase_AppNote_%28UBX-19009093%29.pdf)). \n- **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](https://www.tallysman.com/app/uploads/2018/03/Tallysman%C2%AE-HC882-Datasheet_March-2022.pdf)). \n- **Known phase center position** with respect to rover body frame (see r_BP and r_BM in Figure below).\n- Rover antenna **at least 20cm** distanced from moving base antenna (see [ZED-FP9 Moving base applications, p.7](https://content.u-blox.com/sites/default/files/ZED-F9P-MovingBase_AppNote_%28UBX-19009093%29.pdf)).\n\n![Hardware GNSS setup.](https://user-images.githubusercontent.com/11293852/169337168-dd9f23a8-5c68-41e9-bf57-185111bd45fb.png)\n\n### Electronics\nThe NTRIP setup does not require a base station.\nInstead the corrections are provided by an NTRIP caster online.\nThe wiring is shown in the Figure below.\nIn case of a moving baseline setup, corrections from the moving base receiver (Receiver 1) will be sent to the rover (Receiver 2) via UART2.\n\n![Electronic wiring of dual RTK setup.](https://user-images.githubusercontent.com/11293852/169337161-7a531299-0cdd-4294-901e-e4295f50c316.png)\n\n### Part List\nThis is the part list for the standard moving baseline setup above.\nThe prices are regular retail prices.\nFor some, e.g., NTRIP corrections or Tallysman antennas research discounts may apply.\n\n| No. | Pc. No. | Description                                  | Source Object   | Supplier  | Supplier Number     | Cost per Unit   | Cost Total      | \n|:---:|:-------:|:---------------------------------------------|:----------------|:----------|:--------------------|:----------------|:----------------|\n|  1  |    2    | Sparkfun u-blox ZED-F9P GPS-RTK-SMA receiver | GPS-16481       | digikey   | 1568-GPS-16481-ND   | CHF 260.-       | CHF 520.-       |\n|  2  |    2    | Tallysman HC882 dual-band helical antenna    | 33-HC882-28     | digikey   | 1526-33-HC882-28-ND | CHF 250.-       | CHF 500.-       |\n|  3  |    1    | Swipos GIS/GEO NTRIP license                 | swipos GIS/GEO  | swisstopo | swipos-GIS/GEO      | CHF 2000.- p.a. | CHF 2000.- p.a. |\n|  4  |    2    | USB-C connector cable (300mm)                | CAB-15426       | digikey   | 1568-CAB-15426-ND   | CHF 4.-         | CHF 8.-         |\n|  5  |    2    | Coaxial SMA to SMA (500mm)                   | 415-0031-MM500  | digikey   | J10300-ND           | CHF 16.-        | CHF 32.-        |\n\n### Firmware\nThe latest tested firmware was **1.32** on ZED-F9P receiver. \nTo update the firmware follow the [sparkfun tutorial](https://learn.sparkfun.com/tutorials/how-to-upgrade-firmware-of-a-u-blox-gnss-receiver).\n\nWhen using a dual receiver setup update the configuration of the [moving base receiver](config/moving_base.txt) and [rover receiver](config/rover.txt).\nThe configuration is elaborated in [ZED-FP9 Moving base applications, p.16](https://content.u-blox.com/sites/default/files/ZED-F9P-MovingBase_AppNote_%28UBX-19009093%29.pdf).\nTo flash the configuration go to u-center and select `View-\u003eGeneration 9 Configuration View-\u003eAdvanced Configuration-\u003eLoad from file...-\u003eSend config changes`\n\n**Note**: If you are only using a single rover, the default config is fine.\n\nTo revert to the default config select `View-\u003eMessages view-\u003eUBX-\u003eCFG-\u003eCFG-\u003eRevert to default configuration-\u003eSend`.\n## ROS Sensor Launch\n[ublox.launch](./launch/ublox.launch) provides the launch file to start the u-blox receivers ROS interface.\n\n### Single Receiver\nThe default startup with a single receiver is\n```\nroslaunch ublox_utils ublox.launch device_position_receiver:=/dev/ttyACM0\n```\nThe relevant ROS topics are\n```\n/ublox_position_receiver/fix\n/ublox_moving_baseline_receiver/fix_velocity\n```\n\nAdditionally, you should monitor the fix status.\n```\n/ublox_position_receiver/navstatus\n```\n\n### Dual Receivers\nAt first use, setup the [firmware](#firmware).\n\nTo startup two receivers where the second receiver estimates the moving baseline run\n```\nroslaunch ublox_utils ublox.launch device_position_receiver:=/dev/ttyACM0 use_moving_baseline:=true device_moving_baseline_receiver:=/dev/ttyACM1\n```\nThe relevant ROS topic is\n```\n/ublox_moving_baseline_receiver/navheading\n```\nAdditionally, you should monitor a valid fix flag as well as the distance between the antennas in\n```\n/ublox_moving_baseline_receiver/navrelposned\n```\n\n**Note**: You may want to find a smart way to allocate the device ID.\n\n### NTRIP Corrections\nWe use the [swipos-GIS/GEO](https://www.swisstopo.admin.ch/de/geodata/geoservices/swipos/swipos-dienste/swipos-gisgeo.html) caster in conjunction with the [ROS ntrip client](http://wiki.ros.org/ntrip_client).\nOur [ublox2nmea](src/ublox2nmea.cc) node makes sure the caster receives the current VRS location.\nIt receives the [NavPVT](http://docs.ros.org/en/noetic/api/ublox_msgs/html/msg/NavPVT.html) from the u-blox receiver and outputs it as [NMEA $GPGGA sentence](http://docs.ros.org/en/api/nmea_msgs/html/msg/Sentence.html).\n```\nroslaunch ublox_utils ublox.launch device_position_receiver:=/dev/ttyACM0 use_ntrip:=true ntrip_username:=YOUR_USER ntrip_password:=YOUR_PASSWORD\n```\n\nThe rosgraph should look like this:\n![Rosgaph of NTRIP connection.](https://user-images.githubusercontent.com/11293852/169337693-09c338d6-1e9d-416b-b12d-9ae0bfa735db.png)\n\n### Dual Receivers with NTRIP\n```\nroslaunch 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\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethz-asl%2Fublox_utils","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fethz-asl%2Fublox_utils","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethz-asl%2Fublox_utils/lists"}