标签: indoor-positioning-system

Google室内导航如何运作?

对于我大学的项目,我必须收集有关Google室内地图的信息.我花了几个小时搜索有关Google Indoor Navigation真正有效的信息.我找到了几个关于如何创建Google楼层平面图的链接:

http://support.google.com/gmm/bin/answer.py?hl=en&answer=1685896

以及如何使用Google Maps Floor Plan Marker应用提高位置准确度:

http://support.google.com/gmm/bin/answer.py?hl=en&answer=2667756&topic=1685871&ctx=topic

他们说该应用程序收集公共广播数据.但是没有关于收集哪些信息以及如何收集信息的信息.这里的几个讨论和我发现的一些文章说谷歌使用wifi接入点和蜂窝天线进行室内定位.但我找不到谷歌的任何官方信息,我可以在我的项目中使用.

你能建议我在哪里可以找到以下问题的答案:

  1. Google地图平面图标记如何真正起作用?收集哪些信息以及如何收集?官方技术Google论文会很好,所以我可以将它用于我的工作.
  2. 如何通过添加Wifi接入点,蓝牙工作站或其他技术来提高Google室内导航的准确性?
  3. 如何在平面图中添加紧急出口和厕所等附加信息,以便用户可以使用智能手机导航到这个特殊点?
  4. 是否可以添加有关房间的信息,以便用户可以用手指点击它们以获取更多信息?例如哪个部门位于这个房间等等?

我发现很多关于室内定位和室内导航的东西.但没有关于谷歌如何使用它们.

提前致谢.

navigation google-maps google-maps-api-3 indoor-positioning-system

17
推荐指数
1
解决办法
3万
查看次数

如何设计建筑物的Android室内地图?

我想设计一个Android应用程序,它可以帮助学生和其他人在特定建筑物(一层楼)中导航,显示走向教室的步行路线.

我需要帮助.

android indoor-positioning-system

14
推荐指数
2
解决办法
2万
查看次数

iOS核心位置的室内定位 - 不准确?

使用WWDC提供的示例代码,我一直在尝试编写一个简单的概念验证应用程序,在我的办公楼中执行室内定位.我有一个平面图图像并替换了演示代码中的标准图像.我还完成了GPS坐标到两个锚点像素的必要映射.

当我在模拟器中运行应用程序并指定静态GPS坐标时,我看到模拟器中的位置已按预期更新.然而,当我在手机上运行它时,体验并不像Apple在视频中宣传的那样无缝.在我的iPhone 5s上,定位遍布整个地方,很少接近准确.即使坐在靠近天空视线的窗户旁边,我仍然会得到非常不准确的结果.

我认为这可能与我们的物理布局,WiFi拓扑或其他此类参数有关.但是,我也注意到Apple有一个门户网站,您可以在其中注册您的设施以用于室内定位.这与我的应用程序中的糟糕结果有关吗?我无法想象Apple如何能够帮助解决这种情况,但认为它可能与它有关.

我应该采取其他措施来提高应用的准确性吗?有没有办法利用iBeacons改善室内定位?我没有发现任何文件表明这一点,但想到也许有人会知道.

iphone gps core-location ios indoor-positioning-system

12
推荐指数
2
解决办法
7732
查看次数

如何提高室内定位的准确性?

我应该为某个地方开发一个室内定位系统,所以我开始收集有关如何开发这样一个系统的信息,我现在的问题是:什么控制定位的准确性以及如何改进它?我找到了不同的API和项目,具有不同的精度,例如:爱立信室内定位API提供10米内的精度,而Qubulus API提供4米内的精度,我遇到了一些项目,如iDOCNET,声称提供约1.2的准确度米.那么,控制精度的室内导航系统的主要组成部分是什么?

wifi trilateration indoor-positioning-system

10
推荐指数
1
解决办法
2万
查看次数

Javasacript(Ionic)中两个移动设备之间的距离

对于我的一个项目,我目前想要构建一个Ionic应用程序,为i​​OS和Android平台编写一次代码.我正在寻找一种方法来衡量两个移动设备之间的距离.一个设备应放置在特定位置,另一个设备应在进入第一个设备的范围(或更具体地说是第一个设备所在的位置)时检测到.

特定位置的设备1将连接到互联网,对于访问该位置的设备2也是如此.

我已经阅读了很多不同的实现,但大多数时候它需要Android或iOS的本机代码.

以下是我已经找到的解决方案:

  • 蓝牙:每部手机都有蓝牙,因此一旦手机接近另一部手机就不难发现,但这意味着与另一部设备配对,并不可能测量两台设备之间的距离.
  • iBeacons和BLE:我们希望避免在发布时购买大量信标.这意味着我们希望创建一个移动应用程序来充当灯塔,但在许多设备上的Android上都不可能.此外,我们不关心微观位置,这意味着我们不会以100%的潜力使用信标.
  • GPS:在安全方面确实不太好,以确保两个设备的位置都是好的.
  • 在位置手动检入:确保设备2到达设备1 位置的最佳方法是在位置进行手动检查.但这有点令人沮丧,因为根本没有创新.

