From d5d5c6aafd6aebd1897b918d8e7de1b50408ec7f Mon Sep 17 00:00:00 2001 From: Andy Snawerdt <Andy Snawerdt> Date: Sat, 3 Dec 2016 21:54:31 -0600 Subject: [PATCH] Working complimentary filter implemented --- controls/model/Quadcopter_Model_R2015_A.mdl | 8605 +++++++++++++++++++ controls/model/Quadcopter_Model_R2016_A.slx | Bin 35115 -> 38169 bytes controls/model/Quadcopter_Model_R2016_B.slx | Bin 36885 -> 39937 bytes 3 files changed, 8605 insertions(+) create mode 100644 controls/model/Quadcopter_Model_R2015_A.mdl diff --git a/controls/model/Quadcopter_Model_R2015_A.mdl b/controls/model/Quadcopter_Model_R2015_A.mdl new file mode 100644 index 000000000..21c689f9c --- /dev/null +++ b/controls/model/Quadcopter_Model_R2015_A.mdl @@ -0,0 +1,8605 @@ +Model { + Name "Quadcopter_Model_R2015_A" + Version 8.5 + SavedCharacterEncoding "windows-1252" + GraphicalInterface { + NumRootInports 0 + NumRootOutports 0 + ParameterArgumentNames "" + ComputedModelVersion "1.288" + NumModelReferences 0 + NumTestPointedSignals 0 + } + ScopeRefreshTime 0.035000 + OverrideScopeRefreshTime on + DisableAllScopes off + DataTypeOverride "UseLocalSettings" + DataTypeOverrideAppliesTo "AllNumericTypes" + MinMaxOverflowLogging "UseLocalSettings" + MinMaxOverflowArchiveMode "Overwrite" + FPTRunName "Run 1" + MaxMDLFileLineLength 120 + Object { + $PropName "BdWindowsInfo" + $ObjectID 1 + $ClassName "Simulink.BDWindowsInfo" + Object { + $PropName "WindowsInfo" + $ObjectID 2 + $ClassName "Simulink.WindowInfo" + IsActive [1] + Location [-8.0, -8.0, 1936.0, 1056.0] + Object { + $PropName "ModelBrowserInfo" + $ObjectID 3 + $ClassName "Simulink.ModelBrowserInfo" + Visible [0] + DockPosition "Left" + Width [50] + Height [50] + Filter [9] + } + Object { + $PropName "ExplorerBarInfo" + $ObjectID 4 + $ClassName "Simulink.ExplorerBarInfo" + Visible [1] + } + Object { + $PropName "EditorsInfo" + $ObjectID 5 + $ClassName "Simulink.EditorInfo" + IsActive [1] + ViewObjType "SimulinkTopLevel" + LoadSaveID "0" + Extents [1755.0, 876.0] + ZoomFactor [1.25] + Offset [537.09047619047556, 303.24285714285782] + } + } + } + Created "Mon Oct 17 15:29:19 2016" + Creator "Andy" + UpdateHistory "UpdateHistoryNever" + ModifiedByFormat "%<Auto>" + LastModifiedBy "Andy" + ModifiedDateFormat "%<Auto>" + LastModifiedDate "Sat Dec 03 21:49:47 2016" + RTWModifiedTimeStamp 402702587 + ModelVersionFormat "1.%<AutoIncrement:288>" + ConfigurationManager "none" + SampleTimeColors off + SampleTimeAnnotations off + LibraryLinkDisplay "disabled" + WideLines off + ShowLineDimensions off + ShowPortDataTypes off + ShowDesignRanges off + ShowLoopsOnError on + IgnoreBidirectionalLines off + ShowStorageClass off + ShowTestPointIcons on + ShowSignalResolutionIcons on + ShowViewerIcons on + SortedOrder off + ExecutionContextIcon off + ShowLinearizationAnnotations on + ShowMarkup on + BlockNameDataTip off + BlockParametersDataTip off + BlockDescriptionStringDataTip off + ToolBar on + StatusBar on + BrowserShowLibraryLinks off + BrowserLookUnderMasks off + SimulationMode "normal" + PauseTimes "5" + NumberOfSteps 1 + SnapshotBufferSize 10 + SnapshotInterval 10 + NumberOfLastSnapshots 0 + LinearizationMsg "none" + Profile off + ParamWorkspaceSource "MATLABWorkspace" + AccelSystemTargetFile "accel.tlc" + AccelTemplateMakefile "accel_default_tmf" + AccelMakeCommand "make_rtw" + TryForcingSFcnDF off + Object { + $PropName "DataLoggingOverride" + $ObjectID 7 + $ClassName "Simulink.SimulationData.ModelLoggingInfo" + model_ "Quadcopter_Model_R2015_A" + overrideMode_ [0.0] + Array { + Type "Cell" + Dimension 1 + Cell "Quadcopter_Model_R2015_A" + PropName "logAsSpecifiedByModels_" + } + Array { + Type "Cell" + Dimension 1 + Cell [] + PropName "logAsSpecifiedByModelsSSIDs_" + } + } + Object { + $PropName "InstrumentedSignals" + $ObjectID 8 + $ClassName "Simulink.HMI.InstrumentedSignals" + Persistence [] + } + RecordCoverage off + CovPath "/" + CovSaveName "covdata" + CovMetricSettings "dwe" + CovNameIncrementing off + CovHtmlReporting off + CovForceBlockReductionOff on + CovEnableCumulative on + covSaveCumulativeToWorkspaceVar off + CovSaveSingleToWorkspaceVar off + CovCumulativeVarName "covCumulativeData" + CovCumulativeReport off + CovReportOnPause on + CovModelRefEnable "Off" + CovExternalEMLEnable on + CovSFcnEnable on + CovBoundaryAbsTol 0.000010 + CovBoundaryRelTol 0.010000 + CovUseTimeInterval off + CovStartTime 0 + CovStopTime 0 + ExtModeBatchMode off + ExtModeEnableFloating on + ExtModeTrigType "manual" + ExtModeTrigMode "normal" + ExtModeTrigPort "1" + ExtModeTrigElement "any" + ExtModeTrigDuration 1000 + ExtModeTrigDurationFloating "auto" + ExtModeTrigHoldOff 0 + ExtModeTrigDelay 0 + ExtModeTrigDirection "rising" + ExtModeTrigLevel 0 + ExtModeArchiveMode "off" + ExtModeAutoIncOneShot off + ExtModeIncDirWhenArm off + ExtModeAddSuffixToVar off + ExtModeWriteAllDataToWs off + ExtModeArmWhenConnect on + ExtModeSkipDownloadWhenConnect off + ExtModeLogAll on + ExtModeAutoUpdateStatusClock on + ShowModelReferenceBlockVersion off + ShowModelReferenceBlockIO off + Array { + Type "Handle" + Dimension 1 + Simulink.ConfigSet { + $ObjectID 9 + Version "1.15.0" + Array { + Type "Handle" + Dimension 8 + Simulink.SolverCC { + $ObjectID 10 + Version "1.15.0" + StartTime "0.0" + StopTime "20" + AbsTol "auto" + FixedStep "auto" + InitialStep "auto" + MaxNumMinSteps "-1" + MaxOrder 5 + ZcThreshold "auto" + ConsecutiveZCsStepRelTol "10*128*eps" + MaxConsecutiveZCs "1000" + ExtrapolationOrder 4 + NumberNewtonIterations 1 + MaxStep "auto" + MinStep "auto" + MaxConsecutiveMinStep "1" + RelTol "1e-3" + SolverMode "SingleTasking" + EnableConcurrentExecution off + ConcurrentTasks off + Solver ode45 + SolverName ode45 + SolverJacobianMethodControl "auto" + ShapePreserveControl "DisableAll" + ZeroCrossControl "UseLocalSettings" + ZeroCrossAlgorithm "Nonadaptive" + AlgebraicLoopSolver "TrustRegion" + SolverResetMethod "Fast" + PositivePriorityOrder off + AutoInsertRateTranBlk off + SampleTimeConstraint "Unconstrained" + InsertRTBMode "Whenever possible" + } + Simulink.DataIOCC { + $ObjectID 11 + Version "1.15.0" + Decimation "1" + ExternalInput "[t, u]" + FinalStateName "xFinal" + InitialState "xInitial" + LimitDataPoints off + MaxDataPoints "1000" + LoadExternalInput off + LoadInitialState off + SaveFinalState off + SaveCompleteFinalSimState off + SaveFormat "Dataset" + SignalLoggingSaveFormat "Dataset" + SaveOutput on + SaveState off + SignalLogging on + DSMLogging on + InspectSignalLogs off + VisualizeSimOutput on + SaveTime on + ReturnWorkspaceOutputs off + StateSaveName "xout" + TimeSaveName "tout" + OutputSaveName "yout" + SignalLoggingName "logsout" + DSMLoggingName "dsmout" + OutputOption "RefineOutputTimes" + OutputTimes "[]" + ReturnWorkspaceOutputsName "out" + Refine "1" + } + Simulink.OptimizationCC { + $ObjectID 12 + Version "1.15.0" + Array { + Type "Cell" + Dimension 8 + Cell "BooleansAsBitfields" + Cell "PassReuseOutputArgsAs" + Cell "PassReuseOutputArgsThreshold" + Cell "ZeroExternalMemoryAtStartup" + Cell "ZeroInternalMemoryAtStartup" + Cell "OptimizeModelRefInitCode" + Cell "NoFixptDivByZeroProtection" + Cell "UseSpecifiedMinMax" + PropName "DisabledProps" + } + BlockReduction on + BooleanDataType on + ConditionallyExecuteInputs on + InlineParams off + UseDivisionForNetSlopeComputation "off" + UseFloatMulNetSlope off + DefaultUnderspecifiedDataType "double" + UseSpecifiedMinMax off + InlineInvariantSignals off + OptimizeBlockIOStorage on + BufferReuse on + EnhancedBackFolding off + CachingGlobalReferences off + GlobalBufferReuse on + StrengthReduction off + ExpressionFolding on + BooleansAsBitfields off + BitfieldContainerType "uint_T" + EnableMemcpy on + MemcpyThreshold 64 + PassReuseOutputArgsAs "Structure reference" + PassReuseOutputArgsThreshold 12 + ExpressionDepthLimit 128 + LocalBlockOutputs on + RollThreshold 5 + StateBitsets off + DataBitsets off + ActiveStateOutputEnumStorageType "Native Integer" + ZeroExternalMemoryAtStartup on + ZeroInternalMemoryAtStartup on + InitFltsAndDblsToZero off + NoFixptDivByZeroProtection off + EfficientFloat2IntCast off + EfficientMapNaN2IntZero on + OptimizeModelRefInitCode off + LifeSpan "inf" + MaxStackSize "Inherit from target" + BufferReusableBoundary on + SimCompilerOptimization "off" + AccelVerboseBuild off + } + Simulink.DebuggingCC { + $ObjectID 13 + Version "1.15.0" + RTPrefix "error" + ConsistencyChecking "none" + ArrayBoundsChecking "none" + SignalInfNanChecking "none" + SignalRangeChecking "none" + ReadBeforeWriteMsg "UseLocalSettings" + WriteAfterWriteMsg "UseLocalSettings" + WriteAfterReadMsg "UseLocalSettings" + AlgebraicLoopMsg "warning" + ArtificialAlgebraicLoopMsg "warning" + SaveWithDisabledLinksMsg "warning" + SaveWithParameterizedLinksMsg "warning" + CheckSSInitialOutputMsg on + UnderspecifiedInitializationDetection "Simplified" + MergeDetectMultiDrivingBlocksExec "error" + CheckExecutionContextPreStartOutputMsg off + CheckExecutionContextRuntimeOutputMsg off + SignalResolutionControl "UseLocalSettings" + BlockPriorityViolationMsg "warning" + MinStepSizeMsg "warning" + TimeAdjustmentMsg "none" + MaxConsecutiveZCsMsg "error" + MaskedZcDiagnostic "warning" + IgnoredZcDiagnostic "warning" + SolverPrmCheckMsg "none" + InheritedTsInSrcMsg "warning" + MultiTaskDSMMsg "error" + MultiTaskCondExecSysMsg "error" + MultiTaskRateTransMsg "error" + SingleTaskRateTransMsg "none" + TasksWithSamePriorityMsg "warning" + SigSpecEnsureSampleTimeMsg "warning" + CheckMatrixSingularityMsg "none" + IntegerOverflowMsg "warning" + Int32ToFloatConvMsg "warning" + ParameterDowncastMsg "error" + ParameterOverflowMsg "error" + ParameterUnderflowMsg "none" + ParameterPrecisionLossMsg "warning" + ParameterTunabilityLossMsg "warning" + FixptConstUnderflowMsg "none" + FixptConstOverflowMsg "none" + FixptConstPrecisionLossMsg "none" + UnderSpecifiedDataTypeMsg "none" + UnnecessaryDatatypeConvMsg "none" + VectorMatrixConversionMsg "none" + InvalidFcnCallConnMsg "error" + FcnCallInpInsideContextMsg "EnableAllAsError" + SignalLabelMismatchMsg "none" + UnconnectedInputMsg "warning" + UnconnectedOutputMsg "warning" + UnconnectedLineMsg "warning" + SFcnCompatibilityMsg "none" + FrameProcessingCompatibilityMsg "error" + UniqueDataStoreMsg "none" + BusObjectLabelMismatch "warning" + RootOutportRequireBusObject "warning" + AssertControl "UseLocalSettings" + ModelReferenceIOMsg "none" + ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" + ModelReferenceVersionMismatchMessage "none" + ModelReferenceIOMismatchMessage "none" + UnknownTsInhSupMsg "warning" + ModelReferenceDataLoggingMessage "warning" + ModelReferenceSymbolNameMessage "warning" + ModelReferenceExtraNoncontSigs "error" + StateNameClashWarn "none" + SimStateInterfaceChecksumMismatchMsg "warning" + SimStateOlderReleaseMsg "error" + InitInArrayFormatMsg "warning" + StrictBusMsg "ErrorLevel1" + BusNameAdapt "WarnAndRepair" + NonBusSignalsTreatedAsBus "none" + BlockIODiagnostic "none" + SFUnusedDataAndEventsDiag "warning" + SFUnexpectedBacktrackingDiag "error" + SFInvalidInputDataAccessInChartInitDiag "warning" + SFNoUnconditionalDefaultTransitionDiag "error" + SFTransitionOutsideNaturalParentDiag "warning" + SFUnconditionalTransitionShadowingDiag "warning" + SFUndirectedBroadcastEventsDiag "warning" + SFTransitionActionBeforeConditionDiag "warning" + SFOutputUsedAsStateInMooreChartDiag "error" + IntegerSaturationMsg "warning" + } + Simulink.HardwareCC { + $ObjectID 14 + Version "1.15.0" + ProdBitPerChar 8 + ProdBitPerShort 16 + ProdBitPerInt 32 + ProdBitPerLong 32 + ProdBitPerLongLong 64 + ProdBitPerFloat 32 + ProdBitPerDouble 64 + ProdBitPerPointer 64 + ProdLargestAtomicInteger "Char" + ProdLargestAtomicFloat "Float" + ProdIntDivRoundTo "Zero" + ProdEndianess "LittleEndian" + ProdWordSize 32 + ProdShiftRightIntArith on + ProdLongLongMode off + ProdHWDeviceType "Specified" + TargetBitPerChar 8 + TargetBitPerShort 16 + TargetBitPerInt 32 + TargetBitPerLong 32 + TargetBitPerLongLong 64 + TargetBitPerFloat 32 + TargetBitPerDouble 64 + TargetBitPerPointer 32 + TargetLargestAtomicInteger "Char" + TargetLargestAtomicFloat "None" + TargetShiftRightIntArith on + TargetLongLongMode off + TargetIntDivRoundTo "Undefined" + TargetEndianess "Unspecified" + TargetWordSize 32 + TargetPreprocMaxBitsSint 32 + TargetPreprocMaxBitsUint 32 + TargetHWDeviceType "Specified" + TargetUnknown off + ProdEqTarget on + } + Simulink.ModelReferenceCC { + $ObjectID 15 + Version "1.15.0" + UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" + CheckModelReferenceTargetMessage "error" + EnableParallelModelReferenceBuilds off + ParallelModelReferenceErrorOnInvalidPool on + ParallelModelReferenceMATLABWorkerInit "None" + ModelReferenceNumInstancesAllowed "Multi" + PropagateVarSize "Infer from blocks in model" + ModelReferencePassRootInputsByReference on + ModelReferenceMinAlgLoopOccurrences off + PropagateSignalLabelsOutOfModel on + SupportModelReferenceSimTargetCustomCode off + } + Simulink.SFSimCC { + $ObjectID 16 + Version "1.15.0" + SFSimEcho on + SimCtrlC on + SimIntegrity on + SimUseLocalCustomCode off + SimParseCustomCode on + SimBuildMode "sf_incremental_build" + SimGenImportedTypeDefs off + } + Simulink.RTWCC { + $BackupClass "Simulink.RTWCC" + $ObjectID 17 + Version "1.15.0" + Array { + Type "Cell" + Dimension 13 + Cell "IncludeHyperlinkInReport" + Cell "GenerateTraceInfo" + Cell "GenerateTraceReport" + Cell "GenerateTraceReportSl" + Cell "GenerateTraceReportSf" + Cell "GenerateTraceReportEml" + Cell "PortableWordSizes" + Cell "GenerateWebview" + Cell "GenerateCodeMetricsReport" + Cell "GenerateCodeReplacementReport" + Cell "GenerateMissedCodeReplacementReport" + Cell "GenerateErtSFunction" + Cell "CreateSILPILBlock" + PropName "DisabledProps" + } + SystemTargetFile "grt.tlc" + TLCOptions "" + GenCodeOnly off + MakeCommand "make_rtw" + GenerateMakefile on + PackageGeneratedCodeAndArtifacts off + TemplateMakefile "grt_default_tmf" + PostCodeGenCommand "" + GenerateReport off + SaveLog off + RTWVerbose on + RetainRTWFile off + ProfileTLC off + TLCDebug off + TLCCoverage off + TLCAssert off + RTWUseLocalCustomCode off + RTWUseSimCustomCode off + Toolchain "Automatically locate an installed toolchain" + BuildConfiguration "Faster Builds" + IncludeHyperlinkInReport off + LaunchReport off + PortableWordSizes off + CreateSILPILBlock "None" + CodeExecutionProfiling off + CodeExecutionProfileVariable "executionProfile" + CodeProfilingSaveOptions "SummaryOnly" + CodeProfilingInstrumentation off + SILDebugging off + TargetLang "C" + IncludeBusHierarchyInRTWFileBlockHierarchyMap off + GenerateTraceInfo off + GenerateTraceReport off + GenerateTraceReportSl off + GenerateTraceReportSf off + GenerateTraceReportEml off + GenerateWebview off + GenerateCodeMetricsReport off + GenerateCodeReplacementReport off + GenerateMissedCodeReplacementReport off + RTWCompilerOptimization "off" + RTWCustomCompilerOptimizations "" + CheckMdlBeforeBuild "Off" + SharedConstantsCachingThreshold 1024 + Array { + Type "Handle" + Dimension 2 + Simulink.CodeAppCC { + $ObjectID 18 + Version "1.15.0" + Array { + Type "Cell" + Dimension 25 + Cell "IgnoreCustomStorageClasses" + Cell "IgnoreTestpoints" + Cell "InsertBlockDesc" + Cell "InsertPolySpaceComments" + Cell "SFDataObjDesc" + Cell "MATLABFcnDesc" + Cell "SimulinkDataObjDesc" + Cell "DefineNamingRule" + Cell "SignalNamingRule" + Cell "ParamNamingRule" + Cell "InternalIdentifier" + Cell "InlinedPrmAccess" + Cell "CustomSymbolStr" + Cell "CustomSymbolStrGlobalVar" + Cell "CustomSymbolStrType" + Cell "CustomSymbolStrField" + Cell "CustomSymbolStrFcn" + Cell "CustomSymbolStrModelFcn" + Cell "CustomSymbolStrFcnArg" + Cell "CustomSymbolStrBlkIO" + Cell "CustomSymbolStrTmpVar" + Cell "CustomSymbolStrMacro" + Cell "CustomSymbolStrUtil" + Cell "CustomUserTokenString" + Cell "ReqsInCode" + PropName "DisabledProps" + } + ForceParamTrailComments off + GenerateComments on + CommentStyle "Auto" + IgnoreCustomStorageClasses on + IgnoreTestpoints off + IncHierarchyInIds off + MaxIdLength 31 + PreserveName off + PreserveNameWithParent off + ShowEliminatedStatement off + OperatorAnnotations off + IncAutoGenComments off + SimulinkDataObjDesc off + SFDataObjDesc off + MATLABFcnDesc off + IncDataTypeInIds off + MangleLength 1 + CustomSymbolStrGlobalVar "$R$N$M" + CustomSymbolStrType "$N$R$M_T" + CustomSymbolStrField "$N$M" + CustomSymbolStrFcn "$R$N$M$F" + CustomSymbolStrFcnArg "rt$I$N$M" + CustomSymbolStrBlkIO "rtb_$N$M" + CustomSymbolStrTmpVar "$N$M" + CustomSymbolStrMacro "$R$N$M" + CustomSymbolStrUtil "$N$C" + DefineNamingRule "None" + ParamNamingRule "None" + SignalNamingRule "None" + InsertBlockDesc off + InsertPolySpaceComments off + SimulinkBlockComments on + MATLABSourceComments off + EnableCustomComments off + InternalIdentifier "Shortened" + InlinedPrmAccess "Literals" + ReqsInCode off + UseSimReservedNames off + } + Simulink.GRTTargetCC { + $BackupClass "Simulink.TargetCC" + $ObjectID 19 + Version "1.15.0" + Array { + Type "Cell" + Dimension 15 + Cell "IncludeMdlTerminateFcn" + Cell "SuppressErrorStatus" + Cell "ERTCustomFileBanners" + Cell "GenerateSampleERTMain" + Cell "ExistingSharedCode" + Cell "GenerateTestInterfaces" + Cell "ModelStepFunctionPrototypeControlCompliant" + Cell "GenerateAllocFcn" + Cell "PurelyIntegerCode" + Cell "SupportComplex" + Cell "SupportAbsoluteTime" + Cell "SupportContinuousTime" + Cell "SupportNonInlinedSFcns" + Cell "RemoveDisableFunc" + Cell "RemoveResetFunc" + PropName "DisabledProps" + } + TargetFcnLib "ansi_tfl_table_tmw.mat" + TargetLibSuffix "" + TargetPreCompLibLocation "" + GenFloatMathFcnCalls "NOT IN USE" + TargetLangStandard "C99 (ISO)" + CodeReplacementLibrary "None" + UtilityFuncGeneration "Auto" + ERTMultiwordTypeDef "System defined" + ERTMultiwordLength 256 + MultiwordLength 2048 + GenerateFullHeader on + InferredTypesCompatibility off + GenerateSampleERTMain off + GenerateTestInterfaces off + ModelReferenceCompliant on + ParMdlRefBuildCompliant on + CompOptLevelCompliant on + ConcurrentExecutionCompliant on + IncludeMdlTerminateFcn on + GeneratePreprocessorConditionals "Use local settings" + CombineOutputUpdateFcns on + CombineSignalStateStructs off + SuppressErrorStatus off + ERTFirstTimeCompliant off + IncludeFileDelimiter "Auto" + ERTCustomFileBanners off + SupportAbsoluteTime on + LogVarNameModifier "rt_" + MatFileLogging on + MultiInstanceERTCode off + CodeInterfacePackaging "Nonreusable function" + SupportNonFinite on + SupportComplex on + PurelyIntegerCode off + SupportContinuousTime on + SupportNonInlinedSFcns on + SupportVariableSizeSignals off + ParenthesesLevel "Nominal" + CastingMode "Nominal" + MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" + ModelStepFunctionPrototypeControlCompliant off + CPPClassGenCompliant on + AutosarCompliant off + GRTInterface off + GenerateAllocFcn off + GenerateSharedConstants on + UseMalloc off + ExtMode off + ExtModeStaticAlloc off + ExtModeTesting off + ExtModeStaticAllocSize 1000000 + ExtModeTransport 0 + ExtModeMexFile "ext_comm" + ExtModeIntrfLevel "Level1" + RTWCAPISignals off + RTWCAPIParams off + RTWCAPIStates off + RTWCAPIRootIO off + GenerateASAP2 off + MultiInstanceErrorCode "Error" + } + PropName "Components" + } + } + PropName "Components" + } + Name "Configuration" + CurrentDlgPage "Solver" + ConfigPrmDlgPosition [ 195, 142, 1085, 882 ] + } + PropName "ConfigurationSets" + } + Simulink.ConfigSet { + $PropName "ActiveConfigurationSet" + $ObjectID 9 + } + Object { + $PropName "DataTransfer" + $ObjectID 21 + $ClassName "Simulink.GlobalDataTransfer" + DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" + DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" + DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" + DefaultExtrapolationMethodBetweenContTasks "None" + AutoInsertRateTranBlk [0] + } + ExplicitPartitioning off + BlockDefaults { + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + NamePlacement "normal" + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + ShowName on + BlockRotation 0 + BlockMirror off + } + AnnotationDefaults { + HorizontalAlignment "center" + VerticalAlignment "middle" + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + UseDisplayTextAsClickCallback off + } + LineDefaults { + FontName "Helvetica" + FontSize 9 + FontWeight "normal" + FontAngle "normal" + } + MaskDefaults { + SelfModifiable "off" + IconFrame "on" + IconOpaque "on" + RunInitForIconRedraw "off" + IconRotate "none" + PortRotate "default" + IconUnits "autoscale" + } + MaskParameterDefaults { + Evaluate "on" + Tunable "on" + NeverSave "off" + Internal "off" + ReadOnly "off" + Enabled "on" + Visible "on" + ToolTip "on" + } + BlockParameterDefaults { + Block { + BlockType BusCreator + DisplayOption "none" + OutDataTypeStr "Inherit: auto" + NonVirtualBus off + } + Block { + BlockType BusSelector + OutputSignals "signal1,signal2,signal3" + OutputAsBus off + } + Block { + BlockType Constant + Value "1" + VectorParams1D on + SamplingMode "Sample based" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Inherit from 'Constant value'" + LockScale off + SampleTime "inf" + FramePeriod "inf" + PreserveConstantTs off + } + Block { + BlockType Delay + DelayLengthSource "Dialog" + DelayLength "2" + DelayLengthUpperLimit "100" + InitialConditionSource "Dialog" + InitialCondition "0.0" + ExternalReset "None" + ShowEnablePort off + PreventDirectFeedthrough off + DiagnosticForOutOfRangeDelayLength "None" + RemoveProtectionDelayLength off + InputProcessing "Elements as channels (sample based)" + UseCircularBuffer off + SampleTime "-1" + StateMustResolveToSignalObject off + CodeGenStateStorageClass "Auto" + } + Block { + BlockType Demux + Outputs "4" + DisplayOption "none" + BusSelectionMode off + } + Block { + BlockType Gain + Gain "1" + Multiplication "Element-wise(K.*u)" + ParamMin "[]" + ParamMax "[]" + ParamDataTypeStr "Inherit: Same as input" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Same as input" + LockScale off + RndMeth "Floor" + SaturateOnIntegerOverflow on + SampleTime "-1" + } + Block { + BlockType Ground + } + Block { + BlockType Inport + Port "1" + OutputFunctionCall off + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + SignalType "auto" + SamplingMode "auto" + LatchByDelayingOutsideSignal off + LatchInputForFeedbackSignals off + Interpolate on + } + Block { + BlockType Integrator + ExternalReset "none" + InitialConditionSource "internal" + InitialCondition "0" + LimitOutput off + UpperSaturationLimit "inf" + LowerSaturationLimit "-inf" + WrapState off + WrappedStateUpperValue "pi" + WrappedStateLowerValue "-pi" + ShowSaturationPort off + ShowStatePort off + AbsoluteTolerance "auto" + IgnoreLimit off + ZeroCross on + ContinuousStateAttributes "''" + } + Block { + BlockType Outport + Port "1" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + SignalType "auto" + SamplingMode "auto" + SourceOfInitialOutputValue "Dialog" + OutputWhenDisabled "held" + InitialOutput "[]" + } + Block { + BlockType Quantizer + QuantizationInterval "0.5" + LinearizeAsGain on + SampleTime "-1" + } + Block { + BlockType RandomNumber + Mean "0" + Variance "1" + Seed "0" + SampleTime "-1" + VectorParams1D on + } + Block { + BlockType RateTransition + Integrity on + Deterministic on + X0 "0" + OutPortSampleTimeOpt "Specify" + OutPortSampleTimeMultiple "1" + OutPortSampleTime "-1" + } + Block { + BlockType S-Function + FunctionName "system" + SFunctionModules "''" + PortCounts "[]" + } + Block { + BlockType Scope + Floating off + } + Block { + BlockType Step + Time "1" + Before "0" + After "1" + SampleTime "-1" + VectorParams1D on + ZeroCross on + } + Block { + BlockType SubSystem + ShowPortLabels "FromPortIcon" + Permissions "ReadWrite" + PermitHierarchicalResolution "All" + TreatAsAtomicUnit off + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + SystemSampleTime "-1" + RTWSystemCode "Auto" + RTWFcnNameOpts "Auto" + RTWFileNameOpts "Auto" + FunctionInterfaceSpec "void_void" + FunctionWithSeparateData off + RTWMemSecFuncInitTerm "Inherit from model" + RTWMemSecFuncExecute "Inherit from model" + RTWMemSecDataConstants "Inherit from model" + RTWMemSecDataInternal "Inherit from model" + RTWMemSecDataParameters "Inherit from model" + SimViewingDevice off + DataTypeOverride "UseLocalSettings" + DataTypeOverrideAppliesTo "AllNumericTypes" + MinMaxOverflowLogging "UseLocalSettings" + Opaque off + MaskHideContents off + SFBlockType "NONE" + GeneratePreprocessorConditionals off + PropagateVariantConditions off + TreatAsGroupedWhenPropagatingVariantConditions on + ContentPreviewEnabled off + IsWebBlock off + } + Block { + BlockType Sum + IconShape "rectangular" + Inputs "++" + CollapseMode "All dimensions" + CollapseDim "1" + InputSameDT on + AccumDataTypeStr "Inherit: Inherit via internal rule" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Same as first input" + LockScale off + RndMeth "Floor" + SaturateOnIntegerOverflow on + SampleTime "-1" + } + Block { + BlockType Terminator + } + Block { + BlockType ZeroOrderHold + SampleTime "1" + } + } + System { + Name "Quadcopter_Model_R2015_A" + Location [-8, -8, 1928, 1048] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "125" + ReportName "simulink-default.rpt" + SIDHighWatermark "953" + Block { + BlockType SubSystem + Name "\n\n\n\n\n\n" + SID "541" + Ports [4, 6] + Position [1155, 479, 1350, 711] + ZOrder 67 + RequestExecContextInheritance off + Variant off + Object { + $PropName "MaskObject" + $ObjectID 22 + $ClassName "Simulink.Mask" + Display "port_label('input', 1, 'Rotor 1 Duty Cycle', 'texmode', 'on');\nport_label('input', 2, 'Rotor 2 Duty Cycle" + "', 'texmode', 'on');\nport_label('input', 3, 'Rotor 3 Duty Cycle', 'texmode', 'on');\nport_label('input', 4, 'Rotor 4" + " Duty Cycle', 'texmode', 'on');\nport_label('output', 1, '^{B}Omega', 'texmode', 'on');\nport_label('output', 2, '\\T" + "heta', 'texmode', 'on');\nport_label('output', 3, '^{B}v_o', 'texmode', 'on');\nport_label('output', 4, '^{E}r_o', 't" + "exmode', 'on');\nport_label('output', 5, '^{B}dv_o/dt', 'texmode', 'on');\nport_label('output', 6, '^{B}g', 'texmode'" + ", 'on');\ndisp('Actuation', 'texmode', 'on'); " + } + System { + Name "\n\n\n\n\n\n" + Location [-8, -8, 1928, 1048] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "60" + Block { + BlockType Inport + Name "Rotor 0 Duty Cycle" + SID "542" + Position [-225, 303, -195, 317] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "Rotor 1 Duty Cycle" + SID "543" + Position [-225, 363, -195, 377] + ZOrder 2 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "Rotor 2 Duty Cycle" + SID "544" + Position [-225, 423, -195, 437] + ZOrder 1 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "Rotor 3 Duty Cycle" + SID "545" + Position [-225, 483, -195, 497] + ZOrder 3 + Port "4" + IconDisplay "Port number" + } + Block { + BlockType SubSystem + Name "\n" + SID "546" + Ports [2, 1] + Position [420, 280, 640, 520] + ZOrder 48 + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ParametersOnly" + TreatAsAtomicUnit on + RequestExecContextInheritance off + SFBlockType "MATLAB Function" + Variant off + Object { + $PropName "MaskObject" + $ObjectID 23 + $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" + } + System { + Name "\n" + Location [223, 338, 826, 833] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "33" + Block { + BlockType Inport + Name "Vb_eff" + SID "546::1" + Position [20, 101, 40, 119] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "angular_velocity" + SID "546::24" + Position [20, 136, 40, 154] + ZOrder 15 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "546::32" + Ports [1, 1] + Position [270, 230, 320, 270] + ZOrder 17 + Outputs "1" + } + Block { + BlockType S-Function + Name " SFunction " + SID "546::31" + Tag "Stateflow S-Function Quadcopter_Model_R2015_A 5" + Ports [2, 2] + Position [180, 100, 230, 160] + ZOrder 16 + FunctionName "sf_sfun" + Parameters "If,Jreq,Kd,Kq,Kv,Rm" + PortCounts "[2 2]" + SFunctionDeploymentMode off + EnableBusSupport on + Port { + PortNumber 2 + Name "angular_acceleration" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "546::33" + Position [460, 241, 480, 259] + ZOrder 18 + } + Block { + BlockType Outport + Name "angular_acceleration" + SID "546::23" + Position [460, 101, 480, 119] + ZOrder 14 + IconDisplay "Port number" + } + Line { + ZOrder 1 + SrcBlock "Vb_eff" + SrcPort 1 + Points [120, 0] + DstBlock " SFunction " + DstPort 1 + } + Line { + ZOrder 2 + SrcBlock "angular_velocity" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + Name "angular_acceleration" + ZOrder 3 + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "angular_acceleration" + DstPort 1 + } + Line { + ZOrder 4 + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + ZOrder 5 + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "\n\n" + SID "547" + Ports [4, 1] + Position [55, 282, 290, 518] + ZOrder 36 + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ParametersOnly" + TreatAsAtomicUnit on + RequestExecContextInheritance off + SFBlockType "MATLAB Function" + Variant off + Object { + $PropName "MaskObject" + $ObjectID 24 + $ClassName "Simulink.Mask" + Display "port_label('input', 1, 'Rotor 0 Duty Cycle', 'texmode', 'on');\nport_label('input', 2, 'Rotor 1 Dut" + "y Cycle', 'texmode', 'on');\nport_label('input', 3, 'Rotor 2 Duty Cycle', 'texmode', 'on');\nport_label('input', " + "4, 'Rotor 3 Duty Cycle', 'texmode', 'on');\nport_label('output', 1, 'Vb_{eff}', 'texmode', 'on');\ndisp('ESC Syst" + "em');" + } + System { + Name "\n\n" + Location [223, 338, 826, 833] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "37" + Block { + BlockType Inport + Name "rotor_0_duty_cycle" + SID "547::1" + Position [20, 101, 40, 119] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "rotor_1_duty_cycle" + SID "547::22" + Position [20, 136, 40, 154] + ZOrder 13 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "rotor_2_duty_cycle" + SID "547::23" + Position [20, 171, 40, 189] + ZOrder 14 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "rotor_3_duty_cycle" + SID "547::24" + Position [20, 206, 40, 224] + ZOrder 15 + Port "4" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "547::36" + Ports [1, 1] + Position [270, 230, 320, 270] + ZOrder 17 + Outputs "1" + } + Block { + BlockType S-Function + Name " SFunction " + SID "547::35" + Tag "Stateflow S-Function Quadcopter_Model_R2015_A 4" + Ports [4, 2] + Position [180, 102, 230, 203] + ZOrder 16 + FunctionName "sf_sfun" + Parameters "Pmax,Pmin,Vb" + PortCounts "[4 2]" + SFunctionDeploymentMode off + EnableBusSupport on + Port { + PortNumber 2 + Name "Vb_eff" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "547::37" + Position [460, 241, 480, 259] + ZOrder 18 + } + Block { + BlockType Outport + Name "Vb_eff" + SID "547::5" + Position [460, 101, 480, 119] + ZOrder -5 + IconDisplay "Port number" + } + Line { + ZOrder 1 + SrcBlock "rotor_0_duty_cycle" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + ZOrder 2 + SrcBlock "rotor_1_duty_cycle" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + ZOrder 3 + SrcBlock "rotor_2_duty_cycle" + SrcPort 1 + DstBlock " SFunction " + DstPort 3 + } + Line { + ZOrder 4 + SrcBlock "rotor_3_duty_cycle" + SrcPort 1 + DstBlock " SFunction " + DstPort 4 + } + Line { + Name "Vb_eff" + ZOrder 5 + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "Vb_eff" + DstPort 1 + } + Line { + ZOrder 6 + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + ZOrder 7 + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "\n\n\n\n" + SID "548" + Ports [0, 1] + Position [335, 664, 485, 786] + ZOrder 96 + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ParametersOnly" + TreatAsAtomicUnit on + RequestExecContextInheritance off + SFBlockType "MATLAB Function" + Variant off + Object { + $PropName "MaskObject" + $ObjectID 25 + $ClassName "Simulink.Mask" + Display "port_label('output', 1, '^EF_g', 'texmode', 'on');\nfprintf('Gravity');\n" + } + System { + Name "\n\n\n\n" + Location [223, 338, 826, 833] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "30" + Block { + BlockType Demux + Name " Demux " + SID "548::28" + Ports [1, 1] + Position [270, 230, 320, 270] + ZOrder 19 + Outputs "1" + } + Block { + BlockType Ground + Name " Ground " + SID "548::30" + Position [20, 121, 40, 139] + ZOrder 21 + } + Block { + BlockType S-Function + Name " SFunction " + SID "548::27" + Tag "Stateflow S-Function Quadcopter_Model_R2015_A 1" + Ports [1, 2] + Position [180, 100, 230, 160] + ZOrder 18 + FunctionName "sf_sfun" + Parameters "g,m" + PortCounts "[1 2]" + SFunctionDeploymentMode off + EnableBusSupport on + Port { + PortNumber 2 + Name "E_Fg" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "548::29" + Position [460, 241, 480, 259] + ZOrder 20 + } + Block { + BlockType Outport + Name "E_Fg" + SID "548::5" + Position [460, 101, 480, 119] + ZOrder -5 + IconDisplay "Port number" + } + Line { + Name "E_Fg" + ZOrder 1 + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "E_Fg" + DstPort 1 + } + Line { + ZOrder 2 + SrcBlock " Ground " + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + ZOrder 3 + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + ZOrder 4 + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "\n\n\n\n\n\n\n" + SID "549" + Ports [2, 1] + Position [1395, 499, 1630, 706] + ZOrder 75 + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ParametersOnly" + TreatAsAtomicUnit on + RequestExecContextInheritance off + SFBlockType "MATLAB Function" + Variant off + Object { + $PropName "MaskObject" + $ObjectID 26 + $ClassName "Simulink.Mask" + Display "port_label('input', 1, '^Bv_o', 'texmode', 'on');\nport_label('input', 2, '\\Theta', 'texmode', 'on" + "');\nport_label('output', 1, '^Er_o', 'texmode', 'on');\ndisp('L_{EB}', 'texmode', 'on');" + } + System { + Name "\n\n\n\n\n\n\n" + Location [223, 338, 826, 833] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "31" + Block { + BlockType Inport + Name "B_vo" + SID "549::24" + Position [20, 101, 40, 119] + ZOrder 15 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "euler_angles" + SID "549::28" + Position [20, 136, 40, 154] + ZOrder 19 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "549::30" + Ports [1, 1] + Position [270, 230, 320, 270] + ZOrder 21 + Outputs "1" + } + Block { + BlockType S-Function + Name " SFunction " + SID "549::29" + Tag "Stateflow S-Function Quadcopter_Model_R2015_A 2" + Ports [2, 2] + Position [180, 100, 230, 160] + ZOrder 20 + FunctionName "sf_sfun" + PortCounts "[2 2]" + SFunctionDeploymentMode off + EnableBusSupport on + Port { + PortNumber 2 + Name "E_ro" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "549::31" + Position [460, 241, 480, 259] + ZOrder 22 + } + Block { + BlockType Outport + Name "E_ro" + SID "549::26" + Position [460, 101, 480, 119] + ZOrder 17 + IconDisplay "Port number" + } + Line { + ZOrder 1 + SrcBlock "B_vo" + SrcPort 1 + Points [120, 0] + DstBlock " SFunction " + DstPort 1 + } + Line { + ZOrder 2 + SrcBlock "euler_angles" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + Name "E_ro" + ZOrder 3 + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "E_ro" + DstPort 1 + } + Line { + ZOrder 4 + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + ZOrder 5 + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "\n\n\n\n\n\n\n\n" + SID "550" + Ports [5, 2] + Position [950, 281, 1150, 519] + ZOrder 52 + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ParametersOnly" + TreatAsAtomicUnit on + RequestExecContextInheritance off + SFBlockType "MATLAB Function" + Variant off + Object { + $PropName "MaskObject" + $ObjectID 27 + $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" + "port_label('input', 5, '^Bv_o', 'texmode', 'on');\nport_label('output', 1, '^Bd\\Omega/dt', 'texmode', 'on');\npo" + "rt_label('output', 2, '^Bdv_o/dt', 'texmode', 'on');\ndisp('Rotor System', 'texmode', 'on');" + } + System { + Name "\n\n\n\n\n\n\n\n" + Location [223, 338, 826, 833] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "50" + Block { + BlockType Inport + Name "angular_acceleration" + SID "550::27" + Position [20, 101, 40, 119] + ZOrder 18 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "angular_velocity" + SID "550::28" + Position [20, 136, 40, 154] + ZOrder 19 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "B_Fg" + SID "550::47" + Position [20, 171, 40, 189] + ZOrder 20 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "B_omega" + SID "550::25" + Position [20, 206, 40, 224] + ZOrder 16 + Port "4" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "B_vo" + SID "550::24" + Position [20, 246, 40, 264] + ZOrder 15 + Port "5" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "550::49" + Ports [1, 1] + Position [270, 230, 320, 270] + ZOrder 22 + Outputs "1" + } + Block { + BlockType S-Function + Name " SFunction " + SID "550::48" + Tag "Stateflow S-Function Quadcopter_Model_R2015_A 6" + Ports [5, 3] + Position [180, 100, 230, 220] + ZOrder 21 + FunctionName "sf_sfun" + Parameters "Jreq,Jxx,Jyy,Jzz,Kd,Kt,m,rhx,rhy,rhz" + PortCounts "[5 3]" + SFunctionDeploymentMode off + EnableBusSupport on + Port { + PortNumber 2 + Name "B_omega_dot" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 3 + Name "B_vo_dot" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "550::50" + Position [460, 241, 480, 259] + ZOrder 23 + } + Block { + BlockType Outport + Name "B_omega_dot" + SID "550::22" + Position [460, 101, 480, 119] + ZOrder 13 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "B_vo_dot" + SID "550::5" + Position [460, 136, 480, 154] + ZOrder -5 + Port "2" + IconDisplay "Port number" + } + Line { + ZOrder 1 + SrcBlock "angular_acceleration" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + ZOrder 2 + SrcBlock "angular_velocity" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + ZOrder 3 + SrcBlock "B_Fg" + SrcPort 1 + DstBlock " SFunction " + DstPort 3 + } + Line { + ZOrder 4 + SrcBlock "B_omega" + SrcPort 1 + DstBlock " SFunction " + DstPort 4 + } + Line { + ZOrder 5 + SrcBlock "B_vo" + SrcPort 1 + DstBlock " SFunction " + DstPort 5 + } + Line { + Name "B_omega_dot" + ZOrder 6 + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "B_omega_dot" + DstPort 1 + } + Line { + Name "B_vo_dot" + ZOrder 7 + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 3 + DstBlock "B_vo_dot" + DstPort 1 + } + Line { + ZOrder 8 + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + ZOrder 9 + SrcBlock " SFunction " + SrcPort 1 + Points [20, 0] + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + SID "551" + Ports [2, 1] + Position [1395, 303, 1630, 452] + ZOrder 81 + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ParametersOnly" + TreatAsAtomicUnit on + RequestExecContextInheritance off + SFBlockType "MATLAB Function" + Variant off + Object { + $PropName "MaskObject" + $ObjectID 28 + $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');" + } + System { + Name "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + Location [223, 338, 826, 833] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "25" + Block { + BlockType Inport + Name "B_omega" + SID "551::1" + Position [20, 101, 40, 119] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "euler_angles" + SID "551::22" + Position [20, 136, 40, 154] + ZOrder 13 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "551::24" + Ports [1, 1] + Position [270, 230, 320, 270] + ZOrder 15 + Outputs "1" + } + Block { + BlockType S-Function + Name " SFunction " + SID "551::23" + Tag "Stateflow S-Function Quadcopter_Model_R2015_A 7" + Ports [2, 2] + Position [180, 100, 230, 160] + ZOrder 14 + FunctionName "sf_sfun" + PortCounts "[2 2]" + SFunctionDeploymentMode off + EnableBusSupport on + Port { + PortNumber 2 + Name "euler_rates" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "551::25" + Position [460, 241, 480, 259] + ZOrder 16 + } + Block { + BlockType Outport + Name "euler_rates" + SID "551::5" + Position [460, 101, 480, 119] + ZOrder -5 + IconDisplay "Port number" + } + Line { + ZOrder 1 + SrcBlock "B_omega" + SrcPort 1 + Points [120, 0] + DstBlock " SFunction " + DstPort 1 + } + Line { + ZOrder 2 + SrcBlock "euler_angles" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + Name "euler_rates" + ZOrder 3 + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "euler_rates" + DstPort 1 + } + Line { + ZOrder 4 + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + ZOrder 5 + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + SID "552" + Ports [2, 2] + Position [600, 694, 770, 816] + ZOrder 97 + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ParametersOnly" + TreatAsAtomicUnit on + RequestExecContextInheritance off + SFBlockType "MATLAB Function" + Variant off + Object { + $PropName "MaskObject" + $ObjectID 29 + $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');" + } + System { + Name "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + Location [223, 338, 826, 833] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "33" + Block { + BlockType Inport + Name "E_Fg" + SID "552::24" + Position [20, 101, 40, 119] + ZOrder 15 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "euler_angles" + SID "552::28" + Position [20, 136, 40, 154] + ZOrder 19 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "552::30" + Ports [1, 1] + Position [270, 230, 320, 270] + ZOrder 21 + Outputs "1" + } + Block { + BlockType S-Function + Name " SFunction " + SID "552::29" + Tag "Stateflow S-Function Quadcopter_Model_R2015_A 8" + Ports [2, 3] + Position [180, 100, 230, 180] + ZOrder 20 + FunctionName "sf_sfun" + Parameters "m" + PortCounts "[2 3]" + SFunctionDeploymentMode off + EnableBusSupport on + Port { + PortNumber 2 + Name "B_Fg" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 3 + Name "B_g" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "552::31" + Position [460, 241, 480, 259] + ZOrder 22 + } + Block { + BlockType Outport + Name "B_Fg" + SID "552::26" + Position [460, 101, 480, 119] + ZOrder 17 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "B_g" + SID "552::32" + Position [460, 136, 480, 154] + ZOrder 23 + Port "2" + IconDisplay "Port number" + } + Line { + ZOrder 19 + SrcBlock "E_Fg" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + ZOrder 20 + SrcBlock "euler_angles" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + Name "B_Fg" + ZOrder 21 + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "B_Fg" + DstPort 1 + } + Line { + Name "B_g" + ZOrder 22 + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 3 + DstBlock "B_g" + DstPort 1 + } + Line { + ZOrder 23 + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + ZOrder 24 + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType Demux + Name "Demux" + SID "934" + Ports [1, 4] + Position [-60, 321, -55, 454] + ZOrder 105 + ShowName off + DisplayOption "bar" + } + Block { + BlockType Integrator + Name "Integrator" + SID "553" + Ports [1, 1] + Position [730, 340, 760, 370] + ZOrder 49 + } + Block { + BlockType Integrator + Name "Integrator1" + SID "554" + Ports [1, 1] + Position [1225, 445, 1255, 475] + ZOrder 53 + } + Block { + BlockType Integrator + Name "Integrator2" + SID "555" + Ports [1, 1] + Position [1225, 325, 1255, 355] + ZOrder 54 + } + Block { + BlockType Integrator + Name "Integrator3" + SID "556" + Ports [1, 1] + Position [1685, 590, 1715, 620] + ZOrder 98 + } + Block { + BlockType Integrator + Name "Integrator4" + SID "557" + Ports [1, 1] + Position [1685, 365, 1715, 395] + ZOrder 77 + ContinuousStateAttributes "['phi' 'theta' 'psi']" + } + Block { + BlockType Scope + Name "Scope" + SID "558" + Ports [1] + Position [350, 279, 380, 311] + ZOrder 46 + NumInputPorts "1" + Open off + TimeRange auto + TickLabels OneTimeTick + ShowLegends off + LimitDataPoints off + MaxDataPoints 5000 + SaveToWorkspace off + SaveName ScopeData + YMin 10.94391 + YMax 11.11734 + SampleInput off + SampleTime -1 + ZoomMode on + Grid on + DataFormat StructureWithTime + Decimation 1 + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + Location [1 76 1921 1039] + } + Block { + BlockType Scope + Name "Scope1" + SID "559" + Ports [1] + Position [740, 229, 770, 261] + ZOrder 50 + NumInputPorts "1" + Open off + TimeRange auto + TickLabels OneTimeTick + ShowLegends off + LimitDataPoints off + MaxDataPoints 5000 + SaveToWorkspace off + SaveName ScopeData1 + YMin -1469.49513 + YMax 13225.4562 + SampleInput off + SampleTime -1 + ZoomMode on + Grid on + DataFormat StructureWithTime + Decimation 1 + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + Location [1 76 1921 1039] + } + Block { + BlockType Scope + Name "Scope2" + SID "560" + Ports [1] + Position [890, 229, 920, 261] + ZOrder 51 + NumInputPorts "1" + Open off + TimeRange auto + TickLabels OneTimeTick + ShowLegends off + LimitDataPoints off + MaxDataPoints 5000 + SaveToWorkspace off + SaveName ScopeData2 + YMin -100.77485 + YMax 906.97366 + SampleInput off + SampleTime -1 + ZoomMode on + Grid on + DataFormat StructureWithTime + Decimation 1 + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + Location [1 76 1921 1039] + } + Block { + BlockType Scope + Name "Scope3" + SID "561" + Ports [1] + Position [1790, 304, 1820, 336] + ZOrder 69 + NumInputPorts "1" + Open off + TimeRange auto + TickLabels OneTimeTick + ShowLegends off + LimitDataPoints off + MaxDataPoints 5000 + SaveToWorkspace off + SaveName ScopeData1 + YMin -1.00000 + YMax 1.00000 + SampleInput off + SampleTime -1 + ZoomMode on + Grid on + DataFormat StructureWithTime + Decimation 1 + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + Location [1 76 1921 1039] + } + Block { + BlockType Scope + Name "Scope4" + SID "562" + Ports [1] + Position [1790, 169, 1820, 201] + ZOrder 70 + NumInputPorts "1" + Open off + TimeRange auto + TickLabels OneTimeTick + ShowLegends off + LimitDataPoints off + MaxDataPoints 5000 + SaveToWorkspace off + SaveName ScopeData2 + YMin -19.78789 + YMax 178.09104 + SampleInput off + SampleTime -1 + ZoomMode on + Grid on + DataFormat StructureWithTime + Decimation 1 + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + Location [1 76 1921 1039] + } + Block { + BlockType Scope + Name "Scope5" + SID "563" + Ports [1] + Position [1790, 419, 1820, 451] + ZOrder 78 + NumInputPorts "1" + Open off + TimeRange auto + TickLabels OneTimeTick + ShowLegends off + LimitDataPoints off + MaxDataPoints 5000 + SaveToWorkspace off + SaveName ScopeData3 + YMin -0.11953 + YMax 1.0758 + SampleInput off + SampleTime -1 + ZoomMode on + Grid on + DataFormat StructureWithTime + Decimation 1 + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + Location [1 76 1917 1039] + } + Block { + BlockType Scope + Name "Scope6" + SID "564" + Ports [1] + Position [1790, 534, 1820, 566] + ZOrder 79 + NumInputPorts "1" + Open off + TimeRange auto + TickLabels OneTimeTick + ShowLegends off + LimitDataPoints off + MaxDataPoints 5000 + SaveToWorkspace off + SaveName ScopeData4 + YMin -0.86518 + YMax 7.7866 + SampleInput off + SampleTime -1 + ZoomMode on + Grid on + DataFormat StructureWithTime + Decimation 1 + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + Location [1 76 1917 1039] + } + Block { + BlockType Scope + Name "Scope7" + SID "565" + Ports [1] + Position [535, 644, 565, 676] + ZOrder 99 + NumInputPorts "1" + Open off + TimeRange auto + TickLabels OneTimeTick + ShowLegends off + LimitDataPoints off + MaxDataPoints 5000 + SaveToWorkspace off + SaveName ScopeData1 + YMin -1.45924 + YMax 13.13314 + SampleInput off + SampleTime -1 + ZoomMode on + Grid on + DataFormat StructureWithTime + Decimation 1 + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + Location [1 76 1921 1039] + } + Block { + BlockType Scope + Name "Scope8" + SID "566" + Ports [1] + Position [820, 629, 850, 661] + ZOrder 100 + NumInputPorts "1" + Open off + TimeRange auto + TickLabels OneTimeTick + ShowLegends off + LimitDataPoints off + MaxDataPoints 5000 + SaveToWorkspace off + SaveName ScopeData2 + YMin -14.59237 + YMax 14.59237 + SampleInput off + SampleTime -1 + ZoomMode on + Grid on + DataFormat StructureWithTime + Decimation 1 + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + Location [1 76 1921 1039] + } + Block { + BlockType Scope + Name "Scope9" + SID "567" + Ports [1] + Position [1225, 229, 1255, 261] + ZOrder 102 + NumInputPorts "1" + Open off + TimeRange auto + TickLabels OneTimeTick + ShowLegends off + LimitDataPoints off + MaxDataPoints 5000 + SaveToWorkspace off + SaveName ScopeData3 + YMin -0.0198 + YMax 0.17819 + SampleInput off + SampleTime -1 + ZoomMode on + Grid on + DataFormat StructureWithTime + Decimation 1 + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + Location [1 76 1909 1039] + } + Block { + BlockType Step + Name "Step" + SID "935" + Position [-150, 375, -120, 405] + ZOrder 106 + Before "68.08*ones(4,1)" + After "68.08*ones(4,1)" + SampleTime "0" + } + Block { + BlockType Outport + Name "B_omega" + SID "568" + Position [1815, 238, 1845, 252] + ZOrder 61 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "euler_angles" + SID "569" + Position [1815, 373, 1845, 387] + ZOrder 91 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "B_vo" + SID "570" + Position [1815, 468, 1845, 482] + ZOrder 58 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "E_ro" + SID "571" + Position [1815, 598, 1845, 612] + ZOrder 88 + Port "4" + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "B_vo_dot" + SID "572" + Position [1815, 718, 1845, 732] + ZOrder 103 + Port "5" + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "B_g" + SID "573" + Position [1815, 778, 1845, 792] + ZOrder 104 + Port "6" + IconDisplay "Port number" + } + Line { + ZOrder 5 + SrcBlock "\n\n" + SrcPort 1 + Points [23, 0; 0, -59] + Branch { + ZOrder 6 + Points [2, 0; 0, -46] + DstBlock "Scope" + DstPort 1 + } + Branch { + ZOrder 7 + Points [0, -1] + DstBlock "\n" + DstPort 1 + } + } + Line { + ZOrder 8 + SrcBlock "\n" + SrcPort 1 + Points [40, 0; 0, -45] + Branch { + ZOrder 9 + DstBlock "Integrator" + DstPort 1 + } + Branch { + ZOrder 10 + Points [0, -45] + Branch { + ZOrder 11 + Points [0, -65] + DstBlock "Scope1" + DstPort 1 + } + Branch { + ZOrder 12 + DstBlock "\n\n\n\n\n\n\n\n" + DstPort 1 + } + } + } + Line { + ZOrder 13 + SrcBlock "Integrator" + SrcPort 1 + Points [8, 0] + Branch { + ZOrder 14 + Points [60, 0] + Branch { + ZOrder 15 + Points [0, -110] + DstBlock "Scope2" + DstPort 1 + } + Branch { + ZOrder 16 + DstBlock "\n\n\n\n\n\n\n\n" + DstPort 2 + } + } + Branch { + ZOrder 17 + Points [0, 210; -396, 0; 0, -105] + DstBlock "\n" + DstPort 2 + } + } + Line { + ZOrder 18 + SrcBlock "\n\n\n\n\n\n\n\n" + SrcPort 1 + Points [34, 0] + Branch { + ZOrder 19 + Points [0, -95] + DstBlock "Scope9" + DstPort 1 + } + Branch { + ZOrder 20 + DstBlock "Integrator2" + DstPort 1 + } + } + Line { + ZOrder 21 + SrcBlock "\n\n\n\n\n\n\n\n" + SrcPort 2 + Points [32, 0] + Branch { + ZOrder 22 + Points [0, 265] + DstBlock "B_vo_dot" + DstPort 1 + } + Branch { + ZOrder 23 + DstBlock "Integrator1" + DstPort 1 + } + } + Line { + ZOrder 24 + SrcBlock "Integrator2" + SrcPort 1 + Points [55, 0] + Branch { + ZOrder 25 + Points [0, -95; 453, 0] + Branch { + ZOrder 26 + Points [0, -60] + DstBlock "Scope4" + DstPort 1 + } + Branch { + ZOrder 27 + DstBlock "B_omega" + DstPort 1 + } + } + Branch { + ZOrder 28 + Points [0, 226; -422, 0; 0, -121] + DstBlock "\n\n\n\n\n\n\n\n" + DstPort 4 + } + Branch { + ZOrder 29 + DstBlock "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + DstPort 1 + } + } + Line { + ZOrder 30 + SrcBlock "Integrator1" + SrcPort 1 + Points [34, 0; 0, 90] + Branch { + ZOrder 31 + Points [-383, 0; 0, -60] + DstBlock "\n\n\n\n\n\n\n\n" + DstPort 5 + } + Branch { + ZOrder 32 + Points [81, 0] + Branch { + ZOrder 33 + DstBlock "\n\n\n\n\n\n\n" + DstPort 1 + } + Branch { + ZOrder 34 + Points [0, -75; 393, 0] + Branch { + ZOrder 35 + DstBlock "B_vo" + DstPort 1 + } + Branch { + ZOrder 36 + Points [0, -40] + DstBlock "Scope5" + DstPort 1 + } + } + } + } + Line { + ZOrder 37 + SrcBlock "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + SrcPort 1 + DstBlock "Integrator4" + DstPort 1 + } + Line { + ZOrder 38 + SrcBlock "Integrator4" + SrcPort 1 + Points [20, 0] + Branch { + ZOrder 39 + Points [28, 0] + Branch { + ZOrder 40 + Points [0, -60] + DstBlock "Scope3" + DstPort 1 + } + Branch { + ZOrder 41 + DstBlock "euler_angles" + DstPort 1 + } + } + Branch { + ZOrder 42 + Points [0, 460; -385, 0] + Branch { + ZOrder 65 + Points [0, -185] + Branch { + ZOrder 44 + DstBlock "\n\n\n\n\n\n\n" + DstPort 2 + } + Branch { + ZOrder 45 + Points [0, -240] + DstBlock "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + DstPort 2 + } + } + Branch { + ZOrder 46 + Points [-787, 0; 0, -55] + DstBlock "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + DstPort 2 + } + } + } + Line { + ZOrder 47 + SrcBlock "\n\n\n\n" + SrcPort 1 + Points [7, 0] + Branch { + ZOrder 64 + Points [0, -65] + DstBlock "Scope7" + DstPort 1 + } + Branch { + ZOrder 49 + DstBlock "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + DstPort 1 + } + } + Line { + ZOrder 50 + SrcBlock "\n\n\n\n\n\n\n" + SrcPort 1 + DstBlock "Integrator3" + DstPort 1 + } + Line { + ZOrder 51 + SrcBlock "Integrator3" + SrcPort 1 + Points [51, 0] + Branch { + ZOrder 52 + Points [0, -55] + DstBlock "Scope6" + DstPort 1 + } + Branch { + ZOrder 53 + DstBlock "E_ro" + DstPort 1 + } + } + Line { + ZOrder 54 + SrcBlock "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + SrcPort 1 + Points [24, 0; 0, -30] + Branch { + ZOrder 55 + Points [0, -50] + DstBlock "Scope8" + DstPort 1 + } + Branch { + ZOrder 56 + Points [74, 0; 0, -295] + DstBlock "\n\n\n\n\n\n\n\n" + DstPort 3 + } + } + Line { + ZOrder 61 + SrcBlock "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + SrcPort 2 + DstBlock "B_g" + DstPort 1 + } + Line { + ZOrder 71 + SrcBlock "Demux" + SrcPort 1 + Points [50, 0; 0, -25] + DstBlock "\n\n" + DstPort 1 + } + Line { + ZOrder 72 + SrcBlock "Demux" + SrcPort 2 + DstBlock "\n\n" + DstPort 2 + } + Line { + ZOrder 73 + SrcBlock "Demux" + SrcPort 3 + Points [50, 0; 0, 25] + DstBlock "\n\n" + DstPort 3 + } + Line { + ZOrder 74 + SrcBlock "Demux" + SrcPort 4 + Points [50, 0; 0, 50] + DstBlock "\n\n" + DstPort 4 + } + Line { + ZOrder 70 + SrcBlock "Step" + SrcPort 1 + DstBlock "Demux" + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name " " + SID "601" + Ports [6, 3] + Position [1445, 477, 1665, 713] + ZOrder 68 + RequestExecContextInheritance off + Variant off + Object { + $PropName "MaskObject" + $ObjectID 30 + $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" + "l('input', 5, '^{B}dv_o/dt', 'texmode', 'on');\nport_label('input', 6, '^{B}g', 'texmode', 'on');\nport_label('output" + "', 1, 'Euler Angles Filtered', 'texmode', 'on');\nport_label('output', 2, 'Euler Rates', 'texmode', 'on');\nport_labe" + "l('output', 3, 'Current Position', 'texmode', 'on');\ndisp('Sensor Systen', 'texmode', 'on');" + } + System { + Name " " + Location [-8, -8, 1928, 1048] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "B_Omega" + SID "863" + Position [1015, 678, 1045, 692] + ZOrder 265 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "euler_angles" + SID "864" + Position [1990, 1068, 2020, 1082] + ZOrder 266 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "B_vo" + SID "865" + Position [1015, 613, 1045, 627] + ZOrder 267 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "E_ro" + SID "866" + Position [1990, 1038, 2020, 1052] + ZOrder 268 + Port "4" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "B_vo_dot" + SID "867" + Position [1015, 548, 1045, 562] + ZOrder 269 + Port "5" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "B_g" + SID "868" + Position [1015, 743, 1045, 757] + ZOrder 273 + Port "6" + IconDisplay "Port number" + } + Block { + BlockType SubSystem + Name "\n\n\n\n\n\n\n\n" + SID "869" + Ports [4, 1] + Position [2025, 483, 2210, 782] + ZOrder 274 + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ParametersOnly" + TreatAsAtomicUnit on + RequestExecContextInheritance off + SFBlockType "MATLAB Function" + Variant off + Object { + $PropName "MaskObject" + $ObjectID 31 + $ClassName "Simulink.Mask" + Display "port_label('input', 1, '\\theta_{accel}', 'texmode', 'on');\nport_label('input', 2, '\\phi_{accel}'" + ", 'texmode', 'on');\nport_label('input', 3, 'd\\Theta_{IMU}/dt', 'texmode', 'on');\nport_label('input', 4, '\\The" + "ta_{IMU}', 'texmode', 'on');\nport_label('output', 1, '\\Theta_{IMU}', 'texmode', 'on');\ndisp('Complimentary Fil" + "ter', 'texmode', 'on');" + } + System { + Name "\n\n\n\n\n\n\n\n" + Location [223, 338, 826, 833] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "32" + Block { + BlockType Inport + Name "accel_pitch" + SID "869::1" + Position [20, 101, 40, 119] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "accel_roll" + SID "869::29" + Position [20, 136, 40, 154] + ZOrder 20 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "euler_angles_gyro" + SID "869::22" + Position [20, 171, 40, 189] + ZOrder 13 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "prev_euler_angles_IMU" + SID "869::28" + Position [20, 206, 40, 224] + ZOrder 19 + Port "4" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "869::20" + Ports [1, 1] + Position [270, 230, 320, 270] + ZOrder 11 + Outputs "1" + } + Block { + BlockType S-Function + Name " SFunction " + SID "869::19" + Tag "Stateflow S-Function Quadcopter_Model_R2015_A 9" + Ports [4, 2] + Position [180, 132, 230, 233] + ZOrder 10 + FunctionName "sf_sfun" + PortCounts "[4 2]" + SFunctionDeploymentMode off + EnableBusSupport on + Port { + PortNumber 2 + Name "euler_angles_IMU" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "869::21" + Position [460, 241, 480, 259] + ZOrder 12 + } + Block { + BlockType Outport + Name "euler_angles_IMU" + SID "869::5" + Position [460, 101, 480, 119] + ZOrder -5 + IconDisplay "Port number" + } + Line { + ZOrder 1 + SrcBlock "accel_pitch" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + ZOrder 2 + SrcBlock "accel_roll" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + ZOrder 3 + SrcBlock "euler_angles_gyro" + SrcPort 1 + DstBlock " SFunction " + DstPort 3 + } + Line { + ZOrder 4 + SrcBlock "prev_euler_angles_IMU" + SrcPort 1 + DstBlock " SFunction " + DstPort 4 + } + Line { + Name "euler_angles_IMU" + ZOrder 5 + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "euler_angles_IMU" + DstPort 1 + } + Line { + ZOrder 6 + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + ZOrder 7 + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "\n\n\n\n\n\n\n\n\n\n" + SID "870" + Ports [4, 2] + Position [1145, 520, 1340, 785] + ZOrder 272 + RequestExecContextInheritance off + Variant off + Object { + $PropName "MaskObject" + $ObjectID 32 + $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_label('output', 1, 'Accelerometer Reading', 'texmode', 'on')\nport_label('output', 2, 'Gyroscope Reading'," + " 'texmode', 'on')\ndisp('IMU', 'texmode', 'on');" + } + System { + Name "\n\n\n\n\n\n\n\n\n\n" + Location [-8, -8, 1928, 1048] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "150" + Block { + BlockType Inport + Name "B_vo_dot" + SID "871" + Position [110, 173, 140, 187] + ZOrder 17 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "B_vo" + SID "872" + Position [110, 208, 140, 222] + ZOrder 25 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "B_Omega" + SID "873" + Position [110, 243, 140, 257] + ZOrder 26 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "B_g" + SID "874" + Position [110, 278, 140, 292] + ZOrder 27 + Port "4" + IconDisplay "Port number" + } + Block { + BlockType SubSystem + Name "\n\n\n\n\n\n\n" + SID "875" + Ports [5, 2] + Position [250, 165, 445, 335] + ZOrder 1 + LibraryVersion "1.32" + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ParametersOnly" + TreatAsAtomicUnit on + RequestExecContextInheritance off + SFBlockType "MATLAB Function" + Variant off + Object { + $PropName "MaskObject" + $ObjectID 33 + $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" + "bel('input', 5, 'r_{oc}', 'texmode', 'on')\nport_label('output', 1, 'Accelerometer Reading', 'texmode', 'on')\nport_" + "label('output', 2, 'Gyroscope Reading', 'texmode', 'on')\ndisp('Ideal IMU', 'texmode', 'on');" + } + System { + Name "\n\n\n\n\n\n\n" + Location [223, 338, 826, 833] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "29" + Block { + BlockType Inport + Name "B_vo_dot" + SID "875::1" + Position [20, 101, 40, 119] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "B_vo" + SID "875::22" + Position [20, 136, 40, 154] + ZOrder 13 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "B_Omega" + SID "875::19" + Position [20, 171, 40, 189] + ZOrder 10 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "B_g" + SID "875::20" + Position [20, 206, 40, 224] + ZOrder 11 + Port "4" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "r_oc" + SID "875::23" + Position [20, 246, 40, 264] + ZOrder 14 + Port "5" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "875::25" + Ports [1, 1] + Position [270, 230, 320, 270] + ZOrder 16 + Outputs "1" + } + Block { + BlockType S-Function + Name " SFunction " + SID "875::24" + Tag "Stateflow S-Function Quadcopter_Model_R2015_A 10" + Ports [5, 3] + Position [180, 110, 230, 230] + ZOrder 15 + FunctionName "sf_sfun" + Parameters "g" + PortCounts "[5 3]" + SFunctionDeploymentMode off + EnableBusSupport on + Port { + PortNumber 2 + Name "accelReading" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 3 + Name "gyroReading" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "875::26" + Position [460, 241, 480, 259] + ZOrder 17 + } + Block { + BlockType Outport + Name "accelReading" + SID "875::5" + Position [460, 101, 480, 119] + ZOrder -5 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "gyroReading" + SID "875::21" + Position [460, 136, 480, 154] + ZOrder 12 + Port "2" + IconDisplay "Port number" + } + Line { + ZOrder 1 + SrcBlock "B_vo_dot" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + ZOrder 2 + SrcBlock "B_vo" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + ZOrder 3 + SrcBlock "B_Omega" + SrcPort 1 + DstBlock " SFunction " + DstPort 3 + } + Line { + ZOrder 4 + SrcBlock "B_g" + SrcPort 1 + DstBlock " SFunction " + DstPort 4 + } + Line { + ZOrder 5 + SrcBlock "r_oc" + SrcPort 1 + DstBlock " SFunction " + DstPort 5 + } + Line { + Name "accelReading" + ZOrder 6 + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "accelReading" + DstPort 1 + } + Line { + Name "gyroReading" + ZOrder 7 + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 3 + DstBlock "gyroReading" + DstPort 1 + } + Line { + ZOrder 8 + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + ZOrder 9 + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType Ground + Name "Ground" + SID "876" + Position [550, 340, 570, 360] + ZOrder 23 + } + Block { + BlockType Ground + Name "Ground1" + SID "877" + Position [550, 145, 570, 165] + ZOrder 24 + } + Block { + BlockType Sum + Name "Sum" + SID "878" + Ports [2, 1] + Position [690, 285, 710, 305] + ZOrder 7 + ShowName off + IconShape "round" + Inputs "|++" + InputSameDT off + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Sum + Name "Sum1" + SID "879" + Ports [2, 1] + Position [690, 200, 710, 220] + ZOrder 8 + ShowName off + IconShape "round" + Inputs "++|" + InputSameDT off + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Sum + Name "Sum2" + SID "880" + Ports [2, 1] + Position [570, 285, 590, 305] + ZOrder 11 + ShowName off + IconShape "round" + Inputs "|++" + InputSameDT off + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Sum + Name "Sum3" + SID "881" + Ports [2, 1] + Position [570, 200, 590, 220] + ZOrder 12 + ShowName off + IconShape "round" + Inputs "++|" + InputSameDT off + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType RandomNumber + Name "accelerometer_noise" + SID "882" + Position [630, 140, 660, 170] + ZOrder 2 + Mean "zeros(3,1)" + Variance "[ 3e-7 ; 3.3e-7 ; 7.2e-7 ] " + Seed "[0,1,2]" + SampleTime "6.1e-3" + } + Block { + BlockType Quantizer + Name "accelerometer_quantizer" + SID "883" + Position [770, 195, 800, 225] + ZOrder 9 + QuantizationInterval "2.4400e-04" + } + Block { + BlockType ZeroOrderHold + Name "accelerometer_sampling" + SID "884" + Position [495, 195, 530, 225] + ZOrder 15 + SampleTime "6.1e-3" + } + Block { + BlockType RandomNumber + Name "gyroscope_noise" + SID "885" + Position [630, 315, 660, 345] + ZOrder 6 + Mean "zeros(3,1)" + Variance "[ 2.2e-8 ; 1.1e-7 ; 2.4e-8 ]" + Seed "[0,1,2]" + SampleTime "6.1e-3" + } + Block { + BlockType Quantizer + Name "gyroscope_qunatizer" + SID "886" + Position [770, 280, 800, 310] + ZOrder 10 + QuantizationInterval "1.1e-3" + } + Block { + BlockType ZeroOrderHold + Name "gyroscope_sampling" + SID "887" + Position [495, 280, 530, 310] + ZOrder 16 + SampleTime "6.1e-3" + } + Block { + BlockType Constant + Name "r_oc" + SID "888" + Position [30, 307, 95, 333] + ZOrder 28 + Value "zeros(3,1)" + } + Block { + BlockType Outport + Name "accelerometer" + SID "889" + Position [885, 203, 915, 217] + ZOrder 29 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "gyroscope" + SID "890" + Position [885, 288, 915, 302] + ZOrder 21 + Port "2" + IconDisplay "Port number" + } + Line { + ZOrder 1 + SrcBlock "gyroscope_qunatizer" + SrcPort 1 + DstBlock "gyroscope" + DstPort 1 + } + Line { + ZOrder 2 + SrcBlock "accelerometer_quantizer" + SrcPort 1 + DstBlock "accelerometer" + DstPort 1 + } + Line { + ZOrder 3 + SrcBlock "accelerometer_noise" + SrcPort 1 + Points [35, 0] + DstBlock "Sum1" + DstPort 1 + } + Line { + ZOrder 4 + SrcBlock "Sum" + SrcPort 1 + DstBlock "gyroscope_qunatizer" + DstPort 1 + } + Line { + ZOrder 5 + SrcBlock "Sum2" + SrcPort 1 + DstBlock "Sum" + DstPort 1 + } + Line { + ZOrder 6 + SrcBlock "Sum3" + SrcPort 1 + DstBlock "Sum1" + DstPort 2 + } + Line { + ZOrder 7 + SrcBlock "\n\n\n\n\n\n\n" + SrcPort 2 + DstBlock "gyroscope_sampling" + DstPort 1 + } + Line { + ZOrder 8 + SrcBlock "gyroscope_noise" + SrcPort 1 + Points [35, 0] + DstBlock "Sum" + DstPort 2 + } + Line { + ZOrder 9 + SrcBlock "\n\n\n\n\n\n\n" + SrcPort 1 + DstBlock "accelerometer_sampling" + DstPort 1 + } + Line { + ZOrder 10 + SrcBlock "Sum1" + SrcPort 1 + DstBlock "accelerometer_quantizer" + DstPort 1 + } + Line { + ZOrder 11 + SrcBlock "gyroscope_sampling" + SrcPort 1 + DstBlock "Sum2" + DstPort 1 + } + Line { + ZOrder 12 + SrcBlock "accelerometer_sampling" + SrcPort 1 + DstBlock "Sum3" + DstPort 2 + } + Line { + ZOrder 13 + SrcBlock "Ground" + SrcPort 1 + Points [5, 0] + DstBlock "Sum2" + DstPort 2 + } + Line { + ZOrder 14 + SrcBlock "Ground1" + SrcPort 1 + Points [5, 0] + DstBlock "Sum3" + DstPort 1 + } + Line { + ZOrder 15 + SrcBlock "B_vo_dot" + SrcPort 1 + DstBlock "\n\n\n\n\n\n\n" + DstPort 1 + } + Line { + ZOrder 16 + SrcBlock "B_vo" + SrcPort 1 + DstBlock "\n\n\n\n\n\n\n" + DstPort 2 + } + Line { + ZOrder 17 + SrcBlock "B_Omega" + SrcPort 1 + DstBlock "\n\n\n\n\n\n\n" + DstPort 3 + } + Line { + ZOrder 18 + SrcBlock "B_g" + SrcPort 1 + DstBlock "\n\n\n\n\n\n\n" + DstPort 4 + } + Line { + ZOrder 19 + SrcBlock "r_oc" + SrcPort 1 + DstBlock "\n\n\n\n\n\n\n" + DstPort 5 + } + } + } + Block { + BlockType SubSystem + Name "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + SID "892" + Ports [2, 1] + Position [1470, 689, 1885, 811] + ZOrder 275 + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ParametersOnly" + TreatAsAtomicUnit on + RequestExecContextInheritance off + SFBlockType "MATLAB Function" + Variant off + Object { + $PropName "MaskObject" + $ObjectID 34 + $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_{IMU}/dt', 'texmode', 'on');\ndisp('A_{EB}', 'texmode', " + "'on');" + } + System { + Name "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + Location [223, 338, 826, 833] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "25" + Block { + BlockType Inport + Name "gyro_reading" + SID "892::1" + Position [20, 101, 40, 119] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "euler_angles_IMU" + SID "892::22" + Position [20, 136, 40, 154] + ZOrder 13 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "892::24" + Ports [1, 1] + Position [270, 230, 320, 270] + ZOrder 15 + Outputs "1" + } + Block { + BlockType S-Function + Name " SFunction " + SID "892::23" + Tag "Stateflow S-Function Quadcopter_Model_R2015_A 12" + Ports [2, 2] + Position [180, 100, 230, 160] + ZOrder 14 + FunctionName "sf_sfun" + PortCounts "[2 2]" + SFunctionDeploymentMode off + EnableBusSupport on + Port { + PortNumber 2 + Name "euler_rates_IMU" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "892::25" + Position [460, 241, 480, 259] + ZOrder 16 + } + Block { + BlockType Outport + Name "euler_rates_IMU" + SID "892::5" + Position [460, 101, 480, 119] + ZOrder -5 + IconDisplay "Port number" + } + Line { + ZOrder 1 + SrcBlock "gyro_reading" + SrcPort 1 + Points [120, 0] + DstBlock " SFunction " + DstPort 1 + } + Line { + ZOrder 2 + SrcBlock "euler_angles_IMU" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + Name "euler_rates_IMU" + ZOrder 3 + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "euler_rates_IMU" + DstPort 1 + } + Line { + ZOrder 4 + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + ZOrder 5 + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "\n\n\n\n\n\n\n\n\n\n\n\n1" + SID "908" + Ports [2, 2] + Position [1480, 484, 1875, 631] + ZOrder 284 + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ParametersOnly" + TreatAsAtomicUnit on + RequestExecContextInheritance off + SFBlockType "MATLAB Function" + Variant off + Object { + $PropName "MaskObject" + $ObjectID 35 + $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" + "nd Roll', 'texmode', 'on');" + } + System { + Name "\n\n\n\n\n\n\n\n\n\n\n\n1" + Location [223, 338, 826, 833] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "26" + Block { + BlockType Inport + Name "accel_reading" + SID "908::1" + Position [20, 101, 40, 119] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "accel_roll_prev" + SID "908::23" + Position [20, 136, 40, 154] + ZOrder 14 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "908::20" + Ports [1, 1] + Position [270, 230, 320, 270] + ZOrder 11 + Outputs "1" + } + Block { + BlockType S-Function + Name " SFunction " + SID "908::19" + Tag "Stateflow S-Function Quadcopter_Model_R2015_A 13" + Ports [2, 3] + Position [180, 105, 230, 185] + ZOrder 10 + FunctionName "sf_sfun" + PortCounts "[2 3]" + SFunctionDeploymentMode off + EnableBusSupport on + Port { + PortNumber 2 + Name "accel_pitch" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 3 + Name "accel_roll" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "908::21" + Position [460, 241, 480, 259] + ZOrder 12 + } + Block { + BlockType Outport + Name "accel_pitch" + SID "908::5" + Position [460, 101, 480, 119] + ZOrder -5 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "accel_roll" + SID "908::22" + Position [460, 136, 480, 154] + ZOrder 13 + Port "2" + IconDisplay "Port number" + } + Line { + ZOrder 14 + SrcBlock "accel_reading" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + ZOrder 15 + SrcBlock "accel_roll_prev" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + Name "accel_pitch" + ZOrder 16 + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "accel_pitch" + DstPort 1 + } + Line { + Name "accel_roll" + ZOrder 17 + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 3 + DstBlock "accel_roll" + DstPort 1 + } + Line { + ZOrder 18 + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + ZOrder 19 + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "3D Graphical Simulation" + SID "911" + Ports [2] + Position [2135, 1030, 2285, 1090] + ZOrder 287 + Commented "on" + RequestExecContextInheritance off + Variant off + Object { + $PropName "MaskObject" + $ObjectID 36 + $ClassName "Simulink.Mask" + Display "port_label('input',1,'r_{o}','texmode','on')\nport_label('input',2,'\\Theta','texmode','on')" + } + System { + Name "3D Graphical Simulation" + Location [-8, -8, 1928, 1048] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "Displacement" + SID "912" + Position [110, 218, 140, 232] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "Euler Angles" + SID "913" + Position [125, 108, 155, 122] + ZOrder -2 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType BusCreator + Name "Bus\nCreator" + SID "914" + Ports [3, 1] + Position [600, 76, 610, 154] + ZOrder -3 + ShowName off + Inputs "3" + DisplayOption "bar" + InheritFromInputs on + } + Block { + BlockType BusCreator + Name "Bus\nCreator1" + SID "915" + Ports [3, 1] + Position [630, 191, 640, 269] + ZOrder -4 + ShowName off + Inputs "3" + DisplayOption "bar" + InheritFromInputs on + } + Block { + BlockType BusCreator + Name "Bus\nCreator2" + SID "916" + Ports [3, 1] + Position [385, 75, 390, 155] + ZOrder -5 + ShowName off + Inputs "3" + DisplayOption "bar" + InheritFromInputs on + } + Block { + BlockType BusSelector + Name "Bus\nSelector" + SID "917" + Ports [1, 3] + Position [500, 77, 505, 153] + ZOrder -6 + ShowName off + OutputSignals "phi,theta,psi" + Port { + PortNumber 1 + Name "<phi>" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 2 + Name "<theta>" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 3 + Name "<psi>" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Demux + Name "Demux" + SID "918" + Ports [1, 3] + Position [440, 183, 450, 267] + ZOrder -7 + BackgroundColor "black" + ShowName off + Outputs "3" + DisplayOption "bar" + } + Block { + BlockType Demux + Name "Demux1" + SID "919" + Ports [1, 3] + Position [290, 75, 295, 155] + ZOrder -8 + ShowName off + Outputs "3" + DisplayOption "bar" + Port { + PortNumber 1 + Name "phi" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 2 + Name "theta" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 3 + Name "psi" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Gain + Name "Gain" + SID "920" + Position [550, 240, 580, 270] + ZOrder -10 + Gain "-1" + ParamDataTypeStr "Inherit: Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Gain + Name "Gain1" + SID "921" + Position [670, 208, 710, 252] + ZOrder -11 + Gain "eye(3)*1" + Multiplication "Matrix(K*u)" + ParamDataTypeStr "Inherit: Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Gain + Name "Gain2" + SID "922" + Position [550, 190, 580, 220] + ZOrder -12 + Gain "-1" + ParamDataTypeStr "Inherit: Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType SubSystem + Name "MATLAB Function" + SID "923" + Ports [1, 1] + Position [655, 92, 725, 138] + ZOrder 5 + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ParametersOnly" + TreatAsAtomicUnit on + RequestExecContextInheritance off + SFBlockType "MATLAB Function" + Variant off + System { + Name "MATLAB Function" + Location [223, 338, 826, 833] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "21" + Block { + BlockType Inport + Name "u" + SID "923::1" + Position [20, 101, 40, 119] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "923::20" + Ports [1, 1] + Position [270, 230, 320, 270] + ZOrder 11 + Outputs "1" + } + Block { + BlockType S-Function + Name " SFunction " + SID "923::19" + Tag "Stateflow S-Function Quadcopter_Model_R2015_A 11" + Ports [1, 2] + Position [180, 100, 230, 160] + ZOrder 10 + FunctionName "sf_sfun" + PortCounts "[1 2]" + SFunctionDeploymentMode off + EnableBusSupport on + Port { + PortNumber 2 + Name "y" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "923::21" + Position [460, 241, 480, 259] + ZOrder 12 + } + Block { + BlockType Outport + Name "y" + SID "923::5" + Position [460, 101, 480, 119] + ZOrder -5 + IconDisplay "Port number" + } + Line { + ZOrder 1 + SrcBlock "u" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + Name "y" + ZOrder 2 + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "y" + DstPort 1 + } + Line { + ZOrder 3 + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + ZOrder 4 + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType RateTransition + Name "Rate Transition" + SID "924" + Position [755, 94, 795, 136] + ZOrder -13 + NamePlacement "alternate" + OutPortSampleTime "0.06" + } + Block { + BlockType RateTransition + Name "Rate Transition1" + SID "925" + Position [735, 210, 770, 250] + ZOrder -14 + OutPortSampleTime "0.06" + } + Block { + BlockType Reference + Name "VR Sink" + SID "926" + Ports [2] + Position [865, 76, 1055, 234] + ZOrder -15 + LibraryVersion "1.36" + SourceBlock "vrlib/VR Sink" + SourceType "Virtual Reality Sink" + InstantiateOnLoad on + SampleTime "-1" + ViewEnable on + RemoteChange off + RemoteView off + FieldsWritten "Helicopter.rotation.4.1.1.double#Helicopter.translation.3.1.1.double" + WorldFileName "quadrotor_world_ucart.wrl" + AutoView on + VideoDimensions "[]" + AllowVariableSize off + } + Line { + ZOrder 1 + SrcBlock "Displacement" + SrcPort 1 + DstBlock "Demux" + DstPort 1 + } + Line { + ZOrder 2 + SrcBlock "Bus\nCreator2" + SrcPort 1 + DstBlock "Bus\nSelector" + DstPort 1 + } + Line { + ZOrder 3 + SrcBlock "Demux" + SrcPort 1 + Points [40, 0; 0, 40; 120, 0] + DstBlock "Bus\nCreator1" + DstPort 3 + } + Line { + ZOrder 4 + SrcBlock "Gain" + SrcPort 1 + Points [5, 0; 0, -25] + DstBlock "Bus\nCreator1" + DstPort 2 + } + Line { + ZOrder 5 + SrcBlock "Gain2" + SrcPort 1 + DstBlock "Bus\nCreator1" + DstPort 1 + } + Line { + ZOrder 6 + SrcBlock "Rate Transition1" + SrcPort 1 + Points [35, 0; 0, -35] + DstBlock "VR Sink" + DstPort 2 + } + Line { + ZOrder 7 + SrcBlock "Rate Transition" + SrcPort 1 + DstBlock "VR Sink" + DstPort 1 + } + Line { + ZOrder 8 + SrcBlock "Demux" + SrcPort 3 + DstBlock "Gain" + DstPort 1 + } + Line { + ZOrder 9 + SrcBlock "Demux" + SrcPort 2 + Points [80, 0] + DstBlock "Gain2" + DstPort 1 + } + Line { + ZOrder 10 + SrcBlock "Bus\nCreator1" + SrcPort 1 + DstBlock "Gain1" + DstPort 1 + } + Line { + Name "<phi>" + ZOrder 11 + Labels [0, 0] + SrcBlock "Bus\nSelector" + SrcPort 1 + Points [0, -10; 45, 0; 0, 60] + DstBlock "Bus\nCreator" + DstPort 3 + } + Line { + Name "<psi>" + ZOrder 12 + Labels [0, 0] + SrcBlock "Bus\nSelector" + SrcPort 3 + Points [0, -10; 75, 0] + DstBlock "Bus\nCreator" + DstPort 2 + } + Line { + Name "<theta>" + ZOrder 13 + Labels [0, 0] + SrcBlock "Bus\nSelector" + SrcPort 2 + Points [30, 0; 0, -25] + DstBlock "Bus\nCreator" + DstPort 1 + } + Line { + ZOrder 14 + SrcBlock "Gain1" + SrcPort 1 + DstBlock "Rate Transition1" + DstPort 1 + } + Line { + Name "psi" + ZOrder 15 + Labels [0, 0] + SrcBlock "Demux1" + SrcPort 3 + DstBlock "Bus\nCreator2" + DstPort 3 + } + Line { + Name "theta" + ZOrder 16 + Labels [0, 0] + SrcBlock "Demux1" + SrcPort 2 + DstBlock "Bus\nCreator2" + DstPort 2 + } + Line { + Name "phi" + ZOrder 17 + Labels [0, 0] + SrcBlock "Demux1" + SrcPort 1 + DstBlock "Bus\nCreator2" + DstPort 1 + } + Line { + ZOrder 18 + SrcBlock "Euler Angles" + SrcPort 1 + DstBlock "Demux1" + DstPort 1 + } + Line { + ZOrder 19 + SrcBlock "Bus\nCreator" + SrcPort 1 + DstBlock "MATLAB Function" + DstPort 1 + } + Line { + ZOrder 20 + SrcBlock "MATLAB Function" + SrcPort 1 + DstBlock "Rate Transition" + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "3D Graphical Simulation1" + SID "936" + Ports [2] + Position [2445, 880, 2595, 940] + ZOrder 290 + RequestExecContextInheritance off + Variant off + Object { + $PropName "MaskObject" + $ObjectID 37 + $ClassName "Simulink.Mask" + Display "port_label('input',1, '\\Theta','texmode','on')\nport_label('input',2,'r_{o}','texmode','on')" + } + System { + Name "3D Graphical Simulation1" + Location [-8, -8, 1928, 1048] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "175" + Block { + BlockType Inport + Name "Euler Angles\n" + SID "937" + Position [180, 108, 210, 122] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "Displacement" + SID "938" + Position [180, 218, 210, 232] + ZOrder -2 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType BusCreator + Name "Bus\nCreator" + SID "939" + Ports [3, 1] + Position [600, 76, 610, 154] + ZOrder -3 + ShowName off + Inputs "3" + DisplayOption "bar" + InheritFromInputs on + } + Block { + BlockType BusCreator + Name "Bus\nCreator1" + SID "940" + Ports [3, 1] + Position [630, 191, 640, 269] + ZOrder -4 + ShowName off + Inputs "3" + DisplayOption "bar" + InheritFromInputs on + } + Block { + BlockType BusCreator + Name "Bus\nCreator2" + SID "941" + Ports [3, 1] + Position [385, 75, 390, 155] + ZOrder -5 + ShowName off + Inputs "3" + DisplayOption "bar" + InheritFromInputs on + } + Block { + BlockType BusSelector + Name "Bus\nSelector" + SID "942" + Ports [1, 3] + Position [500, 77, 505, 153] + ZOrder -6 + ShowName off + OutputSignals "phi,theta,psi" + Port { + PortNumber 1 + Name "<phi>" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 2 + Name "<theta>" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 3 + Name "<psi>" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Demux + Name "Demux" + SID "943" + Ports [1, 3] + Position [440, 183, 450, 267] + ZOrder -7 + BackgroundColor "black" + ShowName off + Outputs "3" + DisplayOption "bar" + } + Block { + BlockType Demux + Name "Demux1" + SID "944" + Ports [1, 3] + Position [290, 75, 295, 155] + ZOrder -8 + ShowName off + Outputs "3" + DisplayOption "bar" + Port { + PortNumber 1 + Name "phi" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 2 + Name "theta" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + Port { + PortNumber 3 + Name "psi" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Gain + Name "Gain" + SID "945" + Position [550, 240, 580, 270] + ZOrder -10 + Gain "-1" + ParamDataTypeStr "Inherit: Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Gain + Name "Gain1" + SID "946" + Position [670, 208, 710, 252] + ZOrder -11 + Gain "eye(3)*1" + Multiplication "Matrix(K*u)" + ParamDataTypeStr "Inherit: Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Gain + Name "Gain2" + SID "947" + Position [550, 190, 580, 220] + ZOrder -12 + Gain "-1" + ParamDataTypeStr "Inherit: Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType SubSystem + Name "MATLAB Function" + SID "948" + Ports [1, 1] + Position [655, 92, 725, 138] + ZOrder 5 + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ParametersOnly" + TreatAsAtomicUnit on + RequestExecContextInheritance off + SFBlockType "MATLAB Function" + Variant off + System { + Name "MATLAB Function" + Location [223, 338, 826, 833] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "21" + Block { + BlockType Inport + Name "u" + SID "948::1" + Position [20, 101, 40, 119] + ZOrder -1 + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "948::20" + Ports [1, 1] + Position [270, 230, 320, 270] + ZOrder 11 + Outputs "1" + } + Block { + BlockType S-Function + Name " SFunction " + SID "948::19" + Tag "Stateflow S-Function Quadcopter_Model_R2015_A 3" + Ports [1, 2] + Position [180, 100, 230, 160] + ZOrder 10 + FunctionName "sf_sfun" + PortCounts "[1 2]" + SFunctionDeploymentMode off + EnableBusSupport on + Port { + PortNumber 2 + Name "y" + RTWStorageClass "Auto" + DataLoggingNameMode "SignalName" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "948::21" + Position [460, 241, 480, 259] + ZOrder 12 + } + Block { + BlockType Outport + Name "y" + SID "948::5" + Position [460, 101, 480, 119] + ZOrder -5 + IconDisplay "Port number" + } + Line { + ZOrder 1 + SrcBlock "u" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + Name "y" + ZOrder 2 + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "y" + DstPort 1 + } + Line { + ZOrder 3 + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + ZOrder 4 + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType RateTransition + Name "Rate Transition" + SID "949" + Position [755, 94, 795, 136] + ZOrder -13 + NamePlacement "alternate" + OutPortSampleTime "0.06" + } + Block { + BlockType RateTransition + Name "Rate Transition1" + SID "950" + Position [735, 210, 770, 250] + ZOrder -14 + OutPortSampleTime "0.06" + } + Block { + BlockType Reference + Name "VR Sink" + SID "951" + Ports [2] + Position [865, 76, 1055, 234] + ZOrder -15 + LibraryVersion "1.36" + SourceBlock "vrlib/VR Sink" + SourceType "Virtual Reality Sink" + InstantiateOnLoad on + SampleTime "-1" + ViewEnable on + RemoteChange off + RemoteView off + FieldsWritten "Helicopter.rotation.4.1.1.double#Helicopter.translation.3.1.1.double" + WorldFileName "quadrotor_world_ucart.wrl" + AutoView on + VideoDimensions "[]" + AllowVariableSize off + } + Line { + ZOrder 2 + SrcBlock "Bus\nCreator2" + SrcPort 1 + DstBlock "Bus\nSelector" + DstPort 1 + } + Line { + ZOrder 3 + SrcBlock "Demux" + SrcPort 1 + Points [40, 0; 0, 40; 120, 0] + DstBlock "Bus\nCreator1" + DstPort 3 + } + Line { + ZOrder 4 + SrcBlock "Gain" + SrcPort 1 + Points [5, 0; 0, -25] + DstBlock "Bus\nCreator1" + DstPort 2 + } + Line { + ZOrder 5 + SrcBlock "Gain2" + SrcPort 1 + DstBlock "Bus\nCreator1" + DstPort 1 + } + Line { + ZOrder 6 + SrcBlock "Rate Transition1" + SrcPort 1 + Points [35, 0; 0, -35] + DstBlock "VR Sink" + DstPort 2 + } + Line { + ZOrder 7 + SrcBlock "Rate Transition" + SrcPort 1 + DstBlock "VR Sink" + DstPort 1 + } + Line { + ZOrder 8 + SrcBlock "Demux" + SrcPort 3 + DstBlock "Gain" + DstPort 1 + } + Line { + ZOrder 9 + SrcBlock "Demux" + SrcPort 2 + Points [80, 0] + DstBlock "Gain2" + DstPort 1 + } + Line { + ZOrder 10 + SrcBlock "Bus\nCreator1" + SrcPort 1 + DstBlock "Gain1" + DstPort 1 + } + Line { + Name "<phi>" + ZOrder 11 + Labels [0, 0] + SrcBlock "Bus\nSelector" + SrcPort 1 + Points [0, -10; 45, 0; 0, 60] + DstBlock "Bus\nCreator" + DstPort 3 + } + Line { + Name "<psi>" + ZOrder 12 + Labels [0, 0] + SrcBlock "Bus\nSelector" + SrcPort 3 + Points [0, -10; 75, 0] + DstBlock "Bus\nCreator" + DstPort 2 + } + Line { + Name "<theta>" + ZOrder 13 + Labels [0, 0] + SrcBlock "Bus\nSelector" + SrcPort 2 + Points [30, 0; 0, -25] + DstBlock "Bus\nCreator" + DstPort 1 + } + Line { + ZOrder 14 + SrcBlock "Gain1" + SrcPort 1 + DstBlock "Rate Transition1" + DstPort 1 + } + Line { + Name "psi" + ZOrder 15 + Labels [0, 0] + SrcBlock "Demux1" + SrcPort 3 + DstBlock "Bus\nCreator2" + DstPort 3 + } + Line { + Name "theta" + ZOrder 16 + Labels [0, 0] + SrcBlock "Demux1" + SrcPort 2 + DstBlock "Bus\nCreator2" + DstPort 2 + } + Line { + Name "phi" + ZOrder 17 + Labels [0, 0] + SrcBlock "Demux1" + SrcPort 1 + DstBlock "Bus\nCreator2" + DstPort 1 + } + Line { + ZOrder 19 + SrcBlock "Bus\nCreator" + SrcPort 1 + DstBlock "MATLAB Function" + DstPort 1 + } + Line { + ZOrder 20 + SrcBlock "MATLAB Function" + SrcPort 1 + DstBlock "Rate Transition" + DstPort 1 + } + Line { + ZOrder 21 + SrcBlock "Displacement" + SrcPort 1 + DstBlock "Demux" + DstPort 1 + } + Line { + ZOrder 22 + SrcBlock "Euler Angles\n" + SrcPort 1 + DstBlock "Demux1" + DstPort 1 + } + } + } + Block { + BlockType Delay + Name "Delay" + SID "910" + Ports [1, 1] + Position [2090, 843, 2125, 877] + ZOrder 286 + BlockMirror on + InputPortMap "u0" + DelayLength "1" + InitialCondition "0" + } + Block { + BlockType Delay + Name "Delay1" + SID "909" + Ports [1, 1] + Position [1660, 638, 1695, 672] + ZOrder 285 + BlockMirror on + InputPortMap "u0" + DelayLength "1" + InitialCondition "0" + } + Block { + BlockType Reference + Name "First-Order\nHold" + SID "953" + Ports [1, 1] + Position [2315, 845, 2350, 875] + ZOrder 292 + LibraryVersion "1.388" + DisableCoverage on + SourceBlock "simulink/Discrete/First-Order\nHold" + SourceType "First-Order Hold" + ContentPreviewEnabled off + Ts "1" + } + Block { + BlockType Scope + Name "Scope" + SID "894" + Ports [1] + Position [1385, 669, 1415, 701] + ZOrder 270 + NumInputPorts "1" + Open off + TimeRange auto + TickLabels OneTimeTick + ShowLegends off + LimitDataPoints off + MaxDataPoints 5000 + SaveToWorkspace off + SaveName ScopeData1 + YMin -10 + YMax 10 + SampleInput off + SampleTime -1 + ZoomMode on + Grid on + DataFormat StructureWithTime + Decimation 1 + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + Location [680 330 1240 750] + } + Block { + BlockType Scope + Name "Scope1" + SID "895" + Ports [1] + Position [1385, 599, 1415, 631] + ZOrder 271 + NumInputPorts "1" + Open off + TimeRange auto + TickLabels OneTimeTick + ShowLegends off + LimitDataPoints off + MaxDataPoints 5000 + SaveToWorkspace off + SaveName ScopeData2 + YMin -10 + YMax 10 + SampleInput off + SampleTime -1 + ZoomMode on + Grid on + DataFormat StructureWithTime + Decimation 1 + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + Location [680 330 1240 750] + } + Block { + BlockType Scope + Name "Scope2" + SID "896" + Ports [1] + Position [2085, 1119, 2115, 1151] + ZOrder 277 + NumInputPorts "1" + Open off + TimeRange auto + TickLabels OneTimeTick + ShowLegends off + LimitDataPoints on + MaxDataPoints 5000 + SaveToWorkspace off + SaveName ScopeData3 + YMin -5.34181 + YMax 48.07631 + SampleInput off + SampleTime -1 + ZoomMode on + Grid on + DataFormat Array + Decimation 1 + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + Location [2 84 960 1038] + } + Block { + BlockType Scope + Name "Scope3" + SID "897" + Ports [1] + Position [2255, 579, 2285, 611] + ZOrder 278 + NumInputPorts "1" + Open off + TimeRange auto + TickLabels OneTimeTick + ShowLegends off + LimitDataPoints on + MaxDataPoints 5000 + SaveToWorkspace off + SaveName ScopeData4 + YMin -0.05524 + YMax 0.02485 + SampleInput off + SampleTime -1 + ZoomMode on + Grid on + DataFormat Array + Decimation 1 + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + Location [1 76 1921 1039] + } + Block { + BlockType Scope + Name "Scope6" + SID "898" + Ports [1] + Position [1955, 469, 1985, 501] + ZOrder 280 + NumInputPorts "1" + Open off + TimeRange auto + TickLabels OneTimeTick + ShowLegends off + LimitDataPoints off + MaxDataPoints 5000 + SaveToWorkspace off + SaveName ScopeData5 + YMin -10 + YMax 10 + SampleInput off + SampleTime -1 + ZoomMode on + Grid on + DataFormat StructureWithTime + Decimation 1 + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + Location [680 330 1240 750] + } + Block { + BlockType Scope + Name "Scope7" + SID "899" + Ports [1] + Position [1955, 544, 1985, 576] + ZOrder 281 + NumInputPorts "1" + Open off + TimeRange auto + TickLabels OneTimeTick + ShowLegends off + LimitDataPoints off + MaxDataPoints 5000 + SaveToWorkspace off + SaveName ScopeData6 + YMin -10 + YMax 10 + SampleInput off + SampleTime -1 + ZoomMode on + Grid on + DataFormat StructureWithTime + Decimation 1 + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + 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" + } + Location [680 330 1240 750] + } + Block { + BlockType S-Function + Name "Soft Real Time" + SID "927" + Ports [] + Position [1923, 985, 2010, 1016] + ZOrder 288 + ShowName off + Commented "on" + FunctionName "sfun_time" + Parameters "x" + SFunctionDeploymentMode off + EnableBusSupport off + Object { + $PropName "MaskObject" + $ObjectID 38 + $ClassName "Simulink.Mask" + Display "color('red')\ndisp('Soft Real Time')\n" + Object { + $PropName "Parameters" + $ObjectID 39 + $ClassName "Simulink.MaskParameter" + Type "edit" + Name "x" + Prompt "Time Scaling Factor" + Value "1" + } + } + } + Block { + BlockType Outport + Name "euler_angles_filtered" + SID "901" + Position [2340, 628, 2370, 642] + ZOrder 262 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "euler_rates" + SID "904" + Position [2340, 913, 2370, 927] + ZOrder 259 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "current_position" + SID "928" + Position [2340, 973, 2370, 987] + ZOrder 289 + Port "3" + IconDisplay "Port number" + } + Line { + ZOrder 170 + SrcBlock "\n\n\n\n\n\n\n\n\n\n" + SrcPort 1 + Points [23, 0] + Branch { + ZOrder 199 + Points [0, -70] + DstBlock "\n\n\n\n\n\n\n\n\n\n\n\n1" + DstPort 1 + } + Branch { + ZOrder 198 + Points [0, 25] + DstBlock "Scope1" + DstPort 1 + } + } + Line { + ZOrder 173 + SrcBlock "\n\n\n\n\n\n\n\n\n\n" + SrcPort 2 + Points [15, 0] + Branch { + ZOrder 172 + Points [0, -35] + DstBlock "Scope" + DstPort 1 + } + Branch { + ZOrder 171 + DstBlock "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + DstPort 1 + } + } + Line { + ZOrder 174 + SrcBlock "B_vo_dot" + SrcPort 1 + DstBlock "\n\n\n\n\n\n\n\n\n\n" + DstPort 1 + } + Line { + ZOrder 175 + SrcBlock "B_vo" + SrcPort 1 + DstBlock "\n\n\n\n\n\n\n\n\n\n" + DstPort 2 + } + Line { + ZOrder 176 + SrcBlock "B_Omega" + SrcPort 1 + DstBlock "\n\n\n\n\n\n\n\n\n\n" + DstPort 3 + } + Line { + ZOrder 177 + SrcBlock "B_g" + SrcPort 1 + DstBlock "\n\n\n\n\n\n\n\n\n\n" + DstPort 4 + } + Line { + ZOrder 197 + SrcBlock "\n\n\n\n\n\n\n\n\n\n\n\n1" + SrcPort 2 + Points [17, 0] + Branch { + ZOrder 207 + Points [0, 60] + DstBlock "Delay1" + DstPort 1 + } + Branch { + ZOrder 202 + Points [31, 0] + Branch { + ZOrder 201 + DstBlock "\n\n\n\n\n\n\n\n" + DstPort 2 + } + Branch { + ZOrder 180 + Points [0, -35] + DstBlock "Scope7" + DstPort 1 + } + } + } + Line { + ZOrder 195 + SrcBlock "\n\n\n\n\n\n\n\n\n\n\n\n1" + SrcPort 1 + Points [47, 0] + Branch { + ZOrder 205 + DstBlock "\n\n\n\n\n\n\n\n" + DstPort 1 + } + Branch { + ZOrder 183 + Points [0, -35] + DstBlock "Scope6" + DstPort 1 + } + } + Line { + ZOrder 209 + SrcBlock "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + SrcPort 1 + Points [58, 0] + Branch { + ZOrder 221 + Points [0, 170] + DstBlock "euler_rates" + DstPort 1 + } + Branch { + ZOrder 220 + Points [0, -80] + DstBlock "\n\n\n\n\n\n\n\n" + DstPort 3 + } + } + Line { + ZOrder 208 + SrcBlock "Delay" + SrcPort 1 + Points [-102, 0] + Branch { + ZOrder 191 + Points [0, -115] + DstBlock "\n\n\n\n\n\n\n\n" + DstPort 4 + } + Branch { + ZOrder 190 + Points [-566, 0; 0, -80] + DstBlock "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + DstPort 2 + } + } + Line { + ZOrder 204 + SrcBlock "Delay1" + SrcPort 1 + Points [-199, 0; 0, -60] + DstBlock "\n\n\n\n\n\n\n\n\n\n\n\n1" + DstPort 2 + } + Line { + ZOrder 211 + SrcBlock "euler_angles" + SrcPort 1 + Points [30, 0] + Branch { + ZOrder 214 + Points [0, 60] + DstBlock "Scope2" + DstPort 1 + } + Branch { + ZOrder 213 + DstBlock "3D Graphical Simulation" + DstPort 2 + } + } + Line { + ZOrder 189 + SrcBlock "\n\n\n\n\n\n\n\n" + SrcPort 1 + Points [16, 0] + Branch { + ZOrder 219 + DstBlock "euler_angles_filtered" + DstPort 1 + } + Branch { + ZOrder 216 + Points [0, 225] + Branch { + ZOrder 242 + DstBlock "First-Order\nHold" + DstPort 1 + } + Branch { + ZOrder 230 + DstBlock "Delay" + DstPort 1 + } + } + Branch { + ZOrder 187 + Points [0, -40] + DstBlock "Scope3" + DstPort 1 + } + } + Line { + ZOrder 212 + SrcBlock "E_ro" + SrcPort 1 + Points [53, 0] + Branch { + ZOrder 227 + Points [0, -65] + Branch { + ZOrder 229 + Points [0, -23; 352, 0] + DstBlock "3D Graphical Simulation1" + DstPort 2 + } + Branch { + ZOrder 228 + DstBlock "current_position" + DstPort 1 + } + } + Branch { + ZOrder 225 + DstBlock "3D Graphical Simulation" + DstPort 1 + } + } + Line { + ZOrder 243 + SrcBlock "First-Order\nHold" + SrcPort 1 + Points [75, 0] + DstBlock "3D Graphical Simulation1" + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name " \n" + SID "583" + Ports [4, 4] + Position [895, 478, 1075, 712] + ZOrder 65 + RequestExecContextInheritance off + Variant off + Object { + $PropName "MaskObject" + $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" + "de', 'on');\nport_label('output', 1, 'Rotor 1 Duty Cycle', 'texmode', 'on');\nport_label('output', 2, 'Rotor 2 Duty C" + "ycle', 'texmode', 'on');\nport_label('output', 3, 'Rotor 3 Duty Cycle', 'texmode', 'on');\nport_label('output', 4, 'R" + "otor 4 Duty Cycle', 'texmode', 'on');\ndisp('Control System', 'texmode', 'on');" + } + System { + Name " \n" + Location [-8, -8, 1928, 1048] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "150" + Block { + BlockType Inport + Name "setpoints" + SID "585" + Position [110, 348, 140, 362] + ZOrder 2 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "euler_angles_filtered" + SID "591" + Position [110, 403, 140, 417] + ZOrder 9 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "euler_rates" + SID "592" + Position [110, 448, 140, 462] + ZOrder 11 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "current_position" + SID "584" + Position [110, 493, 140, 507] + ZOrder -1 + Port "4" + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "Rotor 0 Duty Cycle" + SID "597" + Position [480, 348, 510, 362] + ZOrder -2 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "Rotor 1 Duty Cycle" + SID "598" + Position [480, 403, 510, 417] + ZOrder 6 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "Rotor 2 Duty Cycle" + SID "599" + Position [480, 448, 510, 462] + ZOrder 7 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "Rotor 3 Duty Cycle" + SID "600" + Position [480, 493, 510, 507] + ZOrder 8 + Port "4" + IconDisplay "Port number" + } + } + } + Block { + BlockType SubSystem + Name "Communication System" + SID "574" + Ports [0, 1] + Position [760, 482, 815, 528] + ZOrder 66 + RequestExecContextInheritance off + Variant off + Object { + $PropName "MaskObject" + $ObjectID 41 + $ClassName "Simulink.Mask" + Display "port_label('output', 1, 'Setpoints', 'texmode', 'on');" + } + System { + Name "Communication System" + Location [-8, -8, 1928, 1048] + Open off + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "250" + Block { + BlockType Step + Name "Step" + SID "929" + Position [925, 390, 955, 420] + ZOrder 32 + Before "zeros(4,1)" + After "[0; 0; 0; 0]" + SampleTime "0" + } + Block { + BlockType Outport + Name "setpoints" + SID "577" + Position [1050, 398, 1080, 412] + ZOrder 6 + IconDisplay "Port number" + } + Line { + ZOrder 8 + SrcBlock "Step" + SrcPort 1 + DstBlock "setpoints" + DstPort 1 + } + } + } + Line { + ZOrder 172 + SrcBlock " \n" + SrcPort 1 + DstBlock "\n\n\n\n\n\n" + DstPort 1 + } + Line { + ZOrder 260 + SrcBlock " " + SrcPort 2 + Points [23, 0; 0, 147; -843, 0; 0, -117] + DstBlock " \n" + DstPort 3 + } + Line { + ZOrder 233 + SrcBlock " " + SrcPort 1 + Points [40, 0; 0, 246; -885, 0; 0, -196] + DstBlock " \n" + DstPort 2 + } + Line { + ZOrder 180 + SrcBlock "Communication System" + SrcPort 1 + DstBlock " \n" + DstPort 1 + } + Line { + ZOrder 186 + SrcBlock " \n" + SrcPort 2 + DstBlock "\n\n\n\n\n\n" + DstPort 2 + } + Line { + ZOrder 187 + SrcBlock " \n" + SrcPort 3 + DstBlock "\n\n\n\n\n\n" + DstPort 3 + } + Line { + ZOrder 188 + SrcBlock " \n" + SrcPort 4 + DstBlock "\n\n\n\n\n\n" + DstPort 4 + } + Line { + ZOrder 227 + SrcBlock "\n\n\n\n\n\n" + SrcPort 1 + DstBlock " " + DstPort 1 + } + Line { + ZOrder 229 + SrcBlock "\n\n\n\n\n\n" + SrcPort 2 + DstBlock " " + DstPort 2 + } + Line { + ZOrder 230 + SrcBlock "\n\n\n\n\n\n" + SrcPort 3 + DstBlock " " + DstPort 3 + } + Line { + ZOrder 228 + SrcBlock "\n\n\n\n\n\n" + SrcPort 4 + DstBlock " " + DstPort 4 + } + Line { + ZOrder 231 + SrcBlock "\n\n\n\n\n\n" + SrcPort 5 + DstBlock " " + DstPort 5 + } + Line { + ZOrder 232 + SrcBlock "\n\n\n\n\n\n" + SrcPort 6 + DstBlock " " + DstPort 6 + } + Line { + ZOrder 261 + SrcBlock " " + SrcPort 3 + Points [9, 0; 0, 51; -804, 0; 0, -41] + DstBlock " \n" + DstPort 4 + } + } +} +#Finite State Machines +# +# Stateflow 80000010 +# +# +Stateflow { + machine { + id 1 + name "Quadcopter_Model_R2015_A" + created "27-Oct-2016 22:17:19" + isLibrary 0 + sfVersion 80000006 + firstTarget 139 + } + chart { + id 2 + machine 1 + name "\n\n\n\n\n\n/\n\n\n\n" + windowPosition [422 539.941 189 413] + viewLimits [0 156.75 0 153.75] + screen [1 1 3600 1200 1.180555555555556] + treeNode [0 3 0 0] + viewObj 2 + ssIdHighWaterMark 7 + decomposition CLUSTER_CHART + type EML_CHART + chartFileNumber 1 + disableImplicitCasting 1 + eml { + name "gravity" + } + firstData 4 + firstTransition 8 + firstJunction 7 + } + state { + id 3 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 2 + treeNode [2 0 0 0] + superState SUBCHART + subviewer 2 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "function E_Fg = gravity( m, g)\n\nE_Fg = [0; 0; m*g];\n" + editorLayout "100 M4x1[10 5 700 500]" + } + } + data { + id 4 + ssIdNumber 5 + name "E_Fg" + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + linkNode [2 0 5] + } + data { + id 5 + ssIdNumber 6 + name "m" + scope PARAMETER_DATA + paramIndexForInitFromWorkspace 1 + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [2 4 6] + } + data { + id 6 + ssIdNumber 7 + name "g" + scope PARAMETER_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [2 5 0] + } + junction { + id 7 + position [23.5747 49.5747 7] + chart 2 + subviewer 2 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + linkNode [2 0 0] + } + transition { + id 8 + labelString "{eML_blk_kernel();}" + labelPosition [28.125 13.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 7 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 2 + dataLimits [21.175 25.975 14.625 42.575] + subviewer 2 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + linkNode [2 0 0] + } + instance { + id 9 + machine 1 + name "\n\n\n\n\n\n/\n\n\n\n" + chart 2 + } + chart { + id 10 + machine 1 + name "\n\n\n\n\n\n/\n\n\n\n\n\n\n" + windowPosition [422 539.941 189 413] + viewLimits [0 156.75 0 153.75] + screen [1 1 3600 1200 1.180555555555556] + treeNode [0 11 0 0] + viewObj 10 + ssIdHighWaterMark 11 + decomposition CLUSTER_CHART + type EML_CHART + chartFileNumber 2 + disableImplicitCasting 1 + eml { + name "linear_body_earth_conversion" + } + firstData 12 + firstTransition 16 + firstJunction 15 + } + state { + id 11 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 10 + treeNode [10 0 0 0] + superState SUBCHART + subviewer 10 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "function E_ro = linear_body_earth_conversion(B_vo, euler_angles)\n\neuler_rates = zeros(3,1);\nE" + "_ro = zeros(3,1);\n\nphi = euler_angles(1);\ntheta = euler_angles(2);\npsi = euler_angles(3);\n\nLeb = [cos(thet" + "a)*cos(psi), sin(phi)*sin(theta)*cos(psi)-cos(phi)*sin(psi), cos(phi)*sin(theta)*cos(psi)+sin(phi)*sin(psi); ..." + "\n cos(theta)*sin(psi), sin(phi)*sin(theta)*sin(psi)+cos(phi)*cos(psi), cos(phi)*sin(theta)*sin(psi)-sin(p" + "hi)*cos(psi); ...\n -sin(theta) , sin(phi)*cos(theta) , c" + "os(phi)*cos(theta) ];\n\nE_ro = Leb * B_vo;" + editorLayout "100 M4x1[10 5 700 500]" + } + } + data { + id 12 + ssIdNumber 7 + name "B_vo" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [10 0 13] + } + data { + id 13 + ssIdNumber 11 + name "euler_angles" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [10 12 14] + } + data { + id 14 + ssIdNumber 9 + name "E_ro" + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + linkNode [10 13 0] + } + junction { + id 15 + position [23.5747 49.5747 7] + chart 10 + subviewer 10 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + linkNode [10 0 0] + } + transition { + id 16 + labelString "{eML_blk_kernel();}" + labelPosition [28.125 13.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 15 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 10 + dataLimits [21.175 25.975 14.625 42.575] + subviewer 10 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + linkNode [10 0 0] + } + instance { + id 17 + machine 1 + name "\n\n\n\n\n\n/\n\n\n\n\n\n\n" + chart 10 + } + chart { + id 18 + machine 1 + name " /3D Graphical Simulation1/MATLAB Function" + windowPosition [422 539.941 189 413] + viewLimits [0 156.75 0 153.75] + screen [1 1 3600 1200 1.180555555555556] + treeNode [0 19 0 0] + viewObj 18 + ssIdHighWaterMark 5 + decomposition CLUSTER_CHART + type EML_CHART + chartFileNumber 3 + disableImplicitCasting 1 + eml { + name "eigenaxis_ucart" + } + firstData 20 + firstTransition 23 + firstJunction 22 + } + state { + id 19 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 18 + treeNode [18 0 0 0] + superState SUBCHART + subviewer 18 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "function y = eigenaxis_ucart(u)\n\n\nif abs(u(1))< 0.0001\n u(1) = 0.0001;\nend\n\nif abs(u(2)" + ")< 0.0001\n u(2) = 0.0001;\nend\n\nif abs(u(3))< 0.0001\n u(3) = 0.0001;\nend\n\nu = [ -u(1); -u(2); u(3) " + "];% [Pitch, Yaw, Roll] \n\nC11 = cos(u(2))*cos(u(3));\nC12 = cos(u(2))*sin(u(3));\nC13 = -sin(u(2));\nC21 = sin(" + "u(1))*sin(u(2))*cos(u(3))-cos(u(1))*sin(u(3));\nC22 = sin(u(1))*sin(u(2))*sin(u(3))+cos(u(1))*cos(u(3));\nC23 = " + "sin(u(1))*cos(u(2));\nC31 = cos(u(1))*sin(u(2))*cos(u(3))+sin(u(1))*sin(u(3));\nC32 = cos(u(1))*sin(u(2))*sin(u(" + "3))-sin(u(1))*cos(u(3));\nC33 = cos(u(1))*cos(u(2));\n \ntheta = acos(0.5*(C11+C22+C33-1));\n\ne = [C23-C32; " + "C31-C13; C12-C21]/(2*sin(theta));\n \ny = [e; theta];\n\n" + editorLayout "100 M4x1[10 5 700 500]" + } + } + data { + id 20 + ssIdNumber 4 + name "u" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [18 0 21] + } + data { + id 21 + ssIdNumber 5 + name "y" + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + linkNode [18 20 0] + } + junction { + id 22 + position [23.5747 49.5747 7] + chart 18 + subviewer 18 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + linkNode [18 0 0] + } + transition { + id 23 + labelString "{eML_blk_kernel();}" + labelPosition [28.125 13.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 22 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 18 + dataLimits [21.175 25.975 14.625 42.575] + subviewer 18 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + linkNode [18 0 0] + } + instance { + id 24 + machine 1 + name " /3D Graphical Simulation1/MATLAB Function" + chart 18 + } + chart { + id 25 + machine 1 + name "\n\n\n\n\n\n/\n\n" + windowPosition [422 539.941 189 413] + viewLimits [0 156.75 0 153.75] + screen [1 1 3600 1200 1.180555555555556] + treeNode [0 26 0 0] + viewObj 25 + ssIdHighWaterMark 18 + decomposition CLUSTER_CHART + type EML_CHART + chartFileNumber 4 + disableImplicitCasting 1 + eml { + name "ESC" + } + firstData 27 + firstTransition 36 + firstJunction 35 + } + state { + id 26 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 25 + treeNode [25 0 0 0] + superState SUBCHART + subviewer 25 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "function Vb_eff = ESC(rotor_0_duty_cycle, rotor_1_duty_cycle, rotor_2_duty_cycle, rotor_3_duty_" + "cycle, Pmin, Pmax, Vb)\n\n% Define u_Pi for each of the rotors\nu_P0 = (rotor_0_duty_cycle/100 - Pmin) / (Pmax -" + " Pmin);\nu_P1 = (rotor_1_duty_cycle/100 - Pmin) / (Pmax - Pmin);\nu_P2 = (rotor_2_duty_cycle/100 - Pmin) / (Pmax" + " - Pmin);\nu_P3 = (rotor_3_duty_cycle/100 - Pmin) / (Pmax - Pmin);\n\n% Determine the effective battery voltage " + "from each ESC\nVb_eff_0 = u_P0 * Vb;\nVb_eff_1 = u_P1 * Vb;\nVb_eff_2 = u_P2 * Vb;\nVb_eff_3 = u_P3 * Vb;\n\nVb_" + "eff = [Vb_eff_0, Vb_eff_1, Vb_eff_2, Vb_eff_3];\n" + editorLayout "100 M4x1[10 5 700 500]" + } + } + data { + id 27 + ssIdNumber 4 + name "rotor_0_duty_cycle" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [25 0 28] + } + data { + id 28 + ssIdNumber 5 + name "Vb_eff" + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + linkNode [25 27 29] + } + data { + id 29 + ssIdNumber 6 + name "rotor_1_duty_cycle" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [25 28 30] + } + data { + id 30 + ssIdNumber 7 + name "rotor_2_duty_cycle" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [25 29 31] + } + data { + id 31 + ssIdNumber 8 + name "rotor_3_duty_cycle" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [25 30 32] + } + data { + id 32 + ssIdNumber 16 + name "Pmin" + scope PARAMETER_DATA + paramIndexForInitFromWorkspace 1 + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [25 31 33] + } + data { + id 33 + ssIdNumber 17 + name "Pmax" + scope PARAMETER_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [25 32 34] + } + data { + id 34 + ssIdNumber 18 + name "Vb" + scope PARAMETER_DATA + paramIndexForInitFromWorkspace 2 + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [25 33 0] + } + junction { + id 35 + position [23.5747 49.5747 7] + chart 25 + subviewer 25 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + linkNode [25 0 0] + } + transition { + id 36 + labelString "{eML_blk_kernel();}" + labelPosition [28.125 13.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 35 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 25 + dataLimits [21.175 25.975 14.625 42.575] + subviewer 25 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + linkNode [25 0 0] + } + instance { + id 37 + machine 1 + name "\n\n\n\n\n\n/\n\n" + chart 25 + } + chart { + id 38 + machine 1 + name "\n\n\n\n\n\n/\n" + windowPosition [422 539.941 189 413] + viewLimits [0 156.75 0 153.75] + screen [1 1 3600 1200 1.180555555555556] + treeNode [0 39 0 0] + viewObj 38 + ssIdHighWaterMark 14 + decomposition CLUSTER_CHART + type EML_CHART + chartFileNumber 5 + disableImplicitCasting 1 + eml { + name "motor" + } + firstData 40 + firstTransition 50 + firstJunction 49 + } + state { + id 39 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 38 + treeNode [38 0 0 0] + superState SUBCHART + subviewer 38 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "function angular_acceleration = motor(Vb_eff, angular_velocity, Rm, Kv, Kq, Kd, If, Jreq)\n\n% D" + "efine each motors effective battery voltage\nVb_eff_0 = Vb_eff(1);\nVb_eff_1 = Vb_eff(2);\nVb_eff_2 = Vb_eff(3);" + "\nVb_eff_3 = Vb_eff(4);\n\n% Determine the angular velocity of each rotor from feedback\nw_0 = angular_velocity(" + "1);\nw_1 = angular_velocity(2);\nw_2 = angular_velocity(3);\nw_3 = angular_velocity(4);\n\n% Determine angular a" + "cceleration of each rotor\nw_0_dot = 1/(Jreq*Rm*Kq) * Vb_eff_0 - 1/(Jreq*Rm*Kq*Kv) * w_0 - 1/(Jreq*Kq)*If - (Kd/" + "Jreq) * w_0^2;\nw_1_dot = 1/(Jreq*Rm*Kq) * Vb_eff_1 - 1/(Jreq*Rm*Kq*Kv) * w_1 - 1/(Jreq*Kq)*If - (Kd/Jreq) * w_1" + "^2;\nw_2_dot = 1/(Jreq*Rm*Kq) * Vb_eff_2 - 1/(Jreq*Rm*Kq*Kv) * w_2 - 1/(Jreq*Kq)*If - (Kd/Jreq) * w_2^2;\nw_3_do" + "t = 1/(Jreq*Rm*Kq) * Vb_eff_3 - 1/(Jreq*Rm*Kq*Kv) * w_3 - 1/(Jreq*Kq)*If - (Kd/Jreq) * w_3^2;\n\nangular_acceler" + "ation = [w_0_dot, w_1_dot, w_2_dot, w_3_dot]; " + editorLayout "100 M4x1[10 5 700 500]" + } + } + data { + id 40 + ssIdNumber 4 + name "Vb_eff" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [38 0 41] + } + data { + id 41 + ssIdNumber 8 + name "angular_velocity" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [38 40 42] + } + data { + id 42 + ssIdNumber 7 + name "angular_acceleration" + scope OUTPUT_DATA + machine 1 + props { + array { + size "1,4" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + linkNode [38 41 43] + } + data { + id 43 + ssIdNumber 9 + name "Rm" + scope PARAMETER_DATA + paramIndexForInitFromWorkspace 5 + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [38 42 44] + } + data { + id 44 + ssIdNumber 10 + name "Kv" + scope PARAMETER_DATA + paramIndexForInitFromWorkspace 4 + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [38 43 45] + } + data { + id 45 + ssIdNumber 11 + name "Kq" + scope PARAMETER_DATA + paramIndexForInitFromWorkspace 3 + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [38 44 46] + } + data { + id 46 + ssIdNumber 12 + name "Kd" + scope PARAMETER_DATA + paramIndexForInitFromWorkspace 2 + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [38 45 47] + } + data { + id 47 + ssIdNumber 13 + name "If" + scope PARAMETER_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [38 46 48] + } + data { + id 48 + ssIdNumber 14 + name "Jreq" + scope PARAMETER_DATA + paramIndexForInitFromWorkspace 1 + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [38 47 0] + } + junction { + id 49 + position [23.5747 49.5747 7] + chart 38 + subviewer 38 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + linkNode [38 0 0] + } + transition { + id 50 + labelString "{eML_blk_kernel();}" + labelPosition [28.125 13.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 49 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 38 + dataLimits [21.175 25.975 14.625 42.575] + subviewer 38 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + linkNode [38 0 0] + } + instance { + id 51 + machine 1 + name "\n\n\n\n\n\n/\n" + chart 38 + } + chart { + id 52 + machine 1 + name "\n\n\n\n\n\n/\n\n\n\n\n\n\n\n" + windowPosition [422 539.941 189 413] + viewLimits [0 156.75 0 153.75] + screen [1 1 3600 1200 1.180555555555556] + treeNode [0 53 0 0] + viewObj 52 + ssIdHighWaterMark 30 + decomposition CLUSTER_CHART + type EML_CHART + chartFileNumber 6 + disableImplicitCasting 1 + eml { + name "rotor" + } + firstData 54 + firstTransition 72 + firstJunction 71 + } + state { + id 53 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 52 + treeNode [52 0 0 0] + superState SUBCHART + subviewer 52 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "function [B_omega_dot, B_vo_dot]= rotor(angular_acceleration, angular_velocity, B_Fg, B_omega, B_" + "vo, m, Kt, Kd, rhx, rhy, rhz, Jreq, Jxx, Jyy, Jzz)\n\nB_vo_dot = zeros(3,1);\nB_omega_dot = zeros(3,1);\n\n% Cre" + "ate J vector\nJ = [Jxx, 0 , 0 ; ...\n 0 , Jyy, 0 ; ...\n 0 , 0 , Jzz;];\n\n% Create r_hi vector\nr" + "h_0 = [-rhx; rhy; rhz];\nrh_1 = [rhx; rhy; rhz];\nrh_2 = [-rhx; -rhy; rhz];\nrh_3 = [rhx; -rhy; rhz];\n\n% Defin" + "e vector from body frame origin to center of mass\nbr_oc = [0; 0; 0];\n\n% Define 3x3 Identity Matrix\nI = eye(3" + ");\n\n% Create gamma vectors\ngamma_Ti = [0; 0; -1];\ngamma_omega_03 = [0; 0; -1]; %Rotors 0 and 3 use this gam" + "ma_omega vector\ngamma_omega_12 = [0; 0; 1]; %Rotors 1 and 2 use this gamma_omega vector\n\n% Define angular vel" + "ocities for each rotor\nw_0 = angular_velocity(1);\nw_1 = angular_velocity(2);\nw_2 = angular_velocity(3);\nw_3 " + "= angular_velocity(4);\n\n% Define angular acceleration for each rotor\nw_0_dot = angular_acceleration(1);\nw_1_" + "dot = angular_acceleration(2);\nw_2_dot = angular_acceleration(3);\nw_3_dot = angular_acceleration(4);\n\n% Defi" + "ne the rotor force in the z-direction from each rotor\nB_Fr_0 = Kt * w_0 * w_0 * gamma_Ti;\nB_Fr_1 = Kt * w_1 * " + "w_1 * gamma_Ti;\nB_Fr_2 = Kt * w_2 * w_2 * gamma_Ti;\nB_Fr_3 = Kt * w_3 * w_3 * gamma_Ti;\n\n% Sum up the rotor " + "forces in the z-direction from each vector to get the\n% total body force in the z-direction\nB_Fr = B_Fr_0 + B_" + "Fr_1 + B_Fr_2 + B_Fr_3;\n\n% Define the in-plane drag and induced torque produced by each rotor\n B_Q_d0 = -1 * " + "Kd * w_0 * w_0 * gamma_omega_03;\n B_Q_d1 = -1 * Kd * w_1 * w_1 * gamma_omega_12;\n B_Q_d2 = -1 * Kd * w_2 * w_2" + " * gamma_omega_12;\n B_Q_d3 = -1 * Kd * w_3 * w_3 * gamma_omega_03;\n\n% Sum up the total in-plane drag and indu" + "ced torque to get the total\n% in-plane drag and induced torque on the body\nB_Q_d = B_Q_d0 + B_Q_d1 + B_Q_d2 + " + "B_Q_d3;\n\n% Define the force lever arm torque created from the force produced by each\n% rotor in the z-directi" + "on\nB_Q_F0 = cross( rh_0, B_Fr_0 );\nB_Q_F1 = cross( rh_1, B_Fr_1 );\nB_Q_F2 = cross( rh_2, B_Fr_2 );\nB_Q_F3 = " + "cross( rh_3, B_Fr_3 );\n\nB_Q_F = B_Q_F0 + B_Q_F1 + B_Q_F2 + B_Q_F3;\n\n%Define the change in angular momentum t" + "orque produced by each rotor \nB_Q_L0 = -1 * Jreq * ( cross(B_omega, w_0 * gamma_omega_03) + w_0_dot * gamma_ome" + "ga_03 );\nB_Q_L1 = -1 * Jreq * ( cross(B_omega, w_1 * gamma_omega_12) + w_1_dot * gamma_omega_12 ); \nB_Q_L2 = -" + "1 * Jreq * ( cross(B_omega, w_2 * gamma_omega_12) + w_2_dot * gamma_omega_12 ); \nB_Q_L3 = -1 * Jreq * ( cross(B" + "_omega, w_3 * gamma_omega_03) + w_3_dot * gamma_omega_03 );\n\n% Sum up the total change in angular momentum tor" + "que produced by each rotor\nB_Q_L = B_Q_L0 + B_Q_L1 + B_Q_L2 + B_Q_L3;\n\n% Define the total rotor system torque" + " as the sum of the in-plane drag and\n% induced torque, force lever arm torque, and change in angular momentum\n" + "% torques\nB_Q = B_Q_d + B_Q_F + B_Q_L;\n\n% Define the body forces in the z-direction from each vector to get t" + "he\n% total body force in the z-direction\nB_F = B_Fr + B_Fg; \n\n% Define the body frame linear velocities\nB_v" + "o_dot = (m*I)^(-1) * ( B_F - cross( B_omega, m*(B_vo + cross(B_omega, br_oc)) ) );\n\n% Define the body frame an" + "gular velocities\nB_omega_dot = J ^(-1) * ( B_Q - cross(B_omega, J * B_omega) - cross(br_oc, B_F) );\n\n" + editorLayout "100 M4x1[10 5 700 500]" + } + } + data { + id 54 + ssIdNumber 6 + name "B_omega_dot" + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + linkNode [52 0 55] + } + data { + id 55 + ssIdNumber 10 + name "angular_acceleration" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [52 54 56] + } + data { + id 56 + ssIdNumber 11 + name "angular_velocity" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [52 55 57] + } + data { + id 57 + ssIdNumber 30 + name "B_Fg" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [52 56 58] + } + data { + id 58 + ssIdNumber 8 + name "B_omega" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [52 57 59] + } + data { + id 59 + ssIdNumber 5 + name "B_vo_dot" + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + linkNode [52 58 60] + } + data { + id 60 + ssIdNumber 7 + name "B_vo" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [52 59 61] + } + data { + id 61 + ssIdNumber 12 + name "m" + scope PARAMETER_DATA + paramIndexForInitFromWorkspace 6 + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [52 60 62] + } + data { + id 62 + ssIdNumber 14 + name "Kt" + scope PARAMETER_DATA + paramIndexForInitFromWorkspace 5 + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [52 61 63] + } + data { + id 63 + ssIdNumber 13 + name "Kd" + scope PARAMETER_DATA + paramIndexForInitFromWorkspace 4 + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [52 62 64] + } + data { + id 64 + ssIdNumber 15 + name "rhx" + scope PARAMETER_DATA + paramIndexForInitFromWorkspace 7 + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [52 63 65] + } + data { + id 65 + ssIdNumber 16 + name "rhy" + scope PARAMETER_DATA + paramIndexForInitFromWorkspace 8 + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [52 64 66] + } + data { + id 66 + ssIdNumber 17 + name "rhz" + scope PARAMETER_DATA + paramIndexForInitFromWorkspace 9 + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [52 65 67] + } + data { + id 67 + ssIdNumber 18 + name "Jreq" + scope PARAMETER_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [52 66 68] + } + data { + id 68 + ssIdNumber 19 + name "Jxx" + scope PARAMETER_DATA + paramIndexForInitFromWorkspace 1 + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [52 67 69] + } + data { + id 69 + ssIdNumber 20 + name "Jyy" + scope PARAMETER_DATA + paramIndexForInitFromWorkspace 2 + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [52 68 70] + } + data { + id 70 + ssIdNumber 21 + name "Jzz" + scope PARAMETER_DATA + paramIndexForInitFromWorkspace 3 + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [52 69 0] + } + junction { + id 71 + position [23.5747 49.5747 7] + chart 52 + subviewer 52 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + linkNode [52 0 0] + } + transition { + id 72 + labelString "{eML_blk_kernel();}" + labelPosition [28.125 13.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 71 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 52 + dataLimits [21.175 25.975 14.625 42.575] + subviewer 52 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + linkNode [52 0 0] + } + instance { + id 73 + machine 1 + name "\n\n\n\n\n\n/\n\n\n\n\n\n\n\n" + chart 52 + } + chart { + id 74 + machine 1 + name "\n\n\n\n\n\n/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + windowPosition [422 539.941 189 413] + viewLimits [0 156.75 0 153.75] + screen [1 1 3600 1200 1.180555555555556] + treeNode [0 75 0 0] + viewObj 74 + ssIdHighWaterMark 6 + decomposition CLUSTER_CHART + type EML_CHART + chartFileNumber 7 + disableImplicitCasting 1 + eml { + name "angular_body_earth_conversion" + } + firstData 76 + firstTransition 80 + firstJunction 79 + } + state { + id 75 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 74 + treeNode [74 0 0 0] + superState SUBCHART + subviewer 74 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "function euler_rates = angular_body_earth_conversion(B_omega, euler_angles)\n\neuler_rates = zero" + "s(3,1);\n\nphi = euler_angles(1);\ntheta = euler_angles(2);\n\nAeb = [1, sin(phi)*tan(theta), cos(phi)*tan(theta" + "); ...\n 0, cos(phi) , -sin(phi) ; ...\n 0, sin(phi)/cos(theta), cos(phi)/cos(th" + "eta)];\n\n \neuler_rates = Aeb * B_omega;\n " + editorLayout "100 M4x1[10 5 700 500]" + } + } + data { + id 76 + ssIdNumber 4 + name "B_omega" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [74 0 77] + } + data { + id 77 + ssIdNumber 5 + name "euler_rates" + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + linkNode [74 76 78] + } + data { + id 78 + ssIdNumber 6 + name "euler_angles" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [74 77 0] + } + junction { + id 79 + position [23.5747 49.5747 7] + chart 74 + subviewer 74 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + linkNode [74 0 0] + } + transition { + id 80 + labelString "{eML_blk_kernel();}" + labelPosition [28.125 13.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 79 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 74 + dataLimits [21.175 25.975 14.625 42.575] + subviewer 74 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + linkNode [74 0 0] + } + instance { + id 81 + machine 1 + name "\n\n\n\n\n\n/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + chart 74 + } + chart { + id 82 + machine 1 + name "\n\n\n\n\n\n/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + windowPosition [422 539.941 189 413] + viewLimits [0 156.75 0 153.75] + screen [1 1 3600 1200 1.180555555555556] + treeNode [0 83 0 0] + viewObj 82 + ssIdHighWaterMark 13 + decomposition CLUSTER_CHART + type EML_CHART + chartFileNumber 8 + disableImplicitCasting 1 + eml { + name "linear_earth_body_conversion" + } + firstData 84 + firstTransition 90 + firstJunction 89 + } + state { + id 83 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 82 + treeNode [82 0 0 0] + superState SUBCHART + subviewer 82 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "function [B_Fg, B_g] = linear_earth_body_conversion(E_Fg, euler_angles, m)\n\nphi = euler_angles" + "(1);\ntheta = euler_angles(2);\npsi = euler_angles(3);\n\nLbe = [ cos(theta)*cos(psi) ," + " cos(theta)*sin(psi) , -sin(theta) ; ...\n sin(phi)*sin(theta)*cos(psi)-c" + "os(phi)*sin(psi), sin(phi)*sin(theta)*sin(psi)+cos(phi)*cos(psi), sin(phi)*cos(theta); ...\n cos(phi)*sin(" + "theta)*cos(psi)+sin(phi)*sin(psi), cos(phi)*sin(theta)*sin(psi)-sin(phi)*cos(psi), cos(phi)*cos(theta)];\n\nB_Fg" + " = Lbe * E_Fg;\n\nB_g = B_Fg/m;" + editorLayout "100 M4x1[10 5 700 500]" + } + } + data { + id 84 + ssIdNumber 7 + name "E_Fg" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [82 0 85] + } + data { + id 85 + ssIdNumber 11 + name "euler_angles" + scope INPUT_DATA + machine 1 + props { + array { + size "3" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [82 84 86] + } + data { + id 86 + ssIdNumber 9 + name "B_Fg" + scope OUTPUT_DATA + machine 1 + props { + array { + size "3" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + linkNode [82 85 87] + } + data { + id 87 + ssIdNumber 12 + name "B_g" + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + linkNode [82 86 88] + } + data { + id 88 + ssIdNumber 13 + name "m" + scope PARAMETER_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [82 87 0] + } + junction { + id 89 + position [23.5747 49.5747 7] + chart 82 + subviewer 82 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + linkNode [82 0 0] + } + transition { + id 90 + labelString "{eML_blk_kernel();}" + labelPosition [28.125 13.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 89 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 82 + dataLimits [21.175 25.975 14.625 42.575] + subviewer 82 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + linkNode [82 0 0] + } + instance { + id 91 + machine 1 + name "\n\n\n\n\n\n/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + chart 82 + } + chart { + id 92 + machine 1 + name " /\n\n\n\n\n\n\n\n" + windowPosition [422 539.941 189 413] + viewLimits [0 156.75 0 153.75] + screen [1 1 3600 1200 1.180555555555556] + treeNode [0 93 0 0] + viewObj 92 + ssIdHighWaterMark 14 + decomposition CLUSTER_CHART + type EML_CHART + chartFileNumber 9 + disableImplicitCasting 1 + eml { + name "complimentaryFilter" + } + firstData 94 + firstTransition 100 + firstJunction 99 + } + state { + id 93 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 92 + treeNode [92 0 0 0] + superState SUBCHART + subviewer 92 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "function euler_angles_IMU = complimentaryFilter(accel_pitch, accel_roll, euler_angles_gyro, prev" + "_euler_angles_IMU)\n\nLOOP_TIME = 6.1*10^-3;\n\nprev_phi = prev_euler_angles_IMU(1);\nprev_theta = prev_euler_an" + "gles_IMU(2);\npsi = 0;\n\nphi_dot_gyro = euler_angles_gyro(1);\ntheta_dot_gyro = euler_angles_gyro(2);\n\nphi = " + "0.98 * (prev_phi + phi_dot_gyro * LOOP_TIME ) + 0.02 * accel_roll;\ntheta = 0.98 * (prev_theta + theta_dot_gyro " + "* LOOP_TIME) + 0.02 * accel_pitch;\n\neuler_angles_IMU = [phi; theta; psi];\n" + editorLayout "100 M4x1[10 5 700 500]" + } + } + data { + id 94 + ssIdNumber 4 + name "accel_pitch" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [92 0 95] + } + data { + id 95 + ssIdNumber 13 + name "accel_roll" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [92 94 96] + } + data { + id 96 + ssIdNumber 5 + name "euler_angles_IMU" + scope OUTPUT_DATA + machine 1 + props { + array { + size "[3,1]" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + linkNode [92 95 97] + } + data { + id 97 + ssIdNumber 6 + name "euler_angles_gyro" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [92 96 98] + } + data { + id 98 + ssIdNumber 12 + name "prev_euler_angles_IMU" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [92 97 0] + } + junction { + id 99 + position [23.5747 49.5747 7] + chart 92 + subviewer 92 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + linkNode [92 0 0] + } + transition { + id 100 + labelString "{eML_blk_kernel();}" + labelPosition [28.125 13.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 99 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 92 + dataLimits [21.175 25.975 14.625 42.575] + subviewer 92 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + linkNode [92 0 0] + } + instance { + id 101 + machine 1 + name " /\n\n\n\n\n\n\n\n" + chart 92 + } + chart { + id 102 + machine 1 + name " /\n\n\n\n\n\n\n\n\n\n/\n\n\n\n\n\n\n" + windowPosition [422 539.941 189 413] + viewLimits [0 156.75 0 153.75] + screen [1 1 3600 1200 1.180555555555556] + treeNode [0 103 0 0] + viewObj 102 + ssIdHighWaterMark 13 + decomposition CLUSTER_CHART + type EML_CHART + chartFileNumber 10 + disableImplicitCasting 1 + eml { + name "idealIMU" + } + firstData 104 + firstTransition 113 + firstJunction 112 + } + state { + id 103 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 102 + treeNode [102 0 0 0] + superState SUBCHART + subviewer 102 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "function [accelReading,gyroReading] = idealIMU(B_vo_dot, B_vo, B_Omega, B_g, r_oc, g)\n%#codegen\n" + "\na = B_vo_dot + cross(B_Omega,B_vo) ; % body frame acceleration \n\naccelReading = (a - B_g)/g ; % acceleromete" + "r reading (ideal)\n\ngyroReading = B_Omega ; % gyroscope reading (ideal) \n\nend\n\n" + editorLayout "100 M4x1[10 5 700 500]" + } + } + data { + id 104 + ssIdNumber 4 + name "B_vo_dot" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [102 0 105] + } + data { + id 105 + ssIdNumber 9 + name "B_vo" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [102 104 106] + } + data { + id 106 + ssIdNumber 5 + name "accelReading" + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + linkNode [102 105 107] + } + data { + id 107 + ssIdNumber 6 + name "B_Omega" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [102 106 108] + } + data { + id 108 + ssIdNumber 7 + name "B_g" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [102 107 109] + } + data { + id 109 + ssIdNumber 8 + name "gyroReading" + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + linkNode [102 108 110] + } + data { + id 110 + ssIdNumber 10 + name "r_oc" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [102 109 111] + } + data { + id 111 + ssIdNumber 12 + name "g" + scope PARAMETER_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [102 110 0] + } + junction { + id 112 + position [23.5747 49.5747 7] + chart 102 + subviewer 102 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + linkNode [102 0 0] + } + transition { + id 113 + labelString "{eML_blk_kernel();}" + labelPosition [28.125 13.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 112 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 102 + dataLimits [21.175 25.975 14.625 42.575] + subviewer 102 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + linkNode [102 0 0] + } + instance { + id 114 + machine 1 + name " /\n\n\n\n\n\n\n\n\n\n/\n\n\n\n\n\n\n" + chart 102 + } + chart { + id 115 + machine 1 + name " /3D Graphical Simulation/MATLAB Function" + windowPosition [422 539.941 189 413] + viewLimits [0 156.75 0 153.75] + screen [1 1 3600 1200 1.180555555555556] + treeNode [0 116 0 0] + viewObj 115 + ssIdHighWaterMark 5 + decomposition CLUSTER_CHART + type EML_CHART + chartFileNumber 11 + disableImplicitCasting 1 + eml { + name "eigenaxis_ucart" + } + firstData 117 + firstTransition 120 + firstJunction 119 + } + state { + id 116 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 115 + treeNode [115 0 0 0] + superState SUBCHART + subviewer 115 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "function y = eigenaxis_ucart(u)\n\n\nif abs(u(1))< 0.0001\n u(1) = 0.0001;\nend\n\nif abs(u(2)" + ")< 0.0001\n u(2) = 0.0001;\nend\n\nif abs(u(3))< 0.0001\n u(3) = 0.0001;\nend\n\nu = [ -u(1); -u(2); u(3) " + "];% [Pitch, Yaw, Roll] \n\nC11 = cos(u(2))*cos(u(3));\nC12 = cos(u(2))*sin(u(3));\nC13 = -sin(u(2));\nC21 = sin(" + "u(1))*sin(u(2))*cos(u(3))-cos(u(1))*sin(u(3));\nC22 = sin(u(1))*sin(u(2))*sin(u(3))+cos(u(1))*cos(u(3));\nC23 = " + "sin(u(1))*cos(u(2));\nC31 = cos(u(1))*sin(u(2))*cos(u(3))+sin(u(1))*sin(u(3));\nC32 = cos(u(1))*sin(u(2))*sin(u(" + "3))-sin(u(1))*cos(u(3));\nC33 = cos(u(1))*cos(u(2));\n \ntheta = acos(0.5*(C11+C22+C33-1));\n\ne = [C23-C32; " + "C31-C13; C12-C21]/(2*sin(theta));\n \ny = [e; theta];\n\n" + editorLayout "100 M4x1[10 5 700 500]" + } + } + data { + id 117 + ssIdNumber 4 + name "u" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [115 0 118] + } + data { + id 118 + ssIdNumber 5 + name "y" + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + linkNode [115 117 0] + } + junction { + id 119 + position [23.5747 49.5747 7] + chart 115 + subviewer 115 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + linkNode [115 0 0] + } + transition { + id 120 + labelString "{eML_blk_kernel();}" + labelPosition [28.125 13.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 119 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 115 + dataLimits [21.175 25.975 14.625 42.575] + subviewer 115 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + linkNode [115 0 0] + } + instance { + id 121 + machine 1 + name " /3D Graphical Simulation/MATLAB Function" + chart 115 + } + chart { + id 122 + machine 1 + name " /\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + windowPosition [422 539.941 189 413] + viewLimits [0 156.75 0 153.75] + screen [1 1 3600 1200 1.180555555555556] + treeNode [0 123 0 0] + viewObj 122 + ssIdHighWaterMark 6 + decomposition CLUSTER_CHART + type EML_CHART + chartFileNumber 12 + disableImplicitCasting 1 + eml { + name "angular_body_earth_conversion" + } + firstData 124 + firstTransition 128 + firstJunction 127 + } + state { + id 123 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 122 + treeNode [122 0 0 0] + superState SUBCHART + subviewer 122 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "function euler_rates_IMU = angular_body_earth_conversion(gyro_reading, euler_angles_IMU)\n\nphi =" + " euler_angles_IMU(1);\ntheta = euler_angles_IMU(2);\n\nAeb = [1, sin(phi)*tan(theta), cos(phi)*tan(theta); ...\n" + " 0, cos(phi) , -sin(phi) ; ...\n 0, sin(phi)/cos(theta), cos(phi)/cos(theta)];\n" + "\n \neuler_rates_IMU = Aeb * gyro_reading;\n " + editorLayout "100 M4x1[10 5 700 500]" + } + } + data { + id 124 + ssIdNumber 4 + name "gyro_reading" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [122 0 125] + } + data { + id 125 + ssIdNumber 5 + name "euler_rates_IMU" + scope OUTPUT_DATA + machine 1 + props { + array { + size "[3,1]" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + linkNode [122 124 126] + } + data { + id 126 + ssIdNumber 6 + name "euler_angles_IMU" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [122 125 0] + } + junction { + id 127 + position [23.5747 49.5747 7] + chart 122 + subviewer 122 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + linkNode [122 0 0] + } + transition { + id 128 + labelString "{eML_blk_kernel();}" + labelPosition [28.125 13.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 127 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 122 + dataLimits [21.175 25.975 14.625 42.575] + subviewer 122 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + linkNode [122 0 0] + } + instance { + id 129 + machine 1 + name " /\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + chart 122 + } + chart { + id 130 + machine 1 + name " /\n\n\n\n\n\n\n\n\n\n\n\n1" + windowPosition [422 539.941 189 413] + viewLimits [0 156.75 0 153.75] + screen [1 1 3600 1200 1.180555555555556] + treeNode [0 131 0 0] + viewObj 130 + ssIdHighWaterMark 10 + decomposition CLUSTER_CHART + type EML_CHART + chartFileNumber 13 + disableImplicitCasting 1 + eml { + name "getPitchAndRoll" + } + firstData 132 + firstTransition 137 + firstJunction 136 + } + state { + id 131 + labelString "eML_blk_kernel()" + position [18 64.5 118 66] + fontSize 12 + chart 130 + treeNode [130 0 0 0] + superState SUBCHART + subviewer 130 + ssIdNumber 1 + type FUNC_STATE + decomposition CLUSTER_STATE + eml { + isEML 1 + script "function [accel_pitch, accel_roll] = getPitchAndRoll(accel_reading, accel_roll_prev)\n\nmag = nor" + "m(accel_reading);\n\nx_accel = accel_reading(1)/mag;\ny_accel = accel_reading(2)/mag;\nz_accel = accel_reading(3" + ")/mag;\n\naccel_pitch = atan(x_accel/sqrt(y_accel^2 + z_accel^2));\n%unwrapped_pitch = unwrap([accel_pitch_prev " + "accel_pitch]);\n%accel_pitch = unwrapped_pitch(2);\n\naccel_roll = atan2( -y_accel,(sign(-z_accel)*sqrt(z_accel^" + "2 + (1/100)*x_accel^2)) );\nunwrapped_roll = unwrap([accel_roll_prev accel_roll]);\naccel_roll = unwrapped_roll(" + "2); \n" + editorLayout "100 M4x1[10 5 700 500]" + } + } + data { + id 132 + ssIdNumber 4 + name "accel_reading" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [130 0 133] + } + data { + id 133 + ssIdNumber 5 + name "accel_pitch" + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + linkNode [130 132 134] + } + data { + id 134 + ssIdNumber 6 + name "accel_roll" + scope OUTPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_NO + } + dataType "Inherit: Same as Simulink" + linkNode [130 133 135] + } + data { + id 135 + ssIdNumber 7 + name "accel_roll_prev" + scope INPUT_DATA + machine 1 + props { + array { + size "-1" + } + type { + method SF_INHERITED_TYPE + primitive SF_DOUBLE_TYPE + isSigned 1 + wordLength "16" + } + complexity SF_COMPLEX_INHERITED + frame SF_FRAME_INHERITED + } + dataType "Inherit: Same as Simulink" + linkNode [130 134 0] + } + junction { + id 136 + position [23.5747 49.5747 7] + chart 130 + subviewer 130 + ssIdNumber 3 + type CONNECTIVE_JUNCTION + linkNode [130 0 0] + } + transition { + id 137 + labelString "{eML_blk_kernel();}" + labelPosition [28.125 13.875 102.544 14.964] + fontSize 12 + src { + intersection [0 0 1 0 23.5747 14.625 0 0] + } + dst { + id 136 + intersection [1 0 -1 0 23.5747 42.5747 0 0] + } + midPoint [23.5747 24.9468] + chart 130 + dataLimits [21.175 25.975 14.625 42.575] + subviewer 130 + drawStyle SMART + slide { + sticky BOTH_STICK + } + executionOrder 1 + ssIdNumber 2 + linkNode [130 0 0] + } + instance { + id 138 + machine 1 + name " /\n\n\n\n\n\n\n\n\n\n\n\n1" + chart 130 + } + target { + id 139 + machine 1 + name "sfun" + description "Default Simulink S-Function Target." + linkNode [1 0 0] + } +} diff --git a/controls/model/Quadcopter_Model_R2016_A.slx b/controls/model/Quadcopter_Model_R2016_A.slx index e56ae611672d6f2cf70f76ef4d71b90fd7275d25..46b31b0d732e83111ddc4772d33ed009bf7e0aae 100644 GIT binary patch delta 30245 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 b;&Gs?aJGM&)9+2ac+gomH=Jt1Kj8ld6LoLC delta 27119 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 T_wOO6aNtH751eJhKY;%O5)2^8 diff --git a/controls/model/Quadcopter_Model_R2016_B.slx b/controls/model/Quadcopter_Model_R2016_B.slx index 4812672f099ed6c33607593fffb21a57fe1099b1..fb47766685bfc085c01bce870a9e83e9b5a00901 100644 GIT binary patch delta 36512 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 delta 33417 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 Skh!{R@{!r*Y>T=<rT_q0L0t_1 -- GitLab