概述
本文介绍 V2 定位模块lx_camera_ros 的 ROS2 话题与服务接口。
编译
安装 Qt5 的 Core 和 Network 组件。不同 Linux 发行版的安装方式可能不同;以下为 Ubuntu 示例: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 前端后,若当前地图名称已更新,则表示切换成功。
下载地图接口
- 用户发布
std_msgs::msg::String类型消息到topic:LxCamera_DownloadMap - 消息格式为字符串,包含两个字段:save_path表示保存地址(上位机中的地址,使用绝对路径),mapname表示地图名称(相机中已经完成建图的”.zip”格式的文件名)
- 成功后,你上位机指定的路径下会有一个指定地图名称的压缩包,解压后得到一个
pgm地图文件和一个yaml配置文件
上传里程计接口
- 用户发布
nav_msgs::msg::Odometry类型数据到topic:/sim/odom(可修改)
重定位接口
- 用户发布
geometry_msgs::msg::PoseWithCovarianceStamped类型的数据到topic:LxCamera_UploadReloc - 数据为激光位姿,包含:
x,y,yaw - 相机网页上显示的本体位置更新为发送的位置则重定位成功
平面运动且 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
服务格式定义: