跳转到主要内容

概述

本文介绍 V2 定位模块 lx_camera_ros 的 ROS2 话题与服务接口。

编译

安装 Qt5 的 Core 和 Network 组件。不同 Linux 发行版的安装方式可能不同;以下为 Ubuntu 示例:
从 libzip 下载页 获取 libzip 源码,并按官方说明编译。 在 /lx_camera_ros 目录执行:

运行

修改 YAML 配置文件后,必须重新编译,修改才会生效。

ROS2 话题接口

测试接口前,请确认相机已上电并等待约 30 秒,且 ROS2 SDK 节点已启动。

接收定位位姿接口

ROS2 持续接收相机发送的定位值 x、y、theta,并将定位值及由 theta 转换得到的四元数发布至 LxCamera_LocationPoseResult。该位姿会通过 TF 广播。

接收定位状态接口

ROS2 以 1 Hz 接收相机发送的定位状态(true/false),并以 std_msgs::msg::Bool 发布至 LxCamera_LocationResult。

接收当前相机已使用空间接口

ROS2 以 2 Hz 接收相机发送的存储空间使用占比,并以 std_msgs::msg::Float32 发布至 LxCamera_Capacity_Status。

接收当前出现故障的模块名字

ROS2 接收相机发送的故障模块名称,并以 std_msgs::msg::String 发布至 LxCamera_Module_Error。

接收建图进度接口

开始建图后,ROS2 以 std_msgs::msg::Int32 将建图进度(0–100)发布至 LxCamera_Mapping_Progress。

接收建图状态接口

开始建图后,ROS2 以 std_msgs::msg::Bool 将建图状态发布至 LxCamera_MappingState。

设置参数接口

向 LxCamera_SetParam 发布 std_msgs::msg::String 消息。消息包含 9 个以英文逗号分隔的浮点数:x,y,z,yaw,pitch,roll,x,y,yaw。前 6 个为相机位姿,后 3 个为 LiDAR 位姿。设置成功后,会更新 /home/fr1511b/hontai/params/config_install_FL21500HAF.ini 中 [Laser1] 和 [Camera1] 的相关参数。

切换地图接口

向 LxCamera_SwitchMap 发布 std_msgs::msg::String 消息,内容为已完成建图的地图名称。刷新相机 Web 前端后,若当前地图名称已更新,则表示切换成功。

下载地图接口

  1. 用户发布std_msgs::msg::String类型消息到topic:LxCamera_DownloadMap
  2. 消息格式为字符串,包含两个字段:save_path表示保存地址(上位机中的地址,使用绝对路径),mapname表示地图名称(相机中已经完成建图的”.zip”格式的文件名)
  3. 成功后,你上位机指定的路径下会有一个指定地图名称的压缩包,解压后得到一个pgm地图文件和一个yaml配置文件

上传里程计接口

  1. 用户发布nav_msgs::msg::Odometry类型数据到topic:/sim/odom (可修改)

重定位接口

  1. 用户发布geometry_msgs::msg::PoseWithCovarianceStamped类型的数据到topic:LxCamera_UploadReloc
  2. 数据为激光位姿,包含:x,y,yaw
  3. 相机网页上显示的本体位置更新为发送的位置则重定位成功
平面运动且 Roll、Pitch 为零时,将 yaw 以弧度代入:x = 0、y = 0、z = sin(yaw / 2)、w = cos(yaw / 2)。按 xyzw 顺序传入单位四元数。

报文类型前缀

上位机使用 UDP 与相机通信。发送报文的前 4 个字节为类型前缀,用于区分接口数据类型:

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 服务格式定义:
指令调试: