搜索
bottom↓
回复: 58

飞控算法的研究

[复制链接]

出0入0汤圆

发表于 2010-2-15 15:07:20 | 显示全部楼层 |阅读模式
我是四轴飞行器的“铁丝”,从发现OURDEV的这个分坛到现在已经有1年多了,在这一年的时间里一直潜水吸收各家之精华。在各位的帮助下模仿MK制作了第一个四轴。
我是学自动控制的本科生,临近毕业我把毕设题目定为四轴飞控算法的研究。拜读了德国的代码和cnmusic的精辟分析,参看了zht9961020以及feng_matrix对卡尔满滤波器的精彩讲解,让我学到了很多。
德国的代码写的很精彩,但我们的目标是超越德国。所以我认为我们更应该发扬原创精神,从底层搞出一个自主的飞控算法。

下面把这一段时间的算法推到晒一下,希望给位高手批评

目前大部分对四轴的控制采用的是PID的串级控制,这种控制固然是一种很经典的控制算法,但PID是针对线性定常系统提出的经典控制算法,而四轴是典型的非线性系统。虽然某些条件下可以简化为线性系统处理,但在极端条件下肯定会出现控制不好,收敛速度不够甚至有发散的可能。

综上,我暂定为四轴使用无模型控制算法

无模型控制的基本规律是 对于任意离散时间动态系统S,设{u(k-1),y(k)}和{u(k),y(k+1)}是系统在相邻时刻的两组观测数据,并且设定u(k-1)不等于u(k)
则必存在σ(k)使得下式成立:
y(k+1)-y(k)=σ(k)[u(k)-u(k-1)]
上式成为系统S的泛模型,σ(k)为泛模型的特征参量。
依据泛模型用系统S的一些列观测数据和适当的观测方法。可以得到σ(k)的估计值σ'(k),同时可导出无模型控制的基本形式:
u(k)=u(k-1)+λ*σ'(k)*{y-y(k)}/(a+σ'(k)*σ'(k))
其中y是系统的目标输出值,a是适当常数,λ是控制参数。

在这个模型中,σ(k)的估计值σ'(k)是在线实时估计的。被控对象如果发生变法,无论是参数性的还是结构性的,都用σ(k)的变化 来描述。可以看到无模型控制是一种自适应控制。

对σ'(k)的在线辨识可以用最小二乘法来实现,这样对四轴的控制算法与建模是在程序中逐次逼近的。

上面说到的是无模型控制的一些基础公式,下面要结合四轴飞行器的实际输入输出进行无模型控制。
四轴飞行器是一个4输入6输出的欠驱动系统,为了方便仿真建立了四轴的简易数学模型

(原文件名:sz1.jpg)
ki是旋翼的空气动力学系数,l是直升机中心到旋翼中心的臂长,m是飞行器的质量,X,Y,Z是地面坐标系的三轴位移,φ是沿x轴方向的横滚角(rad),θ是沿y轴方向的俯仰角(rad),ψ是沿z轴方向的偏航角(rad),Ω1、Ω2、Ω3、Ω4是4个电机的转速。
在上面的无模型公式中y(k)是6*1的矩阵,u(k)是4*1的矩阵,通过在线辨识σ'(k)可以达到良好的收敛稳定的效果。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2010-2-15 15:13:28 | 显示全部楼层
下面说说传感器数据和实际控制输出量的关系。
首先定义如图所示的两个坐标系,地面坐标系E(X,Y,Z)和物体坐标系B(x,y,z)。令R为坐标转换矩阵,它定义了由物体坐标系B到地面坐标系E的方位关系。绕着x,y,z轴旋转至X,Y,Z轴的欧拉角Θ=[θ ∅ ψ]^T。R是按照x,y,z轴的顺序进行旋转变化的。

(原文件名:sz2.jpg)

陀螺仪的测量值是针对物体坐标系B得出的,而我们所关心的是飞行器再地面坐标系E中的相对位置。
这样就涉及到物体坐标系B到地面坐标系E的转换。下面定义转化矩阵R

(原文件名:sz3.jpg)

E=R*B

