硬汉嵌入式论坛

 找回密码
 立即注册
查看: 815|回复: 8
收起左侧

对滑模控制的理解和疑惑?

[复制链接]

97

主题

537

回帖

843

积分

金牌会员

积分
843
发表于 2025-3-2 09:05:39 | 显示全部楼层 |阅读模式
陆陆续续看了一部分状态空间的内容。然后主要理解是来自于matlab的科普视频。
但是我目前没分清楚滑模控制和滑模观测器之间的关系,看的资料两者都是杂糅在一起的。


https://www.youtube.com/watch?v=RD-2oiwEbDo


什么是滑模控制(sliding mode control)?

现在的控制理论发展规律如下:最开始的是自动控制原理这门课,研究的是单输入单输出的线性时不变系统。
后来的现代控制理论,研究的是多输入多输出的线性系统。
到后面还有非线性控制理论。

滑模控制就是一种非线性控制,但是它的思想特别简单,我们生活中不自觉间(例如开汽车,速度低了踩油门,速度高了松油门)就会使用到。

引用知乎上陈嘉豪对滑模观测器的一段比喻。
作者:陈嘉豪
链接:https://www.zhihu.com/question/318948029/answer/642526122
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

某外资企业JPig委托我们养一只猪,我们需要定时向该司汇报猪的体重以及饲料量这两个信息。背景是这样的,JPig的核心产品是黄金猪肉脯。近来,JPig的质量管理部门收到了一只来源神秘的肉猪,肉质之口感极佳。这只猪的身上挂了一个牌子,记录了这只猪的成长数据,但是只有体重,却没有谈及饲料用量的信息。行业领先的JPig一看这只猪的体重记录,就知道这只猪的饲主不一般,想要一窥喂养的诀窍。众所周知,喂的多了,猪就会胖,喂的少了,猪就会瘦。但是猪长肉的情况和喂饲料的多少并没有线性关系,甚至还和时间有关,比如今天天气好,那么猪开心就多长肉等等……但是,根据质量或能量守恒定律,猪不可能不吃饭就长胖,饲料量绝对是主要变量,但是状态也很重要,猪开心了长肉有点扯,但是猪可能在200斤的时候吃一斤饲料的成长量和400斤的时候大不相同,这就叫做对状态(猪的体重)的依赖性。被拜托了的我们也很懵逼,但是反正招标嘛,值得一试。别家高校有的在为猪建立数学模型,有的则养了一堆猪去随机优化(比如,接近神秘猪的成长记录的猪得以活下来,其他偏离成长记录的猪全部做成全家猪排饭)。我们实验室的大家伙也一筹莫展。其中的我曾经去Utkin的实验室交流过,并提议要不要试试滑模重构法?大家一听,更加一脸懵逼。我坐了下来,说,很简单,我们不是知道猪的成长记录了吗,那我们如果发现今天猪的体重低于记录值,那么就给猪喂一座山的饲料。如果明天发现猪的体重大于记录,那就饿它一天。这时候小明站出来了,说,你咋这么傻,那你得到的数据连起来不就是一下高一下低的斩波一样的波形吗……小明说着说着,仿佛注意到了什么,看向了我,我也看着他,我们四目相对,会心一笑。这时候,旁边的王博士坐不住了,你们倒是说啊,笑叽霸笑!我继续笑着解释道,我们给数据滤个波不就拿到了喂养饲料量的结果了吗!我们和其他人的区别就是,我们的猪的体重肯定是在成长记录上下波动的,而隔壁大学实验室他们养一群猪,必然浪费资源,而且很可能最后根本就得不到和成长记录接近的猪,他们就是喜欢猪排饭罢了!王博士豁然开朗,妈耶,你咋这么聪明啊小豪。我很得意,说道,这就是滑模重构的思想,先保证猪的成长记录是对的,那么导致这个记录的饲料用量就是对的,也没有很了不起吧,哈哈哈哈哈哈哈。我们仨商讨着,准备第二天去找Huang老师说说我们的方案。我说,在那之前,今晚还是先出去搓一顿吧,于是,当晚我们就去湖滨银泰吃捞神去了,因为我们喜欢吃的是猪肚鸡,而不是猪排饭,所以养一只猪就可以了。




