对于一个学校项目,我们得到了一个mpu 9150(陀螺仪/加速度计/磁力计(?)),我们希望获得它的滚动/俯仰/偏航/航向。
我使用了一个代码作为库中的一个例子,但它只给我们这种格式的原始数据:ax / ay / az / gx / gy / gz / mx / my / mz。那不是我们想要的。
到目前为止,我设法使用以下代码段进行滚动和推销:
roll = atan2(ay, az)+PI;
pitch = atan2(-ax, az)+PI;
// Convert everything from radians to degrees:
pitch *= 180.0 / PI;
roll *= 180.0 / PI;
我读到我必须使用磁力计来获得偏航,但我不知道我需要什么样的形式。
在示例代码中,内部也有这个片段,也许这就是我需要使用的,或者任何人都知道我可以使用的其他功能/方法?
// read raw accel/gyro measurements from device
accelgyro.getMotion9(&ax, &ay, &az, &gx, &gy, &gz, &mx, &my, &mz);
// these methods (and a few others) are also available
//accelgyro.getAcceleration(&ax, &ay, &az);
//accelgyro.getRotation(&gx, &gy, &gz);
我使用I2Cdev和MPU6050库
另一个问题是,我可以从传感器获得什么样的东西?是否有可能获得它的高度或高度差异?
感谢您的帮助。
答案 0 :(得分:0)
你的mpu的原始值大多非常不精确,漂移,......不太可用。 MPU6050库对于获取有用的值非常有用。要获得你的偏航/滚动/俯仰,你可以使用MPU6050 Libary,就像这个example sketch中描述的例子一样。只需添加
#define OUTPUT_READABLE_YAWPITCHROLL
在这个代码的顶部运行它(使用正确的波特率)。
使用传感器也可以获得实际温度。