【Curie Nano】IMU学习
本帖最后由 9robot 于 2017-5-15 10:59 编辑Curie Nano最吸引我的地方应该就是它的IMU部分了,Curie内部集成了汽车级的六轴IMU传感器,通过直接调用封装好的函数就可以获取姿态信息等,相比其他方式更简单、更方便,不用去考虑加速度传感器、陀螺仪的通信协议,四元数和欧拉角之间的变化问题等等,直接开始自己的想法。
Arduino IDE中提供了几个关于IMU的示例程序,打开示例程序——Accelerometer,编译上传到Curie Nano中,打开串口监视器,就可以看到三个轴的加速度输出,在静止状态下,输出的是重力加速度在三个轴上的分量。
#include "CurieIMU.h"
void setup() {
Serial.begin(9600); // initialize Serial communication
while (!Serial); // wait for the serial port to open
// initialize device
Serial.println("Initializing IMU device...");
CurieIMU.begin();
// Set the accelerometer range to 2G
CurieIMU.setAccelerometerRange(2);
}
void loop() {
float ax, ay, az; //scaled accelerometer values
// read accelerometer measurements from device, scaled to the configured range
CurieIMU.readAccelerometerScaled(ax, ay, az);
// display tab-separated accelerometer x/y/z values
Serial.print("a:\t");
Serial.print(ax);
Serial.print("\t");
Serial.print(ay);
Serial.print("\t");
Serial.print(az);
Serial.println();
}但是奇怪的是,我吧Curie Nano水平放置,正常来说Z轴的加速度应该是1G,但是程序输出的是0.87左右,翻转后则达到了1,20左右,这明显是有问题的,有待进一步研究。
这段程序关于IMU 的操作只用到了三个函数,首先包含CurieIMU.h头文件
在setup函数中写入
CurieIMU.begin()和CurieIMU.setAccelerometerRange(2);
CurieIMU.begin()负责IMU模块的初始化工作,CurieIMU.setAccelerometerRange(2)则将量程设置为正负2G。
在loop函数中通过函数 CurieIMU.readAccelerometerScaled(ax, ay, az)获取加速度值,通过串口打印出来。
good data for me
页:
[1]