RoboVigor / RV-CornerStone

RoboVigor 电控基石
14 stars 5 forks source link

陀螺仪代码重写 #58

Closed jiwencao closed 5 years ago

Zxm201807 commented 5 years ago

加速度计

加速度计的本质是检测力而非加速度,加速度计捕捉的是由加速度引起的惯性力。

原有运动状态的倾向,而此时若以该物体为参考系,并在该参考系上建立坐标系,看起来就仿佛有一股方向相反的力作用在该物体上令该物体在坐标系内有发生位移的趋向,因此称之为惯性力。惯性力

加速度计坐标轴

加速度计可以检测到X,Y,Z方向上力的分量。加速度计分为模拟加速度计和数字加速度计,数字加速度计可以直接获取信息,而模拟加速度计需要ADC模块进行转变。将获得电压与零加速度电压相减即使电压的偏移量,最后除以加速度计灵敏度即可获得加速度大小。获得了三个分量后便可合成加速度。之后便可获得加速度与加速度分量间的夹角。

陀螺仪

陀螺仪检测角度变化率的值,而陀螺仪的输出值是电压。同样需要ADC和灵敏度将其转变为真实值。

加速度计测量的是惯性力,这个力可以由重力引起(理想情况只受重力影响),当也可能由设备的加速度(运动)引起。因此,就算加速度计处于一个相对比较平稳的状态,它对一般的震动和机械噪声很敏感。这就是为什么大部分的IMU系统都需要陀螺仪来使加速度计的输出更平滑。陀螺仪也会有噪声,但由于它检测的是旋转,因此对线性机械运动没那么敏感,不过陀螺仪有另外一种问题,比如漂移(当选择停止的时候电压不会回到零速率电压)。然而,通过计算加速度计和陀螺仪的平均值我们能得到一个相对更准确的当前设备的倾角值,这比单独使用加速度计更好。

电子罗盘

要实现电子罗盘功能,需要一个检测磁场的三轴磁力传感器和一个三轴加速度传感器。

地磁场是一个矢量,对于一个固定的地点来说,这个矢量可以被分解为两个与当地水平面平行的分量和一个与当地水平面垂直的分量。如果保持电子罗盘和当地的水平面平行,那么罗盘中磁力计的三个轴就和这三个分量对应起来。

地磁场矢量分解

罗盘中的航向角(Azimuth)就是当前方向和磁北的夹角。当罗盘水平旋转的时候,航向角在0º- 360º之间变化。一个传统的电子罗盘系统至少需要一个三轴的磁力计以测量磁场数据,一个三轴加速计以测量罗盘倾角,通过信号条理和数据采集部分将三维空间中的重力分布和磁场数据传送给处理器。

参考资料1

参考资料2

参考资料3

tccoin commented 5 years ago

@Zxm201807 图挂了…上传Markdown到GitHub的时候图片要单独上传

sleepymemory commented 5 years ago

陀螺仪是什么

1.陀螺仪(叫运动监测装置)是指用高速回转体的动量矩敏感壳体相对惯性空间绕正交于自转轴的一个或二个轴的角运动检测装置。利用其他原理制成的角运动检测装置起同样功能的也称陀螺仪。

2.陀螺:绕一个支点高速转动的刚体称为陀螺。其中几何对称轴是它的自转轴。

3.陀螺的旋进:在一定的初始条件]和一定的外在力矩作用下,陀螺会在不停自转的同时,环绕着另一个固定的转轴(一般是自转轴)不停地旋转,这就是陀螺的旋进(precession),又称为回转效应(gyroscopic effect)。

4.我们使用的是传感陀螺仪,利用陀螺的进动性与稳定性来达到检测现陀螺仪状态。

MPU6500

1.MPU6500是6轴陀螺仪,这意味着它由三轴陀螺仪以及三轴加速度计

2.加速度计:加速度计可以看做一个盒子里装着小球,我们通过测量小球対壁的作用力得到加速度,实际它测得的惯性力会因外部环境的变化,而检测出非惯性力,但可以假想成是由加速度造成的,多以可以间接测出对于三个方向的加速度。

在实际情况中假设墙体的三围坐标系是(x,y,z)三轴(xy平面为水平面,y轴是垂直面),那么再初始状态(指静止状态下仅重力作用)下这个盒子可能是以非完全理想的状态(即不是z=-1g),可能是(x=0.71g,y=0.71g,z=0g),这种状态下就不能直接由加速度计得出运动加速度,我们只能得到它的模在空间上是1g。

在工作原理上,这些值理论上用数模转换过来,查询我们的ADC模拟可以看到是16bit的所以理所当然是从0-2^16-1

通过查询mpu6500driver.c 我们可以看到可测值范围为+8G~-8G

那么除去这些之外,从加速度计中还能得到向量R与3轴之间的夹角

3.陀螺仪

陀螺仪实际检测一个轴的旋转。 在实际运用中,陀螺仪一般实际解算(数模转换)给你一个单位为度/秒的值。

计算实际角度

从现在开始我们认为你已经设置好了IMU模块并能计算出正确的Axr,Ayr,Azr值(实际角度值,及数学的方式)以及RateAyz,RateAyz(角度变化率)。下一步,我们分析这些值之间的关系并得到更准确的设备和地平面之间的倾角。 你可能会问自己一个问题,如果加速度计已经告诉我们Axr,Ayr,Azr的倾角,为什么还要费事去得到陀螺仪的数据?答案很简单:加速度计的数据不是100%准确的。有几个原因,还记加速度计测量的是惯性力,这个力可以由重力引起(理想情况只受重力影响),当也可能由设备的加速度(运动)引起。因此,就算加速度计处于一个相对比较平稳的状态,它对一般的震动和机械噪声很敏感。这就是为什么大部分的IMU系统都需要陀螺仪来使加速度计的输出更平滑。

陀螺仪也会有噪声,但由于它检测的是旋转,因此对线性机械运动没那么敏感,不过陀螺仪有另外一种问题,比如漂移(当选择停止的时候电压不会回到零速率电压)。然而,通过计算加速度计和陀螺仪的平均值我们能得到一个相对更准确的当前设备的倾角值,这比单独使用加速度计更好。

下一部分要讨论四元数解算以及实际六轴陀螺仪解算过程。

tccoin commented 5 years ago

move to https://www.notion.so/tccoin/dcec4e9083c148d8ad1c9f81c50f24b1