由加速度计解算得到姿态角

先说结论,再解释原理
假设世界坐标系下重力向量为g=(001)Tg=(001)T
机体坐标系下,将加速度计测量得到的数据归一化后得到a=(axayaz)Ta=(axayaz)T
横滚角、俯仰角、偏航角可简单理解为加速度计绕X、Y、Z轴旋转的角度
若使用mpu6050,则将芯片上的X轴对准前方,Y轴向左,Z轴向上(mpu6050芯片上显示的坐标轴为陀螺仪的坐标轴,mpu6050中加速度计和陀螺仪坐标轴正方向相反)即将加速度计X轴对准后方,Y轴向右,Z轴向下(这样表示的好处是如果加速度方向为前,则加速度计所测得的加速度为正)
使用右手定则,大拇指分别指向陀螺仪X、Y、Z轴正方向,四指所指方向角度为正
俯仰角θ=asin(ax)θ=asin(−ax)
横滚角ϕ=atan(ay/az)ϕ=atan(ay/az)
在只有加速度计的情况下,无法测得偏航角ψψ

以下为原理
假设加速度计绑定在机体上,并且加速度X、Y、Z轴与机体X、Y、Z轴重合,在机体不剧烈运动的情况下,可认为加速度计测出的加速度表示重力加速度,可根据这一特性,解算得出姿态。

在初始未旋转的状态,即机体坐标系与世界坐标系重合时,将加速度计测得的数据归一化后得到a=g=(001)Ta=g=(001)T
假设经过旋转RnRn,得到加速度计归一化后的数据a=(axayaz)Ta=(axayaz)T
a=Rnga=Rn∗g
其中
旋转矩阵R=R=

cosθcosψcosψsinθsinϕsinψcosϕcosψsinθcosϕ+sinψsinϕcosθsinψsinψsinθsinϕ+cosψcosϕsinψsinθcosϕcosψsinϕsinθsinϕcosθcosϕcosθ[cosθcosψcosθsinψ−sinθcosψsinθsinϕ−sinψcosϕsinψsinθsinϕ+cosψcosϕsinϕcosθcosψsinθcosϕ+sinψsinϕsinψsinθcosϕ−cosψsinϕcosϕcosθ]

Rn=R(θ,ψ,ϕ)Rn=R(−θ,−ψ,−ϕ)
其中θθ 为俯仰角,ψψ为偏航角,ϕϕ为横滚角
由此,得到ax=sinθax=sinθay=sinϕcosθay=−sinϕcosθaz=cosϕcosθaz=cosϕcosθ
因此得到
θ=asin(ax)θ=asin(ax)
ϕ=atan(ay/az)ϕ=atan(−ay/az)
使用mpu6050加速度计和陀螺仪数据时,分别用这两种数据解算得到的姿态角是相反的,一般将加速度计的旋转矩阵取反,即以芯片标明的XYZ轴方向为正方向
因此本文开头部分计算姿态角公式时对旋转矩阵取反
θ=asin(ax)θ=asin(−ax)
ϕ=atan(ay/az)ϕ=atan(ay/az)

向量的旋转与坐标系的旋转

向量旋转
旋转矩阵RR表示向量n按照ZYXZ−Y−X的顺序,绕这三个轴分别旋转ψϕθψ、ϕ、θ
得到向量旋转后的坐标为n=Rnn′=R∗n
注意上面的旋转矩阵表示的是向量的旋转,而非坐标系的旋转
坐标系旋转
如果向量nn不旋转,而向量n所在坐标系按照ZYX的顺序旋转
则可以得到坐标系旋转后n向量的坐标为n=Rnn=RTnn″=Rn∗n=RT∗n

至于为什么Rn=R(θ,ψ,ϕ)Rn=R(−θ,−ψ,−ϕ),可类比二维向量的旋转
二维旋转矩阵

r(θ)=[cosθsinθsinθcosθ]r(θ)=[cosθ−sinθsinθcosθ]

向量b=(xy)Tb=(xy)TZZ轴(沿纸面向外)逆时针旋转θ 可表示为
b=r(θ)bb′=r(θ)∗b
若向量bb不旋转,而YX坐标系绕ZZ轴逆时针旋转θ后,bb的坐标变为
b=r(θ)b
三维的旋转矩阵与二维的旋转矩阵有相似的规律
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值