Ажурирање (17.): Имамо доста залиха свих наших производа, пронађите нас и у    Схоп сада

Како се интегрисати u-blox ZED-F9P ГНСС/РТК пријемник у РОС 2 (Џази)

интеграција оф u-blox ZED-F9P ГНСС/РТК пријемник у РОС 2 Џези
интеграција оф u-blox ZED-F9P ГНСС/РТК пријемник у РОС 2 Џези

Овај туторијал објашњава како интегрисати u-blox ZED-F9P РТК ГНСС пријемник са роботом који користи ROS 2 (Jazzy). Научићете како да повежете хардвер, конфигуришете пријемник, подесите радни простор ROS 2 и покренете потребне чворове за пријем и обраду високопрецизних GPS података са RTK корекцијама путем NTRIP сервис.

До краја овог водича, имаћете потпуно функционалну ROS 2 конфигурацију која ће стримовати RTK податке у реалном времену са вашег RTK пријемника на основу u-blox ZED-F9P—погодно за роботске примене које захтевају тачност позиционирања на центиметарском нивоу.

Потребан хардвер:

  • simpleRTK2B – Основни почетни комплет
  • УСБ кабл компатибилан са УСБ портом вашег пријемника за повезивање са рачунаром или уграђеном платформом
  • рачунар или уграђена платформа са приступом интернету (користимо рачунар у овом туторијалу)

Потребан софтвер:

Корисни ресурси

  1. Корисни ресурси за инсталирање Убунтуа:
  2. Коришћење WSL-а или виртуелних машина: У случају да желите да користите WSL или виртуелне машине, потребно је да делите RTK пријемник са Ubuntu-ом. Постоје упутства како да га делите са системом:
  3. NTRIP Приступ сервисуУверите се да имате приступ и акредитиве за NTRIP служба. Потребна вам је помоћ да пронађете службу за корекцију, погледајте наше Листа NTRIP корективне службе у вашој земљи.
  4. Конфигурација RTK пријемникаУверите се да је ваш RTK пријемник конфигурисан као RoverАко вам је потребна помоћ при конфигурисању u-blox ZED-F9P као Rover, погледајте наше ZED-F9P Датотеке за конфигурацију.

Како се поставља u-blox ZED-F9P РТК пријемник са РОС 2?

Подешавање ROS 2 окружења

  1. Када је ROS 2 окружење инсталирано пратећи упутства ROS2 водич за инсталацију, подразумевано није активан када отворите терминал.
    Да бисте ово поправили, отворите Терминал и покрените следећу команду да бисте конфигурисали Убунту да аутоматски учита ROS 2 окружење у вашу конфигурацију покретања Терминала.
				
					echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
				
			
  1. Да бисте применили промене, користите команду испод. Након тога, ROS 2 ће бити спреман за употребу сваки пут када отворите терминал.

				
					source ~/.bashrc
				
			
  1. Да бисте управљали зависностима у ROS 2, ажурирајте листу пакета и инсталације ros-dev-tools, који укључује росдеп и друге корисне алате за развој за ROS 2.
				
					sudo apt update && sudo apt install ros-dev-tools
				
			

Повежите RTK пријемник

  1. Прикључите RTK антену на пријемник. Поставите антену на место са добрим погледом на небо или близу прозора ради тестирања функционалности.
  2. Повежите пријемник са рачунаром преко УСБ порта означеног са „POWER+GPS".
  3. Пријемник би требало да буде аутоматски конфигурисан. Да бисте то проверили, отворите Терминал и откуцајте команду. Требало би да видите / дев / ттиАЦМ0 (или сличан уређај, нпр. / дев / ттиАЦМ1).
				
					ls /dev/ttyACM*
				
			
