掌桥专利:专业的专利平台
掌桥专利
首页

基于WebSocket通信协议定位数据收发系统和定位方法

文献发布时间:2023-06-19 16:06:26



技术领域

本发明涉及通信技术领域,尤其涉及一种基于WebSocket通信协议定位数据收发系统和定位方法。

背景技术

目前主流的UWB定位系统大多数都是采用UWB定位标签来实时获取定位数据的,利用UWB定位标签与UWB定位基站之间的无线局域网通信,根据人员携带的UWB定位标签来解算出人员的活动范围,但是这种定位方法存在穿墙能力弱,动态跳变比较大的特点。

目前,无人机、无人车和机器狗等大多数都需要借助ROS框架来实现自身的导航控制,采用定位基站与定位标签、机载控制器直接通信的方式获得定位数据,这种方法虽然能够获得较高的定位精度,但是不利用多个定位空间的切换定位,且定位数据的动态抖动比较大。

发明内容

针对现有的无人机、无人车和机器狗等使用UWB定位方法存在穿墙能力弱,动态跳变比较大的问题,本发明基于UWB定位数据和ROS话题之间的信息通信要求,采用WebSocket单TCP连接的全双工通信协议,通过Web浏览器发出HTTP请求,实现一次握手操作创建持续的通信连接,允许服务端主动向客户端推送定位数据。通过对Web浏览器进行改进,实现定位数据的前端解析,将解析后的定位数据通过WebSocket通信协议发布ROS话题,无人机、无人车或者机器狗等基于ROS框架的设备均可以订阅UWB定位数据收发平台发布的ROS话题来实现自身的导航定位。

本发明公开了一种基于WebSocket通信协议UWB定位数据收发系统,该系统与UWB定位基站和UWB定位标签共同完成对目标的定位,并实现对定位数据的传输;该系统包括UWB定位数据服务端、UWB定位数据收发平台和UWB定位数据ROS端;UWB定位数据收发平台与UWB定位数据服务端和UWB定位数据ROS端分别相连;UWB定位数据收发平台基于WebSocket通信协议接收UWB定位数据服务端发送的JSON格式的UWB定位数据,UWB定位数据收发平台对接收到的JSON格式的UWB定位数据进行解析,并且基于WebSocket通信协议将解析后的UWB定位数据以ROS话题形式发布到UWB定位数据ROS端。

UWB定位数据收发平台的发送和接收的消息遵守UWB定位数据服务端规定的消息结构;根据UWB定位数据服务端规定的消息结构,UWB定位数据服务端对其产生的消息进行初始化,其产生的消息的类型为JSON对象。

根据UWB定位数据服务端支持的消息结构,UWB定位数据收发平台确定其消息结构,使得UWB定位数据收发平台和UWB定位数据服务端建立通讯连接,二者之间发送的消息结构满足UWB定位数据服务端规定的消息结构。

对目标的UWB定位需要四个UWB定位基站来完成,UWB定位基站对UWB定位标签的定位数据进行测算,UWB定位数据服务端与UWB定位基站通过有线连接方式进行通信,UWB定位标签持续地、周期性地发出超宽带信号,UWB定位基站将UWB信号的飞行时间(TOF,Time ofFlight)上报给UWB定位数据服务端,UWB定位数据服务端根据UWB信号的飞行时间计算出UWB定位标签与四个UWB定位基站的距离,根据该UWB定位标签与四个UWB定位基站的距离构建四个方程,通过求解该四个方程计算出UWB定位标签的位置坐标,并将该位置坐标结果存储到UWB定位数据服务端的MySql等数据库中,便于后续UWB定位数据服务端实时调用。UWB信号的飞行时间是指UWB定位标签发出的UWB信号在UWB定位标签和UWB定位基站之间传输一个来回的时间。

UWB定位数据收发平台与UWB定位数据服务端采用WebSocket通信协议进行通信,UWB定位数据收发平台利用HTTP协议的Upgrade首部字段通知UWB定位数据服务端,从而实现Websocket通信握手。UWB定位数据收发平台与UWB定位数据服务端建立基于Websocket通信协议的通信连接后,采用Websocket数据帧进行数据通信,UWB定位数据服务端以固定频率向UWB定位数据收发平台发送数据,从而实现基于Websocket通信协议的数据通信。