我实际上已经没想完了.实现应该在Javascript中编写快速原型,以便限制选项.

我在StackExchange上看了一篇帖子:Stack,但问题是没有描述任何实现.

换句话说,我希望检入系统知道设备2在设备1的位置.即使在请求我们的服务器的API之间进行交换,我们怎么能确定两个设备是关闭的,或者至少设备2已关闭在特定的位置?

编辑和新闻

为了给那些可能面临同样情况的人提供更多选择,我联系了在微软工作的人和一个叫做ThaliProject的项目,你可以在Google上找到这是一个PeerToPeer库,可以在移动设备之间进行通信.但它不适合这个问题:

不幸的是,Thali不会解决你的问题.:(我们依赖Android上的蓝牙4.2支持(所以我们可以是BLE中心和外围设备).

如果您需要在Android和iOS设备之间工作,蓝牙也将无法工作,因为Apple使用的蓝牙专有变体不起作用.

现在BLE可以在Android和iOS之间工作.虽然许多Android手机不能作为外围设备,但大多数都可以作为中心设备.

不同的人正在玩的另一种可能性是声音.类似于 https://developers.google.com/nearby/messages/overview?hl=en.许多小组一直在通过超声波通信进行局部发现试验.只需发送挑战并通过超声波获得响应,您已经证明设备1和2彼此非常接近.

我偶然发现了一个名为SonicNet.JS的JavaScript库,它能够通过超声波发送数据和字符串,但实际上我正在努力让它在我的计算机上运行.这可能是一种解决方案,可以避免互操作性问题.

javascript bluetooth-lowenergy indoor-positioning-system ibeacon ionic-framework

10
推荐指数
1
解决办法
1104
查看次数

Ble扫描回调只被调用几次然后停止

我有两部搭载Android 5.0.2的手机,它们都安装了最新的Radius Beacon应用程序:Locate Beacon,同时,我打开了2个IBeacon发送器,可以看到RSSI 在两款手机中随着应用程序不断变化.

但是当我尝试编写一些示例代码来模拟上述情况时,我发现ble扫描回调总是在调用2或3次后停止调用,我最初怀疑'Locate Beacon'可能使用不同的方式,所以我尝试了2种API,一个用于旧的4.4,另一个是在android 5中引入的新方式,但两者都是相同的行为(但都在android 5上运行).

4.4一:

public class MainActivity extends Activity {
private BluetoothAdapter mBluetoothAdapter;
private static final String LOG_TAG = "BleCollector";
private TextView calledTimesTextView = null;
private int calledTimes = 0;
// Device scan callback.
private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() {
    @Override
    public void onLeScan(final BluetoothDevice device, int rssi,
            byte[] scanRecord) {
        calledTimes++;
        runOnUiThread(new Runnable() {
            @Override
            public void run() {

                calledTimesTextView.setText(Integer.toString(calledTimes));
            }
        });
        Log.e(LOG_TAG, "in onScanResult, " …
Run Code Online (Sandbox Code Playgroud)

android bluetooth-lowenergy indoor-positioning-system ibeacon

9
推荐指数
1
解决办法
1万
查看次数

Java中的多点三边测量算法

我正在尝试在我的Android应用程序中实现三边测量算法,以确定用户的室内位置.我正在使用超宽带信标来获得到固定点的距离.我能够调整Trilateration Method Android Java中建议的方法如下:

public LatLng getLocationByTrilateration(
        LatLng location1, double distance1,
        LatLng location2, double distance2,
        LatLng location3, double distance3){

    //DECLARE VARIABLES

    double[] P1   = new double[2];
    double[] P2   = new double[2];
    double[] P3   = new double[2];
    double[] ex   = new double[2];
    double[] ey   = new double[2];
    double[] p3p1 = new double[2];
    double jval  = 0;
    double temp  = 0;
    double ival  = 0;
    double p3p1i = 0;
    double triptx;
    double tripty;
    double xval;
    double yval;
    double …
Run Code Online (Sandbox Code Playgroud)

java gps android trilateration indoor-positioning-system

9
推荐指数
2
解决办法
1万
查看次数

旋转设备时磁场测量的奇怪行为

情况:

我正在尝试通过指纹识别来建立一个室内定位系统,利用建筑物内部的磁场变化.作为传感器,我正在使用我的手机Galaxy Nexus.

基本上,获取指纹的想法是分别测量x,y和z方向的磁场,并通过移动的方向旋转矢量以将矢量带入世界坐标系.为了定位某人,他还测量磁场,旋转矢量并将其发送到我将运行我的定位算法的服务器.

我的问题:

当我在不同方向上测量同一点处的磁场时,在旋转矢量后我得不到相同的结果.即使场强也不一样.

为了表明这一点,我在同一位置进行了四次测量,并将手机绕其z轴(标准Android规格)逆时针旋转90度,180度和270度.结果可以在下面的"表格"和Matlab图表(点击链接)上看到(如果您想要其他观点让我知道)

编辑: 更确切地说:我真正做的是我定义了自己的坐标系,称为房间坐标系.我拿了房间的一面墙,把它定义为北面.我的手机的y轴外挂在那个墙上(在第一个位置),而它在桌子上是平的.因此,正z轴指向天空,x轴定义为90度的墙.以'Raw'命名的矢量是手机的原始值,因此它们位于手机的坐标系中.以"旋转"命名的Vector将旋转到"房间坐标系"中.在图中,虚线矢量是原始矢量,实心矢量是旋转矢量.

?????????????????????????????????????????????????????
? Vector      ?    X   ?   Y    ?    Z   ? Strength ?
?????????????????????????????????????????????????????
? 0°Raw       ?  17.55 ?   8.21 ? -36.83 ?  41.62   ?
? 0°Rotated   ?  17.55 ?   8.21 ? -36.83 ?  41.62   ?
? 90°Raw      ?  15.74 ? -11.36 ? -36.86 ?  41.66   ?
? 90°Rotated  ?  11.36 ?  15.74 ? -36.86 ?  41.66   ?
? 180°Raw     ? -65.06 ? -16.18 ? -44.79 ?  80.63   ?
? …
Run Code Online (Sandbox Code Playgroud)

android orientation magnetometer android-sensors indoor-positioning-system

6
推荐指数
1
解决办法
1748
查看次数

多点Trilateration将与Android上的信标数据一起使用

我一直在苦苦挣扎,我目前正在Android上使用Estimote Beacon而我正在收集他们的RSSITxPower以计算他们的范围.一旦我得到这些数据并且我知道它们的位置(纬度,经度,海拔高度),我需要计算我的粗略位置以用于室内位置.

提供的所有解决方案仅针对三个单点或不起作用.必须有一个现有的Java解决方案,因为它是一个常见的问题.


现在我知道之前有人问过,但在我的案例中没有任何答案真正帮助我.以下是其中一些简历:

- 仅使用三点的解决方案:

Trilateration方法Android Java

Java中的多点三边测量算法

Trilateration方法Android Java

- 解决方案我已经尝试但是给我一个错误的结果

三边形Java算法

另一个问题如果我可能会问,在我计算这个时,我应该使用什么单位来测量距离?我虽然无论使用何种距离单位都会得到相同的结果,但事实证明,如果我插入米或公里,结果会有很大变化...

java android trilateration indoor-positioning-system beacon

6
推荐指数
0
解决办法
1164
查看次数

如何在iPhone中使用加速度计,gryoscope和磁力计获取用户位置?

使用内置惯性测量单元(IMU)(也称为行人航位推算(PDR))的用户定位的简单公式如下:

x= x(previous)+step length * sin(heading direction)
y= y(previous)+step length *cos(heading direction )
Run Code Online (Sandbox Code Playgroud)

我们可以使用CMMotionManager类的motionManager属性来访问加速度计,陀螺仪和磁力计的原始值.此外,我们可以获得attitudes滚动,俯仰和偏航等值.步长可以计算为加速度的双平方根.但是,我对标题方向感到困惑.一些已发表的文献使用磁力计和陀螺仪数据的组合来估计航向.我可以看到它CLHeading也提供了标题信息.有一些在线教程,特别是对于像这样的Android平台来估计用户位置.但是,它没有给出任何适当的数学解释.

我跟着像许多在线资源这个,这个,这个这个做一个PDR应用.我的应用程序可以检测步骤并正确地给出步长,但其输出充满错误.我认为错误是由于缺乏合适的航向.我使用以下关系从磁力计获得前进方向.

magnetometerHeading = atan2(-self.motionManager.magnetometerData.magneticField.y, self.motionManager.magnetometerData.magneticField.x);
Run Code Online (Sandbox Code Playgroud)

同样,来自陀螺仪:

grysocopeHeading +=-self.motionManager.gyroData.rotationRate.z*180/M_PI;
Run Code Online (Sandbox Code Playgroud)

最后,我给前一个标题干涉,gryoscopeheading和磁力计的比例权重如下:

headingDriection = (2*headingDirection/5)+(magnetometerHeading/5)+(2*gryospoceHeading/5);
Run Code Online (Sandbox Code Playgroud)

我从已发表的期刊论文中采用了这种方法.但是,我的工作中出现了很多错误.我的方法有误吗?我究竟应该做些什么才能获得正确的航向,以便定位估算误差最小?

任何帮助,将不胜感激.

谢谢.

编辑

我注意到在使用陀螺仪数据计算航向时,我没有将旋转速率(以弧度/秒为单位)与增量时间相乘.为此,我添加了以下代码:

CMDeviceMotion *motion = self.motionManager.deviceMotion; [_motionManager startDeviceMotionUpdates]; if(!previousTime) previousTime = motion.timestamp; double deltaTime = motion.timestamp - previousTime; previousTime = motion.timestamp;

然后我更新了陀螺仪标题:

gyroscopeHeading+= -self.motionManager.gryoData.rotationRate.z*deltaTime*180/M_PI;

本地化结果仍然不接近真实位置.我的方法是否正确?

objective-c accelerometer magnetometer gyroscope indoor-positioning-system

6
推荐指数
0
解决办法
292
查看次数