интеграција u-blox ZED-F9P rtk пријемник са корекцијама у ROS2
  1. Да бисте проверили GPS стримовање са RTK пријемника, покрените команду у терминалу. Она приказује сирове GPS податке који се емитују са пријемника. Притисните Цтрл + Ц да се заустави.
				
					sudo cat /dev/ttyACM0
				
			
  1. Савет: Ако не видите никакав излаз или уређај недостаје, уверите се да ваш корисник има одговарајућа овлашћења (нпр. да ли је у групи за dialout). Можете додати себе помоћу команде испод. Након тога, одјавите се и поново се пријавите да би промене ступиле на снагу.
				
					sudo usermod -a -G dialout $USER
				
			
  1. Да бисте спречили покретање RTK пријемника у другом „ttyACM*” сваки пут када се укључи, креирајте udev правило (динамичка веза) која креира унос са одређеним именом додавањем следеће датотеке пре повезивања RTK пријемника.
				
					sudo nano /etc/udev/rules.d/50-ardusimple.rules
				
			
  1. Унесите следећи текст у правило:
				
					KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a9", SYMLINK="tty_Ardusimple", GROUP="dialout", MODE="0666"
				
			
  1. Press Цтрл + В да изађете из датотеке и притисните Y да сачувате модификовани бафер.
  2. Искључите (искључите) RTK пријемник из напајања и поново га повежите (прикључите) из напајања.
  3. Сада, кад год је RTK пријемник повезан, биће доступан из „/dev/tty_Ardusimple„линк“. Да бисте ово проверили, унесите команде:
				
					sudo service udev reload
sudo service udev restart
sudo udevadm trigger
ls /dev/
				
			
  1. Сад то можете да видите “тти_ArduSimple" направљено је.

Припремите нови ROS 2 радни простор за пројекат

  1. Да бисте креирали директоријум радног простора, отворите терминал и креирајте фасциклу (на пример, ros2_ws) са срц подфолдер:
				
					mkdir -p ~/ros2_ws/src
				
			
  1. Идите до свог радног простора.
				
					cd ~/ros2_ws
				
			
  1. Да бисте изградили радни простор, користите Колкон да се изграде сви пакети унутра срц:
				
					colcon build
				
			
  1. Припремите инсталациону датотеку да би ваша љуска препознала новоизграђене пакете:
				
					source install/setup.bash
				
			
  1. Додајте ову команду у ваш ~/.bashrc (или еквивалент) да бисте аутоматски преусмеравали изворни код сваки пут када отворите нови терминал.
				
					echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc
				
			
интеграција u-blox ZED-F9P rtk пријемник са корекцијама у ROS2
  1. Сада имате основни ROS2 радни простор подешен за даљи развој и интеграцију са ArduSimple РТК.

Покрените чвор на ROS 2 да бисте се повезали са RTK пријемником

У овом одељку ћемо преузети и направити u-blox ROS 2 чвор, а затим покрените брзи тест да бисте потврдили да може да комуницира са вашим ArduSimple RTK уређај. Иако ћемо демонстрирати измену датотеке за покретање директно у u-blox пакет, препоручујемо да касније креирате посебан пакет са сопственим прилагођеним датотекама за покретање.
  1. Да бисте клонирали u-blox репозиторијум у ваш ROS 2 радни простор (~/ros2_ws/src):
				
					cd ~/ros2_ws/src
git clone --branch ros2 https://github.com/KumarRobotics/ublox.git

				
			
  1. Иницирајте росдеп и преузмите најновије дефиниције зависности пакета.
				
					sudo rosdep init
rosdep update
				
			
интеграција u-blox ZED-F9P rtk пријемник са корекцијама у ROS2
  1.  Изградити u-blox Чвор, вратите се у главни фолдер радног простора и компајлирајте:
				
					cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -r -y
colcon build
source install/setup.bash

				
			
  1. Сада u-blox Чвор је доступан у вашем ROS2 окружењу.
  2. Измените конфигурациону датотеку да бисте ажурирали путање или параметре уређаја по потреби (користићемо /dev/tty_Ardusimple). Пакет ublox_gps укључује подразумевану конфигурациону датотеку под називом зед_f9p.yamlОтворите конфигурациони фајл командом:
				
					nano ~/ros2_ws/src/ublox/ublox_gps/config/zed_f9p.yaml
				
			
  1. Измените конфигурациону датотеку да бисте ажурирали путање или параметре уређаја по потреби. У нашем случају, подесите путању уређаја на /dev/tty_Ardusimple.
  1. Да бисте конфигурисали чвор са зед_f9p.yaml подешавања, ажурирајте датотеку за покретање. Отворите датотеку и додајте следећи ред да бисте учитали конфигурацију:
				
					nano ~/ros2_ws/src/ublox/ublox_gps/launch/ublox_gps_node-launch.py
				
			
  1. Поново изградите пакете. Препоручујемо коришћење посебан пакет за ваше прилагођене конфигурационе и датотеке за покретање како би ствари биле организоване. О том приступу ћемо касније разговарати.
				
					cd ~/ros2_ws
