自适应控制课程心得体会
一、一些课程记录
10.9 对欧拉法求积分加以了解
对提取出的微分方程进行基础的Simulink仿真搭建:自适应控制
10.16 closed-loop system 闭环系统
控制系统,被控系统,测量单元
自适应机构(连续系统:微分方程;离散系统:差分方程)——调控制器参数
输入到输出之间有一个参考模型
模式切换——开关控制——多个参考模型
机器搜索——寻优
高通滤波器,积分 (class2课程)
推荐经典书目: 钱学森《工程控制论》
优秀人物:M.Krstic
以下是课程中实践的一些搭建案例
案例一:多模态自适应控制
案例二:
其中的函数
案例三:极值搜索
其中的函数
10.23
数值优化的好书——Numerical Optimization
梯度的反方向最快(实际中找到的梯度方向只能是近似值)
步长:
1.充分下降条件(防止步长过大)
2.曲率条件(防止步长过小)
以下是基于此篇文章中的流程编写的simulink仿真及matlab代码:
clc
clear
% 输入初始值
x=input('enter the initial column vector x ');
% 设定步长参数值
c1 = 0.5;
beta = 0.5;
obj = func(x);
g = grad(x);
k = 0; % k = # iterations
nf=1;
funcval = obj;
% 主代码
while norm(g) > 1e-5 % 停止搜索条件,梯度小于1e-6
p = -g; % 搜寻方向
a = 1; % 搜寻步长
newobj = func(x + a*p); % 函数下一步的值
nf = nf+1;
while (newobj-obj)/a > c1*g'*p %充分下降条件
a = a*beta;
newobj = func(x + a*p);
nf = nf+1;
end
if (mod(k,100)==1) % 输出迭代过程
fprintf('%5.0f %5.0f %12.5e \n',k,nf,obj);
end
funcval = [funcval,newobj];
x = x + a*p; % 线索搜方法
obj = newobj;
g = grad(x);
k = k + 1; %循环迭代
end
% 输出 x and k
x, k
% 函数的收敛图
plot(funcval)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%file name: func.m
%Rosenbrock 函数定义
function y = func(x)
y = 100*(x(1)^2 - x(2))^2 + (x(1)-1)^2;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%file name: grad.m
%求解Rosenbrock的梯度
function y = grad(x)
y(1) = 100*(2*(x(1)^2-x(2))*2*x(1)) + 2*(x(1)-1);
y(2) = 100*(-2*(x(1)^2-x(2)));
y = y';
end
10.31进行虚拟机安装及ROS了解
ubuntu18.04及ROS-melodic安装可参考以下链接:
树莓派+ubuntu18.04+ROS-melodic+MAVROS+librealsense+vio+realsense_ros
二、总结
1.自适应控制(Adaptive Control)
2.多模式自适应控制
3.多模态自适应控制(虚拟的跑很多种)(切分空间范围)用监督器进行监督切换
4.极值搜索(extremum-seeking) 区别在于加了目标函数
被控对象-objective function-高通滤波器(+正弦扰动)-积分(+正弦扰动)
5.基于数值优化的控制
被控对象-J-数值优化-状态转换