我正在尝试解析具有LSM6DSL芯片(陀螺仪和acc。)的设备给定的值,并且很难解析适当的数据以进行定位和倾斜。
从供应商处,我收到的信息是,该设备的陀螺仪分辨率为2000,配件的分辨率为8g。
我收到以字节为单位的数据,这些数据由以下内容转换为短裤;
public int[] BufferToMotionData(byte[] buffer, int segments = 2)
{
int[] motionDataArray = new int[segments * 3];
int offset = Constants.BufferSizeImage + Constants.CommandLength;
for (int i = 0; i < 6; i++)
{
motionDataArray[i] = BitConverter.ToInt16(buffer, offset + (i * 2));
if (motionDataArray[i] >= Int16.MaxValue)
motionDataArray[i] -= 65535;
}
return motionDataArray;
}
Run Code Online (Sandbox Code Playgroud)
(编辑;清理版本)
这将返回(示例)961,-16223,-1635、664,-269,-597范围内的值。
根据规格表,我应该将每个向量与其对应的值相乘。*陀螺仪为70f,acc为.448f。
从文档中我了解到,对于G力而言,这些单位是毫秒/陀螺,以毫秒/秒为单位?
// Gyro X,Y,Z
gx = Mathf.Deg2Rad * (motionData[0] * 70f / 1000f);
gy = Mathf.Deg2Rad * (motionData[1] * 70f / 1000f);
gz = Mathf.Deg2Rad * (motionData[2] * 70f / 1000f);
// Acc X,Y,Z
ax = motionData[3] * 0.488f / 1000f;
ay = motionData[4] * 0.488f / 1000f;
az = motionData[5] * 0.488f / 1000f;
Update(gx, gy, gz, ax, ay, az);
Run Code Online (Sandbox Code Playgroud)
Update(..)是Madgwick的四元数公式,尽管对于速度,我使用加速度矢量。
计算后此刻我获得的G力值;
X 0.047824 Y -0.320128 Z 0.006344
X 0.07076 Y -0.2562 Z 0.020008
X 0.099552 Y -0.063928 Z -0.13664
Run Code Online (Sandbox Code Playgroud)
这些看上去很低,如果以速度施加,它只会在给定的方向上运行,我知道我缺少重力校正,尽管不能完全确定如何应用。
我假设我不需要对速度矢量施加阻力,因为应该通过接收的加速度值来否定这些值?
任何有使用这种类型切屑的经验,并且实际将这些值应用于偏航/俯仰/侧倾(或四元数)并将G力用作线性加速度的人。
通过查看GitHub 上的现有代码,看起来 8g 的敏感度系数是244 \xc2\xb5g/digit,而不是488 \xc2\xb5g/digit您编码的那样。
而且看起来原始值已被移位并且位于而[-r/2,r/2]不是[0, r]. 所以你必须添加500\xc2\xb5g或500\xc2\xb5dps到它。(但也许它与 uint/int 问题有关,无论如何你确定字节序吗?)
有关 acc 数据,请参阅此处;有关陀螺仪数据,请参阅此处。
\n\n基于此,代码应该如下所示:
\n\n// Gyro X,Y,Z (in rad/s)\ngx = Mathf.Deg2Rad * (motionData[0] * 70000f + 500) / 1000000;\ngy = Mathf.Deg2Rad * (motionData[1] * 70000f + 500) / 1000000;\ngz = Mathf.Deg2Rad * (motionData[2] * 70000f + 500) / 1000000;\n\n// Acc X,Y,Z (in g)\nax = (motionData[3] * 244f + 500) / 1000000;\nay = (motionData[4] * 244f + 500) / 1000000;\naz = (motionData[5] * 244f + 500) / 1000000;\n\nUpdate(gx, gy, gz, ax, ay, az);\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |