找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 997|回复: 5

求助,解算出的欧拉角经常有跳变

[复制链接]
发表于 2018-5-25 09:18:41 | 显示全部楼层 |阅读模式
我是在NED坐标系下,按偏航,俯仰,横滚的顺序(ZYX)进行解算,使用的是一阶龙格库塔解算四元数再转到欧拉角。但是解算出的结果在触发万向节锁的时候(pitch=±90°)或超过±90°范围的时候,另外两个角就会从现有角度增大或减小180°。我猜这就是为什么用四元数解算就没有万向节锁的问题的原因。但是这个跳变有的时候会不正常,产生错误的信息,就像下面这张图: QQ截图20180525085955.png


这分别做的是,偏航360,横滚360,俯仰360.
俯仰角在(-90,-180)和(90,180)的时候,横滚角和偏航角都转了180°。
但是在横滚角和偏航角的转了180度的时候,中间有一段数据的跳变,比如横滚角有在36.3~36.5时有0.2秒从-175.25°跳到了178.63,178.03之后又跳到了-178.23。(可能是我手抖了导致角度不是一直在-180,但是理论上不应该出现从负到正的跳变)
偏航角在后面的时候也有从正的调到负的的情况。
有没有大神分析一下是什么原因造成的?

而且,在解算复杂的旋转情况是,这种超出俯仰角范围的情况,另外两个角的跳变变得很频繁。
QQ截图20180525091249.png


另外我还想问一下,有没有什么办法能让俯仰角实现全角度解算?因为每次俯仰角超过了±90°的范围另外两个角就会变180度来满足俯仰360度的旋转,那说明四元数是知道俯仰能转360°的,只是因为反正弦解算的时候导致了它被限制在了正负90°。有的时候我不想要这个跳变存在,每次跳变都会导致控制的时候抖一下,很尴尬,有没有什么办法能够解决的?
回复

使用道具 举报

发表于 2018-5-25 09:35:32 | 显示全部楼层
不用欧拉角就行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-25 15:55:15 | 显示全部楼层
Bluesky 发表于 2018-5-25 09:35
不用欧拉角就行

难道还有别的表示方法吗?

另外为什么解出的欧拉角在俯仰超出范围时,会自动给另外两个角减180°?这在数学上是怎么体现的了?

还有那个超出了正负90°时,那个不正常的跳变是正常现象吗?
回复 支持 反对

使用道具 举报

发表于 2018-5-25 16:02:04 | 显示全部楼层
四元数、余弦矩阵这些都是可以表示全姿态的啊,欧拉角只有3个状态量,计算量更小,如果本身没有缺陷的话,那还要用四元数做什么。

网上的程序,不管是用四元数计算还是余弦矩阵计算,最后都要转成欧拉角,是因为最后做控制的时候,需要用到它。如果你可以直接用四元数来做控制,那就没有必要再转欧拉角了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-25 17:34:41 | 显示全部楼层
Bluesky 发表于 2018-5-25 16:02
四元数、余弦矩阵这些都是可以表示全姿态的啊,欧拉角只有3个状态量,计算量更小,如果本身没有缺陷的话, ...

原来还有用四元数做控制这种骚操作吗?  因为云台想要三个角度都在360度旋转,我去找找有没有相关方法。或者版主有没有相关的资料推荐?
回复 支持 反对

使用道具 举报

发表于 2018-9-25 11:05:01 | 显示全部楼层
LZ问题解决了吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表