UWB定位数据收发平台包括与UWB定位数据服务端通信的客户端和与UWB定位数据ROS端通信的服务端。UWB定位数据收发平台与UWB定位数据服务端通信时,UWB定位数据收发平台的客户端接收来自UWB定位数据服务端的JSON格式定位数据,对JSON格式的定位数据进行解析,解析出其所包含的定位坐标数据和UWB定位标签ID号,从而区分每一个UWB定位标签对应的定位坐标数据。UWB定位数据收发平台的服务端与UWB定位数据ROS端通信时,UWB定位数据收发平台的服务端以ROS话题形式发送解析后获得的定位坐标数据和UWB定位标签ID号到UWB定位数据ROS端。

基于Websocket通信协议实现UWB定位数据收发平台与UWB定位数据ROS端通信,UWB定位数据ROS端向UWB定位数据收发平台发送连接请求,UWB定位数据收发平台接收到连接请求之后,建立与UWB定位数据ROS端的通信连接通道,UWB定位数据收发平台通过所建立的通信连接通道,与UWB定位数据ROS端进行全双工通信,UWB定位数据收发平台利用其发送功能,完成ROS话题的发布,并向UWB定位数据ROS端发送定位数据,UWB定位数据ROS端在定位数据接收完毕后,UWB定位数据收发平台与UWB定位数据ROS端的通信连接通道保持持续连接。UWB定位数据收发平台基于WebSocket通信协议实现ROS话题订阅功能,可实时订阅UWB定位数据ROS端的定位坐标数据。

本发明公开了利用上述的基于WebSocket通信协议定位数据收发系统进行定位的方法,其对外部控制设备终端进行定位,外部控制设备终端包括基于ROS框架开发的无人机、无人车和机器狗等无人设备,对该外部控制设备终端通过在无人设备上搭载机载电脑或在无人设备外采用远程地面站的方式进行控制。采用机载电脑对外部控制设备终端进行控制时,将UWB定位数据ROS端部署到机载电脑中,机载电脑中部署的UWB定位数据ROS端基于WebSocket通信协议接收来自UWB定位数据收发平台的JSON格式数据,根据JSON格式数据的UWB定位标签ID,机载电脑中部署的UWB定位数据ROS端订阅对应的ROS话题,从而控制对应的外部控制设备终端。采用远程地面站的方式对进行控制时,在远程地面站上部署UWB定位数据ROS端,通过远程地面站中的UWB定位数据ROS端接收来自UWB定位数据收发平台的JSON格式数据,根据JSON格式数据的UWB定位标签ID,远程地面站上部署UWB定位数据ROS端订阅对应的ROS话题,再通过远程地面站与外部控制设备终端的控制器进行通信,远程地面站上部署UWB定位数据ROS端将接收到的定位坐标数据发送到UWB定位标签ID对应的外部控制设备终端上,外部控制设备终端根据接收到的定位坐标数据来对其自身进行控制。UWB定位标签安装于每一个外部控制设备终端上。

本发明的有益效果为:

本发明基于WebSocket通信协议设计的UWB定位数据收发驱动结合了UWB定位数据的WebClient接收功能和UWB定位数据ROS话题WebServer发布功能,使得UWB定位数据可以很便捷地接收并解析,也可以很便捷地转换成ROS话题发布,用于控制外部基于ROS框架开发的设备,适用于多种应用场景。

附图说明

图1为本发明的系统框架结构示意图;

图2为本发明在具体应用过程的系统流程图。

具体实施方式

为了更好的了解本发明内容,这里给出一个实施例。图1为本发明的系统框架结构示意图;图2为本发明在具体应用过程的系统流程图。

图1为本发明的系统框架结构示意图。如图1所示,本发明公开了一种基于WebSocket通信协议UWB定位数据收发系统,该系统与UWB定位基站和UWB定位标签共同完成对目标的定位,并实现对定位数据的传输;该系统包括UWB定位数据服务端、UWB定位数据收发平台、UWB定位数据ROS端;UWB定位数据收发平台与UWB定位数据服务端和UWB定位数据ROS端分别相连;UWB定位数据收发平台基于WebSocket通信协议接收UWB定位数据服务端发送的JSON格式的UWB定位数据,UWB定位数据收发平台对接收到的JSON格式的UWB定位数据进行解析,并且基于WebSocket通信协议将解析后的UWB定位数据以ROS话题形式发布到UWB定位数据ROS端。

UWB定位数据收发平台的发送和接收的消息遵守UWB定位数据服务端规定的消息结构,列举部分UWB定位数据服务端的部分消息结构如下:

