如何将倾斜仪(俯仰、偏航和翻滚)转换为系统在
也就是说,一个背面朝下静止的物体将从加速计中输出类似于
[X,Y,Z]
上受到的重力拉力?一个处于某个俯仰、偏航和翻滚角度下的系统应该以一定的[X*g,Y*g,Z*g]
被地球吸引,假设这是为了模拟目的。我想制作一个函数,其输入是俯仰、偏航和翻滚,输出是向下力矩的Vector3(X,Y,Z)
。也就是说,一个背面朝下静止的物体将从加速计中输出类似于
[0,-1,0]
的值,并且[pitch,yaw,roll]-> [0,-1,0]
,其中[0,-1,0]
减去[0,-1,0]
得到[0,0,0]
。或者,如果我们以1g的速度向左拉它,我们会得到一个显示[1,-1,0]
的加速计,使新值为[1,0,0]
。
当系统背面朝下[pitch,yaw,roll]-> [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;
}
根据下面的解释,我知道仅通过翻滚无法检测系统是否颠倒,因为翻滚仅提供(-90至90)的值,但这是另一个问题。
方向布局如下图所示:
有关更多信息以及如何使用此信息的内容,请继续阅读。
计划使用倾斜计作为去除加速度计数据中重力分量的替代陀螺仪,通过模拟/计算在方向(俯仰,偏航,翻滚)处预期的重力值。
由于加速度计(XYZ)是两个组成部分重力(XYZ)和运动(XYZ)的组合,我假设 gravity(XYZ)-calc_g(XYZ) = 0,
允许我执行 accelerometer(XYZ)- calc_g(XYZ) =movement(XYZ)
为了说明我认为这是可能的原因。当我从手机中获取值并将手机向侧面用略微钟摆运动的方式移动时,看起来像正弦/余弦运动的线是倾角仪和其他线条是XYZ加速度计:
- 红色=(俯仰&加速度计-X)
- 绿色=(偏航&加速度计-Y)
- 蓝色=(翻滚&加速度计-Z)
加速度值乘以90,因为其范围为(-2至2),所以在图中范围为-180至180,俯仰,偏航和翻滚的范围如上面的说明。图像中间为Y = 0,左侧为X = 0(X =时间)
已解决 Romasz提供的解决方案
VectorX = Cos(Pitch)*Sin(Roll);
VectorY = -Sin(Pitch);
VectorZ = -Cos(Pitch)*Cos(Roll);
结果
*这些图形不是来自同一次测量。