iOS技术浅谈之第二篇 (iBeacon技术概述)

       首先iBeacon是什么呢?iBeacon 是基于当前最新的蓝牙低功耗4.0技术的,可以用它来打造一个信号基站,当用户持有 iOS 设备进入该区域时,就会得到获得该基站的推送信息。然后有人会问它有什么用了,比如,在店铺里设置iBeacon通信模块的话,便可让iPhone和iPad上运行一资讯告知服务器,或者由服务器向顾客发送折扣券及进店积分。此外,还可以在家电发生故障或停止工作时使用iBeacon向应用软件发送资讯。其实,我个人认为最具有商业价值的还是属于室内定位。当然与推广商用,也是百万商户的最佳选择!

       今天要讲的重点就是iBeacon的室内导航,说到这个,其实我很是头疼,因为我已经研究它一个多月了。目前可以做到在室内定位精度误差在2米范围内,但这仅仅只是开始,要想做到导航,还差那么一点点。毕竟iBeacon的信号受影响的因数太多。下面就谈谈我利用iBeacon做室内导航的大概思路,第一步:绘出一张室内地图,建立坐标系。  第二步:部署iBeacon(当然部署它也有一定的技巧)第三步:在地图上描出iBeacon的位置,通过坐标系换算,提醒这里有一个比例尺(就是地图和实际距离的比例)第四步:就是利用三点定位(这里需要算法)如下:

- (CGPoint)getCoordinateWithBeaconA:(CGPoint)a beaconB:(CGPoint)b beaconC:(CGPoint)c distanceA:(CGFloat)dA distanceB:(CGFloat)dB distanceC:(CGFloat)dC {
    CGFloat W, Z, x, y, y2;
    W = dA*dA - dB*dB - a.x*a.x - a.y*a.y + b.x*b.x + b.y*b.y;
    Z = dB*dB - dC*dC - b.x*b.x - b.y*b.y + c.x*c.x + c.y*c.y;

    x = (W*(c.y-b.y) - Z*(b.y-a.y)) / (2 * ((b.x-a.x)*(c.y-b.y) - (c.x-b.x)*(b.y-a.y)));
    y = (W - 2*x*(b.x-a.x)) / (2*(b.y-a.y));
    //y2 is a second measure of y to mitigate errors
    y2 = (Z - 2*x*(c.x-b.x)) / (2*(c.y-b.y));

    y = (y + y2) / 2;
    return CGPointMake(x, y);
}

算法还有待优化,希望有大神指点一二。下面附上一张室内定位模拟图:    

                                      

       下面介绍国外一家做得比较的公司:Estimote算是国外最早开始研究和推广iBeacon技术的厂商,并且成功的获得了一大笔的风险投资,目前来说在业界做的也算是比较成熟好用的。提供了从iBeacon产品,软件SDK,移动端APP一整套完整的解决方案。
                                                  
        当然目前我现在的公司也在想打造这样一套完整的解决方案,正处于起步阶段,希望接下来的时间里,对iBeacon技术感兴趣的可以多多交流。待续...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值