news 2026/5/6 16:49:14

滑模与终端滑模(SMC):控制领域的奇妙之旅

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
滑模与终端滑模(SMC):控制领域的奇妙之旅

滑模 终端滑模 smc

在控制理论的广阔天地里,滑模控制(Sliding Mode Control,SMC)宛如一颗璀璨的明珠,而终端滑模则是在其基础上进一步发展的瑰宝。今天,咱们就来唠唠这滑模和终端滑模到底是啥神奇玩意儿。

滑模控制(SMC)基础

滑模控制的核心思想有点像引导一辆车沿着特定轨迹行驶。想象一下,你开车要去一个目的地,有一条理想的路线,滑模控制就是想尽办法让车始终沿着这条理想路线走,即使路上有各种干扰。

从数学和控制的角度看,我们定义一个滑动面函数 \(s(x)\),这里 \(x\) 是系统的状态变量。当系统状态在这个滑动面上运动时,系统能呈现出我们期望的性能。比如说,对于一个简单的二阶控制系统,状态变量 \(x = [x1, x2]^T\),我们可能定义滑动面 \(s = c x1 + x2\),其中 \(c\) 是一个根据系统特性精心选择的常数。

下面咱们来点简单代码示例,用Python和控制库来模拟一个简单的滑模控制系统。假设我们有一个一阶线性系统 \(\dot{x} = -x + u\),目标是让 \(x\) 跟踪参考信号 \(r\)。

import numpy as np import matplotlib.pyplot as plt # 定义系统参数 a = -1 b = 1 c = 1 # 滑动面参数 # 时间设置 t = np.linspace(0, 10, 1000) dt = t[1] - t[0] # 初始化变量 x = np.zeros(len(t)) u = np.zeros(len(t)) r = np.sin(t) # 参考信号 # 滑模控制模拟 for i in range(len(t) - 1): s = c * x[i] + (r[i + 1] - r[i]) / dt if s > 0: u[i] = -1 else: u[i] = 1 x[i + 1] = x[i] + dt * (a * x[i] + b * u[i])

在这段代码里,我们先定义了系统的参数 \(a\) 和 \(b\),还有滑动面参数 \(c\)。然后设定时间范围和初始化变量。在循环里,我们根据滑动面函数 \(s\) 的值来确定控制输入 \(u\)。如果 \(s > 0\),就给系统一个负的控制输入,反之给正的控制输入。这样系统状态 \(x\) 就会逐渐被引导到我们期望的轨迹上。

终端滑模控制(Terminal SMC)进阶

终端滑模控制是滑模控制的升级版,它能让系统在有限时间内收敛到平衡点,就好比开车不仅要沿着理想路线走,还得在规定时间内到达目的地。

滑模 终端滑模 smc

终端滑模的滑动面设计更为巧妙,例如对于二阶系统,可能会定义终端滑模面 \(s = x2 + \lambda x1^{\frac{q}{p}}\),其中 \(\lambda\) 是正常数,\(q\) 和 \(p\) 是满足一定条件的正奇数。这种设计使得系统在靠近平衡点时,收敛速度更快。

下面还是以刚才的一阶系统为例,简单改改代码来体现终端滑模的效果。这里我们为了简化,只修改滑动面函数部分,实际应用中还需要更复杂的设计和推导。

import numpy as np import matplotlib.pyplot as plt # 定义系统参数 a = -1 b = 1 lambda_ = 1 q = 3 p = 1 # 终端滑模参数 # 时间设置 t = np.linspace(0, 10, 1000) dt = t[1] - t[0] # 初始化变量 x = np.zeros(len(t)) u = np.zeros(len(t)) r = np.sin(t) # 参考信号 # 终端滑模控制模拟 for i in range(len(t) - 1): s = (r[i + 1] - r[i]) / dt + lambda_ * np.sign(x[i]) * np.abs(x[i]) ** (q / p) if s > 0: u[i] = -1 else: u[i] = 1 x[i + 1] = x[i] + dt * (a * x[i] + b * u[i])

在这段代码里,我们修改了滑动面函数 \(s\) 的计算方式,引入了终端滑模的参数 \(\lambda\)、\(q\) 和 \(p\)。这样系统在运行过程中,状态 \(x\) 会以更快的速度朝着参考信号 \(r\) 收敛,尤其是在靠近平衡点的时候,效果更为明显。

滑模控制和终端滑模控制在实际应用中非常广泛,从机器人控制到飞行器姿态调整,它们都发挥着重要作用。通过巧妙的滑动面设计和控制律推导,能让复杂系统在各种干扰下依然稳定且高效地运行。希望大家通过这篇博文,对滑模和终端滑模有了更直观的认识,有兴趣的朋友可以深入研究,说不定能在自己的项目里挖掘出它们更大的潜力呢!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 1:39:25

华为OD机考双机位C卷 - 陷阱方格/机器人走迷宫问题 (Java Python JS C/C++ GO )

最新华为OD机试 真题目录:点击查看目录 华为OD面试真题精选:点击立即查看 华为OD机考双机位C卷 - 陷阱方格/机器人走迷宫问题 题目描述 房间由XY的方格组成,例如下图为64的大小。每一个方格以坐标(x,y)描述。 机器人固定从方格(0,0)出发,只能向东或者向北前进。出口…

作者头像 李华
网站建设 2026/4/23 9:56:32

别再微调大模型了!RAG技术让AI秒懂你的业务,成本降90%,真香!

在公司想去将大模型能力落地到实际的产品上时,面临一个严峻问题就是,使用通用大模型只能应对简单的对话,但完全不了解业务和产品,回答内容质量差;但微调一个模型,让其完全熟悉业务,又要花费很大…

作者头像 李华
网站建设 2026/5/1 11:20:09

永磁同步电机无传感器控制:MATLAB/Simulink 电气仿真探秘

MATLAB/ Simulink 电气 仿真 永磁同步电机无传感器控制 永磁同步电机 无传感器控制 矢量控制 pwm脉冲调制 含simulink仿真模型程序说明。 可提供配套研究报告。 在电气领域,永磁同步电机(PMSM)因其高效、高功率密度等优点被广泛应用。而无传…

作者头像 李华
网站建设 2026/4/30 16:51:01

探索改进粒子群优化算法:从理论到Matlab实践

改进粒子群优化算法 在传统粒子群的基础上进行以下改进 1.初始化阶段 采用logistic混沌映射 2.惯性权重由固定值改为自适应 3.个体位置更新时采用耦合中心游移策略 4.个体约束处理时采用耦合边界邻域更新的修正策略 模块编程,结构清晰明了 可在此基础上进行修改&…

作者头像 李华