基于陀螺仪和加速度计的室内导航

我正在开发一个 Android 应用程序来跟踪室内位置。我的手机是谷歌 Nexus S,使用两个传感器,第一个是加速度计,第二个是陀螺仪。

我的想法是,从一个起始参考点(一个已知的 GPS 位置) ,使用2个传感器(运动的加速度计和陀螺仪的方向)跟踪移动时的手机。并显示在地图上,当用户要去。

但问题是,我不知道如何结合这两个传感器,给我一个实际的位置?

我在互联网上读到过一些关于“ kalman 过滤器”的文章,经过更多的研究,我发现这个过滤器非常非常复杂/对我来说太复杂了) ,特别是用 Java 为 Android (CPU 杀手)编写代码

有没有人可以和我分享一些使用陀螺仪和加速度计的室内导航?

76386 次浏览

Gyros and accelerometers are not enough.

You get position by integrating the linear acceleration twice but the error is horrible. It is useless in practice.

Here is an explanation by (Google Tech Talk) at 23:20. I highly recommend this video.

As for indoor positioning, I have found these useful:

I have no idea how these methods would perform in real-life applications or how to turn them into a nice Android app.

类似的问题是Calculating distance within a building

For some other interesting reading on emerging indoor positioning technologies, check out this blog post from Qubulus. There are several startups and research projects trying to find a good replacement for GPS indoors. Attempts range from Dead Reckoning, to QR Codes, to light pulses, to radio fingerprinting. It looks like any viable solution will combine multiple technologies (similar to how most smartphones rely on A-GPS, where the satellite signal is assisted by cell tower multilateration).

Best of luck with your application!

I think this is a great post answering your question. This kalman filter combine data from accelerometers and gyros. Hope it helps.

I think it is too late for answer this question, but now, there is a good solution called iBeacon technology.

You can scan iBeacon devices by your smartphone, and you can get the rssi from iBeacon. So, you can calculate your position by those rssi.

To track indoor position starting from some reference point, only gyro and accelerometer is not enough. With accelerometer you can calculate speed, with gyro you can get direction of the mobile device, but to calculate indoor position you also need to have direction of movement, so for this case you need to use magnetic sensor. Such approach is called Dead Reckoning method and it's quite complex to combine all 3 sensors to get appropriate indoor position. Kalman filters allow you to smooth your measurement and filter some noise, but it's not the method to calculate indoor position. If you want to get indoor position you can try iBeacon approach and Trilateration method, there are some libraries (like this one) that already has this functionality, so you can try to investigate this method from such libs.