Ruc*_*ile 44 iphone distance accelerometer gyroscope
我想构建一个应用程序,使用陀螺+加速度计计算iPhone(非长距离)的准确行进距离.这里不需要GPS.
我该如何处理这个问题?
drl*_*mon 78
这个问题背后的基本微积分就是表达式
(以及y和z中位移的类似表达式)和基本几何是毕达哥拉斯定理
因此,一旦你的加速度计信号通过一个低通滤波器并在采样间隔dt中及时分箱,你就可以找到x中的位移(原谅我的......)
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;
}
Run Code Online (Sandbox Code Playgroud)
dy和dz同样如此.这里
float acceleration_x[n];
Run Code Online (Sandbox Code Playgroud)
包含从测量开始到结束的x加速度值,时间为0,dt,2*dt,3*dt,...(n-1)*dt.
要找到总排水量,你就可以了
dl=sqrt(dx*dx + dy*dy + dz*dz);
Run Code Online (Sandbox Code Playgroud)
陀螺仪不是必需的,但如果您正在测量线性距离,则可以使用陀螺仪读数来控制设备的旋转不会太大.如果旋转太强,请让用户重新进行测量.
Ali*_*Ali 43
通过将线性加速度积分两次得到位置,但误差很大.它在实践中毫无用处.
以下是23:20 解释原因(Google Tech Talk)的原因.我强烈推荐这个视频.
类似的问题:
更新(2013年2月24日):@西蒙是的,如果您对运动有更多了解,例如行走的人和传感器在他的脚上,那么您可以做更多的事情.这些被称为
领域特定的假设.
如果假设不成立并且实施起来非常麻烦,它们会惨遭打破.然而,如果他们工作,你可以做有趣的事情.在室内定位中查看我的答案Android加速度计精度(惯性导航)中的链接.
您应该使用简单iPhone动作检测中描述的Core Motion界面.特别是可以非常精确地跟踪所有旋转.如果你计划做一些与线性运动有关的事情,这是非常困难的事情.看看使用Core Motion获取加速度计数据的位移.
归档时间: |
|
查看次数: |
60164 次 |
最近记录: |