arduino下读取MPU6050数据
参考:http://diyhacking.com/arduino-mpu-6050-imu-sensor-tutorial/
硬件
- arduino uno或arduino mega2560
- mpu6050传感器(GY-521或GY-9150)
- 杜邦线若干
连线
注意:如果使用arduino mega2560, mpu6050的SCL和SDA连线到arduino mega2560的pin21和pin20引脚。
程序
下载 http://diyhacking.com/projects/MPU6050.zip 和 http://diyhacking.com/projects/I2Cdev.zip,解压后放到Arduino的libraries目录下,重启Arduino.
通过 File –> Examples –> MPU6050 –> Examples –> MPU6050_DMP6 打开程序并上传。
打开串口监控,设置波特率115200, 看到 “Send any character to begin DMP programming and demo: “ 时输入任意一个字符,然后发送。就能看到yaw, pitch 和roll的值,如下图所示。
注意: 最初10秒的数据是不准确的。
如果要修正mpu6050的偏移,请参考:
http://www.i2cdevlib.com/forums/topic/96-arduino-sketch-to-automatically-calculate-mpu6050-offsets/
该脚本计算出的偏移如下:
Sensor readings with offsets: -3 -3 16375 -1 1 -1
Your offsets: -2341 -1472 1260 181 -22 7
Data is printed as: acelX acelY acelZ giroX giroY giroZ
Check that your sensor readings are close to 0 0 16384 0 0 0
把该偏移带入mpu6050替换下面的值:
// supply your own gyro offsets here, scaled for min sensitivity
mpu.setXGyroOffset(220);
mpu.setYGyroOffset(76);
mpu.setZGyroOffset(-85);
mpu.setZAccelOffset(1788); // 1688 factory default for my test chip
替换后结果如下:
// supply your own gyro offsets here, scaled for min sensitivity
mpu.setXGyroOffset(181);
mpu.setYGyroOffset(-22);
mpu.setZGyroOffset(7);
mpu.setZAccelOffset(1260); // 1688 factory default for my test chip
在ROS中应用
参考:https://gi