我正在试验一个3加速度计分线板.X轴和Y轴非常容易控制,但Z轴有点神秘.我试图找到一种方法来解释我的代码中的数据,以便在设备被提升时增加输出,并在降低时减少.这可能吗?如果是这样,怎么样?也许如果有人可以指向一个有用的好参考资料来源.
我需要从以下传感器构建惯性测量单元(IMU):
我必须整合这些数据,以得出传感器平台的姿态和所涉及的外力(例如,从线性加速度中减去倾斜).
然后,我必须使用这些信息来补充标准的GPS单元,以提供比仅由GPS提供的更一致的测量.
我确实理解这个问题的基本要求:
虽然目前有各种各样的图书馆可供我这样做(http://code.google.com/p/sf9domahrs/)我需要了解所涉及的机制,以便我能够向其他人解释这些技术在我实施解决方案之后.
我一直在寻找以下资源,但我不确定我应该去哪...我需要一些内容涉及传感器融合,过滤,IMU,集成.
我希望在这方面有经验的人可以提供任何建议.
非常感谢.
如何将倾角仪(俯仰,偏航和滚转)转换为系统中预期的重力[X,Y,Z]?
处于某个俯仰角,俯仰角和俯仰角的静止系统应该在某个位置拉到地面[X*g,Y*g,Z*g],假设这是出于模拟目的.我想创建一个输入是Pitch,Yaw和Roll的函数,输出是一个Vector3(X,Y,Z)下降时刻.
意味着一个物体静止,它向后向下会输出类似于[0,-1,0]加速度计和a的东西[pitch,yaw,roll]->[0,-1,0],其中[0,-1,0]减去了[0,-1,0]结果[0,0,0].或者如果我们以1g的速度向左拉,我们有一个加速度计显示[1,-1,0]新的值[1,0,0].
系统背面[俯仰,偏航,滚动] - > [0,-1,0]功能是我所追求的
Vector3 OriToXYZ(float pitch, float yaw, float roll){
Vector3 XYZ = Vector.Zero;
//Simulate what the XYZ should be on a object in this orientation
//oriented against gravity
...
return XYZ;
}
Run Code Online (Sandbox Code Playgroud)
是的我知道,因为下面的解释显示我无法检测系统是否颠倒或不基于滚动仅作为滚动给出(-90到90)但这是一个不同的问题).
这就是方向的布局方式.

