动态建模仿真实验报告
- 格式:docx
- 大小:566.05 KB
- 文档页数:30
动态系统建模仿真实验(II)院系:人文社会科学学院专业:科学与技术教育姓名:***学号:ZY*******指导教师:***2014年12月一、实验目的1. 熟悉Matlab软件的使用,并学习Matlab中VR以及GUI界面的使用。
2. 通过在 Matlab 环境中对四旋翼飞行器进行系统建模,使掌握以下内容:四旋翼飞行器的建模和控制方法、在 Matlab 下快速建立虚拟可视化环境的方法。
二、实验工具PC一台,Matlab软件三、实验基本知识1. Matlab基本知识在此不加详述。
2. 在Mablab 中制作VR场景Matlab 的“虚拟现实工具箱(VR Toolbox)”就是让我们在matlab 下建立虚拟现实环境,可以将建模、仿真和显示联为一体。
(1)进入目录“<matlab root>\toolbox\sl3d\vrealm\program”,双击启动vrbuild2.exe;注:<matlab root>为matlab 的安装路径。
File New(或Ctrl+N)新建一个三维场景(New world)(2)将VR 场景导入Matlab ,Simulink File New,新建一个Simulink 文档。
在“Simulink 3D Animation”库中选择”VR Sink”组件,加入文档中。
3. 在Matlab中进行GUI界面的设计建立了控制回路以后,有时候我们需要对控制回路的参数进行调整,以获得不同的控制效果。
这时候,一个方面的用户GUI 界面将会帮我们节省很多工作。
下面介绍在Matlab 里建立GUI 界面的过程。
(1)打开GUI 工具。
在命令行中输入“guide”指令,会打开Matlab 的GUI 设计工具;(2)创建控件在左侧边栏里,我们可以看到有很多常用的控件可以使用。
常用的控件包括:Button Group:表示界面上的一块区域;Edit Text:文字编辑控件Static Text:静态文本,显示说明性的文字;Push Button:按钮。
对任何一个控件,我们可以通过右键点击察看、编辑它的一系列属性,如下图所示。
有两个属性比较重要:Tag:控件的变量名;String:控件显示的内容(3)为按钮添加响应函数。
响应函数的添加过程为:按钮上点击右键,选择View Callback ->Callback,Matlab 会自动生成按钮的响应函数,使用户添加代码。
4. 四旋翼飞行器控制建模(1)四旋翼飞行器简介四旋翼飞行器通过四个螺旋桨产生的升力实现飞行,原理与直升机类似。
四个旋翼位于一个几何对称的十字支架前,后,左,右四端,如图3-1 所示。
旋翼由电机控制;整个飞行器依靠改变每个电机的转速来实现飞行姿态控制。
图3-1 四旋翼飞行器旋翼旋转方向示意图图3-1在图3-1 中,前端旋翼 1 和后端旋翼 3 逆时针旋转,而左端旋翼 2 和右端的旋翼 4 顺时针旋转,以平衡旋翼旋转所产生的反扭转矩。
由此可知,悬停时:四只旋翼的转速应该相等,以相互抵消反扭力矩;同时等量地增大或减小四只旋翼的转速,会引起上升或下降运动;增大某一只旋翼的转速,同时等量地减小同组另一只旋翼的转速,则产生俯仰、横滚运动;增大某一组旋翼的转速,同时等量减小另一组旋翼的转速,将产生偏航运动。
从动力学角度分析,四旋翼飞行器系统本身是不稳定的,因此,使系统稳定的控制算法的设计显得尤为关键。
由于四旋翼飞行器为六自由度的系统(三个角位移量,三个线位移量),而其控制量只有四个(4个旋翼的转速),这就意味着被控量之间存在耦合关系。
因此,控制算法应能够对这种欠驱动(under-actuated)系统足够有效,用四个控制量对三个角位移量和三个线位移量进行稳态控制。
本实验针对四旋翼飞行器的悬浮飞行状态进行建模。
(2)受力分析图3-2 四旋翼飞行器受力分析图如图3-2 所示,旋翼机体所受外力和力矩为:重力mg ,沿z w方向;四个旋翼旋转所产生的升力F i(i= 1 , 2 , 3 , 4),沿z b方向;旋翼旋转会产生扭转力矩M i(i= 1 , 2 , 3 , 4)。
垂直于叶片的旋翼平面,与旋转矢量相反。
得到运动方程如下飞行器受到外界力和力矩的作用,形成线运动和角运动。
线运动由合外力引起,符合牛顿第二定律,如下公式所示:r为飞机的位置矢量。
注意:以上公式是在地平面坐标系中进行描述的。
角运动由合力矩引起。
四旋翼飞行器所受力矩来源于两个方面:1)旋翼升力作用于质心产生的力矩;2)旋翼旋转产生的扭转力矩。
角运动方程如下公式所示。
其中,L 为旋翼中心到飞行器质心的距离,I为惯量矩阵。
(3)控制回路设计图3-3 包含内外两个控制回路的控制结构外回路由Position Control 模块实现。
输入为位置误差,输出为期望的滚转、俯仰和偏航角(ϕdes(t),θdes(t),ψdes(t))。
内回路由Attitude Control 模块实现,输入为期望姿态角,输出为期望转速(Δωϕ,Δωθ,Δωψ)。
Motor Dynamics 模块模拟电机特性,输入为期望转速,输出为力和力矩。
Rigid Body Dynamics 是被控对象,模拟四旋翼飞行器的运动特性。
1)内回路:姿态控制回路对四旋翼飞行器,我们唯一可用的控制手段就是四个旋翼的转速。
因此,这里首先对转速ω产生的作用进行分析。
因此,可以将期望转速写成几个分量的线性组合:其它几个旋翼也可进行类似分析,最终得到在悬浮状态下,四个旋翼共同的升力应抵消重力,因此ωh满足下式:此时,我们可以把旋翼角速度分成几个部分分别控制,通过“比例-微分”控制律建立如下公式:将三个方程带入并简化,可得到“期望姿态角-期望转速”之间的关系,即内回路。
2)外回路:位置控制回路期望位置记为r i des。
可通过PID 控制器计算控制信号:我们通过俯仰角和滚转角控制飞行器在x w和y w平面上的运动,通过Δωψ控制偏航角,通过ΔωF控制飞行器在Z B轴上的运动。
可得到以下公式:线性化后,可得到控制信号(期望加速度)与期望姿态角之间的关系:通过PID 控制器得到了作为控制信号的期望加速度,因此,将上式反转,由期望加速度计算期望姿态角,作为内回路的输入:四、实验内容1. 基于Simulink 建立四旋翼飞行器的悬停控制回路,实现飞行器的悬停控制;2. 建立GUI 界面,能够输入参数并绘制运动轨迹;3. 基于VR Toolbox 建立3D 动画场景,能够模拟飞行器的运动轨迹。
五、实验结果与分析1. Simulink仿真图如下图5-1所示:图5-1 Simulink仿真图实验让四旋翼飞行器可以停到给定的位置,并且实现悬停,即停到目标地方不动。
运行Simulink程序之前,先要运行初始化的m文件。
初始化输入,即期望位置为:xdes = 12;ydes = 15;zdes = -9;得到的四旋翼飞行器的x,y,z方向的位移曲线如下所示,图5-2为x,图5-3为y,图5-4为z:图5-2 x方向位移图5-3 y方向位移图5-4 z方向位移分析与结论:从实验结果可以看到,四旋翼飞行器最后的稳定位移为:x=12,y=15,z=-9。
与期望的输入相等,达到了控制悬停的目的。
并且,可以看到仿真系统的动态性能比较好,很快并且准确地到达预定的位置。
2. VR模块的结果如下图所示,图5-5 为程序运行之前,图5-6为程序运行之后的VR显示结果:图5-5 程序运行之前图5-6 程序运行之后分析与结论:1中的Simulink仿真出的飞行器姿态的角度fai,theta,psi这三个量与1或0合成矢量,然后给VR中的rotation属性,从而实现了VR中的飞行姿态的变化,x,y,z 给VR中的Translation从而改变VR中图形的位移,实现了可视化可以看到四旋翼飞行器成功地挺到了要求的给定位置之后,实现了悬停,即停止不动。
3. 建立的GUI界面如下图5-7所示,通过在命令窗口输入guide命令,进行创建。
图5-7 GUI界面其中包含有全部删除、使用默认值、开始三个按钮,功能如下:全部删除:删除部分录入的变量的值;使用默认值:将部分变量的值恢复为默认值;开始:开始进行仿真。
右边的上下两个图分别是xyz轴分立响应曲线和空间运动轨迹曲线,程序运行后,会显示运行的结果。
让结构和控制参数都采用默认参数后,设置飞行点为:x=5,y=10,z= 15点击开始,进行仿真,运行结果如下图5-8所示:图5-8 采用默认参数的GUI界面分析与结论:GUI界面的每一个按钮都有其对应的程序,运行之后可以看到,飞行器成功悬停到指定的位置 x=5,y=10,z=15,并且通过GUI界面,改变参数更加方便快捷,结果的显示也更加清晰明了。
六、实验总结通过本次实验,有以下四点总结:1. 熟悉Matlab软件的使用,m文件的编程技巧。
2.学习了Matlab中虚拟现实技术VR的使用,并进行了简单的实践。
3.学习了Matlab中GUI界面的建立与使用,并进行了简单的实践。
4.在 Matlab 环境中对四旋翼飞行器进行系统建模,掌握了四旋翼飞行器的建模和控制方法、在 Matlab 下快速建立虚拟可视化环境的方法。
七、程序代码1. 初始化参数程序init.m%%%%%%%%%%%%%%% desired position %%%%%%%%%%%%%%%%%%%%%%xdes = 12;ydes = 15;zdes = -9;%%%%%%%%%%%%%%%structural parameters %%%%%%%%%%%%%%%%%%% m = 0.5;g = 9.8;Ixx =0.114;Iyy = 0.114;Izz = 0.158;yaw = 3/57.3;L = 0.2;%%%%%%%%%%%%%%%%%% save PID for x %%%%%%%%%%%%%%%%%%%% kpx = 0.8;kix = 1e-4;kdx = 1.3;%%%%%%%%%%%%%%%%%% save PID for y %%%%%%%%%%%%%%%%%%%% kpy = 0.8;kiy = 3e-4;kdy = 1.3;%%%%%%%%%%%%%%%%%% save PID for z %%%%%%%%%%%%%%%%%%%% kpz = 1.2;kiz = 1e-6;kdz = 2;%%%%%%%%%%%%%%%%%% save PD for phi %%%%%%%%%%%%%%%%%%% kpphi = 2000;kdphi = 4000;%%%%%%%%%%%%%%%%%% save PD for theta %%%%%%%%%%%%%%%%% kptheta = 2000;kdtheta = 4000;%%%%%%%%%%%%%%%%%% save PD for psi %%%%%%%%%%%%%%%%%%% kppsi = 800;kdpsi = 4000;%%%%%%%%%%%%%%%%%%% save tsim %%%%%%%%%%%%%%%%%%%%%%%%%% tsim = 20;2. GUI程序function varargout = GUI_Config(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @GUI_Config_OpeningFcn, ...'gui_OutputFcn', @GUI_Config_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before GUI_Config is made visible.function GUI_Config_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;% Update handles structureguidata(hObject, handles);set(handles.progresslabel,'String','δ¿ªÊ¼·ÂÕæ');% UIWAIT makes GUI_Config wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line. function varargout = GUI_Config_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;function m_value_Callback(hObject, eventdata, handles)function m_value_CreateFcn(hObject, eventdata, handles)% hObject handle to m_value (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called set(hObject,'String','');% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction g_value_Callback(hObject, eventdata, handles)function g_value_CreateFcn(hObject, eventdata, handles)% hObject handle to g_value (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called set(hObject,'String','');% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction L_value_Callback(hObject, eventdata, handles)function L_value_CreateFcn(hObject, eventdata, handles)% hObject handle to L_value (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called set(hObject,'String','');% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction Ixx_value_Callback(hObject, eventdata, handles)function Ixx_value_CreateFcn(hObject, eventdata, handles)% hObject handle to Ixx_value (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called set(hObject,'String','');% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction Iyy_value_Callback(hObject, eventdata, handles)function Iyy_value_CreateFcn(hObject, eventdata, handles)set(hObject,'String','');% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction Izz_value_Callback(hObject, eventdata, handles)function Izz_value_CreateFcn(hObject, eventdata, handles)set(hObject,'String','');% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end% --- Executes on button press in structParamClear.function structParamClear_Callback(hObject, eventdata, handles)% hObject handle to structParamClear (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)set(handles.m_value,'String','');set(handles.g_value,'String','');set(handles.L_value,'String','');set(handles.Ixx_value,'String','');set(handles.Iyy_value,'String','');set(handles.Izz_value,'String','');% --- Executes on button press in structParam_Default.function structParam_Default_Callback(hObject, eventdata, handles) % hObject handle to structParam_Default (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)set(handles.m_value,'String','0.5');set(handles.g_value,'String','9.8');set(handles.L_value,'String','0.2');set(handles.Ixx_value,'String','0.114');set(handles.Iyy_value,'String','0.114');set(handles.Izz_value,'String','0.158');set(handles.progresslabel,'String','½á¹¹²ÎÊýʹÓÃĬÈϲÎÊý');function xt_value_Callback(hObject, eventdata, handles)function xt_value_CreateFcn(hObject, eventdata, handles)set(hObject,'String','');% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction yt_value_Callback(hObject, eventdata, handles)function yt_value_CreateFcn(hObject, eventdata, handles)set(hObject,'String','');% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction zt_value_Callback(hObject, eventdata, handles)function zt_value_CreateFcn(hObject, eventdata, handles)set(hObject,'String','');% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end% --- Executes on button press in posParam_clear.function posParam_clear_Callback(hObject, eventdata, handles)% hObject handle to posParam_clear (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)set(handles.xt_value,'String','');set(handles.yt_value,'String','');set(handles.zt_value,'String','');% --- Executes on button press in posParam_Default.function posParam_Default_Callback(hObject, eventdata, handles)set(handles.xt_value,'String','4');set(handles.yt_value,'String','5');set(handles.zt_value,'String','-10');set(handles.progresslabel,'String','λÖòÎÊýʹÓÃĬÈϲÎÊý');function kpx_value_Callback(hObject, eventdata, handles)function kpx_value_CreateFcn(hObject, eventdata, handles)set(hObject,'String','');% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction kix_value_Callback(hObject, eventdata, handles)function kix_value_CreateFcn(hObject, eventdata, handles)set(hObject,'String','');if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction kdx_value_Callback(hObject, eventdata, handles)function kdx_value_CreateFcn(hObject, eventdata, handles)set(hObject,'String','');% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction kpy_value_Callback(hObject, eventdata, handles)function kpy_value_CreateFcn(hObject, eventdata, handles)set(hObject,'String','');% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');function kiy_value_Callback(hObject, eventdata, handles)function kiy_value_CreateFcn(hObject, eventdata, handles)set(hObject,'String','');% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction kpz_value_Callback(hObject, eventdata, handles)function kpz_value_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction kiz_value_Callback(hObject, eventdata, handles)function kiz_value_CreateFcn(hObject, eventdata, handles)set(hObject,'String','');if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction kdz_value_Callback(hObject, eventdata, handles) function kdz_value_CreateFcn(hObject, eventdata, handles)set(hObject,'String','');if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction kpphi_value_Callback(hObject, eventdata, handles) function kpphi_value_CreateFcn(hObject, eventdata, handles) set(hObject,'String','');if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction kdphi_value_Callback(hObject, eventdata, handles) function kdphi_value_CreateFcn(hObject, eventdata, handles) set(hObject,'String','');if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction kptheta_value_Callback(hObject, eventdata, handles) function kptheta_value_CreateFcn(hObject, eventdata, handles)set(hObject,'String','');% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction kdtheta_value_Callback(hObject, eventdata, handles)function kdtheta_value_CreateFcn(hObject, eventdata, handles)% hObject handle to kdtheta_value (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called set(hObject,'String','');% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction kppsi_value_Callback(hObject, eventdata, handles)function kppsi_value_CreateFcn(hObject, eventdata, handles)set(hObject,'String','');if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction kdpsi_value_Callback(hObject, eventdata, handles)function kdpsi_value_CreateFcn(hObject, eventdata, handles)set(hObject,'String','');% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction simTime_value_Callback(hObject, eventdata, handles) function simTime_value_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end% --- Executes on button press in ctrlParam_clear.function ctrlParam_clear_Callback(hObject, eventdata, handles)% hObject handle to ctrlParam_clear (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)set(handles.kpx_value,'String','');set(handles.kix_value,'String','');set(handles.kdx_value,'String','');%//set(handles.kpy_value,'String','');set(handles.kiy_value,'String','');set(handles.kdy_value,'String','');%//set(handles.kpz_value,'String','');set(handles.kiz_value,'String','');set(handles.kdz_value,'String','');%//set(handles.kpphi_value,'String','');set(handles.kdphi_value,'String','');%//set(handles.kptheta_value,'String','');set(handles.kdtheta_value,'String','');%//set(handles.kppsi_value,'String','');set(handles.kdpsi_value,'String','');%//set(handles.simTime_value,'String','');%//set(handles.progresslabel,'String','');% --- Executes on button press in ctrlParam_Default.function ctrlParam_Default_Callback(hObject, eventdata, handles)% hObject handle to ctrlParam_Default (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)set(handles.kpx_value,'String','0.8');set(handles.kix_value,'String','1e-4');set(handles.kdx_value,'String','1.3');%//set(handles.kpy_value,'String','0.8');set(handles.kiy_value,'String','3e-4');set(handles.kdy_value,'String','1.3');%//set(handles.kpz_value,'String','1.2');set(handles.kiz_value,'String','1e-6');set(handles.kdz_value,'String','2');%//set(handles.kpphi_value,'String','2000');set(handles.kdphi_value,'String','4000');%//set(handles.kptheta_value,'String','2000');set(handles.kdtheta_value,'String','4000');%//set(handles.kppsi_value,'String','800');set(handles.kdpsi_value,'String','4000');%//set(handles.simTime_value,'String','30');%//set(handles.progresslabel,'String','¿ØÖƲÎÊýʹÓÃĬÈϲÎÊý');% --- Executes during object creation, after setting all properties. function kdy_value_CreateFcn(hObject, eventdata, handles)% hObject handle to kdy_value (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called set(hObject,'String','');% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction kdy_value_Callback(hObject, eventdata, handles)% hObject handle to kdy_value (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of kdy_value as text% str2double(get(hObject,'String')) returns contents of kdy_value as a double% --- Executes on button press in startSim.function startSim_Callback(hObject, eventdata, handles)% hObject handle to startSim (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %%%%%%%%%%%%%%% desired position %%%%%%%%%%%%%%%%%%%%%%xdes = str2num(get(handles.xt_value,'String'));ydes = str2num(get(handles.yt_value,'String'));zdes = str2num(get(handles.zt_value,'String')); %%%%%%%%%%%%%%%structural parameters %%%%%%%%%%%%%%%%%%%m = str2num(get(handles.m_value,'String'));g = str2num(get(handles.g_value,'String'));Ixx = str2num(get(handles.Ixx_value,'String'));Iyy = str2num(get(handles.Iyy_value,'String'));Izz = str2num(get(handles.Izz_value,'String'));yaw = 3/57.3;L = str2num(get(handles.L_value,'String')); %%%%%%%%%%%%%%%%%% save PID for x %%%%%%%%%%%%%%%%%%%%kpx = str2num(get(handles.kpx_value,'String'));kix = str2num(get(handles.kix_value,'String'));kdx = str2num(get(handles.kdx_value,'String')); %%%%%%%%%%%%%%%%%% save PID for y %%%%%%%%%%%%%%%%%%%%kpy = str2num(get(handles.kpy_value,'String'));kiy = str2num(get(handles.kiy_value,'String'));kdy = str2num(get(handles.kdy_value,'String')); %%%%%%%%%%%%%%%%%% save PID for z %%%%%%%%%%%%%%%%%%%%kpz = str2num(get(handles.kpz_value,'String'));kiz = str2num(get(handles.kiz_value,'String'));kdz = str2num(get(handles.kdz_value,'String')); %%%%%%%%%%%%%%%%%% save PD for phi %%%%%%%%%%%%%%%%%%%kpphi = str2num(get(handles.kpphi_value,'String'));kdphi = str2num(get(handles.kdphi_value,'String')); %%%%%%%%%%%%%%%%%% save PD for theta %%%%%%%%%%%%%%%%%kptheta = str2num(get(handles.kptheta_value,'String'));kdtheta = str2num(get(handles.kdtheta_value,'String')); %%%%%%%%%%%%%%%%%% save PD for psi %%%%%%%%%%%%%%%%%%%kppsi = str2num(get(handles.kppsi_value,'String'));kdpsi = str2num(get(handles.kdpsi_value,'String')); %%%%%%%%%%%%%%%%%%% save tsim %%%%%%%%%%%%%%%%%%%%%%%%%% tsim = str2num(get(handles.simTime_value,'String')); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% set(handles.progresslabel,'String','·ÂÕæÖÐ...');options = simset('SrcWorkspace','current');sim('quadrotorsflyerGUI',tsim,options);set(handles.progresslabel,'String','·ÂÕæÍê³É');cla(handles.fig_2d);axes(handles.fig_2d);%h1 = axes(handles.fig_2d);plot(tsimout,xout);hold on;plot(tsimout,yout,'r');hold on;plot(tsimout,-zout,'g');hold on;legend('XÖáÏòÏìÓ¦ÇúÏß','YÖáÏòÏìÓ¦ÇúÏß','ZÖáÏòÏìÓ¦ÇúÏß'); xlabel('t s');title('XYZÖá·ÖÁ¢ÏìÓ¦ÇúÏß');grid on;cla(handles.fig_3d);axes(handles.fig_3d);plot3(xout,yout,-zout);xlabel('X');ylabel('Y');zlabel('Z');title('¿Õ¼äÔ˶¯¹ì¼£');grid on;。