根据UWB定位数据服务端规定的消息结构,UWB定位数据服务端对其产生的消息进行初始化,其产生的消息的类型为JSON对象,JSON对象作为数据传输的结构类型,可以很方便的转换成字符串,也可以很方便地把其他对象转换成JSON对象。此外,UWB定位数据收发平台采用标准的ROS话题消息类型,将JSON对象解析后的x、y、z定位数据发布到UWB定位数据ROS端。

根据UWB定位数据服务端支持的消息结构,明确UWB定位数据收发平台的消息结构,使得UWB定位数据收发平台和UWB定位数据服务端建立通讯连接,二者之间发送的消息结构满足UWB定位数据服务端规定的消息结构。因此需要明确UWB定位数据收发平台的消息结构、消息类型等相关结构,现以本实施例的UWB定位数据收发平台的消息结构为例说明如下:

对目标的UWB定位需要四个UWB定位基站来完成,UWB定位基站对UWB定位标签的定位数据进行测算,UWB定位数据服务端与UWB定位基站通过有线连接方式进行通信,UWB定位标签持续地、周期性地发出超宽带信号,UWB定位基站将UWB信号的飞行时间(TOF,Time ofFlight)上报给UWB定位数据服务端,UWB定位数据服务端根据UWB信号的飞行时间计算出UWB定位标签与四个UWB定位基站的距离,根据该UWB定位标签与四个UWB定位基站的距离构建四个方程,通过求解该四个方程计算出UWB定位标签的位置坐标,并将该位置坐标结果存储到UWB定位数据服务端的MySql等数据库中,便于后续UWB定位数据服务端实时调用。UWB信号的飞行时间是指UWB定位标签发出的UWB信号在UWB定位标签和UWB定位基站之间传输一个来回的时间。

UWB定位数据收发平台与UWB定位数据服务端采用WebSocket通信协议进行通信,UWB定位数据收发平台利用HTTP协议的Upgrade首部字段通知UWB定位数据服务端,从而实现Websocket通信握手。UWB定位数据收发平台与UWB定位数据服务端建立基于Websocket通信协议的通信连接后,采用Websocket数据帧进行数据通信,UWB定位数据服务端以固定频率向UWB定位数据收发平台发送数据,从而实现基于Websocket通信协议的数据通信。

UWB定位数据收发平台包括与UWB定位数据服务端通信的客户端和与UWB定位数据ROS端通信的服务端。UWB定位数据收发平台与UWB定位数据服务端通信时,UWB定位数据收发平台的客户端接收来自UWB定位数据服务端的JSON格式定位数据,对JSON格式的定位数据进行解析,解析出其所包含的定位坐标数据和UWB定位标签ID号,从而区分每一个UWB定位标签对应的定位坐标数据。UWB定位数据收发平台的服务端与UWB定位数据ROS端通信时,UWB定位数据收发平台的服务端以ROS话题形式发送解析后获得的定位坐标数据和UWB定位标签ID号到UWB定位数据ROS端。

基于Websocket通信协议实现UWB定位数据收发平台与UWB定位数据ROS端通信,UWB定位数据ROS端向UWB定位数据收发平台发送连接请求,UWB定位数据收发平台接收到连接请求之后,建立与UWB定位数据ROS端的通信连接通道,UWB定位数据收发平台通过所建立的通信连接通道,与UWB定位数据ROS端进行全双工通信,UWB定位数据收发平台利用其发送功能,完成ROS话题的发布,并向UWB定位数据ROS端发送定位数据,UWB定位数据ROS端在定位数据接收完毕后,UWB定位数据收发平台与UWB定位数据ROS端的通信连接通道保持持续连接。UWB定位数据收发平台基于WebSocket通信协议实现ROS话题订阅功能,可实时订阅UWB定位数据ROS端的定位坐标数据。

