完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、理论介绍 1.1.欧拉角转四元数 欧拉角转四元数的公式我们在第六章入门篇第三节有介绍,这里回顾一下 根据公式我们可以写出代码 1.2 坐标系校准 我们采用右手坐标系,接着我们依次来校准角度数据的方向。 打开终端,点击RST,查看IMU数据。 首先是X轴,我们让开发板上爱神丘比特的剑头指向自己,然后从右侧往左侧倾斜。 可以看到此时X轴为正值,符合右手坐标系法则。 接着是Y轴,平放,将箭头朝向自己的胸口,接着抬高板子,让箭头指向自己的头部,观察Y轴的变化。 Y轴为负值,不符合右手坐标系法则,所以Y的值应该取一次负,使其为正。 接着是Z轴,平放,将箭头朝向自己的胸口,然后逆时针旋转板子,观察数值变化。 值为正,表示符合右手坐标系法则。 你可能会问小鱼怎么确认怎样旋转是正,怎样旋转是负,首先要确认轴向,我们开发板的Z轴朝上,X轴朝前,此时Y轴应该朝左。接着摊开右手手掌,用大拇指朝向轴的方向,比如朝向X轴,然后握起手掌,那么你握的方向就是正方向。 二、开始写代码 新建工程example07_mpu6050_oop 接着为其添加依赖 修改platformio.ini 接着在lib下新建IMU文件夹,并在文件夹下新建IMU.h和IMU.cpp IMU.h IMU.cpp main.cpp #include 《Arduino.h》 #include “IMU.h” MPU6050 mpu(Wire); // 初始化MPU6050对象 IMU imu(mpu); // 初始化IMU对象 imu_t imu_data; unsigned long timer = 0; void setup() { Serial.begin(115200); imu.begin(18, 19); // 初始化IMU,使用18,19引脚 } void loop() { imu.update(); if ((millis() - timer) 》 100) { imu.getImuData(imu_data); // 获取IMU数据结构体 Serial.printf(“imu:teuler(%f,%f,%f)n”, imu_data.angle_euler.x, imu_data.angle_euler.y, imu_data.angle_euler.z); Serial.printf(“imu:torientation(%f,%f,%f,%f)n”, imu_data.orientation.w, imu_data.orientation.x, imu_data.orientation.y, imu_data.orientation.z); timer = millis(); } } 对于代码的解释已经放到了注释之中。 编译下载后,你将看到 |
|
相关推荐 |
|
2243 浏览 0 评论
1413 浏览 1 评论
4513 浏览 2 评论
2980 浏览 0 评论
这是汽车360全景控制器上的主板,请问圆圈中的原件是什么,起什么作用?
2714 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 16:09 , Processed in 1.106991 second(s), Total 45, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号