android陀螺仪方向,android – 如何使用罗盘读数和陀螺仪读数获取手机的方位角?...

The orientation sensor actually derives its readings from the real magnetometer and the accelerometer.

我想也许这是混乱的根源.文件中说明了哪些内容?更重要的是,文档在某处是否明确指出陀螺仪读数被忽略?据我所知,该视频中描述的方法是实现的:

该方法使用陀螺仪并整合读数.这几乎使得剩下的问题成为可能;不过我会尽力回答.

方向传感器已经为您整合了陀螺仪读数,这就是您如何获得方向.我不明白你为什么要这样做.

您没有正确地进行陀螺仪读数的整合,比CurrentOrientation = dR(这是不正确的)更复杂.如果您需要集成陀螺仪读数(我不明白为什么,SensorManager已经为您做了),请阅读Direction Cosine Matrix IMU: Theory如何正确执行(公式17).

不要尝试与欧拉角(也称为方位角,卷轴)集成,没有什么好的出现.

请在计算中使用四元数或旋转矩阵,而不是欧拉角.如果您使用旋转矩阵,您可以随时将其转换为欧拉角,参见

(对于四元数也是如此).(在非分解的情况下)有两种表示旋转的方式,即您将得到两个欧拉角.选择所需范围内的那个. (在gimbal lock的情况下,欧拉角度无限多,参见上面的PDF).只是承诺,在旋转矩阵到欧拉角度转换后,您的计算中不会再次使用欧拉角.

目前还不清楚您正在使用补充过滤器.您可以基于Direction Cosine Matrix IMU: Theory手稿实现一个非常好的传感器融合,这基本上是一个教程.这不是微不足道的,但我不认为你会发现一个比这个手稿更好,更容易理解的教程.

当我基于这个手稿实现传感器融合时,我必须发现自己的一件事是所谓的integral windup可以发生.我通过限制TotalCorrection来处理它(第27页).如果你实现这个传感器融合,你会明白我在说什么.

更新:在此,我回答您在接受答案后发表在评论中的问题.

I think the compass gives me my current orientation by using gravity and magnetic field,right? Is gyroscope used in the compass?

不,在罗盘中没有使用陀螺仪.

Could you please kindly explain why the integration done by me is wrong? I understand that if my phone’s pitch points up,euler angle fails. But any other things wrong with my integration?

有两个无关的事情:(i)整合应该是不同的,(ii)由于万向节锁,欧拉角是麻烦的.我重申,这两个是无关的.

对于集成:这里是一个简单的例子,你可以如何看到你的集成有什么问题.让x和y是房间里水平面的轴.在手中拿电话.将手机围绕x轴(房间)旋转45度,然后围绕y轴(房间)旋转45度.然后,从头开始重复这些步骤,但是现在首先围绕y轴旋转,然后围绕x轴旋转.手机的方向完全不一样.如果根据CurrentOrientation = dR进行整合,您将看到没有区别!请阅读上述链接的方向余弦矩阵IMU:理论手稿,如果您想要正确地进行整合.

对于欧拉角度:它们打破了应用程序的稳定性,这对我来说不足以在3D中进行任意旋转.

我仍然不明白你为什么试图自己做,为什么你不想使用平台提供的方向估计.有机会,你不能做得比那更好.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值