UWB定位引擎源代码 售价: 95000元
定位引擎是一个服务器端程序,使用C++ 17编写。可以作为命令行程序直接运行,也可以安装为 Windows 服务。
经过少许修改后,应该可以运行在 Linux 上。在设计之初,我们就考虑把它写成可以跨平台运行的。在基本功能刚完成的时候,我们曾经编译过一个 Linux 版本在 ubuntu 上运行过。后来随着功能的增加,几乎没有用户有 Linux 运行的需求,所以后来就没有再维护 Linux 版本。
定位引擎的数据处理,大致分为3个部分:接收定位数据包、坐标计算、应用程序接口。
接收定位数据包
使用UDP实现定位引擎自动发现,局域网内的基站会自动与定位引擎建立TCP连接,基站把收到的标签发出的UWB定位数据包发送给定位引擎。定位引擎收到定位数据包后,会把它放入对应区域的消息队列中。定位引擎会为每一个定位区域维护一个消息队列矩阵。
坐标计算
从消息队列中取数据包出来计算坐标。对于多区域,对不同区域的坐标值进行质量评估,选择质量较好的进行输出。
坐标计算的算法至少有两个。项目开始的时候,我们根据某个教授的一篇论文所描述的算法编写了一个算法,后来发现计算结果误差比较大;后来我们自行研究了两种算法:二分法/最小二乘。我们最终的版本使用最小二乘法计算坐标。
应用程序接口
提供了多种方式的应用程序接口。有二进制数据包/文本/json/串口等等。
定位引擎中还使用了一些概念:定位区域/定位基站/标签等,并建立了对应的类。
定位引擎使用 sqlite3 保存配置。
另外,我们在设计之初就一直小心内存泄漏的问题。作为服务器端程序,我们的目标是尽可能不停机,所以确保没有内存泄漏很重要。一方面我们在设计上尽可能避免,另一方面我们使用了一些方法来检测内存的使用。就我所知,目前没有发现有内存泄漏的情况。
我们确保您使用 Visual Studio 2019 或 Visual Studio 2022 上能正常编译这个程序。