模糊(Fuzzy)控制算法
一、概念模糊控制是以模糊集理论、模糊语言变量和模糊逻辑推理为基础的一种智能控制方法,它是从行为上模仿人的模糊推理和决策过程的一种智能控制算法。模糊控制首先将操作人员或专家经验编成模糊规则,然后将来自传感器的实时信号模糊化,将模糊化后的信号作为模糊规则的输入,完成模糊推理,将推理后得到的输出量加到执行器上。 二、控制过程所谓模糊控制,一般是用模糊的概念来描述偏差,并通过模糊推测得到模糊的给定量。比如,对偏差的描述常用“正大”,“正小”,“零”,“负小”,“负大”等模糊概念。 精确的测量值经过输入模糊化过程变成模糊集; 利用控制规则进行推理,即模糊决策,得到控制作用的模糊集; 将控制作用的模糊集按照一定的规则转化成精确值,此为逆模糊化。 三、前置基础知识1. 模糊逻辑与传统逻辑的区别模糊逻辑是模糊控制的重要工具,它与传统逻辑的主要区别在于变量的真值。 传统逻辑:真值只能是 0 或 1(非黑即白)。 例:今天是否下雨?要么“是”,要么“否”。 模糊逻辑:真值可以是 [0, 1] 之间的任意值,表示某事的模糊程度。 例:今天是“有点下雨”(隶属度为...
VS Code + Github 开发
前置工作下载Git 和 VS Code VS Code 中 Git 的集成功能VS Code 默认启用了 Git 集成功能。打开项目当新打开一个 VS Code 窗口时,需要打开一个项目,可以在本地文件打开项目,也可以直接从远程仓库克隆项目:分支管理在 Git 中,允许同时处理代码库的多个版本。可以在源代码管理边栏的最下面看到当前所在的分支:如果该分支有修改,分支名的右上角会有一个 当你想切换分支,可以点击这个分支名称,就会出现所有分支的列表:可以看到,这里面有两类分支,上面一类是带分支图标的,下面另一类是带云图标的。前者表示本地分支,后者表示远程分支。点击本地分支,就会切换到对应的分支,点击远程分支,就会将远程分支同步到本地,并在本地创建一个同名的分支。重命名分支和删除分支合并分支,可以选择从哪个分支向当前分支进行合并,选择被合并的分分支即可。新创建的分支可以点击发布Branch按钮来发布到远程仓库。*发布管理如果想暂存所有文件,可以点击在“更改”那一行后面的加号即可这个暂存操作就相当于执行 git add 命令。对于暂存的文件,可以进行commit...
Git使用
Git 是一个分布式版本控制系统,由 Linus Torvalds 于 2005 年开发,用于高效管理和跟踪代码更改。 基本概念: 工作区 (Working Directory):你当前正在处理的项目目录。 暂存区 (Staging Area):用来暂存修改的地方,通常用 git add 将更改放入。 版本库 (Repository):存储项目历史版本的地方,用 git commit 提交更改。 远程仓库 (Remote Repository):托管在服务器上的版本库,比如 GitHub、GitLab。 安装Windows系统 访问 Git官网 下载适用于Windows的安装程序。 双击下载的安装程序,按照提示进行安装。 安装完成后,打开命令提示符,输入 git --version 验证安装是否成功。 Linux系统安装在Linux系统上安装Git可以使用包管理器,例如apt(适用于Debian/Ubuntu)或yum(适用于CentOS/RHEL)。 使用apt安装Git(Debian/Ubuntu)12sudo apt updatesudo apt install...
串级PID控制
...
PID控制算法C++实现
引言在前面的一篇文章PID控制算法简单说明了PID算法的原理。今天我们一起用C++实现一个简单的PID控制算法吧。目前实现的是离散位置式PID和增量式PID。 pid_controller.hpp文件12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#pragma oncenamespace control_algorithm {class PID { public: typedef struct { float k; /* 控制器增益 */ float p; /* 比例项增益 */ float i; /* 积分项增益 */ float d; /* 微分项增益 */ } pid_param; typedef struct { float i_limit; /* 积分项上限 */ float d_limit; /* 微分项限制 */ ...
前馈补偿的PID控制
...
C++ 实践笔记
随缘更 (~ ̄▽ ̄)~ 1.auto关键字1.1.auto(C++11新特性)C++11赋予了auto新的定义,让其做自动类型推导,也就是说,编译器可以在编译期间自动推算出变量的类型,这样就可以更加方便的编写代码了。使用: auto 用法最常见的场景是声明变量时,让编译器根据初始化表达式自动推导出变量的类型。 在使用 STL 容器(如 std::vector、std::map 等)时,auto 能大大简化代码,尤其是在使用迭代器时。 123456789101112#include <vector>#include <iostream>int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; // 使用 auto 推导类型,避免手动指定迭代器类型 for (auto it = vec.begin(); it != vec.end(); ++it) { std::cout << *it << "...
STL库
C++ 的标准模板库(STL,Standard Template Library)是 C++ 标准库的一部分,提供了大量有用的模板类和函数,用于高效的容器管理、算法操作和迭代器操作。它使开发者能够快速构建强大、灵活和高效的程序,而不必从头实现常见的数据结构和算法。对于STL,学习起来并不复杂,掌握几种常用的容器,如vector、list、map、set、queue、stack等,以及一些常用的算法,如sort、find等,了解迭代器的使用,就可以满足大部分开发需求。核心包括以下重要组件组件: 组件 描述 容器(Containers) 容器是 STL 中最基本的组件之一,提供了各种数据结构,包括向量(vector)、链表(list)、队列(queue)、栈(stack)、集合(set)、映射(map)等。这些容器具有不同的特性和用途,可以根据实际需求选择合适的容器。 算法(Algorithms) STL...
自动控制理论(经典控制)
控制系统的基本要求稳、快、准 稳定性:稳定性是控制系统的基本要求之一,指的是在受到扰动或输入变化时,系统能够回归平衡状态。 快速性:指系统从输入变化到输出稳定所需的时间,通常通过响应速度和过渡时间来衡量。 精确性:...
关于控制器的设计
...