Ovaj tutorial objašnjava kako integrirati u-blox ZED-F9P RTK GNSS prijemnik s robotom koji pokreće ROS 2 (Jazzy). Naučit ćete kako spojiti hardver, konfigurirati prijemnik, postaviti radni prostor ROS 2 i pokrenuti potrebne čvorove za primanje i obradu visokopreciznih GPS podataka s RTK korekcijama putem NTRIP usluga.
Do kraja ovog vodiča imat ćete potpuno funkcionalnu ROS 2 postavku koja će strujati RTK podatke u stvarnom vremenu s vašeg RTK prijemnika na temelju u-blox ZED-F9P—pogodno za robotske primjene koje zahtijevaju centimetarsku točnost pozicioniranja.
Potreban hardver:
- simpleRTK2B – Osnovni početni komplet
- USB kabel kompatibilan s USB priključkom vašeg prijemnika za povezivanje s računalom ili ugrađenom platformom
- računalo ili ugrađena platforma s pristupom internetu (u ovom tutorialu koristimo računalo)
Potreban softver:
- Ubuntu 24.04 (instalira se izvorno, u virtualnom stroju ili putem WSL-a)
- ROS 2 (Jazzy) (instaliran na Ubuntu platformi)
Korisni resursi
- Korisni resursi za instalaciju Ubuntua:
- Korištenje WSL-a ili virtualnih strojeva: U slučaju da želite koristiti WSL ili virtualne strojeve, potrebno je dijeliti RTK prijemnik s Ubuntuom. Postoje upute kako ga podijeliti sa sustavom:
- NTRIP Pristup usluziProvjerite imate li pristup i vjerodajnice za NTRIP usluga. Trebate li pomoć u pronalaženju usluge korekcije, pogledajte našu Popis NTRIP usluge ispravljanja u vašoj zemlji.
- Konfiguracija RTK prijemnikaProvjerite je li vaš RTK prijemnik konfiguriran kao RoverAko vam je potrebna pomoć pri konfiguriranju u-blox ZED-F9P kao Rover, pogledajte naše ZED-F9P Konfiguracijske datoteke.
Kako postaviti u-blox ZED-F9P RTK prijemnik s ROS 2?
Postavljanje ROS 2 okruženja
- Kada je ROS 2 okruženje instalirano slijedeći upute Vodič za instalaciju ROS2, prema zadanim postavkama nije aktivan kada otvorite terminal.
Da biste to popravili, otvorite Terminal i pokrenite sljedeću naredbu za konfiguriranje Ubuntua da automatski učita ROS 2 okruženje u konfiguraciju pokretanja Terminala.
echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
Za primjenu promjena upotrijebite donju naredbu. Nakon toga, ROS 2 će biti spreman za korištenje svaki put kada otvorite Terminal.
source ~/.bashrc
- Za upravljanje ovisnostima u ROS 2, ažurirajte popis paketa i instalacija ros-dev-tools, Koja uključuje rosdep i druge korisne razvojne alate za ROS 2.
sudo apt update && sudo apt install ros-dev-tools
Spojite RTK prijemnik
- Spojite RTK antenu na prijemnik. Postavite antenu na mjesto s dobrim pogledom na nebo ili blizu prozora kako biste testirali funkcionalnost.
- Spojite prijemnik s računalom putem USB priključka označenog s "POWER+GPS".
- Prijemnik bi trebao biti automatski konfiguriran. Da biste to provjerili, otvorite Terminal i upišite naredbu. Trebali biste vidjeti / dev / ttyACM0 (ili sličan uređaj, npr. / dev / ttyACM1).
ls /dev/ttyACM*

- Za provjeru GPS streama s RTK prijemnika, pokrenite naredbu u Terminalu. Prikazuje sirove GPS podatke koji se šalju s prijemnika. Pritisnite Ctrl + C zaustaviti.
sudo cat /dev/ttyACM0
- Savjet: Ako ne vidite nikakav izlaz ili uređaj nedostaje, provjerite ima li vaš korisnik odgovarajuća dopuštenja (npr. je li u dialout grupi). Možete se dodati pomoću donje naredbe. Nakon toga se odjavite i ponovno prijavite da bi promjene stupile na snagu.
sudo usermod -a -G dialout $USER
- Press Ctrl + X za izlaz iz datoteke i pritisnite Y za spremanje modificiranog međuspremnika.
- Isključite (isključite) RTK prijemnik iz napajanja i ponovno ga spojite (napajanje).
- Sada, kad god je RTK prijemnik spojen, bit će dostupan iz "/dev/tty_Ardusimple". Da biste to provjerili, unesite naredbe:
sudo service udev reload
sudo service udev restart
sudo udevadm trigger
ls /dev/
Pripremite novi ROS 2 radni prostor za projekt
- Za stvaranje direktorija radnog prostora, otvorite Terminal i stvorite mapu (na primjer, ros2_ws) s src podmapa:
mkdir -p ~/ros2_ws/src
- Idite do svog radnog prostora.
cd ~/ros2_ws
- Za izgradnju radnog prostora koristite colcon izgraditi sve pakete unutra src:
colcon build
- Napravite izvor instalacijske datoteke kako bi vaša ljuska prepoznala novoizgrađene pakete:
source install/setup.bash
- Dodajte ovu naredbu u svoj ~/.bashrc (ili ekvivalent) za automatsko prepoznavanje izvornog koda svaki put kada otvorite novi terminal.
echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc

