В этом уроке мы объясним, как использовать ArduSimple Приемники RTK для получения точных данных о местоположении в ROS. Мы проведем вас через этапы интеграции ArduSimple RTK-приемник в свой проект ROS, что позволит вам использовать всю мощь точных данных GPS.
Являетесь ли вы энтузиастом робототехники, исследователем или разработчиком, это руководство предоставит вам шаги для доступа к данным позиционирования в ваших приложениях ROS.
Если вы новичок в ROS, мы подготовили краткий tучебник, который поможет начать работу с ROS узнать больше об основных терминах ROS, какую платформу и среду разработки лучше выбрать и т.д.
Если вы ищете руководство по ROS2, пожалуйста, ознакомьтесь с ним. Как интегрировать u-blox ZED-F9P в ROS 2.
Требуемое оборудование:
- simpleRTK2B серийный приемник (в этом уроке мы используем simpleRTK2B Budget)
- Многодиапазонная RTK-антенна (в этом уроке мы используем u-blox GNSS Multiband antenna ANN-MB-00 (IP67))
- USB-кабель совместим с USB-портом вашего приемника для подключения к ПК или встроенной платформе
- Компьютер или встроенная платформа с доступом в Интернет (в этом руководстве мы используем ПК)
Требуемое программное обеспечение:
- Ubuntu 18 или 20 (в этом уроке мы используем Ubuntu 20) изначально установлен на ПК
- ROS (мы используем ROS Noetic).
- Вы можете следовать этим руководствам, чтобы установить ROS:
- используйте ROS Melodic для Ubuntu 18 (проверьте руководство по установке ROS Melodic)
- используйте ROS Noetic для Ubuntu 20 (отметьте руководство по установке ROS Noetic)
Как это работает? ArduSimple Приемники RTK и получать данные GPS в ROS?
Во-первых, подключите и настройте приемник RTK в Ubuntu.
- Подключи РТК антенна . получатель. Место антенна в месте с хорошим видом на небо или рядом с окном для проверки работоспособности.
- Подключите ваш получатель к ПК через порт USB с надписью «POWER+GPS".
- Ваш ресивер должен быть настроен автоматически. Чтобы убедиться в этом, откройте Терминал и введите команду:
ls /dev/tty*
- Вы увидите «/dev/ttyACM0» был создан автоматически.
- Чтобы проверить поток с вашего RTK-приемник, используйте команду:
sudo cat /dev/ttyACM0
- Входной поток GPS выглядит примерно так:
- Press Ctrl + C чтобы отменить просмотр потока.
- Чтобы предотвратить RTK-приемник начиная с другого "ttyACM*» каждый раз, когда он включен, создайте правило udev (динамическая ссылка), которое создает запись с определенным именем, добавляя следующий файл перед подключением RTK-приемник.
sudo nano /etc/udev/rules.d/50-ardusimple.rules
- Введите в правило следующий текст:
KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a9", SYMLINK="tty_Ardusimple", GROUP="dialout", MODE="0666"
- Press Ctrl + X чтобы выйти из файла и нажмите Y сохранить измененный буфер.
- Теперь всякий раз, когда RTK-приемник подключен, он будет доступен из «/dev/tty_Ardusimple связь. Чтобы проверить это, отключите RTK-приемник (выключить и снова включить) и введите команды:
sudo service udev reload
sudo service udev restart
sudo udevadm trigger
ls /dev/
- Теперь ты видишь это «tty_ArduSimple был создан.
- Чтобы использовать программу U-center в Ubuntu, установите Wine. Это набор библиотек Linux, которые позволяют запускать многие приложения Windows в дистрибутивах Linux (в частности, в Ubuntu).
Это не делает программное обеспечение U-center полностью совместимым, но его можно использовать в случае, если вы хотите проверить состояние или конфигурацию вашего RTK-приемник.
Для установки Wine (установка может длиться 2-3 минуты) используйте команду:
sudo apt install wine64 //if Ubuntu is installed natively
sudo apt install wine32 //if you run Ubuntu on a virtual machine
- После установки Wine можно установить U-Center в Ubuntu, как если бы это была Windows. Откройте веб-браузер Firefox и загрузите программу U-Center с официального сайта: https://www.u-blox.com/en/product/u-center.
- Как только u-center загружен, перейдите в папку «Загрузки» и распакуйте u-center на рабочем столе.
- Чтобы начать установку u-center программное обеспечение, введите команду:
cd ~/Desktop/
wine ./u-center_v22.07.exe
- Установите u-center как будто вы находитесь в Windows, выполнив шаги установки.
- Чтобы создать COM1 порт, открытый Терминал и введите следующую команду, чтобы создать ссылку на RTK-приемник в папке «~/.wine/dosdevice».
ln -sf /dev/tty_Ardusimple ~/.wine/dosdevices/com1
- Закрыто u-center если он у тебя открыт. Открыть u-center.
- Подключитесь к вашему RTK-приемник in u-center путем нажатия Ctrl + 1 .
- Вы увидите зеленый свет в левом углу и данные с вашего приемника RTK, как показано ниже.
Во-вторых, запустите RTK Receiver в ROS.
- Создайте папку с рабочими пространствами. Если у вас его нет, вы можете сделать это с помощью команд:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
- Загрузите и установите пакеты ROS внутри src. В этом уроке мы будем загружать пакеты из https://github.com/KumarRobotics/ublox который будет публиковать информацию ROS. Это работает с этой версией 1.1.4. Вы можете использовать последние выпуски, но некоторые шаги могут потребоваться изменить. Введите команды:
cd ~/catkin_ws/src
git clone https://github.com/KumarRobotics/ublox
cd ~/catkin_ws
rosdep install --from-paths src --ignore-src -r -y
- Вы увидите в Терминале:
#Все необходимые rosdeps успешно установлены
- Скомпилируйте программу, чтобы иметь возможность ее выполнить.
catkin_make
source ~/catkin_ws/devel/setup.bash
- При выполнении setup.bash выбираем рабочую область работы и обновляем доступные программы в ROS.
- Чтобы иметь контроль над сообщениями, которые будут опубликованы в ArduSimple вы можете изменить yaml (файл конфигурации), который узел будет использовать для связи с ros.
Этот узел имеет несколько тестовых файлов конфигурации, вы можете изменить значения этого, изменив файлы, расположенные в следующем каталоге:
cd ~/catkin_ws/src/ublox/ublox_gps/config
- Учитывая, что u-blox модель внутри Ardusimple это Зед_f9p, мы модифицируем файл с тем же именем. Чтобы открыть редактор, мы можем использовать следующую команду:
nano zed_f9p.yaml
Измените адрес устройства на «/dev/tty_Ardusimple чтобы убедиться, что он всегда идет к RTK-приемник:
device: /dev/tty_Ardusimple
frame_id: gps
uart1:
baudrate: 9600 //Change the baudrate value to the value set in U-Center.
config_on_startup: false
Закрыто u-center потому что РОС и u-center не бегайте вместе.
- Чтобы запустить узел ROS, используйте программу запуска, расположенную в следующей папке:
cd ~/catkin_ws/src/ublox/ublox_gps/launch
- Чтобы убедиться, что он есть в списке, введите команду:
ls
- Файлы запуска ROS упростить процесс запуска нескольких узлов и настройки их параметров. Файл запуска — это XML-файл, описывающий выполняемые узлы, их параметры и связи между ними. Используя файлы запуска, вы можете запускать несколько узлов с помощью одной команды, что упрощает управление сложными роботизированными системами. Эти файлы имеют расширение «.launch», есть и другие файлы, которые являются файлами конфигурации с расширением «.yaml».
Чтобы запустить файл:
roslaunch
- Файл, который запустит нашу программу, называется «ublox_device.launch».
Этот файл можно изменить по мере необходимости.
Для запуска программы используйте следующую команду:
roslaunch ublox_gps ublox_device.launch param_file_name:=zed_f9p
- Откройте новый Терминал и введите команду:
source ~/catkin_ws/devel/setup.bash
- Узлы ROS при запуске имеют уникальные имена. Чтобы увидеть список имен ROS Node, используйте команду в Терминале:
rosnode list
- Чтобы получить информацию об узлах ROS, например, на какие темы они подписаны или публикуются, вы можете использовать следующую команду:
rosnode info
Например, для получения информации о «информация /ублокс”, используйте команду:
rosnode info /ublox
- Для отображения списка активных Темы РОС которые в настоящее время доступны и публикуются или подписываются на вашу систему ROS, используйте команду.
rostopic list
Вывод списка тем ROS обычно показывает имена тем вместе с их типами сообщений. Эта команда удобна для проверки доступных тем и проверки того, публикуются ли нужные темы или на них подписаны в вашей среде ROS.
- Для просмотра информации о том, кто публикует и подписан на данное сообщение, тип сообщения используйте команду в формате:
rostopic info
- Например, чтобы получить информацию о типе сообщения, издателях и подписчиках темы «/ розаут», выполните команду:
rostopic info /rosout
- Чтобы получить информацию о типе сообщения, издателях и подписчиках темы /ublox/исправить, евыполнить команду:
rostopic info /ublox/fix
- Чтобы увидеть информацию, которая публикуется, используйте команду в формате:
rostopic echo
Чтобы проверить, работает ли это, мы можем подписаться на различные темы, которые создает узел.
Наиболее важные из них «/gps/исправить» (данные в WGS64) и «/ диагностика» (дает нам информацию о статусе GPS). Другие данные могут быть опубликованы в соответствии с конфигурацией, установленной в RTK-приемник.
Например, для наблюдения и мониторинга данных GPS, публикуемых на «/ублокс/исправить» Тема (данные в WGS64), такие как широта, долгота, высота и другая соответствующая информация, для просмотра данных используйте следующую команду:
rostopic echo /ublox/fix
Чтобы прекратить просмотр темы, нажмите Ctrl+С.
- Для просмотра данных, публикуемых на «/ диагностика» который предоставляет информацию о статусе GPS, например о точности среди прочего, используйте команду:
rostopic echo /diagnostics
Чтобы остановить просмотр данных, нажмите Ctrl+С.
- Если вы хотите записать опубликованную по теме информацию в файл, используйте команду:
- для записи данных о местоположении GPS, публикуемых на «/ублокс/исправить» Тема, такая как широта, долгота, высота над уровнем моря среди других:
rostopic echo /ublox/fix > gps_fix_data.txt
- для записи данных о статусе GPS «/ диагностика»:
rostopic echo /diagnostics > gps_diagnostics.txt
Эти команды создают файлы gps_fix_data.txt и gps_diagnostics.txt, где тема будет сохранена. Чтобы остановить запись, нажмите Ctrl + C.
- Чтобы просмотреть информацию, записанную в файлах, выполните:
nano gps_fix_data.txt
nano gps_diagnostics.txt
- Сообщения РОС представляют собой структуры данных, используемые для связи между узлами ROS. Они определяют обмен информацией по теме. Сообщения определяются с использованием формата файла .msg.
Чтобы просмотреть список типов сообщений ROS, используйте команду:
rosmsg list
Для просмотра структуры сообщения используйте команду в формате:
rosmsg show
- Так, например, «sensor_msgs/NavSatFix» — это тип сообщения в ROS, который используется для представления фиксированных данных GPS (глобальной системы позиционирования), таких как широта, долгота, высота над уровнем моря и другие параметры, связанные с положением GPS.
Чтобы увидеть структуру «Sensor_msgs/NavSatFix” сообщение, используйте команду:
rosmsg show sensor_msgs/NavSatFix
- Для просмотра списка активных Услуги РОС которые предоставляют узлам возможность отправлять запросы и получать ответы, используйте команду:
rosservice list
- Для вызова сервиса используйте команду в формате:
rosservice call
Эта служба ответит с результатом.
Например, чтобы получить текущую конфигурацию регистратора u-blox Node, который может быть полезен для отладки и мониторинга, используйте команду:
rosservice info /ublox/get_loggers
Если вы хотите пройти это руководство, у нас есть все продукты на складе и готовы к отправке:
- simpleRTK2B серийный приемник (в этом уроке мы используем simpleRTK2B Budget)
- Многодиапазонная RTK-антенна (в этом уроке мы используем u-blox GNSS Multiband antenna ANN-MB-00 (IP67))
- USB-кабель
и
