Обзор
На этой странице описаны топики и сервисы 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 с именем готовой карты. Обновите веб-интерфейс камеры. Если отображаемое имя карты изменилось, переключение выполнено успешно.
Загрузка карты
- Опубликуйте сообщение
std_msgs::msg::StringвLxCamera_DownloadMap. - Сообщение содержит два поля:
save_path— абсолютный путь на хост-компьютере, аmapname— имя файла.zipготовой карты на камере. - После успешной загрузки по указанному пути на хост-компьютере появится архив карты. Распакуйте его, чтобы получить файл карты
PGMи файл конфигурацииYAML.
Передача одометрии
Опубликуйте данныеnav_msgs::msg::Odometry в /sim/odom (топик можно изменить).
Повторная локализация
- Опубликуйте данные
geometry_msgs::msg::PoseWithCovarianceStampedвLxCamera_UploadReloc. - Поза содержит позу LiDAR:
x,yиyaw. - Повторная локализация выполнена успешно, если позиция в веб-интерфейсе камеры обновилась до отправленной позы.
Кватернионы имеют ограничения, поэтому их нельзя заполнять произвольно. Используйте конвертер угла Эйлера в кватернион, чтобы преобразовать угол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
Определение сервиса: