1回答

1收藏

[原创] 【Curie Nano】IMU学习

DFROBOT DFROBOT 5767 人阅读 | 1 人回复 | 2017-05-15

本帖最后由 9robot 于 2017-5-15 10:59 编辑

       Curie Nano最吸引我的地方应该就是它的IMU部分了,Curie内部集成了汽车级的六轴IMU传感器,通过直接调用封装好的函数就可以获取姿态信息等,相比其他方式更简单、更方便,不用去考虑加速度传感器、陀螺仪的通信协议,四元数和欧拉角之间的变化问题等等,直接开始自己的想法。
       Arduino IDE中提供了几个关于IMU的示例程序,打开示例程序——Accelerometer,编译上传到Curie Nano中,打开串口监视器,就可以看到三个轴的加速度输出,在静止状态下,输出的是重力加速度在三个轴上的分量。


  1. #include "CurieIMU.h"

  2. void setup() {
  3.   Serial.begin(9600); // initialize Serial communication
  4.   while (!Serial);    // wait for the serial port to open

  5.   // initialize device
  6.   Serial.println("Initializing IMU device...");
  7.   CurieIMU.begin();

  8.   // Set the accelerometer range to 2G
  9.   CurieIMU.setAccelerometerRange(2);
  10. }

  11. void loop() {
  12.   float ax, ay, az;   //scaled accelerometer values

  13.   // read accelerometer measurements from device, scaled to the configured range
  14.   CurieIMU.readAccelerometerScaled(ax, ay, az);

  15.   // display tab-separated accelerometer x/y/z values
  16.   Serial.print("a:\t");
  17.   Serial.print(ax);
  18.   Serial.print("\t");
  19.   Serial.print(ay);
  20.   Serial.print("\t");
  21.   Serial.print(az);
  22.   Serial.println();
  23. }
复制代码
但是奇怪的是,我吧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)获取加速度值,通过串口打印出来。

分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

nana96

发表于 2017-11-13 21:49:17 | 只看该作者

good data for me
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条