有关使用此信息的原因,内容和方式的更多信息,请继续阅读.
计划是使用测斜仪作为陀螺仪的替代方案,通过模拟/计算方向上的重力预期值(俯仰,偏航,滚动)来将重力分量移除到加速度计数据.
由于加速度计(XYZ)是重力(XYZ)和运动(XYZ)两个组件的组合,我假设gravity(XYZ)-calc_g(XYZ) = 0,允许我执行accelerometer(XYZ)- calc_g(XYZ) =movement(XYZ)
说明为什么我认为这是可能的.当我绘制手机的数值并将手机侧向移动时略微摆动,看起来像正弦/余弦运动的线条是倾斜的,其他线条是XYZ加速度计:
加速度值乘以90,因为它的范围为(-2到2),因此它在图纸中的范围从-180到180,俯仰偏航和滚转范围如上面的指示所示.图像的中间是Y = 0,左边是X = 0(X …
一个众所周知的问题是,许多Android手机在屏幕关闭时关闭加速度计.然而Android Fit(应用程序)似乎发生了一些变化.即使屏幕熄灭,Fit也会保持计数步数.如果安装了Fit,则会在Fit环境中引发事件以进行步数计数,并且我可以使用它来捕获它们
Fitness.SensorsApi.findDataSources(mClient, new DataSourcesRequest.Builder()
.setDataTypes(DataType.TYPE_STEP_COUNT_CUMULATIVE)
Run Code Online (Sandbox Code Playgroud)
我在三星S4和Oneplus One上测试了这个,在这两种情况下都计算了步数.他们是怎么做到的?他们使用什么Android类?我的理解是,自Kitkat以来引入的可用方法是实现SensorEventListener.例如,theelfismike提供了实现此功能的代码.然而,在许多手机上,当屏幕熄灭时,步数会停止.有趣的是,如果安装了Google Fit应用程序,计数似乎并没有停止(因此我猜他们会保持加速度计开启).
我错过了什么吗?屏幕关闭后保持计数步骤的功能是否可供凡人程序员使用?谢谢!
我正在使用THREE.js并创建一个Web应用程序,用户可以旋转设备,场景将相应移动.同样的事情也来此.
我在区分具有陀螺仪的设备和不具有陀螺仪的设备方面存在问题.
检测完全没有方向传感器的设备很容易.DeviceOrientationEvent的所有alpha,beta,gamma值均为null.但是,如果移动设备没有陀螺仪,它仍会在DeviceOrientationEvent中提供alpha,beta,gamma值.问题是这些值非常嘈杂,并且在场景中引起很多震动.所以,我想禁用这些设备的设备方向.但是,到目前为止,我还没有找到如何确定数据是来自陀螺仪还是加速度计(这是我对数据来源的猜测).
我不知道它是否有帮助,但在这里可以看到如何处理这个问题的一个很好的例子.(按下底部的轴像图标;你必须在没有陀螺仪和陀螺仪的设备上看到它才能看到差异).他们为没有陀螺仪的设备所做的只是更新音高和滚动.该偏航当你与手机旋转不会被更新.
所以,这绝对是可能的,但我还没有发现经过大量搜索后的情况.如果有人能帮忙的话会很棒.
非常感谢.
在只有加速度计的设备上,如MOTO E,所有值都为null - DeviceOrientationEvent和rotationRate - 唯一的例外是accelerationIncludingGravity.但是,我之前测试的设备,没有陀螺仪,但仍然为DeviceOrientationEvent提供alpha,beta,gamma值,根据GSM Arena上的"传感器"细节,似乎有2个加速度计.这就是我怀疑它能够提供DeviceOrientationEvent数据的方式,尽管很吵.看起来2个加速度计不足以提供转速;)
我正在Android上试用Sensor.TYPE_ROTATION_VECTOR.它应该使用磁场传感器,加速度计和陀螺仪始终提供准确的旋转.但是,我注意到Moto G 2nd发生了巨大的漂移.我想知道这是否是特定于设备的问题,或者这种情况发生在很多手机上(我会假设,虽然我很熟悉Moto G 2nd是一个有问题的陀螺仪).
是否有另一种形式的传感器融合,它是无漂移的(使用磁传感器)?我也试过了Google Cardboard的传感器融合,但它使用了偏差估计,因此可能并非完全漂移(因为此时看不到磁场传感器),尽管仍然比TYPE_ROTATION_VECTOR好很多.
有没有人只使用iPhone传感器开发6DOF姿势估计,而不是视频?理解加速度计和陀螺仪的漂移.
陀螺仪提供相当可靠的相对定向速率.我已经能够用陀螺仪数据进行开发.
但是,我从加速度计中获得翻译时遇到了更多问题.加速度的双重积分导致无用的位置数据非常快(不到半秒).
我试图通过校准步骤消除偏差,但位置仍然很差.更糟糕的是,偏见不是恒定的.它随着时间的推移而变化,噪音使信号淹没.
我很感兴趣,如果有人能够开发出只有加速度计和陀螺仪的6DOF,它可以在5-10秒内可靠地工作,并且在平移和方向上几乎没有漂移.
在重新发明轮子之前,我想看看是否有人可以分享以下代码或提示:
为了获得iPhone的相对位置,需要
所以我希望人们已经写了上面的部分或全部内容,可以提供提示,或者更好的代码.
几个问题我没有找到答案:
iPhone加速度计的频率响应是多少?加速度计和模数转换器之间存在哪些硬件滤波器?
在不重复读取值的情况下,可以调用加速度计代表的最快读取速率是多少?
以上针对各种手机的差异?
设计滤波器的任何好技巧,例如用于分离重力和用户运动的截止频率?
集成步骤的任何代码或技巧?有没有理由整合到cartesion坐标系而不是矢量,反之亦然?
在实施之前应该知道的任何其他经验,技巧或信息?
我正在使用该UIAccelerotmeterDelegate方法,accelerometer:didAccelerate:但最近该方法已在iOS 5.0中弃用.那么获取加速度计数据的另一种方法是什么?文档没有提到我们应该使用的替代方案.
在最后一次谷歌I/O上,在位置API的Android中引入了一项新服务 - 活动识别.
iOS有这样的框架吗?
accelerometer ×10
gyroscope ×3
android ×2
ios ×2
iphone ×2
physics ×2
3d ×1
c# ×1
filter ×1
google-fit ×1
integration ×1
javascript ×1
magnetometer ×1
mobile ×1
motion ×1
sensor ×1