【问题标题】:iBeacon detections not giving accurate location for the indoor navigationiBeacon 检测无法为室内导航提供准确位置
【发布时间】:2014-06-12 12:39:20
【问题描述】:

我正在研究使用多个 iBeacon 进行室内定位的可能性。我试过三边测量公式。但我认为它没有给出调整位置存在一些问题。

我在特定位置有三个 iBeacon

CGPoint a=CGPointMake(100, 0);
CGPoint b=CGPointMake(160, 270);
CGPoint c=CGPointMake(0, 145);

在didRangeBeacons 我得到以下距离

    float ra =0.0f;
    float rb=0.0f ;
    float rc=0.0f ;

     for (CLBeacon *beacon in beacons) {
        if ([beacon.minor floatValue]==57726) {
            //ra = beacon.accuracy; ra=5.33124
            ra = beacon.proximity;
        }
        if ([beacon.minor floatValue]==31901) {
            //  rb = beacon.accuracy;  rb=0.185142
            rb = beacon.proximity;
        }
        if ([beacon.minor floatValue]==53482) {
            // rc = beacon.accuracy;  rc=3.23776
            rc = beacon.proximity;
        }
    }

最后我使用的是三边测量公式。

float S = (pow(c.x, 2.) - pow(b.x, 2.) + pow(c.y, 2.) - pow(b.y, 2.) + pow(rb, 2.) - pow(rc, 2.)) / 2.0;

    float T = (pow(a.x, 2.) - pow(b.x, 2.) + pow(a.y, 2.) - pow(b.y, 2.) + pow(rb, 2.) - pow(ra, 2.)) / 2.0;
    float y = ((T * (b.x - c.x)) - (S * (b.x - a.x))) / (((a.y - b.y) * (b.x - c.x)) - ((c.y - b.y) * (b.x - a.x)));
    float x = ((y * (a.y - b.y)) - T) / (b.x - a.x);

位置的输出

point = (x=138.025452, y=133.269165)

但它并不完美。它应该给出靠近点 b 的点。我不知道出了什么问题。

请帮忙。

【问题讨论】:

    标签: ios iphone objective-c ibeacon triangulation


    【解决方案1】:

    我不确定您能否获得非常准确的位置。 CLBeacon accuracy property 状态的 Apple 文档 -

    讨论 以米为单位表示 1 sigma 水平精度。利用 此属性用于区分具有相同接近度的信标 价值。不要用它来确定信标的精确位置。 精度值可能会因射频干扰而波动。

    因为它是一个 sigma 的准确度,它只有大约 68% 的准确度。

    如果您校准信标,您可能会获得更好的结果,但即便如此,来自环境(尤其是人)的射频干扰也会影响您的读数

    【讨论】:

    • 在苹果文档上,我已经阅读了有关接近度的信息,但它也给出了相同的结果。有没有更好的方法来获得准确的结果
    • 我认为问题在于准确性并不表示可以准确用于三角测量的罗盘方向。有 3 个点,每个点都有一定程度的不准确会导致一个不准确的圈 - 也就是 venn 图,但实际上并没有那么准确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多