- Sada imate postavljen osnovni ROS2 radni prostor za daljnji razvoj i integraciju s ArduSimple RTK.
Pokrenite čvor na ROS 2 za povezivanje s RTK prijemnikom
- Za kloniranje u-blox repozitorij u vaš ROS 2 radni prostor (~/ros2_ws/src):
cd ~/ros2_ws/src
git clone --branch ros2 https://github.com/KumarRobotics/ublox.git
- pokrenuti rosdep i preuzmite najnovije definicije ovisnosti paketa.
sudo rosdep init
rosdep update

- Sada je u-blox Čvor je dostupan u vašem ROS2 okruženju.
- Izmijenite konfiguracijsku datoteku kako biste ažurirali putanje ili parametre uređaja prema potrebi (koristit ćemo /dev/tty_Ardusimple). Paket ublox_gps uključuje zadanu konfiguracijsku datoteku pod nazivom zed_f9p.yamlOtvorite konfiguracijsku datoteku naredbom:
nano ~/ros2_ws/src/ublox/ublox_gps/config/zed_f9p.yaml
- Ponovno izgradite pakete. Preporučujemo korištenje zaseban paket za vaše prilagođene konfiguracijske i pokretačke datoteke kako bi stvari ostale organizirane. O tom pristupu ćemo kasnije raspravljati.
cd ~/ros2_ws
colcon build
source install/setup.bash