θ ∅ ψ的求发就要用到三轴加速度计,三轴陀螺仪和三轴磁阻尼传感器的数据融合了,以三轴加速度传感器计算的倾角和三轴磁阻尼传感器得出的偏航角位基础,用陀螺仪数据进行修正,具体修正算法参照以前帖子提到的卡尔曼滤波这里就不多说了。

但是当飞行器做加速运动时三轴加速度传感器的数据计算的倾角可能会出现错误,我感觉可以利用上一次卡尔曼的估计值和陀螺仪的输出值计算出一个和加速度来抵消这个量,以达到飞行器状态估计的真实可靠。


以上仅仅是数学上的一些推倒,程序和测试结果我会在第一时间公布,也请各位高手指出错误。

出0入0汤圆

 楼主| 发表于 2010-2-15 15:38:13 | 显示全部楼层
先占个座

出0入0汤圆

发表于 2010-2-15 19:03:56 | 显示全部楼层
还在搞电调,没做到这层,先占个楼,以后慢慢看

出0入0汤圆

发表于 2010-2-15 20:23:43 | 显示全部楼层
强烈支持楼主自主研发。

出0入0汤圆

发表于 2010-2-16 09:51:36 | 显示全部楼层
现在搞这种研究的人不多,希望楼主能够坚持下来。
一直搞下去会有钱途。

出0入0汤圆

发表于 2010-2-16 11:02:38 | 显示全部楼层
數學的部份,書上、網路資料都滿多的。不過問題在於-->怎樣能在uC上跑到好的效果。尤其是本站以AVR為主的討論站。
或是程式發展完後怎樣的性能指標也是滿重要的事情。什麼東西都用ARM或DSP跑也是很傷荷包的。

出0入0汤圆

 楼主| 发表于 2010-2-16 11:59:39 | 显示全部楼层
楼上的可能没看过我以前的帖子
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3857769&bbs_page_no=1&bbs_id=1025
我计划用AVR32作为飞行控制姿态处理器。

出0入0汤圆

发表于 2010-2-16 15:27:22 | 显示全部楼层
楼主是学自控的,建议可以能和学飞行器的设计的进行跨学科研究,可能效果能更好些。

出0入0汤圆

发表于 2010-5-21 12:32:13 | 显示全部楼层
关注

出0入0汤圆

发表于 2010-5-21 12:50:33 | 显示全部楼层
支持

出0入0汤圆

发表于 2010-5-21 15:40:42 | 显示全部楼层
支持楼主坚持下去,要是以后能搞成个军用无人机的飞控就牛了,

出0入0汤圆

发表于 2010-7-6 13:07:43 | 显示全部楼层
理论推导和实际工程实际还是有很大距离的,
无论是kalman滤波还是楼主提出的无模型控制方法,
都是有很多参数要调节,
有时可能仅仅是机械或者结构上的问题,
就可能折磨很久..

出0入0汤圆

发表于 2010-7-6 14:43:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-22 18:27:44 | 显示全部楼层
消失了 光说不练

出0入0汤圆

发表于 2010-8-23 10:42:40 | 显示全部楼层
人工神经网,遗传算法,支持向量机等人工智能算法是可以结合PID控制或单独使用其一的....,可惜对四轴飞控不是很了解...实时?

出0入0汤圆

发表于 2010-8-23 13:20:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-24 18:43:04 | 显示全部楼层
回复【16楼】lans0625  
人工神经网,遗传算法,支持向量机等人工智能算法是可以结合pid控制或单独使用其一的....,可惜对四轴飞控不是很了解...实时?
-----------------------------------------------------------------------

不要老是落名詞,很多算法是沒有辦法跑在uC的,或是算法必須經過調整才能在uC上跑。
另外只要是控制算法,對控制迴路的時序是很要求(但不一定要嚴格)。

當然,願意花大錢用高檔貨跑又是另外一回事。

光看樓主的數學式一下矩陣、一下三角函數....後面要到實作就知道問題所在。

出0入0汤圆

发表于 2010-8-25 08:43:36 | 显示全部楼层
我在慕尼黑工大学自动控制,研究所也在研究四周飞行器的飞行控制。

他们姿态控制是基于四元数的。

因为你上面那个转换坐标系的欧拉矩阵在+/-90度的时候是无解的,是个奇点。他们弄的那个四轴可以做空中翻滚等动作的。

