From cefab60eda039247304071d8e98bdd65373e5597 Mon Sep 17 00:00:00 2001 From: Rich <m87rich@iastate.edu> Date: Sun, 19 Feb 2017 00:50:56 -0600 Subject: [PATCH] Some rough updates to the model to reflect previously unmodeled behavior in the IMU and the alternative of using the camera system directly for pitch and roll. --- controls/model/test_model_R2015A.mdl | 501 +++++++++++++++++---------- 1 file changed, 319 insertions(+), 182 deletions(-) diff --git a/controls/model/test_model_R2015A.mdl b/controls/model/test_model_R2015A.mdl index dc5c49d25..a56eba769 100644 --- a/controls/model/test_model_R2015A.mdl +++ b/controls/model/test_model_R2015A.mdl @@ -7,7 +7,7 @@ Model { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" - ComputedModelVersion "1.1992" + ComputedModelVersion "1.2001" NumModelReferences 0 NumTestPointedSignals 0 } @@ -29,7 +29,7 @@ Model { $ObjectID 2 $ClassName "Simulink.WindowInfo" IsActive [1] - Location [108.0, 36.0, 1742.0, 940.0] + Location [126.0, 17.0, 1743.0, 940.0] Object { $PropName "ModelBrowserInfo" $ObjectID 3 @@ -46,16 +46,28 @@ Model { $ClassName "Simulink.ExplorerBarInfo" Visible [1] } - Object { - $PropName "EditorsInfo" - $ObjectID 5 - $ClassName "Simulink.EditorInfo" - IsActive [1] - ViewObjType "SimulinkSubsys" - LoadSaveID "604" - Extents [1692.0, 765.0] - ZoomFactor [1.25] - Offset [-66.304761904761563, 99.416666666666686] + Array { + Type "Simulink.EditorInfo" + Dimension 2 + Object { + $ObjectID 5 + IsActive [1] + ViewObjType "SimulinkSubsys" + LoadSaveID "604" + Extents [1693.0, 762.0] + ZoomFactor [1.25] + Offset [-176.29999999999973, 87.623328789075] + } + Object { + $ObjectID 6 + IsActive [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "650" + Extents [1693.0, 762.0] + ZoomFactor [1.25] + Offset [1131.6600014448165, 457.59999999999991] + } + PropName "EditorsInfo" } } } @@ -65,9 +77,9 @@ Model { ModifiedByFormat "%<Auto>" LastModifiedBy "m87rich" ModifiedDateFormat "%<Auto>" - LastModifiedDate "Sat Feb 18 00:09:36 2017" - RTWModifiedTimeStamp 409277344 - ModelVersionFormat "1.%<AutoIncrement:1992>" + LastModifiedDate "Sat Feb 18 23:17:32 2017" + RTWModifiedTimeStamp 409360648 + ModelVersionFormat "1.%<AutoIncrement:2001>" ConfigurationManager "none" SampleTimeColors on SampleTimeAnnotations off @@ -108,7 +120,7 @@ Model { TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" - $ObjectID 6 + $ObjectID 7 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "test_model_R2015A" overrideMode_ [0.0] @@ -173,16 +185,16 @@ Model { Type "Handle" Dimension 1 Simulink.ConfigSet { - $ObjectID 7 + $ObjectID 8 Version "1.15.0" Array { Type "Handle" Dimension 8 Simulink.SolverCC { - $ObjectID 8 + $ObjectID 9 Version "1.15.0" StartTime "0.0" - StopTime "20" + StopTime "300" AbsTol "auto" FixedStep "auto" InitialStep "auto" @@ -214,7 +226,7 @@ Model { InsertRTBMode "Whenever possible" } Simulink.DataIOCC { - $ObjectID 9 + $ObjectID 10 Version "1.15.0" Decimation "1" ExternalInput "[t, u]" @@ -247,7 +259,7 @@ Model { Refine "1" } Simulink.OptimizationCC { - $ObjectID 10 + $ObjectID 11 Version "1.15.0" Array { Type "Cell" @@ -304,7 +316,7 @@ Model { AccelVerboseBuild off } Simulink.DebuggingCC { - $ObjectID 11 + $ObjectID 12 Version "1.15.0" RTPrefix "error" ConsistencyChecking "none" @@ -393,7 +405,7 @@ Model { IntegerSaturationMsg "warning" } Simulink.HardwareCC { - $ObjectID 12 + $ObjectID 13 Version "1.15.0" ProdBitPerChar 8 ProdBitPerShort 16 @@ -433,7 +445,7 @@ Model { ProdEqTarget on } Simulink.ModelReferenceCC { - $ObjectID 13 + $ObjectID 14 Version "1.15.0" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" @@ -448,7 +460,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 14 + $ObjectID 15 Version "1.15.0" SFSimOverflowDetection on SFSimEcho on @@ -461,7 +473,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 15 + $ObjectID 16 Version "1.15.0" Array { Type "Cell" @@ -538,7 +550,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 16 + $ObjectID 17 Version "1.15.0" Array { Type "Cell" @@ -611,7 +623,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 17 + $ObjectID 18 Version "1.15.0" Array { Type "Cell" @@ -707,11 +719,11 @@ Model { } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" - $ObjectID 7 + $ObjectID 8 } Object { $PropName "DataTransfer" - $ObjectID 18 + $ObjectID 19 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" @@ -1059,7 +1071,7 @@ Model { } System { Name "test_model_R2015A" - Location [108, 36, 1850, 976] + Location [126, 17, 1869, 957] Open off ModelBrowserVisibility off ModelBrowserWidth 200 @@ -1073,7 +1085,7 @@ Model { ShowPageBoundaries off ZoomFactor "125" ReportName "simulink-default.rpt" - SIDHighWatermark "885" + SIDHighWatermark "894" Block { BlockType SubSystem Name " Sensors " @@ -1085,7 +1097,7 @@ Model { RequestExecContextInheritance off Object { $PropName "MaskObject" - $ObjectID 19 + $ObjectID 20 $ClassName "Simulink.Mask" Display "port_label('input', 1, '^{B}Omega', 'texmode', 'on');\nport_label('input', 2, '\\Theta', 'texmode', 'on');" "\nport_label('input', 3, '^{B}v_o', 'texmode', 'on');\nport_label('input', 4, '^{E}r_o', 'texmode', 'on');\nport_labe" @@ -1095,8 +1107,8 @@ Model { } System { Name " Sensors " - Location [108, 36, 1850, 976] - Open off + Location [126, 17, 1869, 957] + Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" @@ -1172,7 +1184,7 @@ Model { RequestExecContextInheritance off Object { $PropName "MaskObject" - $ObjectID 20 + $ObjectID 21 $ClassName "Simulink.Mask" Display "port_label('input',1,'r_{o}','texmode','on')\nport_label('input',2,'\\Theta','texmode','on')" } @@ -1660,10 +1672,11 @@ Model { Ports [2] Position [2635, 815, 2785, 875] ZOrder 290 + Commented "on" RequestExecContextInheritance off Object { $PropName "MaskObject" - $ObjectID 21 + $ObjectID 22 $ClassName "Simulink.Mask" Display "port_label('input',1, '\\Theta','texmode','on')\nport_label('input',2,'r_{o}','texmode','on')" } @@ -1982,17 +1995,6 @@ Model { AutoView on VideoDimensions "[]" AllowVariableSize off - FigureProperties "{'Position', 'Name', 'Viewpoint', 'CameraBound', 'CameraDirection', 'CameraPosition', '" - "CameraUpVector', 'ZoomFactor', 'Antialiasing', 'Headlight', 'Lighting', 'NavPanel', 'Sound', 'StatusBar', 'Ster" - "eo3D', 'Stereo3DCameraOffset', 'Stereo3DHIT', 'ToolBar', 'Textures', 'Transparency', 'Triad', 'Wireframe', 'Nav" - "Zones', 'NavMode', 'NavSpeed', 'CaptureFileFormat', 'CaptureFileName', 'Record2DCompressMethod', 'Record2DCompr" - "essQuality', 'Record2D', 'Record2DFileName', 'Record2DFPS'; [5.0000000000000000e+00 9.2000000000000000e+01 " - "5.7600000000000000e+02 3.8000000000000000e+02], '', '_untitled_1', 'on', [0.0000000000000000e+00 0.00000000" - "00000000e+00 -1.0000000000000000e+00], [0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+" - "00], [0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00], [1.0000000000000000e+00], 'on'" - ", 'on', 'on', 'halfbar', 'on', 'on', 'off', [1.0000000149011612e-01], [0.0000000000000000e+00], 'on', 'on', 'on" - "', 'none', 'off', 'off', 'fly', 'normal', 'tif', '%f_anim_%n.tif', 'auto', [7.5000000000000000e+01], 'off', '%f" - "_anim_%n.avi', 'auto'} " } Line { ZOrder 1 @@ -2170,7 +2172,7 @@ Model { SFBlockType "MATLAB Function" Object { $PropName "MaskObject" - $ObjectID 22 + $ObjectID 23 $ClassName "Simulink.Mask" Display "port_label('input', 1, 'Gyroscope Reading', 'texmode', 'on');\nport_label('input', 2, '\\Theta_{IMU" "}', 'texmode', 'on');\nport_label('output', 1, 'd\\Theta_{Gyro}/dt', 'texmode', 'on');\ndisp('A_{EB}', 'texmode'," @@ -2306,7 +2308,7 @@ Model { SFBlockType "MATLAB Function" Object { $PropName "MaskObject" - $ObjectID 23 + $ObjectID 24 $ClassName "Simulink.Mask" Display "port_label('input', 1, 'Accelerometer Reading', 'texmode', 'on');\nport_label('output', 1, '\\theta" "_{accel}', 'texmode', 'on');\nport_label('output', 2, '\\phi_{accel}', 'texmode', 'on');\ndisp('Calculate Pitch a" @@ -2465,7 +2467,7 @@ Model { SFBlockType "MATLAB Function" Object { $PropName "MaskObject" - $ObjectID 24 + $ObjectID 25 $ClassName "Simulink.Mask" Display "port_label('input', 1, '\\theta_{accel}', 'texmode', 'on');\nport_label('input', 2, '\\phi_{accel}'" ", 'texmode', 'on');\nport_label('input', 3, '\\Theta_{Gyro}', 'texmode', 'on');\n%port_label('input', 4, '\\Theta" @@ -2689,6 +2691,7 @@ Model { Ports [1, 1] Position [2530, 780, 2565, 810] ZOrder 292 + Commented "on" LibraryVersion "1.356" DisableCoverage on SourceBlock "simulink/Discrete/First-Order\nHold" @@ -2703,6 +2706,7 @@ Model { Ports [1, 1] Position [2530, 875, 2565, 905] ZOrder 296 + Commented "on" LibraryVersion "1.356" DisableCoverage on SourceBlock "simulink/Discrete/First-Order\nHold" @@ -2721,7 +2725,7 @@ Model { RequestExecContextInheritance off Object { $PropName "MaskObject" - $ObjectID 25 + $ObjectID 26 $ClassName "Simulink.Mask" Display "port_label('input', 1, '^{B}dv_o/dt', 'texmode', 'on')\nport_label('input', 2, '^{B}v_o', 'texmode'" ", 'on')\nport_label('input', 3, '^{B}\\Omega', 'texmode', 'on')\nport_label('input', 4, '^{B}g', 'texmode', 'on')" @@ -2793,7 +2797,7 @@ Model { SFBlockType "MATLAB Function" Object { $PropName "MaskObject" - $ObjectID 26 + $ObjectID 27 $ClassName "Simulink.Mask" Display "port_label('input', 1, '^{B}dv_o/dt', 'texmode', 'on')\nport_label('input', 2, '^{B}v_o', 'texmode', 'on'" ")\nport_label('input', 3, '^{B}\\Omega', 'texmode', 'on')\nport_label('input', 4, '^{B}g', 'texmode', 'on')\nport_la" @@ -3625,7 +3629,7 @@ Model { RequestExecContextInheritance off Object { $PropName "MaskObject" - $ObjectID 27 + $ObjectID 28 $ClassName "Simulink.Mask" Display "port_label('input', 1, '^{E}r_o', 'texmode', 'on');\nport_label('input', 2, '\\psi', 'texmode', 'on" "');\nport_label('output', 1, '^{E}r_o camera', 'texmode', 'on');\nport_label('output', 2, '\\psi camera', 'texmod" @@ -3633,7 +3637,7 @@ Model { } System { Name "OptiTrack Camera System\n\n " - Location [108, 36, 1850, 976] + Location [126, 17, 1868, 957] Open off ModelBrowserVisibility off ModelBrowserWidth 200 @@ -3645,7 +3649,7 @@ Model { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "175" + ZoomFactor "150" Block { BlockType Inport Name "E_ro" @@ -4104,12 +4108,12 @@ Model { Parameters "x" Object { $PropName "MaskObject" - $ObjectID 28 + $ObjectID 29 $ClassName "Simulink.Mask" Display "color('red')\ndisp('Soft Real Time')\n" Object { $PropName "Parameters" - $ObjectID 29 + $ObjectID 30 $ClassName "Simulink.MaskParameter" Type "edit" Name "x" @@ -4464,7 +4468,7 @@ Model { RequestExecContextInheritance off Object { $PropName "MaskObject" - $ObjectID 30 + $ObjectID 31 $ClassName "Simulink.Mask" Display "port_label('input', 1, 'Rotor Duty Cycles', 'texmode', 'on');\nport_label('output', 1, '^{B}Omega', 'texmo" "de', 'on');\nport_label('output', 2, '\\Theta', 'texmode', 'on');\nport_label('output', 3, '^{B}v_o', 'texmode', 'on'" @@ -4509,7 +4513,7 @@ Model { SFBlockType "MATLAB Function" Object { $PropName "MaskObject" - $ObjectID 31 + $ObjectID 32 $ClassName "Simulink.Mask" Display "port_label('input', 1, '^B\\Omega', 'texmode', 'on');\nport_label('input', 2, '\\Theta', 'texmode'," " 'on');\nport_label('output', 1, 'd\\Theta/dt', 'texmode', 'on');\ndisp('A_{EB}', 'texmode', 'on');" @@ -4789,7 +4793,7 @@ Model { SFBlockType "MATLAB Function" Object { $PropName "MaskObject" - $ObjectID 32 + $ObjectID 33 $ClassName "Simulink.Mask" Display "port_label('input', 1, 'Rotor Duty Cycle', 'texmode', 'on');\nport_label('output', 1, 'Vb_{eff}', '" "texmode', 'on');\ndisp('ESC System');" @@ -4908,7 +4912,7 @@ Model { SFBlockType "MATLAB Function" Object { $PropName "MaskObject" - $ObjectID 33 + $ObjectID 34 $ClassName "Simulink.Mask" Display "port_label('output', 1, '^EF_g', 'texmode', 'on');\nfprintf('Gravity');\n" } @@ -5071,7 +5075,7 @@ Model { SFBlockType "MATLAB Function" Object { $PropName "MaskObject" - $ObjectID 34 + $ObjectID 35 $ClassName "Simulink.Mask" Display "port_label('input', 1, '^Bv_o', 'texmode', 'on');\nport_label('input', 2, '\\Theta', 'texmode', 'on" "');\nport_label('output', 1, '^Ev_o', 'texmode', 'on');\ndisp('L_{EB}', 'texmode', 'on');" @@ -5206,7 +5210,7 @@ Model { SFBlockType "MATLAB Function" Object { $PropName "MaskObject" - $ObjectID 35 + $ObjectID 36 $ClassName "Simulink.Mask" Display "port_label('input', 1, '^EF_g', 'texmode', 'on');\nport_label('input', 2, '\\Theta', 'texmode', 'on" "');\nport_label('output', 1, '^BF_g', 'texmode', 'on');\ndisp('L_{BE}', 'texmode', 'on');" @@ -5365,7 +5369,7 @@ Model { SFBlockType "MATLAB Function" Object { $PropName "MaskObject" - $ObjectID 36 + $ObjectID 37 $ClassName "Simulink.Mask" Display "port_label('input', 1, 'Vb_{eff}', 'texmode', 'on');\nport_label('input', 2, '\\omega', 'texmode', " "'on');\nport_label('output', 1, '\\alpha', 'texmode', 'on');\ndisp('Motor System');\n" @@ -5500,7 +5504,7 @@ Model { SFBlockType "MATLAB Function" Object { $PropName "MaskObject" - $ObjectID 37 + $ObjectID 38 $ClassName "Simulink.Mask" Display "port_label('input', 1, '\\alpha', 'texmode', 'on');\nport_label('input', 2, '\\omega', 'texmode', '" "on');\nport_label('input', 3, '^BF_g', 'texmode', 'on');\nport_label('input', 4, '^B\\Omega', 'texmode', 'on');\n" @@ -6555,13 +6559,13 @@ Model { RequestExecContextInheritance off Object { $PropName "MaskObject" - $ObjectID 38 + $ObjectID 39 $ClassName "Simulink.Mask" Display "port_label('output', 1, 'Setpoints', 'texmode', 'on');" } System { Name "Communication System" - Location [108, 36, 1850, 976] + Location [126, 17, 1868, 957] Open off ModelBrowserVisibility off ModelBrowserWidth 200 @@ -6573,16 +6577,15 @@ Model { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "250" + ZoomFactor "300" Block { BlockType Step Name "Step" SID "583" Position [925, 390, 955, 420] ZOrder 32 - Time "0" Before "[0; 0; 0; 0]" - After "[1; 1; 1; 0]" + After "[1; 0; 0; 0]" SampleTime "0.1" } Block { @@ -6613,7 +6616,7 @@ Model { RequestExecContextInheritance off Object { $PropName "MaskObject" - $ObjectID 39 + $ObjectID 40 $ClassName "Simulink.Mask" Display "port_label('input', 1, 'Setpoints', 'texmode', 'on');\nport_label('input', 2, '\\Theta_{filtered}', 'texmo" "de', 'on');\nport_label('input', 3, 'd\\Theta_{gyro}/dt', 'texmode', 'on');\nport_label('input', 4, '^{E}r_o', 'texmo" @@ -6621,7 +6624,7 @@ Model { } System { Name "Control System" - Location [108, 36, 1850, 976] + Location [126, 17, 1869, 957] Open off ModelBrowserVisibility off ModelBrowserWidth 200 @@ -6679,7 +6682,7 @@ Model { RequestExecContextInheritance off Object { $PropName "MaskObject" - $ObjectID 40 + $ObjectID 41 $ClassName "Simulink.Mask" Display "port_label('input', 1, '^{E}r_{x,setpoint}', 'texmode', 'on');\nport_label('input', 2, '^{E}r_{y,se" "tpoint}', 'texmode', 'on');\nport_label('input', 3, '^{E}r_{z,setpoint}', 'texmode', 'on');\nport_label('input', " @@ -6693,7 +6696,7 @@ Model { } System { Name "Controller" - Location [108, 36, 1850, 976] + Location [126, 17, 1869, 957] Open on ModelBrowserVisibility off ModelBrowserWidth 200 @@ -6801,7 +6804,7 @@ Model { BlockType Inport Name "roll_rate" SID "633" - Position [425, 313, 455, 327] + Position [525, 313, 555, 327] ZOrder 71 Port "11" IconDisplay "Port number" @@ -6810,7 +6813,7 @@ Model { BlockType Inport Name "pitch_rate" SID "634" - Position [425, 468, 455, 482] + Position [525, 468, 555, 482] ZOrder 72 Port "12" IconDisplay "Port number" @@ -6824,12 +6827,56 @@ Model { Port "13" IconDisplay "Port number" } + Block { + BlockType Gain + Name "Gain1" + SID "891" + Position [810, 117, 860, 153] + ZOrder 151 + Gain "5e4" + ParamDataTypeStr "Inherit: Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Gain + Name "Gain2" + SID "892" + Position [810, 237, 860, 273] + ZOrder 152 + Gain "5e4" + ParamDataTypeStr "Inherit: Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Gain + Name "Gain3" + SID "893" + Position [810, 392, 860, 428] + ZOrder 153 + Gain "5e4" + ParamDataTypeStr "Inherit: Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Gain + Name "Gain4" + SID "894" + Position [810, 542, 860, 578] + ZOrder 154 + Gain "5e4" + ParamDataTypeStr "Inherit: Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } Block { BlockType Reference Name "PID Controller1" SID "873" Ports [1, 1] - Position [545, 392, 585, 428] + Position [645, 392, 685, 428] ZOrder 142 LibraryVersion "1.356" SourceBlock "simulink/Continuous/PID Controller" @@ -6843,7 +6890,7 @@ Model { Form "Parallel" UseFilter on ControllerParametersSource "internal" - P "11704.603181499" + P "0.0206615987594042" I "1575.82088970639" D "504.111397357926" N "244.660686071579" @@ -6959,17 +7006,17 @@ Model { SourceBlock "simulink/Continuous/PID Controller" SourceType "PID 1dof" ContentPreviewEnabled off - Controller "PID" + Controller "PD" TimeDomain "Discrete-time" - SampleTime "0.1" + SampleTime "0.01" IntegratorMethod "Forward Euler" FilterMethod "Forward Euler" Form "Parallel" UseFilter off ControllerParametersSource "internal" - P "12.7" - I "14.1" - D "0" + P "1.69332227925298" + I "0.373031053213692" + D "0.0846661139626488" N "17.8214030142826" InitialConditionSource "internal" InitialConditionForIntegrator "0" @@ -7085,15 +7132,15 @@ Model { ContentPreviewEnabled off Controller "PID" TimeDomain "Discrete-time" - SampleTime "0.1" + SampleTime "0.01" IntegratorMethod "Forward Euler" FilterMethod "Forward Euler" Form "Parallel" UseFilter off ControllerParametersSource "internal" - P "-3138.91816077077" - I "-320.189162634817" - D "-7421.98260028101" + P "-0.0731264783484572" + I "-0.00816667990477195" + D "-0.163698158186742" N "5.79502261645411" InitialConditionSource "internal" InitialConditionForIntegrator "0" @@ -7201,13 +7248,13 @@ Model { Name "PID Controller2" SID "832" Ports [1, 1] - Position [405, 541, 445, 579] + Position [645, 541, 685, 579] ZOrder 121 LibraryVersion "1.356" SourceBlock "simulink/Continuous/PID Controller" SourceType "PID 1dof" ContentPreviewEnabled off - Controller "P" + Controller "PI" TimeDomain "Discrete-time" SampleTime "5e-3" IntegratorMethod "Forward Euler" @@ -7215,8 +7262,8 @@ Model { Form "Parallel" UseFilter on ControllerParametersSource "internal" - P "73938.0302695888" - I "-77.7" + P "0.137082785475467" + I "1.78239822850373" D "2.32" N "1/0.0818" InitialConditionSource "internal" @@ -7325,7 +7372,7 @@ Model { Name "PID Controller3" SID "874" Ports [1, 1] - Position [405, 392, 445, 428] + Position [505, 392, 545, 428] ZOrder 143 LibraryVersion "1.356" SourceBlock "simulink/Continuous/PID Controller" @@ -7339,7 +7386,7 @@ Model { Form "Parallel" UseFilter on ControllerParametersSource "internal" - P "7.19768640475995" + P "1.96697712983457" I "35.1207902652377" D "0.410623594074865" N "40.0107970227961" @@ -7455,18 +7502,18 @@ Model { SourceBlock "simulink/Continuous/PID Controller" SourceType "PID 1dof" ContentPreviewEnabled off - Controller "PID" + Controller "PD" TimeDomain "Discrete-time" - SampleTime "0.1" + SampleTime "0.01" IntegratorMethod "Forward Euler" FilterMethod "Forward Euler" Form "Parallel" UseFilter off ControllerParametersSource "internal" - P "-0.0367011843201958" - I "-0.000988506276189655" - D "-0.12757930213039" - N "2.69036257045651" + P "-0.00205853009179667" + I "-5.49963745752816e-05" + D "-0.109985782101112" + N "16.9491526069154" InitialConditionSource "internal" InitialConditionForIntegrator "0" InitialConditionForFilter "0" @@ -7579,18 +7626,18 @@ Model { SourceBlock "simulink/Continuous/PID Controller" SourceType "PID 1dof" ContentPreviewEnabled off - Controller "PID" + Controller "PD" TimeDomain "Discrete-time" - SampleTime "0.1" + SampleTime "0.01" IntegratorMethod "Forward Euler" FilterMethod "Forward Euler" Form "Parallel" UseFilter off ControllerParametersSource "internal" - P "0.0367011843201958" - I "0.000988506276189655" - D "0.12757930213039" - N "2.69036257045651" + P "0.00195838852233056" + I "9.56340991394167e-06" + D "0.107694320434245" + N "16.9491526069154" InitialConditionSource "internal" InitialConditionForIntegrator "0" InitialConditionForFilter "0" @@ -7697,7 +7744,7 @@ Model { Name "PID Controller8" SID "868" Ports [1, 1] - Position [405, 237, 445, 273] + Position [505, 237, 545, 273] ZOrder 137 LibraryVersion "1.356" SourceBlock "simulink/Continuous/PID Controller" @@ -7711,7 +7758,7 @@ Model { Form "Parallel" UseFilter on ControllerParametersSource "internal" - P "7.19768640475995" + P "1.96697712983457" I "35.1207902652377" D "0.2" N "40.0107970227961" @@ -7821,7 +7868,7 @@ Model { Name "PID Controller9" SID "869" Ports [1, 1] - Position [545, 237, 585, 273] + Position [645, 237, 685, 273] ZOrder 138 LibraryVersion "1.356" SourceBlock "simulink/Continuous/PID Controller" @@ -7835,7 +7882,7 @@ Model { Form "Parallel" UseFilter on ControllerParametersSource "internal" - P "11704.603181499" + P "0.0206615987594042" I "1575.82088970639" D "504.111397357926" N "244.660686071579" @@ -7940,12 +7987,48 @@ Model { DifferentiatorOutMax "[]" DifferentiatorOutDataTypeStr "Inherit: Inherit via internal rule" } + Block { + BlockType Saturate + Name "Saturation1" + SID "887" + Ports [1, 1] + Position [410, 240, 440, 270] + ZOrder 147 + Commented "through" + InputPortMap "u0" + UpperLimit "20*pi/180" + LowerLimit "-20*pi/180" + } + Block { + BlockType Saturate + Name "Saturation2" + SID "888" + Ports [1, 1] + Position [410, 395, 440, 425] + ZOrder 148 + Commented "through" + InputPortMap "u0" + UpperLimit "20*pi/180" + LowerLimit "-20*pi/180" + } + Block { + BlockType Saturate + Name "Saturation3" + SID "889" + Ports [1, 1] + Position [410, 545, 440, 575] + ZOrder 149 + Commented "through" + InputPortMap "u0" + UpperLimit "20*pi/180" + LowerLimit "-20*pi/180" + } Block { BlockType Scope Name "Scope" SID "791" Ports [1] - Position [410, 649, 440, 681] + Position [510, 649, 540, 681] ZOrder 97 Floating off Location [1, 76, 1921, 1039] @@ -8010,7 +8093,7 @@ Model { Position [265, 174, 295, 206] ZOrder 107 Floating off - Location [10, 76, 1926, 1039] + Location [593, 266, 1926, 1046] Open off NumInputPorts "1" List { @@ -8038,7 +8121,7 @@ Model { Name "Scope3" SID "797" Ports [1] - Position [550, 334, 580, 366] + Position [650, 334, 680, 366] ZOrder 109 Floating off Location [10, 76, 1926, 1039] @@ -8103,7 +8186,7 @@ Model { Position [240, 334, 270, 366] ZOrder 111 Floating off - Location [10, 76, 1926, 1039] + Location [1, 49, 1921, 1039] Open off NumInputPorts "1" List { @@ -8120,8 +8203,8 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } - YMin "-8.5404" - YMax "73.19137" + YMin "-0.035" + YMax "0.03" SaveName "ScopeData3" DataFormat "StructureWithTime" LimitDataPoints off @@ -8131,10 +8214,10 @@ Model { Name "Scope6" SID "825" Ports [1] - Position [550, 484, 580, 516] + Position [650, 484, 680, 516] ZOrder 117 Floating off - Location [1, 76, 1921, 1039] + Location [10, 76, 1926, 1039] Open off NumInputPorts "1" List { @@ -8165,7 +8248,7 @@ Model { Position [365, 484, 395, 516] ZOrder 118 Floating off - Location [1, 76, 1921, 1039] + Location [10, 76, 1926, 1039] Open off NumInputPorts "1" List { @@ -8196,15 +8279,26 @@ Model { Position [245, 484, 275, 516] ZOrder 119 Floating off - Location [1, 76, 1921, 1039] - Open off + Location [1, 49, 1921, 1039] + Open on NumInputPorts "1" List { ListType AxesTitles axes1 "%<SignalLabel>" } - YMin "-36.42496" - YMax "11.06872" + List { + ListType ScopeGraphics + FigureColor "[0.5 0.5 0.5]" + AxesColor "[0 0 0]" + AxesTickColor "[1 1 1]" + LineColors "[1 1 0;1 0 1;0 1 1;1 0 0;0 1 0;0 0 1]" + LineStyles "-|-|-|-|-|-" + LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" + MarkerStyles "none|none|none|none|none|none" + } + TimeRange "20" + YMin "1.135" + YMax "1.154" SaveName "ScopeData3" DataFormat "StructureWithTime" LimitDataPoints off @@ -8242,7 +8336,7 @@ Model { Name "Sum2" SID "600" Ports [2, 1] - Position [490, 245, 510, 265] + Position [590, 245, 610, 265] ZOrder 42 ShowName off IconShape "round" @@ -8270,7 +8364,7 @@ Model { Name "Sum4" SID "603" Ports [2, 1] - Position [490, 400, 510, 420] + Position [590, 400, 610, 420] ZOrder 44 ShowName off IconShape "round" @@ -8339,7 +8433,7 @@ Model { BlockType Outport Name "height_controlled" SID "606" - Position [655, 128, 685, 142] + Position [925, 128, 955, 142] ZOrder -2 IconDisplay "Port number" } @@ -8347,7 +8441,7 @@ Model { BlockType Outport Name "y_controlled" SID "636" - Position [655, 248, 685, 262] + Position [925, 248, 955, 262] ZOrder 74 Port "2" IconDisplay "Port number" @@ -8356,7 +8450,7 @@ Model { BlockType Outport Name "x_controlled" SID "637" - Position [655, 403, 685, 417] + Position [925, 403, 955, 417] ZOrder 75 Port "3" IconDisplay "Port number" @@ -8365,7 +8459,7 @@ Model { BlockType Outport Name "yaw_controlled" SID "638" - Position [655, 553, 685, 567] + Position [925, 553, 955, 567] ZOrder 76 Port "4" IconDisplay "Port number" @@ -8374,7 +8468,7 @@ Model { ZOrder 283 SrcBlock "Sum" SrcPort 1 - DstBlock "PID Controller2" + DstBlock "Saturation3" DstPort 1 } Line { @@ -8556,13 +8650,6 @@ Model { DstBlock "Sum8" DstPort 1 } - Line { - ZOrder 436 - SrcBlock "Sum1" - SrcPort 1 - DstBlock "PID Controller8" - DstPort 1 - } Line { ZOrder 434 SrcBlock "Sum2" @@ -8606,75 +8693,131 @@ Model { DstPort 1 } Line { - ZOrder 413 - SrcBlock "PID Controller10" + ZOrder 456 + SrcBlock "PID Controller1" SrcPort 1 - DstBlock "Sum" + DstBlock "Gain3" DstPort 1 } Line { - ZOrder 449 - SrcBlock "PID Controller8" + ZOrder 459 + SrcBlock "Sum3" SrcPort 1 - DstBlock "Sum2" + DstBlock "Saturation2" DstPort 1 } Line { - ZOrder 450 - SrcBlock "PID Controller6" + ZOrder 462 + SrcBlock "PID Controller4" SrcPort 1 - DstBlock "Sum1" + DstBlock "Sum3" DstPort 1 } Line { - ZOrder 456 - SrcBlock "PID Controller1" + ZOrder 464 + SrcBlock "PID Controller9" SrcPort 1 - DstBlock "x_controlled" + DstBlock "Gain2" DstPort 1 } Line { - ZOrder 458 - SrcBlock "PID Controller3" + ZOrder 473 + SrcBlock "PID Controller11" SrcPort 1 - DstBlock "Sum4" + DstBlock "Gain1" DstPort 1 } Line { - ZOrder 459 - SrcBlock "Sum3" + ZOrder 478 + SrcBlock "PID Controller2" + SrcPort 1 + DstBlock "Gain4" + DstPort 1 + } + Line { + ZOrder 482 + SrcBlock "Sum1" + SrcPort 1 + DstBlock "Saturation1" + DstPort 1 + } + Line { + ZOrder 486 + SrcBlock "Saturation2" SrcPort 1 DstBlock "PID Controller3" DstPort 1 } Line { - ZOrder 462 - SrcBlock "PID Controller4" + ZOrder 488 + SrcBlock "Gain1" SrcPort 1 - DstBlock "Sum3" + DstBlock "height_controlled" DstPort 1 } Line { - ZOrder 464 - SrcBlock "PID Controller9" + ZOrder 489 + SrcBlock "Gain2" SrcPort 1 DstBlock "y_controlled" DstPort 1 } Line { - ZOrder 473 - SrcBlock "PID Controller11" + ZOrder 490 + SrcBlock "Gain3" SrcPort 1 - DstBlock "height_controlled" + DstBlock "x_controlled" DstPort 1 } Line { - ZOrder 478 - SrcBlock "PID Controller2" + ZOrder 491 + SrcBlock "Gain4" SrcPort 1 DstBlock "yaw_controlled" DstPort 1 } + Line { + ZOrder 492 + SrcBlock "PID Controller3" + SrcPort 1 + DstBlock "Sum4" + DstPort 1 + } + Line { + ZOrder 493 + SrcBlock "Saturation3" + SrcPort 1 + DstBlock "PID Controller2" + DstPort 1 + } + Line { + ZOrder 495 + SrcBlock "PID Controller8" + SrcPort 1 + DstBlock "Sum2" + DstPort 1 + } + Line { + ZOrder 496 + SrcBlock "Saturation1" + SrcPort 1 + DstBlock "PID Controller8" + DstPort 1 + } + Line { + ZOrder 497 + SrcBlock "PID Controller6" + SrcPort 1 + DstBlock "Sum1" + DstPort 1 + } + Line { + ZOrder 498 + SrcBlock "PID Controller10" + SrcPort 1 + DstBlock "Sum" + DstPort 1 + } } } Block { @@ -9274,13 +9417,6 @@ Model { DstBlock " Sensors " DstPort 1 } - Line { - ZOrder 190 - SrcBlock "Actuation" - SrcPort 2 - DstBlock " Sensors " - DstPort 2 - } Line { ZOrder 191 SrcBlock "Actuation" @@ -9326,10 +9462,17 @@ Model { DstPort 3 } Line { - ZOrder 197 + ZOrder 190 + SrcBlock "Actuation" + SrcPort 2 + DstBlock " Sensors " + DstPort 2 + } + Line { + ZOrder 200 SrcBlock " Sensors " SrcPort 1 - Points [23, 0; 0, 370; -940, 0; 0, -320] + Points [2, 0; 0, 212; -903, 0; 0, -162] DstBlock "Control System" DstPort 2 } @@ -9774,10 +9917,7 @@ Stateflow { firstTransition 33 firstJunction 32 viewObj 25 - visible 1 machine 1 - subviewS { - } ssIdHighWaterMark 18 decomposition CLUSTER_CHART type EML_CHART @@ -11118,9 +11258,9 @@ Stateflow { ")\n\n% LOOP_TIME = 5*10^-3;\n% \n% prev_phi = prev_euler_angles_IMU(1);\n% prev_theta = prev_euler_angles_IMU(2)" ";\n% \n% phi_dot_gyro = euler_angles_gyro(1);\n% theta_dot_gyro = euler_angles_gyro(2);\n\n% phi = 0.98 * ( prev" "_phi + phi_dot_gyro * LOOP_TIME ) + 0.02 * accel_roll;\n% theta = 0.98 * ( prev_theta + theta_dot_gyro * LOOP_TI" - "ME) + 0.02 * accel_pitch;\nk_gyro = 1; \nk_accel = 1-k_gyro; \n\nphi = k_gyro * ( euler_angles_gyro(1) ) + k_acc" - "el * accel_roll;\ntheta = k_gyro * ( euler_angles_gyro(2) ) + k_accel * accel_pitch;\n\neuler_angles_IMU = [phi;" - " theta];\n" + "ME) + 0.02 * accel_pitch;\nk_gyro = 0.98; \nk_accel = 1-k_gyro; \n\nphi = k_gyro * ( euler_angles_gyro(1) ) + k_" + "accel * accel_roll;\ntheta = k_gyro * ( euler_angles_gyro(2) ) + k_accel * accel_pitch;\n\neuler_angles_IMU = [p" + "hi; theta];\n" editorLayout "100 M4x1[10 5 700 500]" } } @@ -11772,10 +11912,7 @@ Stateflow { firstTransition 133 firstJunction 132 viewObj 126 - visible 1 machine 1 - subviewS { - } ssIdHighWaterMark 10 decomposition CLUSTER_CHART type EML_CHART -- GitLab