colcon build
source install/setup.bash
				
			
интеграција u-blox ZED-F9P rtk пријемник са корекцијама у ROS2
  1. Покрените ГПС чвор и тестирајте везу:
				
					ros2 launch ublox_gps ublox_gps_node-launch.py
				
			
  1. Ако је све исправно конфигурисано, чвор би требало да почне да објављује GPS податке са ArduSimple пријемник.
  1. Да бисте избегли заустављање чвора, отворите нови терминал и иницијализујте радни простор помоћу команде испод. Ако је овај чвор заустављен, u-blox уређај више неће објављивати своје теме нити пружати своје услуге.
				
					source ~/ros2_ws/install/setup.bash
				
			
  1. Покрените следећу команду да бисте видели доступне теме. Потражите теме попут /ublox_gps_node/fix, који садржи GPS податке у формату sensor_msgs/NavSatFix, итд.
				
					ros2 topic list
				
			
  1. Покрените команду да бисте видели ГПС податке у реалном времену. 
				
					ros2 topic echo /ublox_gps_node/fix
				
			
  1. Да бисте зауставили пренос, притисните Цтрл + Ц.
  2. Погледајте листу доступних услуга које пружа Node.
				
					ros2 service list
				
			
  1. Сада имате u-blox ROS 2 чвор покреће и објављује податке у реалном времену са вашег RTK пријемника.
    Важно:
    • Не заустављајте u-blox чвор. Овај чвор мора бити покренут пре него што се прате кораци за покретање NTRIP клијент, јер серверу за корекције требају GPS подаци уживо да би израчунао и послао RTCM корекције.
    • u-blox Чвор мора остати активан да би визуализовао GPS излаз користећи ros2 topic echo, као што је приказано у претходном кораку.

Покрените чвор на ROS 2 за коришћење NTRIP исправке

Користићемо ntrip_client ROS2 чвор за повезивање са NTRIP Caster и примати RTCM корекције за прецизније позиционирање. Овај чвор такође може да прослеђује локалне НМЕА реченице на удаљени сервер ако је потребно. У наставку је кратак преглед како га подесити и тестирати.
Beleška: Уверите се да је GPS чвор за везу већ покренут, јер је потребан за пренос података о корекцији.
  1. Идите до директоријума радног простора ROS2 и клонирајте грану ROS 2.
				
					cd ~/ros2_ws/src
git clone --branch ros2 https://github.com/LORD-MicroStrain/ntrip_client.git
				
			
  1. Вратите се у корен радног простора, инсталирајте све недостајуће зависности и изградите пакет
				
					cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -r -y
colcon build
source install/setup.bash
				
			
  1. Отворите датотеку ntrip_client_launch.py и померите се надоле да бисте пронашли код где NTRIP акредитиви су подешени.
				
					nano ~/ros2_ws/src/ntrip_client/launch/ntrip_client_launch.py
				
			
  1. Ажурирај NTRIP параметре као што су хост, порт, корисничко име, лозинка и тачка монтирања и сачувајте измене у датотеци.
				
					nano ~/ros2_ws/src/ntrip_client/launch/ntrip_client_launch.py
				
			
  1. Реконструишите пакете:
				
					cd ~/ros2_ws
