我正在使用 AHRS 库来创建位置数据的传感器融合阵列。
从 Go Pro 遥测数据中,我有加速度计、陀螺仪和磁力计数据阵列,每个样本的时间戳具有以下形状:
{
ACCEL: {
samples: [{time, data}, ...]
},
....
}
我想将这些合并到一个对象中
{
time: {accel, gyro, magn}
...
}
每个时间戳的所有 3 个值
我已经可以使用减速器了
const magn = result[1].streams['MAGN'].samples.reduce((prev, next) => {
return {...prev, [next.cts]: {magn: next.value}}
}, {})
const gyro = result[1].streams['GYRO'].samples.reduce((prev, next) => {
const closest = prev[Object.keys(prev).reverse()?.find(key => key < next.cts) || Object.keys(prev)[0]]
return {...prev, [next.cts]: {...closest, gyro: next.value}}
}, magn)
const merged = result[1].streams['ACCL'].samples.reduce((prev, next) => {
const closest = prev[Object.keys(prev).reverse()?.find(key => key < next.cts) || Object.keys(prev)[0]]
return {...prev, [next.cts]: {...closest, accel: next.value}}
}, gyro)
但这似乎不是非常优雅的代码。
有没有更有效的方法来处理它?