概述
蓝牙定位算法融合惯性导航
-
- 前言
- 思路
- 实现
前言
做了蓝牙定位有一段时间了,蓝牙定位算法想要做到高精度是非常困难的。由于蓝牙本身精度不够,接收设备也多种多样难以统一,造成纯蓝牙定位的效果很难做到理想状态。所以我们往往需要通过别的的手段来提高定位精度,如标题所言,这里选择的是惯性导航。这篇文章的重点是描述怎样融合蓝牙定位和惯性导航,下面运用的蓝牙定位和惯性导航都是用的非常简单的算法,仅供参考。
思路
蓝牙融合惯性导航的难点在于谁的权重更大,我该相信谁多一点。在两种定位方式精度都不太高的时候,我们要根据他们的特点进行取舍,以此来提高定位精度。
蓝牙的优势:学过三点定位法的朋友应该知道,定位点始终在三点之内。所以在一个大范围内,蓝牙的精度是相对靠谱的,而且随着蓝牙的密度提高,精度会随之提高。
惯性的优势:在是小范围下运动会相对准确。
那结果显而易见,大范围移动以蓝牙定位为准,小范围移动主要依赖惯性导航。算法的设计思路是这样的,首先获取蓝牙定位坐标P点(需要一套蓝牙定位算法,主流的是三点法,指纹法),在P的半径十米的范围内认为惯性导航更加准确,可以利用惯性随意走动,然而一旦惯性导航超过了蓝牙十米范围,就认为惯性导航失精,以蓝牙定位为准。
实现
//位置结构
struct Point{
float x;
float y;
Point(float x0=0,float y0=0){
x=x0;
y=y0;
};
};
//显示位置
static Point p;
//蓝牙位置
static Point bt;
//蓝牙定位算法所需数据
static vector<Point> ps;//坐标
static vector<float> ds;//距离
static vector<long> ts;//时间
static long pretime=0;
//指南针方向
static float angle=0;
//蓝牙定位算法,简单,每次传入蓝牙的距离坐标即可
//算法保留过去4秒内的蓝牙数据
//time,系统时间(单位:ms)
最后
以上就是动听枕头为你收集整理的蓝牙定位算法融合惯性导航的全部内容,希望文章能够帮你解决蓝牙定位算法融合惯性导航所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复