gpt4 book ai didi

java - 应如何实时计算加速度计数据(加加速度)的时间导数(Java)?

转载 作者:太空宇宙 更新时间:2023-11-04 09:05:05 25 4
gpt4 key购买 nike

我正在尝试根据 onReceive() 循环 Android 方法中的流式加速度计数据计算加速度(急动度)的时间导数。

我假设,从一个传感器更新到下一个传感器更新,我可以通过简单地计算增量加速度(x,y,z)和相关的增量时间来近似这一点。为了确保最大的准确性,我使用了 System.nanoTime() 方法(并除以 10e8)。

一切似乎都很顺利,并且出现了 SCSS 数据,但我认为检查所有 delta_time 的总和 (sumDeltaTime) 是否接近 last_timefirst_time 之间的差异是明智的。令我惊讶的是,两者之间的差异达数千倍。即使将 System.nanoTime() 替换为 System.currentTimeMillis()(除以 10e2)也没有改变这种差异。这是我的代码:

// calculate jerk (time derivative of acceleration)

accel_count++;

if (accel_count == 1) {
first_time = new_time = System.nanoTime() / 10e8; // captures first time value (in seconds)
newAccel[0] = accel[0]; // x
newAccel[1] = accel[1]; // y
newAccel[2] = accel[2]; // z
} else {
prev_time = new_time; // assigns previous time value
new_time = System.nanoTime() / 10e8; // immediately updates to the new time value (in seconds)
prevAccel[0] = newAccel[0]; // x
prevAccel[1] = newAccel[1]; // y
prevAccel[2] = newAccel[2]; // z
// set up for next iteration
newAccel[0] = accel[0]; // x
newAccel[1] = accel[1]; // y
newAccel[2] = accel[2]; // z
}
float[] delta_accel; // difference in acceleration between consecutive sensor measurements
delta_accel = new float[] {
(newAccel[0] - prevAccel[0]), // x
(newAccel[1] - prevAccel[1]), // y
(newAccel[2] - prevAccel[2]) // z
};
double delta_time = (new_time - prev_time); // time difference between consecutive sensor measurements (in seconds)

float[] jerk;
jerk = new float[] {
(float) (delta_accel[0] / delta_time), // x
(float) (delta_accel[1] / delta_time), // y
(float) (delta_accel[2] / delta_time) // z
};

total_time = new_time - first_time; // total time duration of entire recording (in seconds)
sumDeltaTime += delta_time; // testing sum of deltas

有人能看出我做错了什么吗?谢谢!

最佳答案

您没有在第一次传递时初始化 prev_time (accel_count == 1),因此您第一次计算 delta_time 时它可能为 0。这使得第一个 delta_time 异常大,因为 new_time 远大于 0,就像 System.nanoTime() 远大于 0。

关于java - 应如何实时计算加速度计数据(加加速度)的时间导数(Java)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60308390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com