当前位置:文档之家› 智能控制实验二-实验指导书

智能控制实验二-实验指导书

式中,
z ( k ) e( k ) x ( k ) e( k ) 1 x2 (k ) e(k ) e(k 1) x (k ) 2 e(k ) e(k ) 2e(k 1) e(k, K 0 , (0,1) 。
3
当上述方法都无法获得理想的仿真图像时,应该考虑增加采样数量,提高仿 真精度与效果。 三、单神经元自适应控制算法——正弦波 被控对象为 y (k ) (为Matlab中建立的直流伺服电机的差分方程),输入指令 为一方波信号:r (k ) 20 sin(4 k ts ) , 采样时间 ts 0.001s , 采用有监督的Hebb 学习规则实现权值的学习,初始权值取 W [w1 w2 w3 ] [0.1 0.1 0.1] , 0.1 ,
5.对 U( Z ) 和 Y( Z ) 进行 z 逆变换得到差分方程
y (k ) a1 y (k 1) an y (k n) b0u (k ) b1u (k 1) bmu (k m)
三、单神经元自适应控制算法——方波 单神经元自适应控制的结构如下图所示。
K值得选择非常重要。K越大,则快速性越好,但超调量大,甚至可能使系 统不稳定。当被控对象时延增大时,K值必须减小,以保证系统稳定。K值选择
2
过小,会使系统快速性变差。 被控对象为 y (k ) (为Matlab中建立的直流伺服电机的差分方程),输入指令 为一方波信号:r (k ) 0.5sign( sin(4 k ts )) ,采样时间 ts 0.001s ,采用有监督 的 Hebb 学习规则实现权值的学习,初始权值取 W [w1 w2 w3 ] [0.1 0.1 0.1] ,
5
2、交叉编译程序 打开终端:主界面工具栏 Applications--Accessories--Terminal.终端中$提示符 表示以普通用户执行命令,#提示符表示以 root 用户(类似于 Windows 系统的管 理员账户 Administrator,具有很大的权限)执行命令。 切换到程序目录, 使用 make clean 命令清理编译生成的可执行文件和中间文 件,使用 make 命令交叉编译程序,在程序目录下生成可执行文件 main(绿色粗 体)表示编译成功,编译成功的如下图所示: $ cd /home/robot/neural $ make clean $ make $ ls
6
五、设置超级终端并运行程序 设置好超级终端,将在虚拟机中生成的可执行文件 000 下载到 mini2440 控 制器中,运行该程序,观察实验箱中随动电机是否跟随主动电机完成随动运动。
7
单神经元自适应控制器是通过对加权系数的调整来实现自适应、自组织功 能,控制算法为
u (k ) u (k 1) K i (k ) xi (k )
i 1
3
(1)
如果权系数的调整按有监督的 Hebb 学习规则实现,在学习算法中加入监督 项 z (k ) ,则神经网络权值学习算法为
w1 (k ) w1 (k 1) z (k )u (k 1) x1 (k ) w2 (k ) w2 (k 1) z (k )u (k 1) x2 (k ) w3 (k ) w3 (k 1) z (k )u (k 1) x3 (k )
0.1 , K 0.01 。以此为条件在Matlab中建立单神经元自适应控制器。
在调节过程中可能会出现超调量过大的问题,导致仿真失败如下图所示。此 时应该重点调节神经元的比例系数,使其超调量下降到可以接受的范围。
在仿真时,还会出现仿真精度不够的现象,如下图所示。应观察仿真图像, 按照 K 与 的不同特点,分别调试参数大小,以期得到理想的仿真图像。
G (z)
Y (Z) 0.0004917 z 0.0004836 b0 b1 z 1 bm z m U (Z) z 2 1.949 z 0.9512 1 a1 z 1 an z n
1
4.交叉相乘得到
Y (Z)(1 a1 z 1 an z n ) U (Z)(b0 b1 z 1 bm z m )
如果编译不成功,则根据提示修改程序源代码。 编译成功后,将可执行程序重命名为学号后三位(下面 000 处应为学号后三 位),并将可执行程序复制到用户桌面, $ mv main 000 $ cp 000 /home/robot/Desktop 使用 Ctrl+C 或者鼠标将桌面可执行程序拖到 Windows 下的桌面。
K 0.01 。以此为条件在Matlab中建立单神经元自适应控制器。
在调节过程中可能会出现超调量过大的问题。 此时应该重点调节神经元的比 例系数,使其超调量下降到可以接受的范围。在仿真时,还会出现仿真精度不够 的现象。应观察仿真图像,按照 K 与 的不同特点,分别调试参数大小,以期得 到理想的仿真图像。当上述方法都无法获得理想的仿真图像时,应该考虑增加采 样数量,提高仿真精度与效果。 仿真效果如下图所示。
实验二 神经网络在角度随动系统中的应用
实验目的与意义 学习 Matlab 中建立单神经元自适应神经网络控制器的方法; 了解神经网络在 角度随动系统中的应用。 实验环境 PC 平台:Matlab、Ubuntu 交叉编译环境; 目标机:友善之臂 MINI2440 实验内容 1. 根据直流伺服电机的传递函数求出差分方程 2. 在 Matlab 中建立单神经元自适应控制器 3. 调整学习速率 和比例系数 K 得到较好的控制效果 *4. 编写单神经元自适应控制器的 c 程序,编译并在角度随动系统中验证 实验内容及步骤 一、直流伺服电机传递函数
G (s) 7.463 0.0002202s 2 0.006s 1
二、传递函数求差分方程步骤 1.使用 tf 函数建立传递函数 sys=tf(1000,[1,50,2000]) 得到传递函数
G (s) 1000 s 50 s 2000
2
2.设置采样时间 ts = 0.001 3.使用 c2d 函数进行 Z 变换,其中 m n dsys=c2d(sys,ts,'z')
4
四、交叉编译步骤 1. 打开角度随动控制代码 程序代码包括以下 8 个文件 main.c —— 主程序 neural.c neural.h —— 单神经元自适应控制相关定义和函数 uart.c uart.h —— Linux 下串口相关定义和函数
mpu6050.c mpu6050.h —— 角度传感器相关定义和函数 Makefile —— make 文件 打开 Vmware 虚拟机软件,运行 Ubuntu 虚拟机,登陆系统,用户名 robot, 密码 123456。点击主界面工具栏 Places--Home Folder 打开用户文件夹,新建一 个文件夹,例如“neural”,使用鼠标拖放或者 Ctrl+C,将 Windows 中的程序复 制到新建的文件夹内。 打开 gedit 编辑器: 主界面工具栏 Applications--Accessories--gedit Text Editor。 从 gedit 中打开上面各个源代码。将第三步仿真参数填到 neural.c 相应的参数位 置上, 并且按照 MATLAB 仿真中使用的公式填写 k 时刻的误差、 误差的位置量、 误差的速度量、误差的加速度量、网络学习权值、控制律、输出以及数据存储等 代码。
相关主题