colcon build
source ~/ros2_ws/install/setup.bash
				
			
  1. Покрените чвор са својим NTRIP параметри за успостављање везе са NTRIP Caster:
				
					ros2 launch ntrip_client ntrip_client_launch.py
				
			
  1. Да бисте избегли затварање чвора, отворите нови терминал и иницијализујте радни простор.
    Beleška: Ако је чвор заустављен, u-blox Уређај ће престати да прима податке о корекцији. u-blox чвор мора бити покренут пре покретања NTRIP клијент, јер пружа потребне GPS податке серверу за корекцију. Ако u-blox Ако је чвор заустављен, више неће објављивати потребне теме и услуге, а rtk пријемник ће престати да прима податке о корекцији.
				
					source ~/ros2_ws/install/setup.bash
				
			
  1. Да бисте избегли затварање чвора, отворите нови терминал и иницијализујте радни простор.
    Beleška: Ако је чвор заустављен, u-blox Уређај ће престати да прима податке о корекцији. u-blox чвор мора бити покренут пре покретања NTRIP клијент, јер пружа потребне GPS податке серверу за корекцију. Ако u-blox Ако је чвор заустављен, више неће објављивати потребне теме и услуге, а rtk пријемник ће престати да прима податке о корекцији.
				
					source ~/ros2_ws/install/setup.bash
				
			
  1. Погледајте листу доступних тема. 
				
					ros2 topic list
				
			
  1. Кључне теме које бисте могли видети:
    • /rtcmОбјављује RTCM податке о корекцији (mavros_msgs/RTCM или rtcm_msgs/Message, у зависности од конфигурације).
    • /nmeaПретплаћује се на локалне NMEA реченице, прослеђујући их серверу.
    • /ublox_gps_node/fixТакође може да прослеђује податке о глобалној позицији ако већ нису у NMEA формату.
  1. Ако је све урађено исправно, успешно, видећете да је чвор објавио RTCM исправке на /rtcm тема. Коришћење ntrip_client Node, можете интегрисати RTCM податке о корекцији у свој ROS 2 пројекат како бисте омогућили прецизно позиционирање помоћу RTK пријемника.
				
					ros2 topic echo /rtcm
				
			
  1. Користећи овај чвор, можете интегрисати RTCM податке о корекцији у ваш ROS 2 пројекат како бисте омогућили прецизно позиционирање помоћу RTK пријемника.

Креирање комбинованог пакета за лансирање

Направићемо посебан пакет који садржи једну датотеку за покретање оба , ублокс_гпс чвор (објављивање GPS података) и ntrip_client чвор (који обрађује RTK корекције) истовремено. Овај приступ одржава ваш радни простор организованим и олакшава покретање свих потребних чворова једном командом.

  1. Отворите нови терминал, идите до вашег ROS2 радног простора и креирајте нови пакет. За нанодатотеку за покретање засновану на Пајтону, покрените команде:
				
					cd ~/ros2_ws/src
ros2 pkg create combined_rtk --build-type ament_python
				
			
  1. Направите директоријум за покретање и датотеку за покретање Пајтона унутар новог пакета.
				
					mkdir -p combined_rtk/launch
nano ~/ros2_ws/src/combined_rtk/launch/combined_nodes.launch.py
				
			
  1. Копирајте код из примера испод и налепите га у датотеку. Код ради следеће:
  • ублокс_гпс Чвор: Објављује сирове ГПС податке са вашег ArduSimple уређај.
  • ntrip_client Чвор: Повезује се са NTRIP caster/сервер и објављује RTCM исправке на /rtcm (а такође се можете претплатити на /nmea или /fix ако је потребно).
  • Шебанг (#!/usr/bin/env python3) – Обезбеђује да се датотека покреће као Пајтон скрипта.
  • Опис покретања – Дефинише које чворове треба покренути.
  • Чвор параметри – Поставља параметре специфичне за чвор (нпр. уређај, хост, порт, аутентификација).
				
					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
    ])

				
			
  1. Уредите датотеку уметањем вашег NTRIP акредитиве (хост, пошта, корисничко име, лозинка, тачка монтирања) и сачувајте датотеку.
  1. отворен пацкаге.кмл.
				
					cd ~/ros2_ws/src/combined_rtk/
nano package.xml
				
			
  1. Уверите се да имате зависности попут ublox_gps, ntrip_client, launch_ros, итд. у вашем пацкаге.кмлАко их немате, копирајте их из кода испод и налепите у датотеку.
				
					<exec_depend>ublox_gps</exec_depend>