共产主义一定胜利!
回复

使用道具 举报

97

主题

537

回帖

843

积分

金牌会员

积分
843
 楼主| 发表于 2025-3-2 11:30:14 | 显示全部楼层
我们先来看一下matlab的视频,它通俗的讲解了滑模控制器(虽然我目前还明白,控制器和观测的有什么区别)



首先举个例子,假如有一个理想的弹簧结构如图所示:
Snipaste_2025-03-02_11-27-11.png

假设给它一个激励之后,没有其他的力,那么它会在弹簧的作用下,一直来回晃悠。
因为是理想条件,没有阻尼。所以会永远晃悠。
4.gif

共产主义一定胜利!
回复

使用道具 举报

97

主题

537

回帖

843

积分

金牌会员

积分
843
 楼主| 发表于 2025-3-2 11:37:35 | 显示全部楼层
如果建立一个坐标轴(横轴x1,竖轴x2)

竖轴为速度,横轴为位置,如下图所示:
Snipaste_2025-03-02_11-32-00.png

那么当滑块在弹簧上晃悠的时候,坐标轴的图形会是怎么样的呢?
以上图为例子,此时位置为0,速度沿正方向达到最大(后面收到弹簧的力就减速了,速度反而变小了)
大家可以想象一下,这个坐标轴的轨迹应该如下所示:
5.gif
共产主义一定胜利!
回复

使用道具 举报

97

主题

537

回帖

843

积分

金牌会员

积分
843
 楼主| 发表于 2025-3-2 12:38:26 | 显示全部楼层
本帖最后由 会飞的猪_2020 于 2025-3-2 12:52 编辑

matlab的科普视频听到这里,我产生了一点疑惑,为什么横坐标是位移,纵坐标是速度,这个二维坐标轴到底是啥意义?为啥这样干。

对于这部分内容我有一点拙见,我是这样子理解的。

我们常用微分方程来描述这个世界。
牛顿为什么伟大,一部分就是因为他发明了微积分这个数学工具,去描述这个宏观的世界。
宏观的世界是连续的,而微分就是描述的变化率的一个东西。用来描述宏观世界非常的合适。

我们对一个系统进行数学建模,肯定的是想要通过这个模型去预知未来。如何去预知未来?
经典力学里面,当我们确定一个系统的状态,以及这个状态的变化趋势的时候,就能知道它任意时刻的状态了。

而微分方程就是表述这样的一个东西。这也是为什么牛顿伟大的地方。他建立了这样的体系去描述世界。

例如中学物理里面学的,位移和速度的关系如下所示。
如果知道了初始位置和速度,就能知道t时刻的位移。
Snipaste_2025-03-02_11-50-23.png

那么在微分方程的世界里怎么展示呢?
要知道位移的微分就是速度。(注意这里的速度不再是初中时候的一个定值,它现在是一个对时间的函数)
那么速度v(t)的积分就是位移了。
Snipaste_2025-03-02_12-31-52.png

我们想求得的系统状态在这里就是t时刻的位置s(t),而我们知道它的变化趋势,也就是s(t)的导数,也就是速度。以及初始时刻的状态也就是C之后,就能得到任意t时刻的位置了。
PS:弹簧那个系统是一个二阶系统,这里为了方便举例子,是一个一阶系统。

所以回到上一张图片,用v和x的二维图形,就能表达这个系统任意一点的状态。
这个也就是说可以用这个图像的轨迹来分析系统的状态。这个是很合理的。让我们继续看matlab的视频


共产主义一定胜利!
回复

使用道具 举报

97

主题

537

回帖

843

积分

金牌会员

积分
843
 楼主| 发表于 2025-3-2 12:48:11 | 显示全部楼层
