一:编译
1. 确保上位机中已经安装好了QT5,编译需要QT5中的 Core、Network等功能包
2.安装libzip功能包
在libzip官网下载源文件(https://libzip.org/download/), 之后按照官网教程编译。3.编译ros功能包
在/V2-ROS-SDK-service路径下(与/src同级)使用指令catkin_make编译。
二:运行
运行ROS示例前,若相机中已经部署ROS主从,需先关闭ROS主从相关设置,否则会因ROS产生相关通讯异常。若相机中有ROS环境,需上电后等待约20s左右,再运行ROS示例程序。 ROS节点创建步骤:-
进入示例程序代码文件目录
home/username/V2_ROS_SDK, 在与src文件夹同级下运行指令 - catkin_make
- source devel/setup.bash
三:ROS话题接口
根据功能分类如下: 建图阶段:- 建图使能接口
- 接收建图状态接口
- 接收建图进度接口
-
重定位接口
- 接收定位状态接口
- 切换地图接口
- 设置参数接口
- 获收当前相机已使用硬盘空间接口
- 接收当前出现故障的模块名
- 下载轮廓地图接口 (仅激光轮廓)
- 上传地图文件zip接口(new)
接收定位位姿接口
- ROS持续接收从相机发出的定位值x, y, theta。
-
发布定位值x, y 和四元数(由theta转换而来)到topic:
LxCamera_LocationPoseResult - 将定位值和四元数通过TF变换广播出去
接收定位状态接口
-
ROS持续接收**(频率:1s)**从相机发出的定位定位状态“
true/false”,代表当前是否正常定位。 -
ROS将定位状态(
std_msgs::Bool类型的数据)发布到topic:LxCamera_LocationResult - 可通过订阅Topic来获得定位状态(当前是否定位成功)
接收当前相机已使用硬盘空间接口
- ROS持续接收**(频率:2s)**从相机发出的存储空间使用占比。
-
ROS将占用状态(
std_msgs::Float32类型的数据)发布到topic:LxCamera_Capacity_Status - 可通过订阅Topic来获得占用状态占比
接收当前出现故障的模块名
- ROS持续从相机发出的错误模块名。
-
ROS将占用状态(
std_msgs::String类型的数据)发布到topic:LxCamera_Module_Error - 可通过订阅Topic来获得异常模块名字
接收建图状态接口
- 开始建图后
-
ROS将定位状态(
std_msgs::Bool类型的数据)发布到topic:LxCamera_MappingState - 可通过订阅Topic来获得建图状态的切换
接收建图进度接口
- 开始建图后
-
ROS2将定位状态(
std_msgs::Int32类型的数据)发布到topic:LxCamera_Mapping_Progress - 可通过订阅Topic来获得建图进度 (0-100)
设置参数接口
-
用户发布
std_msgs/String类型消息到topic:LxCamera_SetParam -
消息格式为9个浮点数,使用英文逗号“,”分割,分别代表:
x,y,z,yaw,pitch,roll,x,y,yaw,前6个参数是相机的位姿,后3个是激光雷达的位姿。 -
修改成功后,相机路径
/home/fr1511b/hontai/params/config_install_FL21500HAF.ini文件中[Laser1]和[Camera1]中的相关参数会被设置,示例:
切换地图接口
-
用户发布
std_msgs/String类型消息到topic:LxCamera_SwitchMap - 消息格式为一个地图名称(前提是在相机中已经建图完成)
- 如果相机的网页中显示的地图已经变化(刷新网页),则切换成功。
上传里程计
- 用户发布
nav_msgs::Odometry类型数据到topic:/sim/odom(可修改)
下载轮廓地图接口
-
用户发布
std_msgs/String类型消息到topic:LxCamera_DownloadMap - 消息格式为一个保存地址和一个地图名称,使用英文逗号“,”分割。地址是上位机中的地址,使用绝对路径;地图名是相机中已经完成建图的“.zip”格式的文件名。
-
成功后,你上位机指定的路径下会有一个指定地图名称的压缩包,解压后得到一个
pgm地图文件和一个yaml配置文件。
上传地图文件zip接口(new)
-
用户发布
std_msgs/String类型消息到topic:LxCamera_UploadMapZip - 消息内容为需要上传的地图压缩包路径, 例如:“/home/fr1511b/map.zip” ,需上传 由下载接口下载下来的压缩包
-
如果找到地图文件则打包后发送到相机,相机接收后会解压到指定的路径:
/home/fr1511b/hontai/map/
重定位接口
-
用户发布
geometry_msgs::PoseWithCovarianceStamped类型的数据到topic:LxCamera_UploadReloc -
数据为激光位姿,包含:
x,y,yaw - 相机网页上显示的本体位置更新为发送的位置则重定位成功。
测试时四元数有约束要求,不可随意填写。可使用网页工具将欧拉角yaw转换成四元数xyzw
ROS服务接口:
建图、切换地图、下载地图、重定位四个功能在使用上述话题(ROS TOPIC)实现的同时,也支持使用服务(ROS SERVICE)接口来通信,并反馈服务响应结果(操作是否成功),相较于TOPIC,推荐优先使用以下的服务接口- 通过rosservice指令订阅服务接口
- 如果返回“true”则代表操作成功, 返回“false”代表操作失败
- 建图
- 退出建图
- 增量建图(即在已有地图增量建图并自动合并)
- 重定位接口
- 切换地图
- 获取当前地图名
- 下载地图
- 获取当前地图列表
- 删除地图
- 下载热力图
建图
服务名称:/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
服务格式定义: