Skip to main content

前言

本文介绍视觉定位模块的软件架构、ROS SDK配置方法,以及基本的建图和定位操作流程。
前言相关图示
本定位模块示意图如上所示。其中,相机内置的定位程序与上位机的ROS SDK 采用UDP 进行交互。此外,定位程序自带一个可配置且能实现定位可视化的WEB 前端(可以使用任意主流浏览器打开,默认访问IP 为192.168.100.201:9998)。该前端主要有两个作用:
  1. 运行完整的DEMO 以完成建图与定位流程;
  2. 配置与ROS SDK 通讯的目标ID 与PORT。同理,ROS SDK 在启动前也必须配 置好目标相机的IP 与PORT。
完成上述配置后,可通过ROS SDK 调用建图、重定位、下载地图等所有WEB 前端界面具备的功能。

编译

程序运行环境配置

1. 安装QT 确保上位机中已经安装好了QT5,需要QT5 中的 Core、Network 等功能包,不同linux 版本安装方式可能不同,在此提供安装示例:
sudo apt install qtbase5-dev qtbase5-dev-tools libqt5network5
2. 安装libzip 功能包 安装教程 https://blog.csdn.net/iamhuanyu/article/details/129603632 3. 编译ROS功能包。在/V2-ROS-SDK-service路径下(与/src同级)运行catkin_make

运行

1. 进入到/V2-ROS-SDK-service路径下
运行相关图示
2. 确认配置文件 a. 确认ROS SDK 文件配置 配置文件目录/V2-ROS-SDK-service/src/lx_camera_ros/launch/mapping.launch
运行相关图示 2
相机默认ip 为192.168.100.201(如果需要改变相机IP,请使用相机出厂上位机进行修改,并在此作对应修改IP),端口固定填写8001。 b. 确认相机与电脑处于同一网段,连接至同一个交换机上。 c. 确认相机程序配置正确,进入WEB 点击参数配置,
运行相关图示 3
点击左侧菜单栏的“参数配置”按扭,弹出如下窗口,
运行相关图示 4
将portCode 改为8987(一般固定为该值),将portName 改为本机与相机连接的网口IP(即运行ROS SDK 上位机的网卡IP) 3. 启动ROS节点
source devel/setup.bash
roslaunch lx_camera_ros mapping.launch
启动后显示如下图所示,则表示启动成功。
运行相关图示 5

调试

1. ROS 调试方式 打开新终端,进入/V2-ROS-SDK-service路径并运行source devel/setup.bash,然后开始调试。 a. 订阅消息 例:获取当前相机存储空间占用 进入调试后,在终端运行rostopic echo /lx_localization_node/LxCamera_Capacity_Status 收到如下消息则表示整个通讯链路正常,同时该消息也可作为心跳包使用,频率为2hz
调试相关图示
2. 调用服务接口 例: 查看当前选择地图名 在终端运行rosservice call /lx_localization_node/LxCamera_GetCurMapname_srv "get_cur_mapname: true" 收到如下消息则表示整个通讯链路正常,返回消息为当前地图名。
调试相关图示 2

基本操作流程

将相机通电,等待约30s 后,再启动数据转发节点开始使用。 进入调试终端 1.下发建图指令 rosservice call /lx_localization_node/LxCamera_Mapping_srv “status: true mapname: ‘test_map’” 该指令用于开始一个建图任务,会准备创建一个”test_map”为名字的地图,下发成功返回true,此时可以拉动小车扫图。
基本操作流程相关图示
2.下发结束建图指令 rosservice call /lx_localization_node/LxCamera_Mapping_srv “status: false mapname: ‘test_map’” 该指令用于结束一个建图任务,下发成功后返回true,此时等待建图结束即可收到返回值。
基本操作流程相关图示 2
3.建图完成后等待片刻,切换至新建地图的名字 rosservice call /lx_localization_node/LxCamera_SwitchMap_srv “map_name:“test_map’” 4.切完图后下发重定位消息即可 rosservice call /lx_localization_node/LxCamera_UploadReloc_srv “pose: header: seq: 0 stamp: secs: 0 nsecs: 0 frame_id: ‘map’ pose: pose: position: x: 4.5 y: -15.5 z: 0.0 orientation: x: 0.0 y: 0.0 z: 0.694658 w: 0.71934 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]” 其中orientation 中的x,y,z,w 为角度的四元数表示方法,请注意格式 5.获取当前的实时定位位置 rostopic echo /lx_localization_node/LxCamera_LocationPoseResult

常见问题与解决方法

1. ROS 程序无法编译 -对依赖库环境检查,确认是否完全安装所有依赖库 2.ROS SDK发送消息无回复 -确认相机与本机处于同网段,或者使用相机上位机能否打开相机查看图像。 -确认相机配置文件无问题,确认ROS 配置文件无问题。 3.ROS 调试消息无法发出 -ROS 消息对格式要求严格,在调试的时候请完全按照指令文档的格式,只对值进行修 改调试。