可能重复:
Android加速计精度(惯性导航)
我使用以下代码来计算距离.tnew并anew分别arraylists包含时间戳和加速度.
double distance=0;
double init_vel=0;
long time_prev=tnew.next();
while(anew.hasNext())
{
float temp_acc=anew.next();
long temp_time=tnew.next();
interval=(temp_time-time_prev)/1000f; //milliseconds to seconds
double fin_vel=init_vel+(temp_acc*interval);
distance+=(init_vel*interval)+0.5f*temp_acc*interval*interval;
init_vel=fin_vel;
time_prev=temp_time;
}
Run Code Online (Sandbox Code Playgroud)
代码中是否有任何逻辑错误?因为我得到的值远小于实际长度.
产量LogCat:
--------- beginning of /dev/log/system
--------- beginning of /dev/log/main
V/PhonetapeActivity( 8842): Sensor Listener Registered
V/PhonetapeActivity( 8842): Sensor Unregistered
V/PhonetapeActivity( 8842): No. of Iterations : 49
V/PhonetapeActivity( 8842): Value of acceleration : 3.5762787E-7
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665585965
V/PhonetapeActivity( 8842): Value …Run Code Online (Sandbox Code Playgroud) 我是一名计算机科学专业的学生,从事电子项目,需要计算偏航,俯仰,滚动和X,Y,Z位移.我想用一把枪连接IMU并跟踪它的方向和位移.我能够得到Yaw,Pitch和Roll,但遗憾的是无法理解如何计算我的枪的位移或位置.我使用的是包含MPU-6050的10-DOF GY-87传感器.
我得到了g和m/s2格式的值.从我研究过的研究来看,我需要获得加速度/时间2,然后添加所有值.但是我不明白我应该使用什么时差.参考:如何根据手机加速度计算距离
#include "I2Cdev.h"
#include "MPU6050.h"
// Arduino Wire library is required if I2Cdev I2CDEV_ARDUINO_WIRE implementation
// is used in I2Cdev.h
#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
#include "Wire.h"
#endif
// class default I2C address is 0x68
// specific I2C addresses may be passed as a parameter here
// AD0 low = 0x68 (default for InvenSense evaluation board)
// AD0 high = 0x69
MPU6050 accelgyro;
//MPU6050 accelgyro(0x69); // <-- use for AD0 high
int16_t ax, ay, az;
float dx, dy, …Run Code Online (Sandbox Code Playgroud)