iBeacons 的三角测量示例

2024-03-27

我正在研究使用多个 iBeacons 进行“粗略”室内定位的可能性。该应用程序是一种“博物馆”设置,能够更容易地形成一个包含不同对象位置的网格,然后形成单独的信标(尽管这也不是不可能的)。

是否有使用多个信标对某种位置进行三角测量的示例、经验,或者一些逻辑来帮助我自己编写它?


我一直在进行一些实验,以使用三个信标获得精确位置。

三边测量结果

不幸的是,结果在质量方面非常令人失望。主要有两个问题:

  1. 在非受控环境中,您可以找到金属和其他影响信号的物体,信标接收到的信号强度变化如此频繁,以至于误差范围似乎不可能低于 5 米。
  2. 根据用户处理接收器设备的方式,读数也会发生很大变化。如果用户将他/她的手放在蓝牙天线上,则算法将具有低信号作为输入,因此信标将距离设备很远。看这个图片 http://sotovik.ru//images/review/Apple/iPad3/an.jpeg查看蓝牙天线的精确位置。

可能的解决方案

在与一位积极劝阻我走这条路的苹果工程师交谈后,我觉得现在更倾向于使用的选项是暴力。尝试每隔 X 米设置一个信标(X 是系统中可容忍的最大误差),以便我们可以通过计算网格上的哪个信标距离设备最近并假设在此信标网格上跟踪给定设备的位置设备位于同一位置。

三边测量算法

不过,为了完整起见,我将三边测量算法的核心功能分享如下。它基于第 3 段(“已知的三个距离”)本文 http://everything2.com/title/Triangulate.

