TA的每日心情 | 奋斗 2024-9-22 22:20 |
---|
签到天数: 944 天 连续签到: 1 天 [LV.10]以坛为家III
|
本帖最后由 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)获取加速度值,通过串口打印出来。
|
|