<exec_depend>ntrip_client</exec_depend>
<exec_depend>launch_ros</exec_depend>
				
			
  1. отворен сетуп.пи.
				
					nano  ~/ros2_ws/src/combined_rtk/setup.py
				
			
  1. Копирајте код испод и налепите га у сетуп.пи датотеку да бисте укључили датотеке за покретање и зависности. Затворите датотеку и сачувајте измене.
				
					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': [
        ],
    },
)

				
			
  1. Учините датотеку за покретање извршном.
				
					cd ~/ros2_ws/src
chmod +x combined_rtk/launch/combined_nodes.launch.py
				
			
  1. Вратите се у корен радног простора, направите нови пакет и набавите инсталациону датотеку:
				
					cd ~/ros2_ws
colcon build
source install/setup.bash

				
			
  1. Покрените оба ублокс_гпс ntrip_client Чворови са једном командом:
				
					ros2 launch combined_rtk combined_nodes.launch.py
				
			
  1. Требало би да видите логове са оба чвора у вашем терминалу, што указује на следеће:
    • ублокс_гпс чита GPS податке са наведеног уређаја (нпр. /dev/tty_Ardusimple).
    • ntrip_client је повезан са вашим NTRIP сервер и објављивање RTCM корекција на /rtcm (и могуће претплата на /nmea ако је конфигурисано).
    Beleška: Када користите ову датотеку за покретање, није потребно ручно покретати u-blox NTRIP чворове одвојено — покретање ће аутоматски покренути оба чвора. Не затварајте овај терминал за покретање ако желите да прегледате теме или услуге које пружају ови чворови.
  1. Да бисте комуницирали са покренутим чворовима, не заустављајте стрим. Отворите нови терминал и иницијализујте радни простор.
				
					source ~/ros2_ws/install/setup.bash
				
			
  1. Да бисте проверили теме, услуге и статус уређаја, отворите нови терминал и иницијализујте:
				
					source install/setup.bash
				
			
  1. Погледајте листу тема. 
				
					ros2 topic list
				
			
  1. Моћи ћете да видите /ublox_gps_node/fix, /rtcm, или други.
  1. Погледајте Ехо ГПС података.
				
					ros2 topic echo /ublox_gps_node/fix
				
			
  1. Ово приказује GPS податке у реалном времену. Да бисте зауставили пренос, притисните Цтрл + Ц.
  1. ублокс_гпс Нод објављује дијагностику на тему као што је /дијагностика. Да бисте проверили дијагностичке информације:
				
					ros2 topic echo /diagnostics
				
			
  1. Укључује статусне поруке као што су хоризонтална тачност, вертикална тачност и „3Д фиксирање“ када пријемник има валидну позицију или „фиксирање није у реду“ када ГПС још није правилно фиксиран.

  1. Кључни савети за проверу статуса поправке:
    • Надгледати /ublox_gps_node/fix у NavSatFix порукама (поље status.status) или дијагностичким порукама за детаљније текстуалне статусе.
    • /дијагностика Тема често пружа читљив резиме попут „3Д поправка“.
    • употреба /ublox/navpvt да бисте добили детаљне информације:
      • Поље fix_type треба да буде 3 за 3D фиксирање.
      • Поље за заставице треба да означава да се користе исправке.
      • Поље flags2 садржи RTK статус: 67 RTK Float, 128 RTK Fix. Ако је вредност знатно нижа, вероватно значи да се не примењују RTK корекције.
    • Уверите се да ваша антена има јасан поглед на небо и ваше NTRIP caster акредитиви су исправни за постизање стабилне RTK фиксације.

Ако желите да пратите овај водич, имамо све производе на лагеру и спремни за испоруку:

Ако вам се допао овај садржај, можете нас пратити даље Twitter, You Tube, Facebook or ЛинкедИн да будете у току са оваквим садржајем.

Имате питања или захтеве?
Контактирајте нас! Одговорићемо <24 сата!

Икона
Контакт ArduSimple
близу

Желите да сазнате више о ГПС/РТК?

1. Наш инжењерски тим ће вас контактирати да реши сва питања
2. Обавештаваћемо вас о промоцијама и новим издањима производа
3. Чућете се само када имамо важне вести, нећемо слати нежељену е-пошту