四元数就是复数的扩展,他由一个实部和3个虚部组成,单位四元数对应在三维空间中的旋转,而且在旋转过程中,四元数的值是不会变的。四元数相对于欧拉的好处是:
1. 四元数不会产生奇点。
2. 四元数不需要事先规定旋转的顺序,他的旋转是直接绕由三个虚部组成的转轴旋转,一次就转到目标位置。

具体四元数可以参看维基百科:http://zh.wikipedia.org/zh-cn/%E5%9B%9B%E5%85%83%E6%95%B8

四元数q是飞行器的姿态,w是飞行器机体坐标系的角速度向量[w_x, w_y, w_z, 0],Q(q)是四元数的乘法矩阵。这样,四轴飞行器的姿态控制状态空间方程就可以这样简单地表示:


状态空间方程 (原文件名:ScreenShot001.png)

上面的第二个方程可以看成输入量是w的系统,由于系统的角速度不能直接给定,因此就可以用Backstepping的方法来设计控制器。

虚拟的控制规则以及李亚普诺夫函数可以这样选择,q_s是控制目标姿态,q是当前飞行器的姿态:

Regelgesetz, Ljapunow-Funktion (原文件名:ScreenShot002.png)

上式中k是个可以调整的控制器参数,k越大,李亚普诺夫函数的导数就越小,到达控制目标的时间就越短。

之后就可以用Backstepping的方法来设计出真正的控制规则:

实际控制规则 (原文件名:ScreenShot003.png)

控制规则中,只需要当前飞行器的角速度,以及我们希望达到的姿态和希望的角速度即可。当前飞行器的角速度可以通过陀螺仪传感器得到。


------------------------------------------------------------

LZ一开始说了很多经典控制理论的缺点,这些一点也没有错。但是事实上在工业上,经典控制理论的应用比现代控制理论要普遍地多。就连EuroCopter造的直升机,整个全部用PID控制器来做姿态控制和轨迹控制。

这点我现在也挺迷茫的,学了那么多的现代控制理论,或许今后一点也用不上。现代控制理论设计的控制器理论上性能非常好,甚至可以设计数学上最优的控制器。但是所有的现代控制理论都要基于对被控对象的精确建模上,而这在实际当中太难了,模型本身如果非常不准确,那么公式推来推去最终可能还不如直接应用PID控制器再根据经验凑试参数来的方便。

四轴飞行器的模型相对还是比较明确的,自己搞这个东西的难度主要是在几个参数的测定上。

我们先假设飞行器飞行高度不高,在飞行过程中,空气的密度是不变的,那么螺旋桨产生的推力和螺旋桨转速的平方成比例关系,这个比例系数必须通过实验测定;
另外,电机常数和电机线圈电阻也要测定;
最后,要测四轴飞行器三个方向的转动惯量。

在MCU中设计控制器还很难利用Simulink的强大功能。

出0入0汤圆

发表于 2010-8-25 09:29:13 | 显示全部楼层
回复【19楼】frank7258  
-----------------------------------------------------------------------

别忘回来为祖国的国防力量做贡献哦,呵呵~

赞成你的观点,个人认为经典的之所以经典就因为它在某些底层的决定性因素上具备足够的稳定性,而且在经典的基础上加上一些扩展应该适应性也不太差,比如模糊PID这样的。

我是国内的一所普通高校学智能控制的,才疏学浅,只是自己喜欢玩这些东西,以后还需要很多地学习大家的经验~

出0入0汤圆

发表于 2010-8-25 09:58:03 | 显示全部楼层
void (*);

出0入0汤圆

发表于 2010-8-25 11:33:27 | 显示全部楼层
回复【19楼】frank7258
-----------------------------------------------------------------------

能留个MSN吗,想请教一些问题

出0入0汤圆

 楼主| 发表于 2010-9-3 21:25:01 | 显示全部楼层
感谢大家给我提了这么多意见,最近刚刚本科毕业,在一家搞航空电子的公司工作,比较忙,离开了论坛的一段时间,现在有一定的业余时间了,决定把四轴重新捡起来。

出0入0汤圆

 楼主| 发表于 2010-9-3 21:27:16 | 显示全部楼层
TO 【19楼】 frank7258
你所说的四元数的问题我意识到了,前一阵公司评审一个飞机上的项目时提到了这个问题,这一阵也对四元数有了一定的了解,正在吸收消化,准备把他用到四轴上面。

另外能否留下一个联系方式方便交流  ^_^

出0入0汤圆

 楼主| 发表于 2010-9-3 21:35:22 | 显示全部楼层
回复【15楼】crydhw
-----------------------------------------------------------------------

神经网络PID控制算法在临近毕业前研究过一阵,在MATLAB上仿真时候发现要比PID的控制效果好很多,也比无模型控制的效果好,现在正考虑算法移植,用神经网络PID控制飞行器。


(原文件名:神经网络PID.JPG)

三个线分别是俯仰、横滚、偏航的跟随曲线,响应速度是比较快的,没有超调


(原文件名:FB.JPG)


(原文件名:sin.JPG)

分别对方波给定和正弦给定的追踪,红色是给定,蓝色是实际,效果是比较理想的

出0入0汤圆

发表于 2010-11-24 20:47:01 | 显示全部楼层
也想研究下,慨叹自己当年没学好数学,唉

出0入0汤圆

发表于 2011-2-20 19:20:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-20 20:46:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-22 10:05:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-21 21:50:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-24 15:15:59 | 显示全部楼层
回复【29楼】NuclearZX
-----------------------------------------------------------------------

不是没学好数学啦,是当时不知道它的用途,这就是国内教育制度的缺陷。

不过,你现在知道啦,那就把所学的,没忘的,自学的知识都串起来吧,这样其实你学的会更快。

数学不难,坚持每天看公式,看框图,看对应的程序实现,你自然会明白好多,也会觉得数学的美妙。

还记得牛顿先生那本书的名字吗?-----<<自然哲学的数学原理>>,所以说,数学对于数学家是一个世界,但是对于伟大的工程师们,数学的意义在于我们可以把自然现象(或者说是自然哲学)用数学的语言描述、推到、求解。

这才是工程师眼中数学的意义。

工程中的数学不应该只包含公式,他还有奥妙的框图,他还有巧妙的代码,即便是最枯燥的公式,他也是活生生的,有生命的。我们要学会交流、讨论,或者窃窃私语。

哈哈~-~,说多啦,有感而发。

出0入0汤圆

发表于 2011-3-25 17:06:33 | 显示全部楼层
在学校的时候非常讨厌教自控的博导,两次考试班里过六十分的总是他的两个学生,后来大家的分数都是开根号乘以10上报。现在好想念他啊。。。不知道他挂了没,呵呵,一个倔老头

出0入0汤圆

发表于 2011-4-15 10:06:35 | 显示全部楼层
楼主好厉害啊,我也是河北保定的,不知道能留下留住的联系方式么,我和同学现在也在做四轴飞行器的毕业设计,希望能向前辈多学习学习

出0入0汤圆

 楼主| 发表于 2011-4-15 10:31:38 | 显示全部楼层
回复【33楼】dongjinfang
楼主好厉害啊,我也是河北保定的,不知道能留下留住的联系方式么,我和同学现在也在做四轴飞行器的毕业设计,希望能向前辈多学习学习

-----------------------------------------------------------------------

可以加我的QQ 390162 共同探讨,呵呵

出0入0汤圆

发表于 2011-4-16 20:09:17 | 显示全部楼层
回复【34楼】haolxy 飞鸟
-----------------------------------------------------------------------

终于看到一个从理论出发分析四轴飞行控制模型的人,太高兴了。虽然控制我不懂但是四元数我懂,导航我懂,我感觉只有真正找一个既懂理论又能实际设计的人才能搞出个好四轴,而不是天天模仿MK等等的东西。这样不做也罢。还有楼主的QQ是怎么贴出来的。哈哈

出0入0汤圆

发表于 2011-4-17 21:32:17 | 显示全部楼层
回复【34楼】haolxy 飞鸟
-----------------------------------------------------------------------

楼主,我是个四轴新手了,前段时间刚画完电调的板子。现在再看MK的算法,表示看的不大懂,因为代码有很多地方让我觉得很没道理。论坛上虽有不少回答,但很少有对这种算法的依据进行说明的。楼主看过MK的算法,能否对他的算法依据提供一个大概的见解,帮助我们这些后来者提供一个学习的思路

出0入0汤圆

发表于 2011-4-17 21:34:00 | 显示全部楼层
我说的主要是飞行姿态部分的算法

出0入0汤圆

 楼主| 发表于 2011-4-18 13:54:20 | 显示全部楼层
我的QQ有问题吗?

出0入0汤圆

发表于 2011-4-18 21:00:43 | 显示全部楼层
回复【38楼】haolxy 飞鸟
-----------------------------------------------------------------------

没问题,一般谁贴QQ,版主就封谁。

出0入0汤圆

发表于 2011-4-20 17:01:35 | 显示全部楼层
关注中...

出0入0汤圆

发表于 2011-9-13 16:32:22 | 显示全部楼层
回复【1楼】haolxy 飞鸟
-----------------------------------------------------------------------

我也是自动化的,最内疚的是还在读研,感觉跟你差距好大啊~~~我也想用DSP做这个,能帮我分析下可行性吗?例如电调,飞控的MCU都用DSP,需要注意些什么?如果算法复杂的话,要不要用浮点的?

出0入0汤圆

发表于 2011-12-9 19:53:21 | 显示全部楼层
才发现这个论坛上高手如云,小弟默默观察,膜拜中

出0入0汤圆

发表于 2011-12-9 20:09:59 | 显示全部楼层
谁能发一个四轴的转动惯量近似参数么,还有转速与升力的关系,小弟想利用matlab建立个模型,仿真玩玩。做得好的话还可以做成硬件在环半实物仿真,可惜小弟现在一无所有,有的只是仿真的一些只是。(以前跟老师做固定翼,方向是飞控与仿真)

出0入0汤圆

发表于 2012-2-8 17:24:41 | 显示全部楼层
仿真到代码是一个巨大的跨越
这模型建的再牛逼,仿真数据再完美,不能在MCU上很好的实现也是白搭

出0入0汤圆

发表于 2012-2-8 20:22:23 | 显示全部楼层
确实专业!!!

出0入0汤圆

发表于 2012-2-8 22:11:03 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-7-30 14:38:00 | 显示全部楼层
mark下关注中

出0入0汤圆

发表于 2012-8-11 11:25:15 | 显示全部楼层
shangzm 发表于 2011-12-9 20:09
谁能发一个四轴的转动惯量近似参数么,还有转速与升力的关系,小弟想利用matlab建立个模型,仿真玩玩。做得 ...

我计划用matlab建模在mcu中实现飞控算法。仿真和真正的实现区别很大的哦,仿真可以浮点数,但是MCU一般不支持浮点运算的。不管怎么样希望多交流

出0入0汤圆

发表于 2012-8-11 11:27:39 | 显示全部楼层
zjl1020 发表于 2012-2-8 17:24
仿真到代码是一个巨大的跨越
这模型建的再牛逼,仿真数据再完美,不能在MCU上很好的实现也是白搭 ...

matlab可以将模型转化为各种代码,包括嵌入式代码,但是大量的数据处理的确是MCU的一个坎

出0入0汤圆

发表于 2013-11-6 10:21:53 | 显示全部楼层
mark,too

出0入0汤圆

发表于 2014-7-17 16:18:04 | 显示全部楼层
asha 发表于 2011-4-18 21:00
回复【38楼】haolxy 飞鸟
-----------------------------------------------------------------------


这个帖不会被封,若是被封了,那版主应该封自己

出0入0汤圆

发表于 2015-4-2 09:42:26 | 显示全部楼层
顶啊

出0入0汤圆

发表于 2015-4-12 11:34:35 | 显示全部楼层
楼主很牛叉啊!!!

出0入0汤圆

发表于 2015-4-13 16:29:53 | 显示全部楼层
这个必须顶!

出0入0汤圆

发表于 2015-4-13 23:57:33 | 显示全部楼层
一直很关注四轴建模,学习了。

出0入0汤圆

发表于 2015-4-21 09:56:17 | 显示全部楼层
在硬件上实现没有???
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-15 17:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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