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

Компиляция

Установите компоненты Qt5 Core и Network. Команды установки зависят от дистрибутива Linux; в следующем примере используется Ubuntu:
Загрузите и скомпилируйте libzip со страницы загрузки libzip в соответствии с официальной инструкцией. Скомпилируйте пакет ROS из /V2-ROS-SDK-service, расположенного на одном уровне с src:

Запуск

Если на камере включены настройки master/slave ROS, отключите их перед запуском примера ROS. После включения камеры подождите около 20 секунд перед запуском примера.
Выполните следующие команды из home/username/V2_ROS_SDK, расположенного на одном уровне с src:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Опубликуйте сообщение std_msgs/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/String с именем готовой карты. Обновите веб-интерфейс камеры. Если отображаемое имя карты изменилось, переключение выполнено успешно.

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

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

Загрузка контурной карты

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

Загрузка ZIP-файла карты (новое)

  1. Опубликуйте сообщение std_msgs/String в LxCamera_UploadMapZip.
  2. Сообщение содержит путь к архиву карты для загрузки, например /home/fr1511b/map.zip. Используйте архив, загруженный через интерфейс загрузки карт.
  3. Если карта найдена, SDK отправляет ее на камеру. Камера распаковывает ее в /home/fr1511b/hontai/map/.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выход из режима построения карты (пользовательский интерфейс)

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

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

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

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

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

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

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