让我们给这个系统增加阻尼,那么系统会不断整震荡最终停在0点。如下图所示:
6.gif

我们现在放大这个相平面的图片,可以想象这样的一个模型:
Snipaste_2025-03-02_12-42-52.png
在这个空间上任意一个点出发,最后它的轨迹都跟着箭头会趋于零点。
7.gif

这些箭头表示这个系统它的固有属性。


现在我们就想通过增加反馈控制环节,去修改这个变化的趋势,去改变系统的这个固有属性。

共产主义一定胜利!
回复

使用道具 举报

97

主题

537

回帖

843

积分

金牌会员

积分
843
 楼主| 发表于 2025-3-2 12:51:25 | 显示全部楼层
本帖最后由 会飞的猪_2020 于 2025-3-2 16:10 编辑

我们希望系统为我们所用,人为设计环节之后,改变它在相平面的轨迹。
对于二阶系统的相轨迹,会沿着两个轴弯曲,如之前的的图片所示。
Snipaste_2025-03-02_12-52-48.png



接下去的内容我有点没理解。
视频里面的意思是把轨迹变成一条直线(如黄线)之后,就相当于一个简单的一阶线性系统。
(为什么会这样?我没太理解)
Snipaste_2025-03-02_13-01-28.png


然后它按照下图方式调整相平面:
Snipaste_2025-03-02_16-10-11.png
共产主义一定胜利!
回复

使用道具 举报

97

主题

537

回帖

843

积分

金牌会员

积分
843
 楼主| 发表于 2025-3-2 16:29:23 | 显示全部楼层
那它是怎么调整的呢?

对于一个二阶阻尼的弹簧系统,它的的状态空间表示如下:
Snipaste_2025-03-02_16-14-49.png
u(t)是系统的输入,x(t)我们这边应该是叫状态变量

找到一个switch function(没明白这个是什么)
S=0就是滑模面
Snipaste_2025-03-02_16-16-48.png

为了让系统趋近于滑模面,我们要满足S>0,但是S导数小于0,S<0,S导数大于零。
这个可以理解。这个就是要稳定的条件。
Snipaste_2025-03-02_16-19-18.png

s的导数是什么才能满足这个条件呢?它这里让s导数为一个符号函数乘上一个增益
sign(s)是一个符号函数(s>0是等于1,s<0时等于-1)
Snipaste_2025-03-02_16-20-40.png
然后s导数是可以求出来的
Snipaste_2025-03-02_16-23-21.png
x的导数是根据状态空间方程得到的
Snipaste_2025-03-02_16-26-37.png

然后把系统输入解出来:
Snipaste_2025-03-02_16-27-59.png


所以说这个系统的输入的模型其实是一个变模型,它会随着输出的变化而变化。
共产主义一定胜利!
回复

使用道具 举报

97

主题

537

回帖

843

积分

金牌会员

积分
843
 楼主| 发表于 2025-3-2 16:35:14 | 显示全部楼层

滑模控制的鲁棒性很好也可以知道是为什么了。


因为我们不在乎模型准不准。
随便给个大概就行了。

就算有扰动,也会因为我们最后的那个符号函数,而被抵消掉。
扰动大,就提高增益。


但是他的坏处是什么呢?
就是这种方法必然带来系统的震荡。
相轨迹必然在滑模面上晃悠。
Snipaste_2025-03-02_16-32-00.png

减少震荡但是不影响增益的方法。
把原先的符号函数改为一个上下限幅的一次函数。
Snipaste_2025-03-02_16-33-49.png
或者其他的方式类似方式(例如S形啊,sinθ形啊)

共产主义一定胜利!
回复

使用道具 举报

97

主题

537

回帖

843

积分

金牌会员

积分
843
 楼主| 发表于 2025-3-2 16:37:26 | 显示全部楼层
现在看了视频之后大概对滑模控制的思路是了解了一点。

但是我现在想知道的是滑模观测器,不知道这两个东西有啥联系?
共产主义一定胜利!
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-10 05:23 , Processed in 0.265380 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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