Перейти к основному содержанию

Обзор

На этой странице описаны топики и сервисы ROS2, предоставляемые lx_camera_ros в модуле локализации V2.

Компиляция

Установите компоненты Qt5 Core и Network. Команды установки зависят от дистрибутива Linux; в следующем примере используется Ubuntu:
Загрузите исходный код libzip со страницы загрузки libzip и скомпилируйте его в соответствии с официальной инструкцией. Выполните следующую команду из /lx_camera_ros:

Запуск

После изменения файла конфигурации YAML выполните компиляцию повторно. Изменения вступят в силу только после пересборки проекта.

Интерфейсы топиков ROS2

Перед проверкой интерфейса включите камеру, подождите около 30 секунд и запустите узел ROS2 SDK.

Получение позы локализации

ROS2 непрерывно получает от камеры значения x, y и theta, публикует эти значения и кватернион, преобразованный из theta, в LxCamera_LocationPoseResult, а также передает позу через TF.

Получение состояния локализации

ROS2 получает состояние локализации камеры (true или false) с частотой 1 Гц и публикует его как std_msgs::msg::Bool в LxCamera_LocationResult.

Получение информации об использовании хранилища камеры

ROS2 получает коэффициент использования хранилища камеры с частотой 2 Гц и публикует его как std_msgs::msg::Float32 в LxCamera_Capacity_Status.

Получение имени неисправного модуля

ROS2 получает от камеры имя неисправного модуля и публикует его как std_msgs::msg::String в LxCamera_Module_Error.

Получение хода построения карты

После начала построения карты ROS2 публикует ход выполнения (0–100) как std_msgs::msg::Int32 в LxCamera_Mapping_Progress.

Получение состояния построения карты

После начала построения карты ROS2 публикует его состояние как std_msgs::msg::Bool в LxCamera_MappingState.

Задание параметров

Опубликуйте сообщение std_msgs::msg::String в LxCamera_SetParam. Сообщение содержит девять чисел с плавающей точкой, разделенных запятыми: x,y,z,yaw,pitch,roll,x,y,yaw. Первые шесть значений задают позу камеры, последние три — позу LiDAR. После успешного обновления соответствующие значения в разделах [Laser1] и [Camera1] файла /home/fr1511b/hontai/params/config_install_FL21500HAF.ini обновляются.

Переключение карт

Опубликуйте в LxCamera_SwitchMap сообщение std_msgs::msg::String с именем готовой карты. Обновите веб-интерфейс камеры. Если отображаемое имя карты изменилось, переключение выполнено успешно.

Загрузка карты

  1. Опубликуйте сообщение std_msgs::msg::String в LxCamera_DownloadMap.
  2. Сообщение содержит два поля: save_path — абсолютный путь на хост-компьютере, а mapname — имя файла .zip готовой карты на камере.
  3. После успешной загрузки по указанному пути на хост-компьютере появится архив карты. Распакуйте его, чтобы получить файл карты PGM и файл конфигурации YAML.

Передача одометрии

Опубликуйте данные nav_msgs::msg::Odometry в /sim/odom (топик можно изменить).

Повторная локализация

  1. Опубликуйте данные geometry_msgs::msg::PoseWithCovarianceStamped в LxCamera_UploadReloc.
  2. Поза содержит позу LiDAR: x, y и yaw.
  3. Повторная локализация выполнена успешно, если позиция в веб-интерфейсе камеры обновилась до отправленной позы.
Кватернионы имеют ограничения, поэтому их нельзя заполнять произвольно. Используйте конвертер угла Эйлера в кватернион, чтобы преобразовать угол Euler yaw в значения кватерниона xyzw.

Префиксы типов сообщений

Хост-компьютер взаимодействует с камерой по UDP. Первые четыре байта каждого сообщения определяют тип данных интерфейса:

Интерфейсы сервисов ROS2

Построение карт, переключение карт, загрузка карт и повторная локализация также доступны через сервисы ROS2. Ответ сервиса true означает успех, а false — ошибку.
Используйте ros2 service call для следующих команд. Имена карт не должны начинаться с цифры и не должны превышать 30 символов.

Построение карты

Имя сервиса: /LxCamera_Mapping_srv Определение сервиса:
Вызов сервиса:

Переключение карт

Имя сервиса: /LxCamera_SwitchMap_srv Определение сервиса:
Вызов сервиса:

Загрузка карты

Имя сервиса: /LxCamera_DownloadMap_srv Определение сервиса:
Вызов сервиса:

Повторная локализация

Имя сервиса: /LxCamera_UploadReloc_srv Определение сервиса:
Вызов сервиса:

Получение имени текущей карты

Имя сервиса: /LxCamera_GetCurMapname_srv Определение сервиса:
Вызов сервиса:

Получение списка текущих карт

Имя сервиса: /LxCamera_GetMapList_srv Определение сервиса:
Вызов сервиса:

Выход из режима построения карты

Имя сервиса: /LxCamera_ExitMapping_srv Определение сервиса:
Вызов сервиса:

Удаление карты

Имя сервиса: /LxCamera_EraseMap_srv Определение сервиса:
Вызов сервиса:

Загрузка тепловой карты

Имя сервиса: /LxCamera_DownloadHeatMap_srv Определение сервиса:
Вызов сервиса:

Инкрементальное построение карты

Имя сервиса: /LxCamera_IncMapping_srv Определение сервиса:
Вызов сервиса: