串级PID原理及调参
PID各参数的作用PID控制器是实际工程中应用最广泛的控制器,其核心思想是“用误差消除误差”,即使用目标值与实际值的差值经过PID控制器得到输入量,去不断修正实际值,使其与目标值接近。以一常规布局固定翼无人机的俯仰角控制系统为例,对PID的各因子进行测试,取其升降舵到俯仰角的传递函数为
\frac {\Delta \theta}{\Delta \delta e}(s)= \frac {-43.023s^3-118.0028s^2-28.7354s}{s^5+5.2253s^4+17.4334s^3+3.724s^2+6.9967s}比例P通过比例控制器对系统进行控制,系统输入$u=K_P(y_c-y)$。当比例系数$K_P$取0.2、0.5、0.8的响应如下。增大$K_P$的优点:
操纵输入u增大,加快系统响应。
降低系统静差。
$K_P$过大的缺点:
系统响应的超调、震荡越大,系统稳定性变差。
比例可以减小误差,但是不能完全消除误差。
比例P+积分I通过比例积分控制器对系统进行控制,系统输入$u=K_P(y_c-y)+K_I\int(y_c-y)dt$。当比例系数取0.5, ...
Markdown语法
Markdown其实就是一种易于编写的普通文本,会对部分标签的文本进行渲染。在渲染时会转换为html标签。在使用过程中,在语法后至少保留一个空格或空行。参考链接Markdown 教程
标题Markdown支持6种级别的标题,使用#的数量来表示等级123456# 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题效果如下【为防止目录混乱,此处使用图片展示】:
列表
无序列表,使用*、+、-表示
有序列表,使用数字加.标识,例如:1.
为了方便编号,有序列表只关注第一个项目的数字编号,例如:
123456* 选项A* 选项B* 选项C1. 选项11. 选项22. 选项3
效果如下:
选项A
选项B
选项C
选项1
选项2
选项3
强调在段首增加”>”,可以使该段文字高亮显示,本文章中的示例已使用强调显示1> 强调文本效果如下:
强调文本
使用一个*或_包裹文字,可实现斜体;使用两个**或者__包裹文字,可以实现粗体1强调:*斜体*、**粗体**、**粗斜体***效果如下:
斜体、粗体、粗斜体
分割线在空行使用三个以上的* ...
C语言编程
编译流程.c====>.obj====>lib(exe)源码—二进制代码—连接库文件—生成exe(运行程序)、lib(静态库文件)、dll(动态库文件)集成化开发环境可以直接完成否则,需要先编译成.obj,再link连接成为exe
静态库和动态库
静态链接库
动态链接库
obj+lib ==> 完整的单独文件EXE
exe、dll(独立的二进制文件) ==> exe在调用时,动态加载dll
更方便内存的释放
必须升级exe
单独升级dll
不能跨语言使用
可跨语言使用
静态库示例SumTest.vcxproj【静态库项目】
toadd.h
1void add(int a, int b, int &c);
toadd.cpp
12345#include "toadd.h"void add(int a, int b, int &c){ c=a+b;}
项目属性:配置类型:静态库(.lib);
Test.vcxproj 【主程序项目】
main.cpp
12345678 ...
软件及问题记录
同步工具Syncthing安装与使用github下载地址 https://github.com/syncthing/syncthing/releases
Windows界面软件: SyncTrayzor https://github.com/canton7/SyncTrayzor
linux:nohup ./syncthing &
默认管理界面 IP:8384 访问。
vim ~/.config/syncthing/config.xml,修改访问地址127.0.0.1为0.0.0.0,以实现远程访问。
添加设备:查看“设备ID”,并在另一台设备“添加远程设备”,输入对应的ID。
添加同步文件夹:“添加文件夹”,设置本地存放路径、同步的设备。
A<=>B,两台设备之间互相同步,需要两台设备同时在线。
A<=>C<=>B,如果有一台不关机的设备C,可以充当文件服务器。
配置完成后,便可以同步文件。Syncthing 官方提供了发现服务器与中继服务器,同时也可以搭建自己的发现服务器与中级服务器。
客户端配置文件
12345678910 ...
docker应用
Dockerhttps://docs.docker.com/engine/install/ubuntu/
安装123456789101112131415161718192021222324252627282930# 更新软件包apt updateapt upgrade# 安装必要的软件包sudo apt-get install ca-certificates curl gnupgsudo install -m 0755 -d /etc/apt/keyrings# 下载并添加Docker官方GPG密钥curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgsudo chmod a+r /etc/apt/keyrings/docker.gpg# 添加仓库到apt资源echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/k ...
网络穿透
支持协议
HTTPS
要求
frp
HTTP、HTTPS、SSH、FTP
自行配置
公网服务器
DDNSTO
HTTP、HTTPS、SSH
HTTP(S)均有
登录验证、SSH需在网页下
cloudflare
HTTP、HTTPS
只有HTTPS
域名、网速较慢
zerotier
HTTP、HTTPS、SSH、FTP
自行配置
需客户端、打通后为P2P
frp内网穿透frp是一款基于Golang开发的高性能的内网穿透工具,可以实现将内网中的服务映射到公网上,从而实现公网访问内网服务的功能。
frp主要包含三个组件:frps、frpc和frpctl。
frps:是服务端组件,用于在公网上监听客户端请求,并将请求转发到内网中的目标服务。
frpc:是客户端组件,用于在内网中与frps建立连接,并将内网中的服务通过frps映射到公网上。
frpctl:是命令行工具,用于管理和监控frps和frpc的状态。
frp支持TCP和UDP协议,可以用于穿透HTTP、HTTPS、SSH、FTP等各种协议。
frps有公网的服务器使用frps。
/home/fr ...
控制分配v1.14.0
控制分配流程
主流程在ControlAllocator.cpp中
更新参数、状态等,检查是否进入控制分配
通过地面站的参数,更新控制矩阵(必要的话)
update_effectiveness_matrix_if_needed
获取发布控制量(均为三轴),构建c矩阵
力矩控制量:vehicle_torque_setpoint
力控制量:vehicle_thrust_setpoint
控制分配ControlAllocator.cpp中查看Run()函数
更新参数、控制效率矩阵
参数更新、未解锁,执行更新参数
12updateParams(); //更新所有参数parameters_updated(); //从所有参数中,更新效率矩阵的参数
更新参数的过程
控制量斜率
更新控制效率矩阵源,根据源更新配置方法
根据以上信息,将更新的值复制到当前成员变量
更新控制效率矩阵
update_effectiveness_matrix_if_needed(EffectivenessUpdateReason::CONFIGURATION_UPDATE)
更新控制效率源的过程
效率 ...
恋爱记后端
应用配置Django新建应用1python manage.py startapp YYreminder
不操作数据库,因此不需要在settings中增加该应用
后端接口调用的模块
123456# 日历模块pip install sxtwl# 法定节假日模块(每年更新)pip install chinese_calendarpip install --upgrade chinese_calendar
《浪漫满屋》软件设计
需求一款主要在安卓端运行的APP,主要包括收纳间、每日状态展示、记账本等功能,后续可扩充各类Web应用。
功能身份验证
通用账号
登录获取Token,后续通过Token交互数据
收纳间衣橱【化妆品】等日常消耗类资产
【资产管理】一款资产管理软件,自定义分类。
【使用状态】记录资产的使用情况,并进行统计。
【资产搭配】如衣服组合套装,时尚搭配。
【统计】各类统计状态展示。
恋爱提醒
查看恋爱天数
查看天气、地区信息
查看工资下发时间
记账本主要技术栈第一版全部使用api接口,前端不保存db数据
前端:flutter【手机端】+部分django前台界面
后端:python-django
数据库:mysql
前后端接口规范
标准接口
1http://127.0.0.1:8000/api/
请求支持方法
GET:从服务器取出资源(一项或多项)。
POST:在服务器新建一个资源。
DELETE:从服务器删除资源。
返回状态
状态码
含义
说明
200
OK
请求成功
201
CREATED
创建成功
204
DELETED
删除成功
400
B ...
收纳间后端
应用配置Django新建应用新建应用1python manage.py startapp YYcontainer
项目中增加应用123INSTALLED_APPS = [ 'YYcontainer' # 新加的app]
图片保存设置12# 安装 Pillowpython -m pip install --upgrade Pillow==9.0 # -m 可以安装相关的依赖包
RomanticHome/settings.py
12MEDIA_ROOT = os.path.join(BASE_DIR, 'media')MEDIA_URL = '/media/'
RomanticHome/urls.py
12345from django.conf import settingsfrom django.conf.urls.static import staticurlpatterns = [ ...] + static(settings.MEDIA_URL, document_root=settings.MEDIA_R ...
《收纳间》项目设计
数据库设计
用户表使用Django自带的用户表,并通过rest_framework.authtoken验证身份信息。
类别表(字段如: 衣服、化妆品)与分类表(字段如: 品牌、尺码、颜色)分开
类别表(sort)关联到用户(user),具体物品、记录等关联到sort
下图结构中,record和suit的objects均为多对多关系
主要接口分类Sort查分类说明:如衣服、化妆品等
URL:yycon/get_sorts/
方法:GET
请求头(headers):
1"Authorization": "Token <your_token>"
响应值:
123456789{ "data": [ { "sort_id": "sort_id", "sort_name": "sort_name" } ]} ...
Flask及第一个项目
介绍概述
Web Framework
Web Application Framework(Web应用程序框架)或简单的Web Framework(Web框架)表示一个库和模块的集合,使Web应用程序开发人员能够编写应用程序,而不必担心协议,线程管理等低级细节。
Flask
Flask是一个用Python编写的Web应用程序框架。 它由 Armin Ronacher 开发,他领导一个名为Pocco的国际Python爱好者团队。 Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。两者都是Pocco项目。
WSGI
Web Server Gateway Interface(Web服务器网关接口,WSGI)已被用作Python Web应用程序开发的标准。 WSGI是Web服务器和Web应用程序之间通用接口的规范。
Werkzeug
它是一个WSGI工具包,它实现了请求,响应对象和实用函数。 这使得能够在其上构建web框架。 Flask框架使用Werkzeug作为其基础之一。
jinja2
jinja2是Python的一个流行的模板引擎。Web模板系统将模板与特定数据 ...