- Kako biste izbjegli zaustavljanje čvora, otvorite novi Terminal i inicijalizirajte radni prostor pomoću naredbe u nastavku. Ako je ovaj čvor zaustavljen, u-blox Uređaj više neće objavljivati svoje teme niti pružati svoje usluge.
source ~/ros2_ws/install/setup.bash
- Za zaustavljanje streama pritisnite Ctrl + C.
- Pogledajte popis dostupnih usluga koje pruža Node.
ros2 service list
- Sada imate u-blox ROS 2 čvor pokreće i objavljuje podatke u stvarnom vremenu s vašeg RTK prijemnika.
Važno:- Ne zaustavljajte u-blox čvor. Ovaj čvor mora biti pokrenut prije nego što slijedite korake za pokretanje NTRIP klijent, budući da poslužitelju za korekcije trebaju GPS podaci uživo za izračun i slanje RTCM korekcija.
- The u-blox Čvor mora ostati aktivan za vizualizaciju GPS izlaza pomoću ros2 topic echo-a, kao što je prikazano u prethodnom koraku.
Pokreni čvor na ROS 2 za korištenje NTRIP ispravke
Bilješka: Provjerite je li GPS čvor za vezu već pokrenut jer je potreban za prijenos podataka o korekciji.
- Idite do direktorija radnog prostora ROS2 i klonirajte granu ROS 2.
cd ~/ros2_ws/src
git clone --branch ros2 https://github.com/LORD-MicroStrain/ntrip_client.git
- Da biste izbjegli zatvaranje čvora, otvorite novi Terminal i inicijalizirajte radni prostor.
Bilješka: Ako je čvor zaustavljen, u-blox Uređaj će prestati primati podatke za korekciju. u-blox čvor mora biti pokrenut prije pokretanja NTRIP klijent, jer pruža potrebne GPS podatke poslužitelju za korekcije. Ako u-blox Ako je čvor zaustavljen, više neće objavljivati potrebne teme i usluge, a rtk prijemnik će prestati primati podatke o korekciji.
source ~/ros2_ws/install/setup.bash
- Da biste izbjegli zatvaranje čvora, otvorite novi Terminal i inicijalizirajte radni prostor.
Bilješka: Ako je čvor zaustavljen, u-blox Uređaj će prestati primati podatke za korekciju. u-blox čvor mora biti pokrenut prije pokretanja NTRIP klijent, jer pruža potrebne GPS podatke poslužitelju za korekcije. Ako u-blox Ako je čvor zaustavljen, više neće objavljivati potrebne teme i usluge, a rtk prijemnik će prestati primati podatke o korekciji.
source ~/ros2_ws/install/setup.bash
- Pogledajte popis dostupnih tema.
ros2 topic list
- Ključne teme koje biste mogli vidjeti:
- /rtcmObjavljuje RTCM podatke o korekciji (mavros_msgs/RTCM ili rtcm_msgs/Message, ovisno o konfiguraciji).
- /nmea: Pretplaćuje se na lokalne NMEA rečenice i prosljeđuje ih poslužitelju.
- /ublox_gps_node/fixTakođer može proslijediti podatke o globalnoj poziciji ako već nisu u NMEA formatu.
- Ako je sve učinjeno ispravno, uspješno, vidjet ćete da čvor objavljuje RTCM ispravke na /rtcm tema. Korištenje ntrip_client Node, možete integrirati RTCM korekcijske podatke u svoj ROS 2 projekt kako biste omogućili precizno pozicioniranje s RTK prijemnikom.
ros2 topic echo /rtcm
- Pomoću ovog čvora možete integrirati RTCM podatke o korekciji u svoj ROS 2 projekt kako biste omogućili precizno pozicioniranje s RTK prijemnikom.
Izrada kombiniranog paketa za lansiranje
Izradit ćemo namjenski paket koji sadrži jednu datoteku za pokretanje oboje o ublox_gps čvor (objavljivanje GPS podataka) i ntrip_client čvor (koji istovremeno obrađuje RTK korekcije). Ovaj pristup održava vaš radni prostor organiziranim i olakšava pokretanje svih potrebnih čvorova jednom naredbom.
- Otvorite novi Terminal, idite do svog ROS2 radnog prostora i stvorite novi paket. Za nanofile za pokretanje temeljen na Pythonu, pokrenite naredbe:
cd ~/ros2_ws/src
ros2 pkg create combined_rtk --build-type ament_python
- Unutar novog paketa stvorite direktorij za pokretanje i datoteku za pokretanje Pythona.
mkdir -p combined_rtk/launch
nano ~/ros2_ws/src/combined_rtk/launch/combined_nodes.launch.py
- Kopirajte kod iz donjeg primjera i zalijepite ga u datoteku. Kod radi sljedeće:
- ublox_gps Čvor: Objavljuje sirove GPS podatke s vašeg ArduSimple uređaj.
- ntrip_client Čvor: Povezuje se s NTRIP caster/server i objavljuje RTCM ispravke na /rtcm (a po potrebi se možete pretplatiti i na /nmea ili /fix).
- Shebang (#!/usr/bin/env python3) – Osigurava da se datoteka izvršava kao Python skripta.
- Opis pokretanja – Definira koje čvorove pokrenuti.
- Čvor parametri – Postavlja parametre specifične za čvor (npr. uređaj, host, port, autentifikaciju).
from launch import LaunchDescription
from launch_ros.actions import Node
from launch.actions import SetEnvironmentVariable
def generate_launch_description():
# ---------------------------------------------
# Node configuration for ublox_gps
# ---------------------------------------------
ublox_node = Node(
package='ublox_gps', # ROS 2 package containing the ublox GPS driver
executable='ublox_gps_node', # Executable name for the ublox GPS node
name='ublox_gps_node', # Name assigned to the node
output='screen', # Output log to screen
parameters=[{ # Node parameters defined inline
'debug': 0, # Debug level (0 = none)
'device': '/dev/tty_Ardusimple', # Serial port where GPS is connected
'frame_id': 'gps', # Frame ID to tag published GPS messages
'uart1': {
'baudrate': 9600 # Baudrate for UART1
},
'tmode3': 1, # Survey-in mode (TMODE3 = 1)
'sv_in': { # Survey-in configuration
'reset': True, # Reset survey-in every startup
'min_dur': 300, # Minimum duration for survey-in (seconds)
'acc_lim': 3.0 # Accuracy limit for survey-in (meters)
},
'inf': {
'all': True # Enable all INF messages on console
},
'publish': {
'all': True, # Publish all available messages
'aid': {
'hui': False # Do not publish aiding HUI messages
},
'nav': {
'posecef': False # Do not publish NAV-POSECEF messages
}
}
}]
)
# ---------------------------------------------
# Environment variable to control NTRIP client debug
# ---------------------------------------------
set_debug_env = SetEnvironmentVariable(
name='NTRIP_CLIENT_DEBUG', # Name of the environment variable
value='false' # Disable debug output
)
# ---------------------------------------------
# Node configuration for NTRIP client
# ---------------------------------------------
ntrip_node = Node(
package='ntrip_client', # ROS 2 package containing the NTRIP client
executable='ntrip_ros.py', # Python script for the NTRIP client
name='ntrip_client', # Name assigned to the node
output='screen', # Output log to screen
parameters=[{ # Parameters required for NTRIP connection
'host': 'ppntrip.services.u-blox.com', # NTRIP caster hostname
'port': 2101, # NTRIP port (integer)
'mountpoint': 'NEAR-RTCM', # Mountpoint on the NTRIP caster
'ntrip_version': 'None', # Optional NTRIP version
'authenticate': True, # Use authentication (username/password)
'username': user', # Auth username
'password': 'password', # Auth password
'ssl': False, # SSL not used
'cert': 'None', # No client certificate
'key': 'None', # No client key
'ca_cert': 'None', # No custom CA certificate
'rtcm_frame_id': 'odom', # Frame ID for published RTCM messages
'nmea_max_length': 128, # Max NMEA sentence length
'nmea_min_length': 3, # Min NMEA sentence length
'rtcm_message_package': 'rtcm_msgs', # Use the rtcm_msgs message format
'reconnect_attempt_max': 10, # Max reconnect attempts before giving up
'reconnect_attempt_wait_seconds': 5, # Wait time between reconnects
'rtcm_timeout_seconds': 4 # Max time without RTCM before reconnect
}],
remappings=[
('/fix', '/ublox_gps_node/fix') # Remap /fix topic to /ublox_gps_node/fix
]
)
# Return the full launch description with all configured actions
return LaunchDescription([
set_debug_env, # Set environment variable for NTRIP debug
ublox_node, # Launch ublox GPS node
ntrip_node # Launch NTRIP client node
])
- Otvoren setup.py.
nano ~/ros2_ws/src/combined_rtk/setup.py
- Kopirajte donji kod i zalijepite ga u setup.py datoteku kako biste uključili datoteke za pokretanje i ovisnosti. Zatvorite datoteku i spremite promjene.
import os
import glob
from setuptools import find_packages, setup
package_name = 'combined_rtk'
setup(
name=package_name,
version='0.0.0',
packages=find_packages(exclude=['test']),
data_files=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + package_name, ['package.xml']),
(os.path.join('share', package_name), ['package.xml', *glob.glob('launch/*')]),
],
install_requires=['setuptools'],
zip_safe=True,
maintainer='jmnavarrete',
maintainer_email='jmnavarrete@todo.todo',
description='TODO: Package description',
license='TODO: License declaration',
tests_require=['pytest'],
entry_points={
'console_scripts': [
],
},
)
- Pokrenite oboje ublox_gps i ntrip_client Čvorovi s jednom naredbom:
ros2 launch combined_rtk combined_nodes.launch.py
- U terminalu biste trebali vidjeti zapisnike s oba čvora, što ukazuje na sljedeće:
- ublox_gps čita GPS podatke s navedenog uređaja (npr. /dev/tty_Ardusimple).
- ntrip_client je povezan s vašim NTRIP poslužitelj i objavljivanje RTCM ispravaka na /rtcm (i eventualno pretplata na /nmea ako je konfigurirano).
- Za provjeru tema, usluga i statusa uređaja, otvorite novi terminal i inicijalizirajte:
source install/setup.bash
- The ublox_gps Čvor objavljuje dijagnostiku na temu kao što je /dijagnostika. Za provjeru dijagnostičkih informacija:
ros2 topic echo /diagnostics
Uključuje poruke o statusu kao što su horizontalna točnost, vertikalna točnost i „3D fiksacija“ kada prijemnik ima valjanu poziciju ili „fiksacija nije u redu“ kada GPS još nije pravilno fiksiran.
- Ključni savjeti za provjeru statusa popravka:
- Praćenje /ublox_gps_node/fix u NavSatFix porukama (polje status.status) ili dijagnostičkim porukama za detaljnije tekstualne statuse.
- The /dijagnostika Tema često pruža čitljiv sažetak poput „3D popravka“.
- Koristiti /ublox/navpvt za dobivanje detaljnih informacija:
- Polje fix_type treba biti 3 za 3D fiksaciju.
- Polje zastavica trebalo bi označavati da se koriste korekcije.
- Polje flags2 uključuje RTK status: 67 RTK Float, 128 RTK Fix. Ako je vrijednost znatno niža, vjerojatno znači da se ne primjenjuju RTK korekcije.
- Osigurajte da vaša antena ima jasan pogled na nebo i vaše NTRIP caster vjerodajnice su ispravne za postizanje stabilne RTK fixacije.
Ako želite slijediti ovaj vodič, imamo sve proizvode na zalihama i spremne za isporuku:
-
Prodaja!Made in EuropeRTK starter kits
simpleRTK2B – Basic Starter Kit
Od 199,00€ Ovaj proizvod ima više varijanti. Opcije se mogu odabrati na stranici proizvoda