diff --git a/controls/model/Quadcopter_Model_R2015_A.mdl b/controls/model/Quadcopter_Model_R2015_A.mdl new file mode 100644 index 0000000000000000000000000000000000000000..21c689f9c1363cf6438b4809569990f9cfcac0e2 --- /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 Binary files a/controls/model/Quadcopter_Model_R2016_A.slx and b/controls/model/Quadcopter_Model_R2016_A.slx differ diff --git a/controls/model/Quadcopter_Model_R2016_B.slx b/controls/model/Quadcopter_Model_R2016_B.slx index 4812672f099ed6c33607593fffb21a57fe1099b1..fb47766685bfc085c01bce870a9e83e9b5a00901 100644 Binary files a/controls/model/Quadcopter_Model_R2016_B.slx and b/controls/model/Quadcopter_Model_R2016_B.slx differ