跳转到主要内容

编译

安装 Qt5 的 Core 和 Network 组件。不同 Linux 发行版的安装方式可能不同;以下为 Ubuntu 示例:
安装 libzip。从 libzip 下载页 获取源码,并按官方说明编译。 在 /V2-ROS-SDK-service 目录(与 src 同级)编译 ROS 功能包:

运行

若相机已部署 ROS 主从配置,请先关闭相关设置,否则可能发生通信异常。相机上电后等待约 20 秒,再启动 ROS 示例程序。
在 home/username/V2_ROS_SDK 目录中(与 src 同级)执行:

ROS 话题接口

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

接收定位位姿接口

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

接收定位状态接口

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

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

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

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

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

接收建图状态接口

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

接收建图进度接口

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

设置参数接口

向 LxCamera_SetParam 发布 std_msgs/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/String 消息,内容为已完成建图的地图名称。刷新相机 Web 前端后,若当前地图名称已更新,则表示切换成功。

上传里程计

  1. 用户发布nav_msgs::Odometry类型数据到topic:/sim/odom (可修改)
rostopic pub /odom nav_msgs/Odometry “header: seq: 0 stamp: secs: 0 nsecs: 0 frame_id: ‘odom’ child_frame_id: ‘base_link’ pose: pose: position: x: 1.0 y: 2.0 z: 0.0 orientation: x: 0.0 y: 0.0 z: 0.0 w: 1.0 covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] twist: twist: linear: x: 0.5 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.1 covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]“

下载轮廓地图接口

  1. 用户发布std_msgs/String类型消息到topic:LxCamera_DownloadMap
  2. 消息格式为一个保存地址和一个地图名称,使用英文逗号“,”分割。地址是上位机中的地址,使用绝对路径;地图名是相机中已经完成建图的“.zip”格式的文件名。
  3. 成功后,你上位机指定的路径下会有一个指定地图名称的压缩包,解压后得到一个pgm地图文件和一个yaml配置文件。

上传地图文件zip接口(new)

  1. 用户发布std_msgs/String类型消息到topic:LxCamera_UploadMapZip
  2. 消息内容为需要上传的地图压缩包路径, 例如:“/home/fr1511b/map.zip” ,需上传 由下载接口下载下来的压缩包
  3. 如果找到地图文件则打包后发送到相机,相机接收后会解压到指定的路径:/home/fr1511b/hontai/map/

重定位接口

  1. 用户发布geometry_msgs::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 顺序传入单位四元数。

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 服务格式定义:
指令调试: rosservice call /lx_localization_node/LxCamera_ExitMapping_srv “exit_mapping: true”

删除地图

服务名称:/lx_localization_node/LxCamera_EraseMap_srv 服务格式定义:
指令调试:

下载热力图

服务名称:/lx_localization_node/LxCamera_DownloadMap_srv 服务格式定义:
指令调试: rosservice call /lx_localization_node/LxCamera_DownloadHeatMap_srv “mapname: ‘TEST_999’ save_path: ‘/home/fr1511b/T/TEST‘“

增量建图

服务名称:/lx_localization_node/LxCamera_IncMapping_srv 服务格式定义:
指令调试: