21

阿木币

3

精华

10 小时

在线时间

技术大V

Rank: 4

发表于 2019-6-21 22:30:38 3686 浏览 5 回复

[飞控嵌入式] 从零开始建模(四)-一个简单的模型

使用MATLAB搭建模型

通过之前的三篇文章 从零开始建模(一)-牛顿欧拉方程 从零开始建模(二)-姿态更新 从零开始建模(三)-控制分配浅析

我们已经对建模的过程有了一定的了解,相信小伙伴们都已经跃跃欲试了,那就让我们开始吧。

我们来简单的实现一个飞行器的高度控制吧。 1.将期望高度和实际高度做差 2.误差进入控制器得到输出 3.输出分配到执行机构(电机) 4.电机产生力 5.模型根据受到的力,得到当前的状态包括实际高度

按照这个步骤我们就可以搭建一个闭环的控制系统了。(熟悉一下这个步骤,这是个通用的步骤哦)

少废话,先看东西!

运行POSHOLD文件,可以看到一个动画过程,显示飞机在空间中的位置,同时四个长条表示飞机受到的力的大小,这样可以很直观的观察飞机的动态。(我这样的新手就爱看动画)

然后是位置控制结果,很快就到达期望位置(0,0,3),没有超调。(我的参数调的还可以吧)

速度环的控制过程

加速度环的控制过程

关于控制器

我也只用过PID,没有用过其他控制器。 PID的好处就是简单高效,给我一个误差,还你一个期望。(来个动图感受下)

我使用的控制器是模仿APM的z轴控制器函数 AC_PosControl::run_z_controller()

简单介绍一下。(做了一点修改去掉了悬停油门,就是单纯的PID)

位置误差乘kp 得到速度期望。 速度误差乘kp 得到加速度期望。 加速度误差经过PID得到占空比。

串级PID外环输出会变成内环的期望,简单的可以理解为当你的周期是固定的,那么1/dt也是个定值,误差/dt就是微分,位置的微分就是速度,所以这里kp=1/dt。

PID的输出有什么单位吗?有什么物理意义吗? 没有单位,这里之所以说输出是占空比,因为我们想控制电机,所以我们期望他是占空比,所以我们在调参的时候要让输出有占空比的性质,所以PID参数要使得输出在0-1之间变化才合适。

如果我们想控制的输出直接就是转速(省略电机模型),那也可以,那么你就的让你的输出像是个电机转速(假设最高2000转),所以你的PID参数得让输出在0-2000之间变化。

所以控制器其实是个很随意的东西,有什么物理意义是取决于你怎么用,所以大胆用,勤思考,控制器没啥大不了。

建模有没有用

如果你问我,这个模型是不是可以直接代替实物?我在仿真里调参直接就可以用?

抱歉,不行。

那这种理想化的模型有没有用呢? 我用这个模型知道了为什么串级PID外环只有P。 越接近力的回内环,速度越快,参数越好调节。 龙格库塔法和直接欧拉角积分的姿态更新区别。 现在还在对比倾转分离的效果。 以后还会有更多有意思的想法可以实现。

对于学习,我觉得有用。

个人微信公众号【无人机干货铺】,欢迎交流。


扫一扫浏览分享
回复

使用道具 举报

176

阿木币

0

精华

349 小时

在线时间

版主

Rank: 7Rank: 7Rank: 7

发表于 2019-6-22 06:37:47 来自手机
请问作者,这个对无人机matlab基于模型的开发有不有用啊?
回复 点赞

使用道具 举报

114

阿木币

0

精华

142 小时

在线时间

技术大V

Rank: 4

发表于 2019-6-22 08:43:04
http://bbs.amovauto.com/forum.ph ... &extra=page%3D1  @Balance  我觉得你俩可以干一架 看谁的模型更牛逼。。。
回复 点赞

使用道具 举报

21

阿木币

3

精华

10 小时

在线时间

技术大V

Rank: 4

 楼主| 发表于 2019-6-22 22:06:25
maxiou 发表于 2019-6-22 06:37
请问作者,这个对无人机matlab基于模型的开发有不有用啊?

对学习基础知识有帮助,基础知识好了,开发能力就变强了
回复 点赞

使用道具 举报

21

阿木币

3

精华

10 小时

在线时间

技术大V

Rank: 4

 楼主| 发表于 2019-6-22 22:07:32
SmilE 发表于 2019-6-22 08:43
http://bbs.amovauto.com/forum.php?mod=viewthread&tid=442&extra=page%3D1  @Balance  我觉得你俩可以干 ...

我这个很简单,主要是介绍之前的推导的模型怎么用
回复 点赞

使用道具 举报

8

阿木币

0

精华

9 小时

在线时间

技术大V

Rank: 4

发表于 2019-6-22 23:49:00
赞一个,写得很清晰易懂。不知道有没有尝试过用simulink搭建模型。matlab搭建模型还是有挺多局限性的,小模型可以,大一点的模型,运行起来速度贼慢
回复 点赞

使用道具 举报

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

本版积分规则

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