本发明公开了利用上述的基于WebSocket通信协议定位数据收发系统进行定位的方法,其对外部控制设备终端进行定位,外部控制设备终端包括基于ROS框架开发的无人机、无人车和机器狗等无人设备,对该外部控制设备终端通过在无人设备上搭载机载电脑或在无人设备外采用远程地面站的方式进行控制。采用机载电脑对外部控制设备终端进行控制时,将UWB定位数据ROS端部署到机载电脑中,机载电脑中部署的UWB定位数据ROS端基于WebSocket通信协议接收来自UWB定位数据收发平台的JSON格式数据,根据JSON格式数据的UWB定位标签ID,机载电脑中部署的UWB定位数据ROS端订阅对应的ROS话题,从而控制对应的外部控制设备终端。采用远程地面站的方式对进行控制时,在远程地面站上部署UWB定位数据ROS端,通过远程地面站中的UWB定位数据ROS端接收来自UWB定位数据收发平台的JSON格式数据,根据JSON格式数据的UWB定位标签ID,远程地面站上部署UWB定位数据ROS端订阅对应的ROS话题,再通过远程地面站与外部控制设备终端的控制器进行通信,远程地面站上部署UWB定位数据ROS端将接收到的定位坐标数据发送到UWB定位标签ID对应的外部控制设备终端上,外部控制设备终端根据接收到的定位坐标数据来对其自身进行控制。UWB定位标签安装于每一个外部控制设备终端上。

图2为本发明在具体应用过程的系统流程图。如图2所示,其具体实现步骤如下:

1.环境部署

通过WebSocket通信协议实现UWB定位数据服务端与UWB定位数据ROS端之间的数据交互,需要ROS功能包的支持,首先执行以下命令搭建工作环境,新建ros_web功能包,并对环境进行编译,运行的终端命令如下:

~$mkdir-p catkin_ws/src

~$cd catkin_ws/src

~$catkin_create_pkg ros_web roscpp rospy std_msgs

~$cd catkin_ws/

~$catkin_make

再通过以下命令安装rosbridge_suite,用来构建web与ros之间的websocket,运行的终端命令如下:

~$cd catkin_ws/src

~$sudo apt-get install ros-melodic-rosbridge-suite

接着安装roslibjs,ros2djs,ros3djs功能包,作为辅助交互可视化,运行的终端命令如下:

~$git clone https://github.com/RobotWebTools/roslibjs.git

~$git clone https://github.com/RobotWebTools/ros2djs

~$git clone https://github.com/RobotWebTools/ros3djs

~$cd../

~$catkin_make

2.使用步骤

第一步:在UWB定位数据服务端的配置文件中,设置相应的端口号为4101,url为/position,startup为true,type:根据需求进行设定,同时设置UWB定位数据收发平台的UWB定位数据服务端的IP地址和端口为ws://127.0.0.1:4101/position,设置UWB定位数据收发平台的UWB定位数据ROS端的IP地址和端口为ws://192.168.31.16:9090,UWB定位数据服务端配置如下:

startup:true

UWB定位数据收发平台配置UWB定位数据服务端的IP地址和端口如下:

UWB定位数据收发平台配置UWB定位数据ROS端的IP地址和端口如下:

var ros=new ROSLIB.Ros({

url:'ws://localhost:9090'//UWB定位数据ROS端的IP地址和端口

});

第二步:在UWB定位数据ROS端打开新的终端运行命令:roscore,启动rosmaster主结点,运行成功后会在终端显示:start core service[/rosout]。并打开新的终端运行命令:~$roslaunch rosbridge_serverrosbridge_websocket.launch,建立web与ROS之间的信息交互,运行成功后会在终端显示:Rosbridge WebSocket server started asws://0.0.0.0:9090。再打开Ctrl+Alt+T打开新的终端订阅ROS话题cmd_vel。运行命令:~$rosrun ros_web listener,运行成功后终端会处于监听状态,等待UWB定位数据收发平台发送ROS话题。

第三步:运行UWB定位数据收发平台.html文件,并按F12键进入控制台,刷新页面,显示"与UWB定位数据服务端连接成功[IP:127.0.0.1,端口:4101]"和"与UWB定位数据ROS端连接成功[IP:192.168.31.16,端口:9090]",则表示UWB定位数据ROS端、UWB定位数据服务端都与UWB定位数据收发平台之间建立了WebSocket通信连接,运行成功后会在终端显示UWB定位系统服务端发送的定位数据。

第四步:同时点击Publish按钮,等待数据传入。按钮Subscribe与按钮Unsubscribe用于订阅UWB定位数据ROS端发布的话题。UWB定位数据服务端将逐条发送JSON格式数据,经过UWB定位数据收发平台对JSON格式的数据进行解析后,此时在UWB定位数据ROS端也将逐条订阅ROS话题,接收解析后的UWB定位数据坐标,运行成功后在UWB定位数据ROS端收到解析后的x、y、z定位数据。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

相关技术
  • 基于WebSocket通信协议定位数据收发系统和定位方法
  • 基于收发分离RFID定位系统的RSS差三边定位方法
技术分类

06120114708698