我想控制能够俯仰和横滚的车辆的姿态(横滚,俯仰,偏航)。为此,我创建了一个四元数PID控制器。首先,我将车辆的当前姿态转换为四元数Qc,并使用四元数Qd对期望的姿态进行相同的处理。然后,我将PID控制器的输入计算为Qr = Qc'x Qd。然后,根据力的要求,将四元数的虚部馈送到车辆的侧倾,俯仰,偏航轴上。我在模拟器上进行了测试,但是控件可以正常运行,但在某些情况下会变得不稳定(要求R:60 P:60 Y:60)。我还希望此方法能解决奇点问题(即90度音调)

有人知道我为什么会出现这种行为,如果可以的话(彻底)解释我在做什么错? >

#1 楼

您是否正在使用一个PID控制器尝试驱动四元数?根据定义,四元数表示三个自由度,横摆角偏航,而PID控制器是单输入单输出(SISO)控制器。

您正试图通过在四元数中隐藏三个变量来掩盖多输入多输出(MIMO)系统。

我建议您考虑使用三个PID控制器。如果您担心奇异性,请尝试采用轴角配置,其中两个控制器驱动轴的方位角和仰角,而第三个控制器驱动轴的旋转。

评论


$ \ begingroup $
造成误解,很抱歉,我已经在每个轴(滚动,俯仰,偏航)上使用PID控制器,这意味着总共3个控制器。
$ \ endgroup $
– MrHat
2015年9月8日9:41

$ \ begingroup $
没关系,最后,这与我将欧拉角转换为四元数的方式只是一个愚蠢的错误。 (还是)感谢你的建议。
$ \ endgroup $
– MrHat
2015年9月8日13:25