9robot 发表于 2017-5-15 10:49:16

【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)获取加速度值,通过串口打印出来。

nana96 发表于 2017-11-13 21:49:17

good data for me
页: [1]
查看完整版本: 【Curie Nano】IMU学习