正点原子IMU901/IMU601陀螺仪如何进行正方向判断(标准库代码)

编者补充前言:为什么要讲如何辨别正方向?

初学者在第一次接触到陀螺仪的时候并不了解三个轴的角度代表了现实三维空间哪个方向的值,很难理解怎么把角度值空间维度的方向给对应上,更别谈如何利用这个传感器去完成一些项目了。

辨别了正方向有什么用?

这是最重要的一个问题!因为陀螺仪受硬件影响,如果不对着正方向上电的话那么这个传感器反馈的角度是存在一个误差值的且这个误差值是随机的。如果你是以一个错误的方向上电,即使你再把他对着正方向,他的三个角度值也不会是零,这只会使初学者更加疑惑:为什么同一个方向会显示不同的值?

大家这么可以理解:有一点第一次上电值为(10,10,10),第二次上电这个值显示是(12,13,11),第三次上电是(6,8,4).....遇到这种情况,那陀螺仪反馈的值还怎么用呢?此时这个值已经失去了参考意义。

这时候就需要找到一个绝对零点作为参考点,以保证我这次上电陀螺仪反馈的数据是正确的,这样其他位置的值才是能和现实空间对应上的值。而对着正方向上电则能保证你上电时的值为零点,陀螺仪反馈的数据都是可用的,很好的解决了上述问题。

重点来了:对着正方向上电能让你的初始坐标为零点,你其他方位反馈的值都是正确可用的。

编者当时刚学会三个轴的角度对应了哪个方位,但是每次上电,陀螺仪的值都不一样让我苦恼了很久,网络上也没有找到这个问题的答案,所以才花费了很多时间来完成这个文章来帮助初学者跨过第一步。也很感谢读者给我反馈的意见,让我重新完善这篇文章,帮助更多的读者解决这个问题。

一、硬件介绍

        正点原子的IMU901/IMU601在淘宝即可购买,二者区别是IMU601只能读取三轴角度,三轴角速度,以及三轴加速度;而IMU901在此基础上多了三轴磁力计以及高度计、气压计、和温度计。前者适用于大部分场景,后者更适用于飞行器。正点的陀螺仪相较于其他厂商的产品更为稳定一些,价格比较高昂。对于大多数硬件而言就是一分价钱一分货,要坚信硬件上多花钱,软件上就能少费很多精力。在使用时只需要连接TX,RX,VCC,GND这四个针脚即可,VCC可以选择3.3-5V电源进行供电。

8869ab2043064b28904f5e2b7fc9f6a1.png

dc60695b2aad46ebbdcd74ca836cbe53.jpeg

98a9c07d7d964b69ab62872752857ab9.png

二、软件平台

        上位机调试软件ATK-IMU1.04版本,在该软件能直观的看出各个数据以及各个数据的曲线图,还可以做一些硬件上的调整,例如:加速度校准,磁力计校准等。最主要的一点就是可以看到陀螺仪的三轴数据对应的飞机姿态,可以更直观的看出各个值对应什么。

7201e5838c7b4776bbae847bdfbbe380.png

         这其中X代表横滚角,Y代表俯仰角,Z代表偏航角。因为受硬件的限制,很多时候同一个位置,上位机会显示不同的位置,这时候就会让初学者很费解:到底怎么样才是标准意义上的正方向呢?其实方法很简单,跟着我的手势做必然能让你学会怎么放正你的陀螺仪。

三、陀螺仪标准正方向

4e1f7ca0f3204b0d855d13d94a654851.jpeg

 这里查看背后的丝印可以看出,是有三个箭头指向的,这里我们只需要X这一个箭头的指向。

dcf69e47e6b54ef2afd5b37654f25f83.jpeg

        把有XYZ丝印的一侧置于下方,让右手大拇指指向手机指南针的正南方X轴的正方向指向食指的方向,这时候你会发现上位机的飞机头会正对着你,此时陀螺仪背后丝印的Y轴指向正北方。

        这时候陀螺仪三个轴的角度值都接近于0,陀螺仪反馈的角度值误差最小。

四、容易出现的误差情况分析

        但有时候你会发现,飞机头并未对着你,仍存在一定的误差。这时候就是另一个细节了:在给陀螺仪上电时,一定要按着手式让大拇指指向南方,X轴和食指的方向平齐,切记!这样上电能最大限度的消除掉误差,上位机的飞机头几乎都会准确的指向你。如果还是有误差的话可能是你所处的环境有磁场干扰(GPS信号接收器)或者是你的陀螺仪需要在上位机进行数据校准,最坏的一种情况就是固件损坏,需要刷新的固件(这点可以向正点原子的淘宝客服要)。如果说这三种情况均不符合的话那就去找商家协商吧。

五、陀螺仪各个角度代表的实际情况

c477ab8b3ff94c97a8eb2b0800ab3723.jpeg

这是已经按前文所说校准过了正方向,三轴角度值都为0,如果说你的飞机也是这样,那么恭喜你已经成功了!此时上位机中的机头指向屏幕前的各位彭于晏。

下面的内容是为了让初学者学习了解三个轴角度值对应现实空间的方向,已经掌握的读者可以忽略不看。

7201e5838c7b4776bbae847bdfbbe380.png

这时候让陀螺仪向东边倾斜,观察上位机的变化

7096cb8104ac4ee5b31a00bf0e70cbad.jpeg

8303c62d6ba54bf0ba0c6e042dd63868.jpeg

 Y的数据,也就是俯仰角发生了极大的改变,由上位机的图片带入实际图片可以这么理解:东边那一侧为上位机中飞机的机头。东西侧倾斜改变的是俯仰角的值。此时在把陀螺仪往西边倾斜:

4648925fd8c049a383685f4c8810ed6f.jpeg

28fde9d8fcb84ab0b1d5f084977ed941.png

观察两次的值可以得出:飞机向下俯冲时俯仰角为正值,飞机向上俯冲时俯仰角为负值

这时候再把陀螺仪向北方倾斜观察上位机对应的情况:

488ec648aeaf41ab841b5dab29afc3f5.jpeg 403c185755d24d2cae8388afc87c8e87.jpeg

 ebb36c1b1fa3483589ffabeed9c58b4c.jpeg

1101b790ef8744b7abd68337b135494d.jpeg观察两次的值可以得出:飞机向右恒滚时横滚角为正值,飞机向左横滚时横滚角为负值 。北方和南方倾斜对应的是陀螺仪的横滚角。

        最后一个就是偏航角了,偏航角数据是被利用的最多的,当按上述方法把陀螺仪摆放到正方向后,保证陀螺仪中心位置不动,沿着逆时针方向缓慢旋转,会发现偏航角逐渐增大。在这里就不做图片论述了,大家可以自行去做实验学习和理解。

六、STM32F103ZET6驱动陀螺仪IMU601/IMU901标准库代码(代码兼容可通用)

代码下载链接(STM32F103标准库通用):

        IMU601(六轴陀螺仪)标准库代码资源-CSDN文库

        IMU901(十轴陀螺仪)正在更新中.....

        由于CSDN有最低积分限制,囊中羞涩的同学可以私信我,我会免费分享代码。

        由于这边文章代码不做主要讲解部分,完整代码已更新,讲解的文章会抽空更新,你们的点赞收藏是我更新的最大动力,制作不易还请多多支持。遇到不理解的问题可以私信问我,我会不定期一一回复的。

  • 15
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值