- (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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iBeacons 的三角测量示例 的相关文章

  • bluez 同时具有经典和低能耗设备

    Linux下的bluez是否可以同时连接多个经典和低能耗设备 bluez 网站提供这样的信息不是很有帮助 是的 我已经成功同时连接到 7 个低能耗设备 最大值因您使用的硬件而异 您还可以连接到多个经典设备 以下是我用于通过 L2CAP 连接
  • 蓝牙低功耗广告扫描、频道信息或选择

    我使用 bluez 编写了一个应用程序 用于扫描 BLE 广告数据 该应用程序当前接收广告消息没有任何问题 对于广告消息 BLE 使用 37 38 和 39 三个通道发送消息 每个通道使用不同的频率 当应用程序接收数据时 我希望能够确定在哪
  • 使用bluez5读取蓝牙低能耗信标的RSSI

    我想在 2 个蓝牙 le USB 适配器上同时读取蓝牙低功耗信标的 RSSI 我使用的是带有 bluez 5 和 LogiLink BT0015 适配器 CSR 芯片 的 fedora 20 系统 当仅连接一个适配器时 我的代码就像一个魅力
  • 连接关闭且应用程序终止后,BLE 堆栈反复重新连接到外设

    我有一个应用程序 它打开与 BLE 设备的短暂连接 执行一些特征读取和写入 然后断开并关闭连接 应用程序使用 autoReconnect false 并且设备未配对或绑定 我看到 Android 的一些非常奇怪的行为 它似乎反复且意外地重新
  • 如何在 Bluez/Linux 上从 GATT 服务器获取断开连接事件

    环境 Bluez 5 14 Linux 3 1 USB 可插拔 BLE 无线电 TI BLE 密钥卡 CC2541 开发套件 Linux 设备 USB BLE 无线电 我们使用 gatttool 启用 TI 密钥卡上的按键事件并开始监听事件
  • BLE 广播帧和 BLE 信标帧有区别吗

    我正在接收EVT LE ADVERTISING REPORT来自 HCI 套接字 我想区分 BLE 信标和普通 BLE 设备 解析设备名称等 我有点困惑是否所有 BLE 设备都会发出信标或者它们是不同的 如果不同 那么它们的数据包格式如何
  • 蓝牙 - TX 功率和 RSSI

    我正在试验两个低功耗蓝牙 4 我在下载的 Android 应用程序上获取了 uuid tx 功率级别和 rss 值 我注意到其中一个发送 0 表示 tx 功率级别 但另一个发送 4 表示 tx 功率级别 并且在 android 应用程序上看
  • 如何在 Mac OS X 10.9.5 上以编程方式读取低功耗蓝牙传输的数据?

    我正在尝试阅读蓝牙低功耗 http www bluetooth com Pages low energy tech info aspx使用 Ruby 以编程方式传输数据 低功耗蓝牙技术不支持标准规范 v4 0 中的串行端口配置文件 SPP
  • Android BLE - 如何分块读取大特征值(使用偏移量)?

    我正在使用 Android SDKandroid 蓝牙 and android 蓝牙 le APIs 我想实现一个应用程序 发挥核心作用 并连接到 BLE 外设以读取特征值和描述符 应用程序需要读取的特征值较大 因此需要分块连续读取 我对如
  • 如何使用基于HM-10蓝牙模块的BLE Shield?

    我是 arduino 项目的新手 我想请你帮忙 我从 http imall iteadstudio com development platform arduino shields im130704001 html http imall i
  • 标准和定制 GATT 特征

    我正在为 Android 手机和 Android 手表 wearOS 编写应用程序 这些应用程序将通过蓝牙相互通信 基本上Android手机上的应用程序将与WearOS设备绑定 然后与WearOS上的应用程序通信以启动指定功能 获取电池信息
  • 通过 iBeacon 监控和测距与 CoreBluetooth scanForPeripheralsWithServices 检测信标

    对于 iOS 对想要扫描 BLE 信标 外设的应用程序施加的限制 存在很多困惑 在阅读了几个博客和 Stack Overflow 答案后 我想看看我是否正确理解了所有问题 如果有什么理解错误或者遗漏的地方请指正 我仅指 iOS 7 及更高版
  • 如何在蓝牙低功耗外设中正确设置日期和时间?

    我正在开发一个传感器设备和一个相应的 iOS 应用程序 它们将使用低功耗蓝牙进行通信 传感器设备需要在实时时钟中维护当前日期和时间 现在 如果我想尽可能地实现蓝牙标准服务 我很困惑在传感器设备中设置时间和日期的正确方法是什么 因为官方文档是
  • Apple AirLocation 演示应用程序测距不显示信标

    我有 3 个 Estimote 信标 可以通过 App store Estimate App 看到 现在我正在尝试运行 Apple 演示应用程序 AirLocation空中定位 https developer apple com libra
  • getBluetoothLeAdvertiser() 返回 null

    BluetoothLeAdvertiser advertiser BluetoothAdapter getDefaultAdapter getBluetoothLeAdvertiser 这将返回空值 我已在 API 21 和 API 23
  • 使用 hcitool 扫描低功耗蓝牙?

    当我运行此命令时 BLE 设备扫描仅持续 5 秒 sudo timeout 5s hcitool i hci0 lescan 输出显示在终端屏幕中 但是 当我将输出重定向到文件以保存广告设备的地址时 每次运行该命令时 我都会发现该文件是空的
  • 什么是 iBeacon 蓝牙配置文件

    我想使用一些低功耗蓝牙开发套件创建自己的 iBeacon Apple 尚未发布 iBeacon 规范 但是 一些硬件开发人员已根据 AirLocate 示例代码对 iBeacon 进行了逆向工程 并开始销售 iBeacon 开发套件 那么
  • CoreBluetooth 功能无法从 Singleton 运行

    所以我目前在 iPad 和 iPhone 之间建立了蓝牙连接 我已经在中创建了我的测试代码ViewController一切正常 现在我把它移到了 2 个经理类 第一个是CBCentralManager和一个用于CBPeripheralMan
  • iBeacon 发射机的主要和次要最大值是多少?

    问题 1 iBeacon发射机的major和minor的最大值是多少 2 我只使用一个UUID startRangingBeaconsInRegion检测主要值和次要值是否有限制 Major 和 Minor 都是 16 位 所以最大的主要
  • IOS 低功耗蓝牙连接间隔

    我正在为蓝牙低功耗设备构建一个应用程序 我想弄清楚如何设置iPhone端的连接间隔 我在外围设备上定义了最小和最大连接间隔 但是 我希望 iPhone 应用程序使用尽可能长的连接间隔 有什么方法可以在应用程序中设置连接间隔或者至少有一种方法

随机推荐

  • Magento REST API 身份验证

    有没有办法从代码传递登录凭据 而不是每次在弹出窗口中输入凭据进行登录授权 您不需要每次都需要登录凭据进行授权 OAuth 成功授权后您将获得访问令牌和访问密钥 稍后使用它们进一步调用 API Oauth 协议就是这样工作的 我猜 Magen
  • PDO:使用 mysql INSERT ON DUPLICATE KEY UPDATE 检查更新或插入的记录

    使用 PDO PHP 和 MySQL 当我使用某个记录时 如何检查记录是否被插入或更新INSERT ON DUPLICATE KEY UPDATE陈述 我见过一个使用的解决方案mysql affected rows 对于 PHP 但我正在寻
  • 在循环期间使用 while mysql_fetch_array 和 UPDATE

    我正在尝试从一个表中提取数据 将列与变量进行比较 然后如果它们匹配 则添加它们并更新另一个表上的字段 看来 UPDATE 只在 while 循环内工作一次 并将该一次的值放入整个表中该列的每一行中 奇怪的是 当我回显它时 所有值都是正确的
  • 数据表导出到 Excel <选择选项>

    在我的测试页中 我插入了一个选项列表 我需要仅将所选值导出到 Excel 但现在我的 Excel 结果包括 选择选项 的所有列表 My code
  • 如何使用 PHP 解析序列化数据?

    这是我的序列化数据的示例 a 10 s 7 contact s 1 1 s 19 profile affiliation s 23 University Inc s 18 profile first name s 3 Ben s 22 pr
  • 如何在shutil.copytree中编写忽略的回调函数

    我对 python 比较陌生 我正在尝试将一个目录复制到另一个维护结构的目录 我在用 shutil copytree src dst symlinks False ignore None copy function copy2 ignore
  • 无法读取未定义的属性“executeScript”

    我按照 chrome 扩展的 入门 教程进行操作 但出现以下错误 我搜索谷歌 有人说无法访问 content js 中的 executeScript 但错误来自 popup js 我曾尝试将 chrome scripting execute
  • 如何 npm 更新 package-lock.json 中的依赖项版本?

    正如标题所示 但是 如果可能的话 我不想在 package lock json 中手动重写版本字符串 我尝试了以下方法 如何将 package json 中的每个依赖项更新到最新版本 https stackoverflow com ques
  • 无法从“const jchar *”转换为“const wchar_t *”

    这是从 cpp 文件引发的错误 我正在使用 Visual Studio 10 和 windows7 32 位 并从 Eclipse Indigo 进行编译 AUWideString JNIEnv jni jstring jstr mJni
  • 如何在 Tkinter 中悬停后更改多个小部件的颜色?

    我正在尝试制作一个脚本 它将在悬停后更改小部件的背景和前景色 from Tkinter import root Tk Hover1 Button root text Red color bg white Hover1 pack Hover2
  • WPF。是否可以进行椭圆“矩形边界”命中测试?

    是否可以在椭圆边界矩形中进行命中测试 就像这张图片上一样 http s22 postimg org 6co1y7vap image png 您可以将它们都放入 border 网格中并检查是否被单击 XAML
  • ElementListUnion - 为通用列表对象提供重复注释的简单 xml

    我正在尝试使用 elementlistunion 反序列化列表字段 Customer java ElementListUnion ElementList inline false type Thing class ElementList i
  • 如何修复:项目中未使用 Google Sheets API

    我想建立一个问卷调查线聊天机器人并将答案传输到谷歌表 这是我的代码 导入操作系统 from flask import Flask request abort from linebot import LineBotApi WebhookHan
  • TFS 2010:使用内部版本号格式的标签名称

    我正在尝试使用 TFS 2010 设置构建 我希望构建编号格式类似于 BuildDefinitionName 版本 where 版本 是在 队列构建 对话框的 获取版本 字段中指定的版本 标签或变更集 如果没有具体版本 我想要的版本是lat
  • 等轴散点图

    我有一个如下所示的数据集 DataFrame lt data frame x runif 25 y runif 25 z sample letters 1 4 25 rep TRUE 并使用 Lattice 包 我可以用以下几行绘制等轴散点
  • CKEditor 安全最佳实践

    我在用http ckeditor com http ckeditor com 在我建立的一个小型 PHP MySQL 论坛中 我的问题 将用户创建的 HTML 像这样保存在数据库中然后在我的应用程序中重新显示它是否安全 我应该采取哪些预防措
  • 文件下载 - 如何控制文件名并尊重用户的偏好?

    我的网站上有一个 blob url 和一个按钮 用户可以单击该按钮 然后 Blob 将在新选项卡中打开 a class downloadlink target blank href blobUrl a 这有效 如果用户对此 blob 后面的
  • JS中如何获取图像的DPI?

    我在 HTML5 画布上工作来计算图像上两点之间的距离 我想将以像素为单位的距离转换为厘米 我找到了一个公式 像素 2 54 DPI 所以我想知道是否可以在JS中获取DPI图像属性 或者 我可以使用最简单的方法从像素计算厘米吗 谢谢 您所要
  • 计算元组大小

    我试图了解列顺序如何最小化 PostgreSQL 中的表大小 Example CREATE TABLE test column 1 int column 2 int column 3 bigint column 4 bigint colum
  • iBeacons 的三角测量示例

    我正在研究使用多个 iBeacons 进行 粗略 室内定位的可能性 该应用程序是一种 博物馆 设置 能够更容易地形成一个包含不同对象位置的网格 然后形成单独的信标 尽管这也不是不可能的 是否有使用多个信标对某种位置进行三角测量的示例 经验