首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何用陀螺仪和加速度计找出行驶的距离?

我如何用陀螺仪和加速度计找出行驶的距离?
EN

Stack Overflow用户
提问于 2011-07-11 16:03:04
回答 7查看 65.2K关注 0票数 49

我想建立一个应用程序,计算准确的距离由iPhone (不是长距离)使用Gyro+Accelerometer。这里不需要GPS。

我应该如何处理这个问题?

EN

回答 7

Stack Overflow用户

发布于 2011-07-11 16:41:18

这个问题背后的基本演算是在表达式中

(和y和z中的位移的类似表达式)和基本几何是勾股定理

因此,一旦你的加速度计信号通过一个低通滤波器,并以采样间隔dt进行时间分组,你就可以找到x中的位移as (对不起,我的C...)

代码语言:javascript
运行
复制
float dx=0.0f;
float vx=0.0f;
for (int i=1; i<n; i++)
 {
   vx+=(acceleration_x[i-1] + acceleration_x[i])/2.0f*dt;
   dx+=vx*dt;
 }

对于dy和dz也是如此。这里

代码语言:javascript
运行
复制
float acceleration_x[n];

包含从测量开始到结束的时间为0,dt,2*dt,3*dt,...(n-1)*dt.

要求出总位移,您只需执行以下操作

代码语言:javascript
运行
复制
dl=sqrt(dx*dx + dy*dy + dz*dz);

这不需要陀螺仪,但如果你测量线性距离,你可以使用陀螺仪读数来控制设备的旋转不是太大。如果旋转太强,请让用户重新进行测量。

票数 83
EN

Stack Overflow用户

发布于 2011-07-11 18:03:49

你可以通过两次积分线性加速度来得到位置,但是的误差是可怕的。它在实践中是无用的。

这里是23:20的an explanation why (Google Tech Talk),强烈推荐这个视频。

类似的问题:

更新(2013年2月24日):@Simon是的,如果你对运动有更多了解,例如一个人在行走,传感器在他的脚上,那么你可以做更多的事情。这些被称为

领域特定假设

如果假设不成立,它们就会很糟糕地崩溃,而且实现起来可能相当繁琐。然而,如果它们起作用了,你可以做一些有趣的事情。请参阅室内定位的my answer Android accelerometer accuracy (Inertial navigation)中的链接。

票数 47
EN

Stack Overflow用户

发布于 2011-07-11 16:30:49

您应该像Simple iPhone motion detect中所述那样使用核心运动界面。特别是所有的旋转都可以非常精确地跟踪。如果你计划做一些与直线运动相关的事情,这是非常困难的事情。看看Getting displacement from accelerometer data with Core Motion吧。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6647314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档