]> rtime.felk.cvut.cz Git - eurobot/public.git/commitdiff
Matlab: Fixed laser model, updated robot drawer
authorMichal Sojka <sojkam1@fel.cvut.cz>
Sat, 26 Apr 2008 09:58:11 +0000 (11:58 +0200)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Sat, 26 Apr 2008 09:58:11 +0000 (11:58 +0200)
For further testing, MCL block must be modified to support
one elemect vector of angles.

src/mcl/matlab/las_test.mdl [new file with mode: 0644]
src/mcl/matlab/reg_mcl.mdl
src/mcl/matlab/sfdrawrobot.m

diff --git a/src/mcl/matlab/las_test.mdl b/src/mcl/matlab/las_test.mdl
new file mode 100644 (file)
index 0000000..fb3e486
--- /dev/null
@@ -0,0 +1,1723 @@
+Model {
+  Name                   "las_test"
+  Version                6.6
+  MdlSubVersion                  0
+  GraphicalInterface {
+    NumRootInports         0
+    NumRootOutports        0
+    ParameterArgumentNames  ""
+    ComputedModelVersion    "1.5"
+    NumModelReferences     0
+    NumTestPointedSignals   0
+  }
+  SavedCharacterEncoding  "UTF-8"
+  SaveDefaultBlockParams  on
+  SampleTimeColors       off
+  LibraryLinkDisplay     "none"
+  WideLines              off
+  ShowLineDimensions     off
+  ShowPortDataTypes      off
+  ShowLoopsOnError       on
+  IgnoreBidirectionalLines off
+  ShowStorageClass       off
+  ShowTestPointIcons     on
+  ShowViewerIcons        on
+  SortedOrder            off
+  ExecutionContextIcon   off
+  ShowLinearizationAnnotations on
+  ScopeRefreshTime       0.035000
+  OverrideScopeRefreshTime on
+  DisableAllScopes       off
+  DataTypeOverride       "UseLocalSettings"
+  MinMaxOverflowLogging          "UseLocalSettings"
+  MinMaxOverflowArchiveMode "Overwrite"
+  BlockNameDataTip       off
+  BlockParametersDataTip  off
+  BlockDescriptionStringDataTip        off
+  ToolBar                on
+  StatusBar              on
+  BrowserShowLibraryLinks off
+  BrowserLookUnderMasks          off
+  Created                "Sat Apr 26 10:54:06 2008"
+  Creator                "wsh"
+  UpdateHistory                  "UpdateHistoryNever"
+  ModifiedByFormat       "%<Auto>"
+  LastModifiedBy         "wsh"
+  ModifiedDateFormat     "%<Auto>"
+  LastModifiedDate       "Sat Apr 26 11:29:10 2008"
+  ModelVersionFormat     "1.%<AutoIncrement:5>"
+  ConfigurationManager   "none"
+  SimulationMode         "normal"
+  LinearizationMsg       "none"
+  Profile                off
+  ParamWorkspaceSource   "MATLABWorkspace"
+  AccelSystemTargetFile          "accel.tlc"
+  AccelTemplateMakefile          "accel_default_tmf"
+  AccelMakeCommand       "make_rtw"
+  AccelVerboseBuild      off
+  TryForcingSFcnDF       off
+  RecordCoverage         off
+  CovPath                "/"
+  CovSaveName            "covdata"
+  CovMetricSettings      "dw"
+  CovNameIncrementing    off
+  CovHtmlReporting       on
+  covSaveCumulativeToWorkspaceVar on
+  CovSaveSingleToWorkspaceVar on
+  CovCumulativeVarName   "covCumulativeData"
+  CovCumulativeReport    off
+  CovReportOnPause       on
+  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 off
+  BufferReuse            on
+  ProdHWDeviceType       "32-bit Generic"
+  ShowModelReferenceBlockVersion off
+  ShowModelReferenceBlockIO off
+  Array {
+    Type                   "Handle"
+    Dimension              1
+    Simulink.ConfigSet {
+      $ObjectID                      1
+      Version                "1.2.0"
+      Array {
+       Type                    "Handle"
+       Dimension               7
+       Simulink.SolverCC {
+         $ObjectID               2
+         Version                 "1.2.0"
+         StartTime               "0.0"
+         StopTime                "10000"
+         AbsTol                  "auto"
+         FixedStep               "auto"
+         InitialStep             "auto"
+         MaxNumMinSteps          "-1"
+         MaxOrder                5
+         ConsecutiveZCsStepRelTol "10*128*eps"
+         MaxConsecutiveZCs       "1000"
+         ExtrapolationOrder      4
+         NumberNewtonIterations  1
+         MaxStep                 "auto"
+         MinStep                 "auto"
+         MaxConsecutiveMinStep   "1"
+         RelTol                  "1e-3"
+         SolverMode              "Auto"
+         Solver                  "ode45"
+         SolverName              "ode45"
+         ZeroCrossControl        "UseLocalSettings"
+         AlgebraicLoopSolver     "TrustRegion"
+         SolverResetMethod       "Fast"
+         PositivePriorityOrder   off
+         AutoInsertRateTranBlk   off
+         SampleTimeConstraint    "Specified"
+         RateTranMode            "Deterministic"
+       }
+       Simulink.DataIOCC {
+         $ObjectID               3
+         Version                 "1.2.0"
+         Decimation              "1"
+         ExternalInput           "[t, u]"
+         FinalStateName          "xFinal"
+         InitialState            "xInitial"
+         LimitDataPoints         on
+         MaxDataPoints           "1000"
+         LoadExternalInput       off
+         LoadInitialState        off
+         SaveFinalState          off
+         SaveFormat              "Array"
+         SaveOutput              on
+         SaveState               off
+         SignalLogging           on
+         InspectSignalLogs       off
+         SaveTime                on
+         StateSaveName           "xout"
+         TimeSaveName            "tout"
+         OutputSaveName          "yout"
+         SignalLoggingName       "logsout"
+         OutputOption            "RefineOutputTimes"
+         OutputTimes             "[]"
+         Refine                  "1"
+       }
+       Simulink.OptimizationCC {
+         $ObjectID               4
+         Array {
+           Type                    "Cell"
+           Dimension               5
+           Cell                    "ZeroExternalMemoryAtStartup"
+           Cell                    "ZeroInternalMemoryAtStartup"
+           Cell                    "InitFltsAndDblsToZero"
+           Cell                    "OptimizeModelRefInitCode"
+           Cell                    "NoFixptDivByZeroProtection"
+           PropName                "DisabledProps"
+         }
+         Version                 "1.2.0"
+         BlockReduction          on
+         BooleanDataType         on
+         ConditionallyExecuteInputs on
+         InlineParams            off
+         InlineInvariantSignals  off
+         OptimizeBlockIOStorage  on
+         BufferReuse             on
+         EnforceIntegerDowncast  on
+         ExpressionFolding       on
+         ExpressionDepthLimit    2147483647
+         FoldNonRolledExpr       on
+         LocalBlockOutputs       on
+         RollThreshold           5
+         SystemCodeInlineAuto    off
+         StateBitsets            off
+         DataBitsets             off
+         UseTempVars             off
+         ZeroExternalMemoryAtStartup on
+         ZeroInternalMemoryAtStartup on
+         InitFltsAndDblsToZero   on
+         NoFixptDivByZeroProtection off
+         EfficientFloat2IntCast  off
+         OptimizeModelRefInitCode off
+         LifeSpan                "inf"
+         BufferReusableBoundary  on
+       }
+       Simulink.DebuggingCC {
+         $ObjectID               5
+         Version                 "1.2.0"
+         RTPrefix                "error"
+         ConsistencyChecking     "none"
+         ArrayBoundsChecking     "none"
+         SignalInfNanChecking    "none"
+         ReadBeforeWriteMsg      "UseLocalSettings"
+         WriteAfterWriteMsg      "UseLocalSettings"
+         WriteAfterReadMsg       "UseLocalSettings"
+         AlgebraicLoopMsg        "warning"
+         ArtificialAlgebraicLoopMsg "warning"
+         CheckSSInitialOutputMsg on
+         CheckExecutionContextPreStartOutputMsg off
+         CheckExecutionContextRuntimeOutputMsg off
+         SignalResolutionControl "UseLocalSettings"
+         BlockPriorityViolationMsg "warning"
+         MinStepSizeMsg          "warning"
+         TimeAdjustmentMsg       "none"
+         MaxConsecutiveZCsMsg    "error"
+         SolverPrmCheckMsg       "warning"
+         InheritedTsInSrcMsg     "warning"
+         DiscreteInheritContinuousMsg "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"
+         UnderSpecifiedDataTypeMsg "none"
+         UnnecessaryDatatypeConvMsg "none"
+         VectorMatrixConversionMsg "none"
+         InvalidFcnCallConnMsg   "error"
+         FcnCallInpInsideContextMsg "Use local settings"
+         SignalLabelMismatchMsg  "none"
+         UnconnectedInputMsg     "warning"
+         UnconnectedOutputMsg    "warning"
+         UnconnectedLineMsg      "warning"
+         SFcnCompatibilityMsg    "none"
+         UniqueDataStoreMsg      "none"
+         BusObjectLabelMismatch  "warning"
+         RootOutportRequireBusObject "warning"
+         AssertControl           "UseLocalSettings"
+         EnableOverflowDetection off
+         ModelReferenceIOMsg     "none"
+         ModelReferenceVersionMismatchMessage "none"
+         ModelReferenceIOMismatchMessage "none"
+         ModelReferenceCSMismatchMessage "none"
+         ModelReferenceSimTargetVerbose off
+         UnknownTsInhSupMsg      "warning"
+         ModelReferenceDataLoggingMessage "warning"
+         ModelReferenceSymbolNameMessage "warning"
+         ModelReferenceExtraNoncontSigs "error"
+         StateNameClashWarn      "warning"
+         StrictBusMsg            "Warning"
+       }
+       Simulink.HardwareCC {
+         $ObjectID               6
+         Version                 "1.2.0"
+         ProdBitPerChar          8
+         ProdBitPerShort         16
+         ProdBitPerInt           32
+         ProdBitPerLong          32
+         ProdIntDivRoundTo       "Undefined"
+         ProdEndianess           "Unspecified"
+         ProdWordSize            32
+         ProdShiftRightIntArith  on
+         ProdHWDeviceType        "32-bit Generic"
+         TargetBitPerChar        8
+         TargetBitPerShort       16
+         TargetBitPerInt         32
+         TargetBitPerLong        32
+         TargetShiftRightIntArith on
+         TargetIntDivRoundTo     "Undefined"
+         TargetEndianess         "Unspecified"
+         TargetWordSize          32
+         TargetTypeEmulationWarnSuppressLevel 0
+         TargetPreprocMaxBitsSint 32
+         TargetPreprocMaxBitsUint 32
+         TargetHWDeviceType      "Specified"
+         TargetUnknown           off
+         ProdEqTarget            on
+       }
+       Simulink.ModelReferenceCC {
+         $ObjectID               7
+         Version                 "1.2.0"
+         UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange"
+         CheckModelReferenceTargetMessage "error"
+         ModelReferenceNumInstancesAllowed "Multi"
+         ModelReferencePassRootInputsByReference on
+         ModelReferenceMinAlgLoopOccurrences off
+       }
+       Simulink.RTWCC {
+         $BackupClass            "Simulink.RTWCC"
+         $ObjectID               8
+         Array {
+           Type                    "Cell"
+           Dimension               1
+           Cell                    "IncludeHyperlinkInReport"
+           PropName                "DisabledProps"
+         }
+         Version                 "1.2.0"
+         SystemTargetFile        "grt.tlc"
+         GenCodeOnly             off
+         MakeCommand             "make_rtw"
+         GenerateMakefile        on
+         TemplateMakefile        "grt_default_tmf"
+         GenerateReport          off
+         SaveLog                 off
+         RTWVerbose              on
+         RetainRTWFile           off
+         ProfileTLC              off
+         TLCDebug                off
+         TLCCoverage             off
+         TLCAssert               off
+         ProcessScriptMode       "Default"
+         ConfigurationMode       "Optimized"
+         ConfigAtBuild           off
+         IncludeHyperlinkInReport off
+         LaunchReport            off
+         TargetLang              "C"
+         IncludeBusHierarchyInRTWFileBlockHierarchyMap off
+         IncludeERTFirstTime     off
+         Array {
+           Type                    "Handle"
+           Dimension               2
+           Simulink.CodeAppCC {
+             $ObjectID               9
+             Array {
+               Type                    "Cell"
+               Dimension               16
+               Cell                    "IgnoreCustomStorageClasses"
+               Cell                    "InsertBlockDesc"
+               Cell                    "SFDataObjDesc"
+               Cell                    "SimulinkDataObjDesc"
+               Cell                    "DefineNamingRule"
+               Cell                    "SignalNamingRule"
+               Cell                    "ParamNamingRule"
+               Cell                    "InlinedPrmAccess"
+               Cell                    "CustomSymbolStr"
+               Cell                    "CustomSymbolStrGlobalVar"
+               Cell                    "CustomSymbolStrType"
+               Cell                    "CustomSymbolStrField"
+               Cell                    "CustomSymbolStrFcn"
+               Cell                    "CustomSymbolStrBlkIO"
+               Cell                    "CustomSymbolStrTmpVar"
+               Cell                    "CustomSymbolStrMacro"
+               PropName                "DisabledProps"
+             }
+             Version                 "1.2.0"
+             ForceParamTrailComments off
+             GenerateComments        on
+             IgnoreCustomStorageClasses on
+             IncHierarchyInIds       off
+             MaxIdLength             31
+             PreserveName            off
+             PreserveNameWithParent  off
+             ShowEliminatedStatement off
+             IncAutoGenComments      off
+             SimulinkDataObjDesc     off
+             SFDataObjDesc           off
+             IncDataTypeInIds        off
+             PrefixModelToSubsysFcnNames on
+             MangleLength            1
+             CustomSymbolStrGlobalVar "$R$N$M"
+             CustomSymbolStrType     "$N$R$M"
+             CustomSymbolStrField    "$N$M"
+             CustomSymbolStrFcn      "$R$N$M$F"
+             CustomSymbolStrBlkIO    "rtb_$N$M"
+             CustomSymbolStrTmpVar   "$N$M"
+             CustomSymbolStrMacro    "$R$N$M"
+             DefineNamingRule        "None"
+             ParamNamingRule         "None"
+             SignalNamingRule        "None"
+             InsertBlockDesc         off
+             SimulinkBlockComments   on
+             EnableCustomComments    off
+             InlinedPrmAccess        "Literals"
+             ReqsInCode              off
+           }
+           Simulink.GRTTargetCC {
+             $BackupClass            "Simulink.TargetCC"
+             $ObjectID               10
+             Array {
+               Type                    "Cell"
+               Dimension               15
+               Cell                    "IncludeMdlTerminateFcn"
+               Cell                    "CombineOutputUpdateFcns"
+               Cell                    "SuppressErrorStatus"
+               Cell                    "ERTCustomFileBanners"
+               Cell                    "GenerateSampleERTMain"
+               Cell                    "GenerateTestInterfaces"
+               Cell                    "ModelStepFunctionPrototypeControlComp"
+"liant"
+               Cell                    "MultiInstanceERTCode"
+               Cell                    "PurelyIntegerCode"
+               Cell                    "SupportNonFinite"
+               Cell                    "SupportComplex"
+               Cell                    "SupportAbsoluteTime"
+               Cell                    "SupportContinuousTime"
+               Cell                    "SupportNonInlinedSFcns"
+               Cell                    "PortableWordSizes"
+               PropName                "DisabledProps"
+             }
+             Version                 "1.2.0"
+             TargetFcnLib            "ansi_tfl_tmw.mat"
+             TargetLibSuffix         ""
+             TargetPreCompLibLocation ""
+             GenFloatMathFcnCalls    "ANSI_C"
+             UtilityFuncGeneration   "Auto"
+             GenerateFullHeader      on
+             GenerateSampleERTMain   off
+             GenerateTestInterfaces  off
+             IsPILTarget             off
+             ModelReferenceCompliant on
+             IncludeMdlTerminateFcn  on
+             CombineOutputUpdateFcns off
+             SuppressErrorStatus     off
+             IncludeFileDelimiter    "Auto"
+             ERTCustomFileBanners    off
+             SupportAbsoluteTime     on
+             LogVarNameModifier      "rt_"
+             MatFileLogging          on
+             MultiInstanceERTCode    off
+             SupportNonFinite        on
+             SupportComplex          on
+             PurelyIntegerCode       off
+             SupportContinuousTime   on
+             SupportNonInlinedSFcns  on
+             EnableShiftOperators    on
+             ParenthesesLevel        "Nominal"
+             PortableWordSizes       off
+             ModelStepFunctionPrototypeControlCompliant off
+             ExtMode                 off
+             ExtModeStaticAlloc      off
+             ExtModeTesting          off
+             ExtModeStaticAllocSize  1000000
+             ExtModeTransport        0
+             ExtModeMexFile          "ext_comm"
+             ExtModeIntrfLevel       "Level1"
+             RTWCAPISignals          off
+             RTWCAPIParams           off
+             RTWCAPIStates           off
+             GenerateASAP2           off
+           }
+           PropName                "Components"
+         }
+       }
+       PropName                "Components"
+      }
+      Name                   "Configuration"
+      CurrentDlgPage         "Solver"
+    }
+    PropName               "ConfigurationSets"
+  }
+  Simulink.ConfigSet {
+    $PropName              "ActiveConfigurationSet"
+    $ObjectID              1
+  }
+  BlockDefaults {
+    Orientation                    "right"
+    ForegroundColor        "black"
+    BackgroundColor        "white"
+    DropShadow             off
+    NamePlacement          "normal"
+    FontName               "Arial"
+    FontSize               10
+    FontWeight             "normal"
+    FontAngle              "normal"
+    ShowName               on
+  }
+  BlockParameterDefaults {
+    Block {
+      BlockType                      Clock
+      DisplayTime            off
+    }
+    Block {
+      BlockType                      Constant
+      Value                  "1"
+      VectorParams1D         on
+      SamplingMode           "Sample based"
+      OutDataTypeMode        "Inherit from 'Constant value'"
+      OutDataType            "sfix(16)"
+      ConRadixGroup          "Use specified scaling"
+      OutScaling             "2^0"
+      SampleTime             "inf"
+      FramePeriod            "inf"
+    }
+    Block {
+      BlockType                      Demux
+      Outputs                "4"
+      DisplayOption          "none"
+      BusSelectionMode       off
+    }
+    Block {
+      BlockType                      DigitalClock
+      SampleTime             "1"
+    }
+    Block {
+      BlockType                      Display
+      Format                 "short"
+      Decimation             "10"
+      Floating               off
+      SampleTime             "-1"
+    }
+    Block {
+      BlockType                      EnablePort
+      StatesWhenEnabling      "held"
+      ShowOutputPort         off
+      ZeroCross                      on
+    }
+    Block {
+      BlockType                      Gain
+      Gain                   "1"
+      Multiplication         "Element-wise(K.*u)"
+      ParameterDataTypeMode   "Same as input"
+      ParameterDataType              "sfix(16)"
+      ParameterScalingMode    "Best Precision: Matrix-wise"
+      ParameterScaling       "2^0"
+      OutDataTypeMode        "Same as input"
+      OutDataType            "sfix(16)"
+      OutScaling             "2^0"
+      LockScale                      off
+      RndMeth                "Floor"
+      SaturateOnIntegerOverflow        on
+      SampleTime             "-1"
+    }
+    Block {
+      BlockType                      Ground
+    }
+    Block {
+      BlockType                      HitCross
+      HitCrossingOffset              "0"
+      HitCrossingDirection    "either"
+      ShowOutputPort         on
+      ZeroCross                      on
+      SampleTime             "-1"
+    }
+    Block {
+      BlockType                      Inport
+      Port                   "1"
+      UseBusObject           off
+      BusObject                      "BusObject"
+      BusOutputAsStruct              off
+      PortDimensions         "-1"
+      SampleTime             "-1"
+      DataType               "auto"
+      OutDataType            "sfix(16)"
+      OutScaling             "2^0"
+      SignalType             "auto"
+      SamplingMode           "auto"
+      LatchByDelayingOutsideSignal off
+      LatchByCopyingInsideSignal off
+      Interpolate            on
+    }
+    Block {
+      BlockType                      Integrator
+      ExternalReset          "none"
+      InitialConditionSource  "internal"
+      InitialCondition       "0"
+      LimitOutput            off
+      UpperSaturationLimit    "inf"
+      LowerSaturationLimit    "-inf"
+      ShowSaturationPort      off
+      ShowStatePort          off
+      AbsoluteTolerance              "auto"
+      IgnoreLimit            off
+      ZeroCross                      on
+      ContinuousStateAttributes        "''"
+    }
+    Block {
+      BlockType                      MATLABFcn
+      MATLABFcn                      "sin"
+      OutputDimensions       "-1"
+      OutputSignalType       "auto"
+      Output1D               on
+      SampleTime             "-1"
+    }
+    Block {
+      BlockType                      "M-S-Function"
+      FunctionName           "mlfile"
+      DisplayMFileStacktrace  on
+    }
+    Block {
+      BlockType                      Mux
+      Inputs                 "4"
+      DisplayOption          "none"
+      UseBusObject           off
+      BusObject                      "BusObject"
+      NonVirtualBus          off
+    }
+    Block {
+      BlockType                      Outport
+      Port                   "1"
+      UseBusObject           off
+      BusObject                      "BusObject"
+      BusOutputAsStruct              off
+      PortDimensions         "-1"
+      SampleTime             "-1"
+      DataType               "auto"
+      OutDataType            "sfix(16)"
+      OutScaling             "2^0"
+      SignalType             "auto"
+      SamplingMode           "auto"
+      OutputWhenDisabled      "held"
+      InitialOutput          "[]"
+    }
+    Block {
+      BlockType                      RandomNumber
+      Mean                   "0"
+      Variance               "1"
+      Seed                   "0"
+      SampleTime             "-1"
+      VectorParams1D         on
+    }
+    Block {
+      BlockType                      RateTransition
+      Integrity                      on
+      Deterministic          on
+      X0                     "0"
+      OutPortSampleTime              "-1"
+    }
+    Block {
+      BlockType                      RelationalOperator
+      Operator               ">="
+      InputSameDT            on
+      LogicOutDataTypeMode    "Logical (see Configuration Parameters: Optimiza"
+"tion)"
+      LogicDataType          "uint(8)"
+      ZeroCross                      on
+      SampleTime             "-1"
+    }
+    Block {
+      BlockType                      SignalSpecification
+      Dimensions             "-1"
+      SampleTime             "-1"
+      DataType               "auto"
+      OutDataType            "sfix(16)"
+      OutScaling             "2^0"
+      SignalType             "auto"
+      SamplingMode           "auto"
+    }
+    Block {
+      BlockType                      SubSystem
+      ShowPortLabels         "FromPortIcon"
+      Permissions            "ReadWrite"
+      PermitHierarchicalResolution "All"
+      TreatAsAtomicUnit              off
+      SystemSampleTime       "-1"
+      RTWFcnNameOpts         "Auto"
+      RTWFileNameOpts        "Auto"
+      RTWMemSecFuncInitTerm   "Inherit from model"
+      RTWMemSecFuncExecute    "Inherit from model"
+      RTWMemSecDataConstants  "Inherit from model"
+      RTWMemSecDataInternal   "Inherit from model"
+      RTWMemSecDataParameters "Inherit from model"
+      SimViewingDevice       off
+      DataTypeOverride       "UseLocalSettings"
+      MinMaxOverflowLogging   "UseLocalSettings"
+    }
+    Block {
+      BlockType                      Sum
+      IconShape                      "rectangular"
+      Inputs                 "++"
+      CollapseMode           "All dimensions"
+      CollapseDim            "1"
+      InputSameDT            on
+      OutDataTypeMode        "Same as first input"
+      OutDataType            "sfix(16)"
+      OutScaling             "2^0"
+      LockScale                      off
+      RndMeth                "Floor"
+      SaturateOnIntegerOverflow        on
+      SampleTime             "-1"
+    }
+    Block {
+      BlockType                      TriggerPort
+      TriggerType            "rising"
+      StatesWhenEnabling      "inherit"
+      ShowOutputPort         off
+      OutputDataType         "auto"
+      SampleTimeType         "triggered"
+      SampleTime             "1"
+      ZeroCross                      on
+    }
+  }
+  AnnotationDefaults {
+    HorizontalAlignment            "center"
+    VerticalAlignment      "middle"
+    ForegroundColor        "black"
+    BackgroundColor        "white"
+    DropShadow             off
+    FontName               "Arial"
+    FontSize               10
+    FontWeight             "normal"
+    FontAngle              "normal"
+    UseDisplayTextAsClickCallback off
+  }
+  LineDefaults {
+    FontName               "Arial"
+    FontSize               9
+    FontWeight             "normal"
+    FontAngle              "normal"
+  }
+  System {
+    Name                   "las_test"
+    Location               [4, 677, 670, 989]
+    Open                   on
+    ModelBrowserVisibility  off
+    ModelBrowserWidth      200
+    ScreenColor                    "white"
+    PaperOrientation       "landscape"
+    PaperPositionMode      "auto"
+    PaperType              "A4"
+    PaperUnits             "centimeters"
+    TiledPaperMargins      [0.500000, 0.500000, 0.500000, 0.500000]
+    TiledPageScale         1
+    ShowPageBoundaries     off
+    ZoomFactor             "100"
+    ReportName             "simulink-default.rpt"
+    Block {
+      BlockType                      DigitalClock
+      Name                   "Digital Clock"
+      Position               [385, 23, 450, 47]
+    }
+    Block {
+      BlockType                      Display
+      Name                   "Display"
+      Ports                  [1]
+      Position               [465, 20, 555, 50]
+      Decimation             "1"
+      Lockdown               off
+    }
+    Block {
+      BlockType                      "M-S-Function"
+      Name                   "Draw robot"
+      Ports                  [2]
+      Position               [535, 121, 630, 159]
+      ForegroundColor        "red"
+      BackgroundColor        "cyan"
+      FunctionName           "sfdrawrobot"
+      Parameters             "desc,0"
+    }
+    Block {
+      BlockType                      Mux
+      Name                   "Mux"
+      Ports                  [3, 1]
+      Position               [215, 156, 220, 194]
+      ShowName               off
+      Inputs                 "3"
+      DisplayOption          "bar"
+    }
+    Block {
+      BlockType                      SubSystem
+      Name                   "Rotating laser"
+      Ports                  [1, 3]
+      Position               [330, 164, 485, 226]
+      MinAlgLoopOccurrences   off
+      RTWSystemCode          "Auto"
+      FunctionWithSeparateData off
+      MaskHideContents       off
+      MaskPromptString       "Rotations per second|Noise standard deviation ["
+"deg]|Zero-cross detection"
+      MaskStyleString        "edit,edit,checkbox"
+      MaskTunableValueString  "on,on,on"
+      MaskCallbackString      "||"
+      MaskEnableString       "on,on,on"
+      MaskVisibilityString    "on,on,on"
+      MaskToolTipString              "on,on,on"
+      MaskVarAliasString      ",,"
+      MaskVariables          "rps=@1;noise_stdev=@2;zerocross=@3;"
+      MaskDisplay            "text(0.3,0.5, sprintf('RPS=%g\\nNoise=%g', rps,"
+" noise_stdev))\nport_label('input', 1, 'Pos')\nport_label('output', 1, 'Ideal"
+"')\nport_label('output', 2, 'Immediate')\nport_label('output', 3, 'Buffered')"
+"\n"
+      MaskIconFrame          on
+      MaskIconOpaque         on
+      MaskIconRotate         "none"
+      MaskIconUnits          "normalized"
+      MaskValueString        "3|0|on"
+      MaskTabNameString              ",,"
+      System {
+       Name                    "Rotating laser"
+       Location                [84, 67, 1108, 652]
+       Open                    off
+       ModelBrowserVisibility  off
+       ModelBrowserWidth       200
+       ScreenColor             "white"
+       PaperOrientation        "landscape"
+       PaperPositionMode       "auto"
+       PaperType               "A4"
+       PaperUnits              "centimeters"
+       TiledPaperMargins       [0.500000, 0.500000, 0.500000, 0.500000]
+       TiledPageScale          1
+       ShowPageBoundaries      off
+       ZoomFactor              "100"
+       Block {
+         BlockType               Inport
+         Name                    "Pos"
+         Position                [25, 33, 55, 47]
+         IconDisplay             "Port number"
+       }
+       Block {
+         BlockType               MATLABFcn
+         Name                    "Beacon Angles"
+         Ports                   [1, 1]
+         Position                [150, 25, 210, 55]
+         MATLABFcn               "mod(beacon_angles(u), 2*pi)"
+       }
+       Block {
+         BlockType               SubSystem
+         Name                    "Beacon memory"
+         Ports                   [1, 1, 0, 1]
+         Position                [510, 299, 565, 331]
+         TreatAsAtomicUnit       on
+         MinAlgLoopOccurrences   off
+         RTWSystemCode           "Auto"
+         FunctionWithSeparateData off
+         MaskHideContents        off
+         System {
+           Name                    "Beacon memory"
+           Location                [401, 346, 899, 646]
+           Open                    off
+           ModelBrowserVisibility  off
+           ModelBrowserWidth       200
+           ScreenColor             "white"
+           PaperOrientation        "landscape"
+           PaperPositionMode       "auto"
+           PaperType               "A4"
+           PaperUnits              "centimeters"
+           TiledPaperMargins       [0.500000, 0.500000, 0.500000, 0.500000]
+           TiledPageScale          1
+           ShowPageBoundaries      off
+           ZoomFactor              "100"
+           Block {
+             BlockType               Inport
+             Name                    "In1"
+             Position                [110, 103, 140, 117]
+             IconDisplay             "Port number"
+           }
+           Block {
+             BlockType               TriggerPort
+             Name                    "Trigger"
+             Ports                   []
+             Position                [225, 20, 245, 40]
+             StatesWhenEnabling      "held"
+           }
+           Block {
+             BlockType               Outport
+             Name                    "Out1"
+             Position                [360, 103, 390, 117]
+             IconDisplay             "Port number"
+             BusOutputAsStruct       off
+           }
+           Line {
+             SrcBlock                "In1"
+             SrcPort                 1
+             DstBlock                "Out1"
+             DstPort                 1
+           }
+         }
+       }
+       Block {
+         BlockType               SubSystem
+         Name                    "Beacon memory1"
+         Ports                   [1, 1, 0, 1]
+         Position                [510, 369, 565, 401]
+         TreatAsAtomicUnit       on
+         MinAlgLoopOccurrences   off
+         RTWSystemCode           "Auto"
+         FunctionWithSeparateData off
+         MaskHideContents        off
+         System {
+           Name                    "Beacon memory1"
+           Location                [401, 346, 899, 646]
+           Open                    off
+           ModelBrowserVisibility  off
+           ModelBrowserWidth       200
+           ScreenColor             "white"
+           PaperOrientation        "landscape"
+           PaperPositionMode       "auto"
+           PaperType               "A4"
+           PaperUnits              "centimeters"
+           TiledPaperMargins       [0.500000, 0.500000, 0.500000, 0.500000]
+           TiledPageScale          1
+           ShowPageBoundaries      off
+           ZoomFactor              "100"
+           Block {
+             BlockType               Inport
+             Name                    "In1"
+             Position                [110, 103, 140, 117]
+             IconDisplay             "Port number"
+           }
+           Block {
+             BlockType               TriggerPort
+             Name                    "Trigger"
+             Ports                   []
+             Position                [225, 20, 245, 40]
+             StatesWhenEnabling      "held"
+           }
+           Block {
+             BlockType               Outport
+             Name                    "Out1"
+             Position                [360, 103, 390, 117]
+             IconDisplay             "Port number"
+             BusOutputAsStruct       off
+           }
+           Line {
+             SrcBlock                "In1"
+             SrcPort                 1
+             DstBlock                "Out1"
+             DstPort                 1
+           }
+         }
+       }
+       Block {
+         BlockType               SubSystem
+         Name                    "Beacon memory2"
+         Ports                   [1, 1, 0, 1]
+         Position                [510, 439, 565, 471]
+         TreatAsAtomicUnit       on
+         MinAlgLoopOccurrences   off
+         RTWSystemCode           "Auto"
+         FunctionWithSeparateData off
+         MaskHideContents        off
+         System {
+           Name                    "Beacon memory2"
+           Location                [401, 346, 899, 646]
+           Open                    off
+           ModelBrowserVisibility  off
+           ModelBrowserWidth       200
+           ScreenColor             "white"
+           PaperOrientation        "landscape"
+           PaperPositionMode       "auto"
+           PaperType               "A4"
+           PaperUnits              "centimeters"
+           TiledPaperMargins       [0.500000, 0.500000, 0.500000, 0.500000]
+           TiledPageScale          1
+           ShowPageBoundaries      off
+           ZoomFactor              "100"
+           Block {
+             BlockType               Inport
+             Name                    "In1"
+             Position                [110, 103, 140, 117]
+             IconDisplay             "Port number"
+           }
+           Block {
+             BlockType               TriggerPort
+             Name                    "Trigger"
+             Ports                   []
+             Position                [225, 20, 245, 40]
+             StatesWhenEnabling      "held"
+           }
+           Block {
+             BlockType               Outport
+             Name                    "Out1"
+             Position                [360, 103, 390, 117]
+             IconDisplay             "Port number"
+             BusOutputAsStruct       off
+           }
+           Line {
+             SrcBlock                "In1"
+             SrcPort                 1
+             DstBlock                "Out1"
+             DstPort                 1
+           }
+         }
+       }
+       Block {
+         BlockType               Clock
+         Name                    "Clock"
+         Position                [740, 310, 760, 330]
+         Decimation              "10"
+       }
+       Block {
+         BlockType               Reference
+         Name                    "Compare\nTo Constant"
+         Ports                   [1, 1]
+         Position                [50, 165, 100, 195]
+         Orientation             "left"
+         SourceBlock             "simulink/Logic and Bit\nOperations/Compare"
+"\nTo Constant"
+         SourceType              "Compare To Constant"
+         ShowPortLabels          "FromPortIcon"
+         SystemSampleTime        "-1"
+         FunctionWithSeparateData off
+         RTWMemSecFuncInitTerm   "Inherit from model"
+         RTWMemSecFuncExecute    "Inherit from model"
+         RTWMemSecDataConstants  "Inherit from model"
+         RTWMemSecDataInternal   "Inherit from model"
+         RTWMemSecDataParameters "Inherit from model"
+         relop                   ">="
+         const                   "2*pi"
+         LogicOutDataTypeMode    "boolean"
+         ZeroCross               off
+       }
+       Block {
+         BlockType               Reference
+         Name                    "Compare\nTo Zero"
+         Ports                   [1, 1]
+         Position                [800, 305, 830, 335]
+         SourceBlock             "simulink/Logic and Bit\nOperations/Compare"
+"\nTo Zero"
+         SourceType              "Compare To Zero"
+         ShowPortLabels          "FromPortIcon"
+         SystemSampleTime        "-1"
+         FunctionWithSeparateData off
+         RTWMemSecFuncInitTerm   "Inherit from model"
+         RTWMemSecFuncExecute    "Inherit from model"
+         RTWMemSecDataConstants  "Inherit from model"
+         RTWMemSecDataInternal   "Inherit from model"
+         RTWMemSecDataParameters "Inherit from model"
+         relop                   ">"
+         LogicOutDataTypeMode    "uint8"
+         ZeroCross               off
+       }
+       Block {
+         BlockType               Constant
+         Name                    "Constant1"
+         Position                [35, 239, 100, 271]
+         NamePlacement           "alternate"
+         Value                   "rps*2*pi"
+       }
+       Block {
+         BlockType               Demux
+         Name                    "Demux"
+         Ports                   [1, 3]
+         Position                [344, 190, 396, 200]
+         Orientation             "down"
+         BackgroundColor         "black"
+         NamePlacement           "alternate"
+         ShowName                off
+         Outputs                 "3"
+         DisplayOption           "bar"
+       }
+       Block {
+         BlockType               Demux
+         Name                    "Demux1"
+         Ports                   [1, 3]
+         Position                [414, 190, 466, 200]
+         Orientation             "down"
+         BackgroundColor         "black"
+         NamePlacement           "alternate"
+         ShowName                off
+         Outputs                 "3"
+         DisplayOption           "bar"
+       }
+       Block {
+         BlockType               SubSystem
+         Name                    "Do not produce\ndata at start. We\nhave to "
+"wait one turn."
+         Ports                   [1, 1, 1]
+         Position                [825, 364, 925, 406]
+         TreatAsAtomicUnit       on
+         MinAlgLoopOccurrences   off
+         RTWSystemCode           "Auto"
+         FunctionWithSeparateData off
+         MaskHideContents        off
+         System {
+           Name                    "Do not produce\ndata at start. We\nhave t"
+"o wait one turn."
+           Location                [421, 301, 919, 601]
+           Open                    off
+           ModelBrowserVisibility  off
+           ModelBrowserWidth       200
+           ScreenColor             "white"
+           PaperOrientation        "landscape"
+           PaperPositionMode       "auto"
+           PaperType               "A4"
+           PaperUnits              "centimeters"
+           TiledPaperMargins       [0.500000, 0.500000, 0.500000, 0.500000]
+           TiledPageScale          1
+           ShowPageBoundaries      off
+           ZoomFactor              "100"
+           Block {
+             BlockType               Inport
+             Name                    "In1"
+             Position                [110, 103, 140, 117]
+             IconDisplay             "Port number"
+           }
+           Block {
+             BlockType               EnablePort
+             Name                    "Enable"
+             Ports                   []
+             Position                [235, 20, 255, 40]
+           }
+           Block {
+             BlockType               Outport
+             Name                    "Out1"
+             Position                [360, 103, 390, 117]
+             IconDisplay             "Port number"
+             BusOutputAsStruct       off
+           }
+           Line {
+             SrcBlock                "In1"
+             SrcPort                 1
+             DstBlock                "Out1"
+             DstPort                 1
+           }
+         }
+       }
+       Block {
+         BlockType               HitCross
+         Name                    "Hit \nCrossing"
+         Ports                   [1, 1]
+         Position                [320, 95, 350, 125]
+         AttributesFormatString  "ZC:%<ZeroCross>"
+         HitCrossingDirection    "rising"
+       }
+       Block {
+         BlockType               SubSystem
+         Name                    "Individual output"
+         Ports                   [1, 1, 0, 1]
+         Position                [745, 226, 800, 274]
+         TreatAsAtomicUnit       on
+         MinAlgLoopOccurrences   off
+         RTWSystemCode           "Auto"
+         FunctionWithSeparateData off
+         MaskHideContents        off
+         System {
+           Name                    "Individual output"
+           Location                [401, 346, 899, 646]
+           Open                    off
+           ModelBrowserVisibility  off
+           ModelBrowserWidth       200
+           ScreenColor             "white"
+           PaperOrientation        "landscape"
+           PaperPositionMode       "auto"
+           PaperType               "A4"
+           PaperUnits              "centimeters"
+           TiledPaperMargins       [0.500000, 0.500000, 0.500000, 0.500000]
+           TiledPageScale          1
+           ShowPageBoundaries      off
+           ZoomFactor              "100"
+           Block {
+             BlockType               Inport
+             Name                    "In1"
+             Position                [110, 103, 140, 117]
+             IconDisplay             "Port number"
+           }
+           Block {
+             BlockType               TriggerPort
+             Name                    "Trigger"
+             Ports                   []
+             Position                [225, 20, 245, 40]
+             StatesWhenEnabling      "held"
+           }
+           Block {
+             BlockType               Outport
+             Name                    "Out1"
+             Position                [360, 103, 390, 117]
+             IconDisplay             "Port number"
+             BusOutputAsStruct       off
+           }
+           Line {
+             SrcBlock                "In1"
+             SrcPort                 1
+             DstBlock                "Out1"
+             DstPort                 1
+           }
+         }
+       }
+       Block {
+         BlockType               Integrator
+         Name                    "Integrator"
+         Ports                   [2, 1, 0, 0, 1]
+         Position                [130, 238, 180, 307]
+         ExternalReset           "rising"
+         ShowStatePort           on
+         IgnoreLimit             off
+       }
+       Block {
+         BlockType               RandomNumber
+         Name                    "Measurement noise"
+         Position                [475, 145, 505, 175]
+         Orientation             "left"
+         NamePlacement           "alternate"
+         Variance                "(noise_stdev/180*pi)^2"
+         Seed                    "abs(floor(rand(3,1)*10000))"
+       }
+       Block {
+         BlockType               Mux
+         Name                    "Mux"
+         Ports                   [3, 1]
+         Position                [700, 352, 705, 418]
+         ShowName                off
+         Inputs                  "3"
+         DisplayOption           "bar"
+       }
+       Block {
+         BlockType               RateTransition
+         Name                    "Rate Transition"
+         Position                [750, 364, 790, 406]
+         OutPortSampleTime       "1/rps"
+       }
+       Block {
+         BlockType               RateTransition
+         Name                    "Rate Transition1"
+         Position                [735, 19, 775, 61]
+         OutPortSampleTime       "1/rps"
+       }
+       Block {
+         BlockType               Sum
+         Name                    "Subtract"
+         Ports                   [2, 1]
+         Position                [270, 95, 300, 125]
+         IconShape               "round"
+         Inputs                  "-+|"
+         CollapseMode            "All dimensions"
+         InputSameDT             off
+         OutDataTypeMode         "Inherit via internal rule"
+         OutScaling              "2^-10"
+         SaturateOnIntegerOverflow off
+       }
+       Block {
+         BlockType               Sum
+         Name                    "Sum"
+         Ports                   [2, 1]
+         Position                [480, 240, 500, 260]
+         ShowName                off
+         IconShape               "round"
+         Inputs                  "++|"
+         CollapseMode            "All dimensions"
+         InputSameDT             off
+         OutDataTypeMode         "Inherit via internal rule"
+         SaturateOnIntegerOverflow off
+       }
+       Block {
+         BlockType               Sum
+         Name                    "Sum1"
+         Ports                   [2, 1]
+         Position                [415, 305, 435, 325]
+         ShowName                off
+         IconShape               "round"
+         Inputs                  "++|"
+         CollapseMode            "All dimensions"
+         InputSameDT             off
+         OutDataTypeMode         "Inherit via internal rule"
+         SaturateOnIntegerOverflow off
+       }
+       Block {
+         BlockType               Sum
+         Name                    "Sum2"
+         Ports                   [2, 1]
+         Position                [430, 375, 450, 395]
+         ShowName                off
+         IconShape               "round"
+         Inputs                  "++|"
+         CollapseMode            "All dimensions"
+         InputSameDT             off
+         OutDataTypeMode         "Inherit via internal rule"
+         SaturateOnIntegerOverflow off
+       }
+       Block {
+         BlockType               Sum
+         Name                    "Sum3"
+         Ports                   [2, 1]
+         Position                [445, 445, 465, 465]
+         ShowName                off
+         IconShape               "round"
+         Inputs                  "++|"
+         CollapseMode            "All dimensions"
+         InputSameDT             off
+         OutDataTypeMode         "Inherit via internal rule"
+         SaturateOnIntegerOverflow off
+       }
+       Block {
+         BlockType               Sum
+         Name                    "Sum5"
+         Ports                   [2, 1]
+         Position                [400, 30, 420, 50]
+         ShowName                off
+         IconShape               "round"
+         Inputs                  "|++"
+         CollapseMode            "All dimensions"
+         InputSameDT             off
+         OutDataTypeMode         "Inherit via internal rule"
+         SaturateOnIntegerOverflow off
+       }
+       Block {
+         BlockType               Outport
+         Name                    "Ideal"
+         Position                [855, 33, 885, 47]
+         IconDisplay             "Port number"
+         BusOutputAsStruct       off
+       }
+       Block {
+         BlockType               Outport
+         Name                    "Individual"
+         Position                [875, 243, 905, 257]
+         Port                    "2"
+         IconDisplay             "Port number"
+         BusOutputAsStruct       off
+       }
+       Block {
+         BlockType               Outport
+         Name                    "Simultaneous"
+         Position                [965, 378, 995, 392]
+         Port                    "3"
+         IconDisplay             "Port number"
+         BusOutputAsStruct       off
+       }
+       Line {
+         SrcBlock                "Sum5"
+         SrcPort                 1
+         DstBlock                "Rate Transition1"
+         DstPort                 1
+       }
+       Line {
+         SrcBlock                "Demux1"
+         SrcPort                 3
+         Points                  [0, 15]
+         Branch {
+           DstBlock                "Sum3"
+           DstPort                 1
+         }
+         Branch {
+           Points                  [35, 0]
+           DstBlock                "Sum"
+           DstPort                 1
+         }
+       }
+       Line {
+         SrcBlock                "Demux1"
+         SrcPort                 2
+         DstBlock                "Sum2"
+         DstPort                 1
+       }
+       Line {
+         SrcBlock                "Demux1"
+         SrcPort                 1
+         DstBlock                "Sum1"
+         DstPort                 1
+       }
+       Line {
+         SrcBlock                "Sum1"
+         SrcPort                 1
+         DstBlock                "Beacon memory"
+         DstPort                 1
+       }
+       Line {
+         SrcBlock                "Sum2"
+         SrcPort                 1
+         DstBlock                "Beacon memory1"
+         DstPort                 1
+       }
+       Line {
+         SrcBlock                "Sum3"
+         SrcPort                 1
+         DstBlock                "Beacon memory2"
+         DstPort                 1
+       }
+       Line {
+         SrcBlock                "Measurement noise"
+         SrcPort                 1
+         Points                  [-30, 0]
+         Branch {
+           Points                  [-30, 0]
+           DstBlock                "Sum5"
+           DstPort                 2
+         }
+         Branch {
+           DstBlock                "Demux1"
+           DstPort                 1
+         }
+       }
+       Line {
+         SrcBlock                "Sum"
+         SrcPort                 1
+         DstBlock                "Individual output"
+         DstPort                 1
+       }
+       Line {
+         SrcBlock                "Compare\nTo Zero"
+         SrcPort                 1
+         Points                  [40, 0]
+         DstBlock                "Do not produce\ndata at start. We\nhave to "
+"wait one turn."
+         DstPort                 enable
+       }
+       Line {
+         SrcBlock                "Do not produce\ndata at start. We\nhave to "
+"wait one turn."
+         SrcPort                 1
+         DstBlock                "Simultaneous"
+         DstPort                 1
+       }
+       Line {
+         SrcBlock                "Rate Transition"
+         SrcPort                 1
+         DstBlock                "Do not produce\ndata at start. We\nhave to "
+"wait one turn."
+         DstPort                 1
+       }
+       Line {
+         SrcBlock                "Clock"
+         SrcPort                 1
+         DstBlock                "Compare\nTo Zero"
+         DstPort                 1
+       }
+       Line {
+         Labels                  [0, 0]
+         SrcBlock                "Rate Transition1"
+         SrcPort                 1
+         DstBlock                "Ideal"
+         DstPort                 1
+       }
+       Line {
+         SrcBlock                "Mux"
+         SrcPort                 1
+         DstBlock                "Rate Transition"
+         DstPort                 1
+       }
+       Line {
+         SrcBlock                "Pos"
+         SrcPort                 1
+         DstBlock                "Beacon Angles"
+         DstPort                 1
+       }
+       Line {
+         SrcBlock                "Demux"
+         SrcPort                 3
+         Points                  [0, 81; 150, 0]
+         DstBlock                "Beacon memory"
+         DstPort                 trigger
+       }
+       Line {
+         SrcBlock                "Demux"
+         SrcPort                 2
+         Points                  [0, 149]
+         DstBlock                "Beacon memory1"
+         DstPort                 trigger
+       }
+       Line {
+         SrcBlock                "Demux"
+         SrcPort                 1
+         Points                  [0, 219]
+         DstBlock                "Beacon memory2"
+         DstPort                 trigger
+       }
+       Line {
+         SrcBlock                "Beacon memory2"
+         SrcPort                 1
+         Points                  [40, 0; 0, -50]
+         DstBlock                "Mux"
+         DstPort                 3
+       }
+       Line {
+         SrcBlock                "Beacon memory1"
+         SrcPort                 1
+         DstBlock                "Mux"
+         DstPort                 2
+       }
+       Line {
+         SrcBlock                "Beacon memory"
+         SrcPort                 1
+         Points                  [40, 0; 0, 50]
+         DstBlock                "Mux"
+         DstPort                 1
+       }
+       Line {
+         SrcBlock                "Beacon Angles"
+         SrcPort                 1
+         Points                  [70, 0]
+         Branch {
+           DstBlock                "Sum5"
+           DstPort                 1
+         }
+         Branch {
+           DstBlock                "Subtract"
+           DstPort                 1
+         }
+       }
+       Line {
+         SrcBlock                "Individual output"
+         SrcPort                 1
+         DstBlock                "Individual"
+         DstPort                 1
+       }
+       Line {
+         SrcBlock                "Hit \nCrossing"
+         SrcPort                 1
+         Points                  [15, 0]
+         Branch {
+           Points                  [400, 0]
+           DstBlock                "Individual output"
+           DstPort                 trigger
+         }
+         Branch {
+           DstBlock                "Demux"
+           DstPort                 1
+         }
+       }
+       Line {
+         SrcBlock                "Subtract"
+         SrcPort                 1
+         DstBlock                "Hit \nCrossing"
+         DstPort                 1
+       }
+       Line {
+         SrcBlock                "Integrator"
+         SrcPort                 1
+         Points                  [20, 0]
+         Branch {
+           Labels                  [1, 0]
+           Points                  [0, -25]
+           Branch {
+             DstBlock                "Sum"
+             DstPort                 2
+           }
+           Branch {
+             Points                  [0, 65]
+             Branch {
+               DstBlock                "Sum1"
+               DstPort                 2
+             }
+             Branch {
+               Points                  [0, 70]
+               Branch {
+                 DstBlock                "Sum2"
+                 DstPort                 2
+               }
+               Branch {
+                 Points                  [0, 70]
+                 DstBlock                "Sum3"
+                 DstPort                 2
+               }
+             }
+           }
+         }
+         Branch {
+           Labels                  [-1, 1]
+           Points                  [0, -165]
+           DstBlock                "Subtract"
+           DstPort                 2
+         }
+       }
+       Line {
+         SrcBlock                "Compare\nTo Constant"
+         SrcPort                 1
+         Points                  [-30, 0; 0, 110]
+         DstBlock                "Integrator"
+         DstPort                 2
+       }
+       Line {
+         SrcBlock                "Constant1"
+         SrcPort                 1
+         DstBlock                "Integrator"
+         DstPort                 1
+       }
+       Line {
+         SrcBlock                "Integrator"
+         SrcPort                 state
+         Points                  [0, -53]
+         DstBlock                "Compare\nTo Constant"
+         DstPort                 1
+       }
+      }
+    }
+    Block {
+      BlockType                      Reference
+      Name                   "Slider\nGain ANGLE"
+      Ports                  [1, 1]
+      Position               [100, 235, 150, 265]
+      SourceBlock            "simulink/Math\nOperations/Slider\nGain"
+      SourceType             "Slider Gain"
+      ShowPortLabels         "FromPortIcon"
+      SystemSampleTime       "-1"
+      FunctionWithSeparateData off
+      RTWMemSecFuncInitTerm   "Inherit from model"
+      RTWMemSecFuncExecute    "Inherit from model"
+      RTWMemSecDataConstants  "Inherit from model"
+      RTWMemSecDataInternal   "Inherit from model"
+      RTWMemSecDataParameters "Inherit from model"
+      low                    "0"
+      gain                   "140.4"
+      high                   "360"
+    }
+    Block {
+      BlockType                      Reference
+      Name                   "Slider\nGain X"
+      Ports                  [1, 1]
+      Position               [105, 89, 150, 121]
+      SourceBlock            "simulink/Math\nOperations/Slider\nGain"
+      SourceType             "Slider Gain"
+      ShowPortLabels         "FromPortIcon"
+      SystemSampleTime       "-1"
+      FunctionWithSeparateData off
+      RTWMemSecFuncInitTerm   "Inherit from model"
+      RTWMemSecFuncExecute    "Inherit from model"
+      RTWMemSecDataConstants  "Inherit from model"
+      RTWMemSecDataInternal   "Inherit from model"
+      RTWMemSecDataParameters "Inherit from model"
+      low                    "0"
+      gain                   "0.69"
+      high                   "3"
+    }
+    Block {
+      BlockType                      Reference
+      Name                   "Slider\nGain Y"
+      Ports                  [1, 1]
+      Position               [100, 160, 150, 190]
+      SourceBlock            "simulink/Math\nOperations/Slider\nGain"
+      SourceType             "Slider Gain"
+      ShowPortLabels         "FromPortIcon"
+      SystemSampleTime       "-1"
+      FunctionWithSeparateData off
+      RTWMemSecFuncInitTerm   "Inherit from model"
+      RTWMemSecFuncExecute    "Inherit from model"
+      RTWMemSecDataConstants  "Inherit from model"
+      RTWMemSecDataInternal   "Inherit from model"
+      RTWMemSecDataParameters "Inherit from model"
+      low                    "0"
+      gain                   "0.584"
+      high                   "2.1"
+    }
+    Block {
+      BlockType                      Constant
+      Name                   "angle"
+      Position               [45, 235, 75, 265]
+    }
+    Block {
+      BlockType                      Gain
+      Name                   "to rad"
+      Position               [169, 195, 201, 230]
+      Orientation            "up"
+      NamePlacement          "alternate"
+      ShowName               off
+      Gain                   "pi/180"
+      ParameterDataTypeMode   "Inherit via internal rule"
+      OutDataTypeMode        "Inherit via internal rule"
+      SaturateOnIntegerOverflow        off
+    }
+    Block {
+      BlockType                      Constant
+      Name                   "x"
+      Position               [45, 90, 75, 120]
+    }
+    Block {
+      BlockType                      Constant
+      Name                   "y"
+      Position               [45, 160, 75, 190]
+    }
+    Line {
+      SrcBlock               "x"
+      SrcPort                1
+      DstBlock               "Slider\nGain X"
+      DstPort                1
+    }
+    Line {
+      SrcBlock               "y"
+      SrcPort                1
+      DstBlock               "Slider\nGain Y"
+      DstPort                1
+    }
+    Line {
+      SrcBlock               "angle"
+      SrcPort                1
+      DstBlock               "Slider\nGain ANGLE"
+      DstPort                1
+    }
+    Line {
+      SrcBlock               "Slider\nGain X"
+      SrcPort                1
+      Points                 [45, 0]
+      DstBlock               "Mux"
+      DstPort                1
+    }
+    Line {
+      SrcBlock               "Slider\nGain Y"
+      SrcPort                1
+      DstBlock               "Mux"
+      DstPort                2
+    }
+    Line {
+      SrcBlock               "Slider\nGain ANGLE"
+      SrcPort                1
+      Points                 [30, 0]
+      DstBlock               "to rad"
+      DstPort                1
+    }
+    Line {
+      SrcBlock               "to rad"
+      SrcPort                1
+      Points                 [0, -5]
+      DstBlock               "Mux"
+      DstPort                3
+    }
+    Line {
+      SrcBlock               "Mux"
+      SrcPort                1
+      Points                 [70, 0]
+      Branch {
+       Points                  [0, -45]
+       DstBlock                "Draw robot"
+       DstPort                 1
+      }
+      Branch {
+       Points                  [20, 0]
+       DstBlock                "Rotating laser"
+       DstPort                 1
+      }
+    }
+    Line {
+      SrcBlock               "Digital Clock"
+      SrcPort                1
+      DstBlock               "Display"
+      DstPort                1
+    }
+    Line {
+      SrcBlock               "Rotating laser"
+      SrcPort                2
+      Points                 [15, 0; 0, -45]
+      DstBlock               "Draw robot"
+      DstPort                2
+    }
+  }
+}
index 47291331623a4cbc5bb05ca214db9f597e5a609a..a1157d2258e08add7aad4d835eb944aa11cda019 100644 (file)
@@ -6,7 +6,7 @@ Model {
     NumRootInports         0
     NumRootOutports        0
     ParameterArgumentNames  ""
-    ComputedModelVersion    "1.290"
+    ComputedModelVersion    "1.294"
     NumModelReferences     0
     NumTestPointedSignals   0
   }
@@ -48,8 +48,8 @@ Model {
   ModifiedByFormat       "%<Auto>"
   LastModifiedBy         "wsh"
   ModifiedDateFormat     "%<Auto>"
-  LastModifiedDate       "Sat Apr 26 10:15:02 2008"
-  ModelVersionFormat     "1.%<AutoIncrement:290>"
+  LastModifiedDate       "Sat Apr 26 11:55:07 2008"
+  ModelVersionFormat     "1.%<AutoIncrement:294>"
   ConfigurationManager   "None"
   SimulationMode         "normal"
   LinearizationMsg       "none"
@@ -699,15 +699,6 @@ Model {
       SFunctionModules       "''"
       PortCounts             "[]"
     }
-    Block {
-      BlockType                      SignalGenerator
-      WaveForm               "sine"
-      TimeSource             "Use simulation time"
-      Amplitude                      "1"
-      Frequency                      "1"
-      Units                  "Hertz"
-      VectorParams1D         on
-    }
     Block {
       BlockType                      SignalSpecification
       Dimensions             "-1"
@@ -808,7 +799,7 @@ Model {
   }
   System {
     Name                   "reg_mcl"
-    Location               [358, 382, 1213, 951]
+    Location               [4, 431, 859, 1000]
     Open                   on
     ModelBrowserVisibility  off
     ModelBrowserWidth      200
@@ -1731,12 +1722,12 @@ Model {
       MaskIconOpaque         on
       MaskIconRotate         "none"
       MaskIconUnits          "normalized"
-      MaskValueString        "3|0|on"
+      MaskValueString        "3|1|on"
       MaskTabNameString              ",,"
       System {
        Name                    "Rotating laser"
        Location                [84, 67, 1108, 652]
-       Open                    on
+       Open                    off
        ModelBrowserVisibility  off
        ModelBrowserWidth       200
        ScreenColor             "white"
@@ -1926,6 +1917,28 @@ Model {
          Position                [740, 310, 760, 330]
          Decimation              "10"
        }
+       Block {
+         BlockType               Reference
+         Name                    "Compare\nTo Constant"
+         Ports                   [1, 1]
+         Position                [50, 165, 100, 195]
+         Orientation             "left"
+         SourceBlock             "simulink/Logic and Bit\nOperations/Compare"
+"\nTo Constant"
+         SourceType              "Compare To Constant"
+         ShowPortLabels          "FromPortIcon"
+         SystemSampleTime        "-1"
+         FunctionWithSeparateData off
+         RTWMemSecFuncInitTerm   "Inherit from model"
+         RTWMemSecFuncExecute    "Inherit from model"
+         RTWMemSecDataConstants  "Inherit from model"
+         RTWMemSecDataInternal   "Inherit from model"
+         RTWMemSecDataParameters "Inherit from model"
+         relop                   ">="
+         const                   "2*pi"
+         LogicOutDataTypeMode    "boolean"
+         ZeroCross               off
+       }
        Block {
          BlockType               Reference
          Name                    "Compare\nTo Zero"
@@ -1948,11 +1961,10 @@ Model {
        }
        Block {
          BlockType               Constant
-         Name                    "Constant"
-         Position                [145, 145, 175, 175]
-         Orientation             "up"
+         Name                    "Constant1"
+         Position                [35, 239, 100, 271]
          NamePlacement           "alternate"
-         Value                   "pi"
+         Value                   "rps*2*pi"
        }
        Block {
          BlockType               Demux
@@ -2032,20 +2044,11 @@ Model {
            }
          }
        }
-       Block {
-         BlockType               Gain
-         Name                    "Gain"
-         Position                [95, 95, 125, 125]
-         Gain                    "-1"
-         ParameterDataTypeMode   "Inherit via internal rule"
-         OutDataTypeMode         "Inherit via internal rule"
-         SaturateOnIntegerOverflow off
-       }
        Block {
          BlockType               HitCross
          Name                    "Hit \nCrossing"
          Ports                   [1, 1]
-         Position                [315, 95, 345, 125]
+         Position                [320, 95, 350, 125]
          AttributesFormatString  "ZC:%<ZeroCross>"
          HitCrossingDirection    "rising"
        }
@@ -2102,6 +2105,15 @@ Model {
            }
          }
        }
+       Block {
+         BlockType               Integrator
+         Name                    "Integrator"
+         Ports                   [2, 1, 0, 0, 1]
+         Position                [130, 238, 180, 307]
+         ExternalReset           "rising"
+         ShowStatePort           on
+         IgnoreLimit             off
+       }
        Block {
          BlockType               RandomNumber
          Name                    "Measurement noise"
@@ -2109,7 +2121,7 @@ Model {
          Orientation             "left"
          NamePlacement           "alternate"
          Variance                "(noise_stdev/180*pi)^2"
-         Seed                    "abs(rand(3,1)*10000)"
+         Seed                    "abs(floor(rand(3,1)*10000))"
        }
        Block {
          BlockType               Mux
@@ -2132,20 +2144,11 @@ Model {
          Position                [735, 19, 775, 61]
          OutPortSampleTime       "1/rps"
        }
-       Block {
-         BlockType               SignalGenerator
-         Name                    "Signal\nGenerator"
-         Ports                   [0, 1]
-         Position                [35, 95, 65, 125]
-         WaveForm                "sawtooth"
-         Amplitude               "pi"
-         Frequency               "rps"
-       }
        Block {
          BlockType               Sum
          Name                    "Subtract"
          Ports                   [2, 1]
-         Position                [250, 95, 280, 125]
+         Position                [270, 95, 300, 125]
          IconShape               "round"
          Inputs                  "-+|"
          CollapseMode            "All dimensions"
@@ -2206,25 +2209,6 @@ Model {
          OutDataTypeMode         "Inherit via internal rule"
          SaturateOnIntegerOverflow off
        }
-       Block {
-         BlockType               Sum
-         Name                    "Sum4"
-         Ports                   [2, 1]
-         Position                [150, 100, 170, 120]
-         ShowName                off
-         IconShape               "round"
-         Inputs                  "|++"
-         CollapseMode            "All dimensions"
-         InputSameDT             off
-         OutDataTypeMode         "Inherit via internal rule"
-         SaturateOnIntegerOverflow off
-         Port {
-           PortNumber              1
-           Name                    "Laser angle"
-           RTWStorageClass         "Auto"
-           DataLoggingNameMode     "SignalName"
-         }
-       }
        Block {
          BlockType               Sum
          Name                    "Sum5"
@@ -2262,101 +2246,101 @@ Model {
          BusOutputAsStruct       off
        }
        Line {
-         SrcBlock                "Signal\nGenerator"
-         SrcPort                 1
-         DstBlock                "Gain"
-         DstPort                 1
-       }
-       Line {
-         SrcBlock                "Subtract"
+         SrcBlock                "Sum5"
          SrcPort                 1
-         DstBlock                "Hit \nCrossing"
+         DstBlock                "Rate Transition1"
          DstPort                 1
        }
        Line {
-         SrcBlock                "Hit \nCrossing"
-         SrcPort                 1
-         Points                  [20, 0]
+         SrcBlock                "Demux1"
+         SrcPort                 3
+         Points                  [0, 15]
          Branch {
-           DstBlock                "Demux"
+           DstBlock                "Sum3"
            DstPort                 1
          }
          Branch {
-           Points                  [400, 0]
-           DstBlock                "Individual output"
-           DstPort                 trigger
+           Points                  [35, 0]
+           DstBlock                "Sum"
+           DstPort                 1
          }
        }
        Line {
-         SrcBlock                "Individual output"
+         SrcBlock                "Demux1"
+         SrcPort                 2
+         DstBlock                "Sum2"
+         DstPort                 1
+       }
+       Line {
+         SrcBlock                "Demux1"
          SrcPort                 1
-         DstBlock                "Individual"
+         DstBlock                "Sum1"
          DstPort                 1
        }
        Line {
-         SrcBlock                "Beacon Angles"
+         SrcBlock                "Sum1"
          SrcPort                 1
-         Points                  [50, 0]
-         Branch {
-           DstBlock                "Subtract"
-           DstPort                 1
-         }
-         Branch {
-           DstBlock                "Sum5"
-           DstPort                 1
-         }
+         DstBlock                "Beacon memory"
+         DstPort                 1
        }
        Line {
-         SrcBlock                "Beacon memory"
+         SrcBlock                "Sum2"
          SrcPort                 1
-         Points                  [40, 0; 0, 50]
-         DstBlock                "Mux"
+         DstBlock                "Beacon memory1"
          DstPort                 1
        }
        Line {
-         SrcBlock                "Beacon memory1"
+         SrcBlock                "Sum3"
          SrcPort                 1
-         DstBlock                "Mux"
-         DstPort                 2
+         DstBlock                "Beacon memory2"
+         DstPort                 1
        }
        Line {
-         SrcBlock                "Beacon memory2"
+         SrcBlock                "Measurement noise"
          SrcPort                 1
-         Points                  [40, 0; 0, -50]
-         DstBlock                "Mux"
-         DstPort                 3
+         Points                  [-30, 0]
+         Branch {
+           Points                  [-30, 0]
+           DstBlock                "Sum5"
+           DstPort                 2
+         }
+         Branch {
+           DstBlock                "Demux1"
+           DstPort                 1
+         }
        }
        Line {
-         SrcBlock                "Demux"
+         SrcBlock                "Sum"
          SrcPort                 1
-         Points                  [0, 219]
-         DstBlock                "Beacon memory2"
-         DstPort                 trigger
+         DstBlock                "Individual output"
+         DstPort                 1
        }
        Line {
-         SrcBlock                "Demux"
-         SrcPort                 2
-         Points                  [0, 149]
-         DstBlock                "Beacon memory1"
-         DstPort                 trigger
+         SrcBlock                "Compare\nTo Zero"
+         SrcPort                 1
+         Points                  [40, 0]
+         DstBlock                "Do not produce\ndata at start. We\nhave to "
+"wait one turn."
+         DstPort                 enable
        }
        Line {
-         SrcBlock                "Demux"
-         SrcPort                 3
-         Points                  [0, 81; 150, 0]
-         DstBlock                "Beacon memory"
-         DstPort                 trigger
+         SrcBlock                "Do not produce\ndata at start. We\nhave to "
+"wait one turn."
+         SrcPort                 1
+         DstBlock                "Simultaneous"
+         DstPort                 1
        }
        Line {
-         SrcBlock                "Pos"
+         SrcBlock                "Rate Transition"
          SrcPort                 1
-         DstBlock                "Beacon Angles"
+         DstBlock                "Do not produce\ndata at start. We\nhave to "
+"wait one turn."
          DstPort                 1
        }
        Line {
-         SrcBlock                "Mux"
+         SrcBlock                "Clock"
          SrcPort                 1
-         DstBlock                "Rate Transition"
+         DstBlock                "Compare\nTo Zero"
          DstPort                 1
        }
        Line {
@@ -2367,150 +2351,153 @@ Model {
          DstPort                 1
        }
        Line {
-         SrcBlock                "Clock"
+         SrcBlock                "Mux"
          SrcPort                 1
-         DstBlock                "Compare\nTo Zero"
+         DstBlock                "Rate Transition"
          DstPort                 1
        }
        Line {
-         SrcBlock                "Rate Transition"
+         SrcBlock                "Pos"
          SrcPort                 1
-         DstBlock                "Do not produce\ndata at start. We\nhave to "
-"wait one turn."
+         DstBlock                "Beacon Angles"
          DstPort                 1
        }
        Line {
-         SrcBlock                "Do not produce\ndata at start. We\nhave to "
-"wait one turn."
-         SrcPort                 1
-         DstBlock                "Simultaneous"
-         DstPort                 1
+         SrcBlock                "Demux"
+         SrcPort                 3
+         Points                  [0, 81; 150, 0]
+         DstBlock                "Beacon memory"
+         DstPort                 trigger
        }
        Line {
-         SrcBlock                "Compare\nTo Zero"
-         SrcPort                 1
-         Points                  [40, 0]
-         DstBlock                "Do not produce\ndata at start. We\nhave to "
-"wait one turn."
-         DstPort                 enable
+         SrcBlock                "Demux"
+         SrcPort                 2
+         Points                  [0, 149]
+         DstBlock                "Beacon memory1"
+         DstPort                 trigger
        }
        Line {
-         SrcBlock                "Sum"
+         SrcBlock                "Demux"
          SrcPort                 1
-         DstBlock                "Individual output"
-         DstPort                 1
+         Points                  [0, 219]
+         DstBlock                "Beacon memory2"
+         DstPort                 trigger
        }
        Line {
-         SrcBlock                "Measurement noise"
+         SrcBlock                "Beacon memory2"
          SrcPort                 1
-         Points                  [-30, 0]
-         Branch {
-           DstBlock                "Demux1"
-           DstPort                 1
-         }
-         Branch {
-           Points                  [-30, 0]
-           DstBlock                "Sum5"
-           DstPort                 2
-         }
+         Points                  [40, 0; 0, -50]
+         DstBlock                "Mux"
+         DstPort                 3
        }
        Line {
-         SrcBlock                "Sum3"
+         SrcBlock                "Beacon memory1"
          SrcPort                 1
-         DstBlock                "Beacon memory2"
-         DstPort                 1
+         DstBlock                "Mux"
+         DstPort                 2
        }
        Line {
-         SrcBlock                "Sum2"
+         SrcBlock                "Beacon memory"
          SrcPort                 1
-         DstBlock                "Beacon memory1"
+         Points                  [40, 0; 0, 50]
+         DstBlock                "Mux"
          DstPort                 1
        }
        Line {
-         SrcBlock                "Sum1"
+         SrcBlock                "Beacon Angles"
          SrcPort                 1
-         DstBlock                "Beacon memory"
-         DstPort                 1
+         Points                  [70, 0]
+         Branch {
+           DstBlock                "Sum5"
+           DstPort                 1
+         }
+         Branch {
+           DstBlock                "Subtract"
+           DstPort                 1
+         }
        }
        Line {
-         SrcBlock                "Demux1"
+         SrcBlock                "Individual output"
          SrcPort                 1
-         DstBlock                "Sum1"
-         DstPort                 1
-       }
-       Line {
-         SrcBlock                "Demux1"
-         SrcPort                 2
-         DstBlock                "Sum2"
+         DstBlock                "Individual"
          DstPort                 1
        }
        Line {
-         SrcBlock                "Demux1"
-         SrcPort                 3
-         Points                  [0, 15]
+         SrcBlock                "Hit \nCrossing"
+         SrcPort                 1
+         Points                  [15, 0]
          Branch {
-           Points                  [35, 0]
-           DstBlock                "Sum"
-           DstPort                 1
+           Points                  [400, 0]
+           DstBlock                "Individual output"
+           DstPort                 trigger
          }
          Branch {
-           DstBlock                "Sum3"
+           DstBlock                "Demux"
            DstPort                 1
          }
        }
        Line {
-         Name                    "Laser angle"
-         SrcBlock                "Sum4"
+         SrcBlock                "Subtract"
          SrcPort                 1
-         Points                  [30, 0]
-         Branch {
-           Labels                  [-1, 1]
-           DstBlock                "Subtract"
-           DstPort                 2
-         }
+         DstBlock                "Hit \nCrossing"
+         DstPort                 1
+       }
+       Line {
+         SrcBlock                "Integrator"
+         SrcPort                 1
+         Points                  [20, 0]
          Branch {
-           Points                  [0, 140]
+           Labels                  [1, 0]
+           Points                  [0, -25]
+           Branch {
+             DstBlock                "Sum"
+             DstPort                 2
+           }
            Branch {
              Points                  [0, 65]
+             Branch {
+               DstBlock                "Sum1"
+               DstPort                 2
+             }
              Branch {
                Points                  [0, 70]
                Branch {
-                 Points                  [0, 70]
-                 DstBlock                "Sum3"
+                 DstBlock                "Sum2"
                  DstPort                 2
                }
                Branch {
-                 DstBlock                "Sum2"
+                 Points                  [0, 70]
+                 DstBlock                "Sum3"
                  DstPort                 2
                }
              }
-             Branch {
-               DstBlock                "Sum1"
-               DstPort                 2
-             }
-           }
-           Branch {
-             DstBlock                "Sum"
-             DstPort                 2
            }
          }
+         Branch {
+           Labels                  [-1, 1]
+           Points                  [0, -165]
+           DstBlock                "Subtract"
+           DstPort                 2
+         }
        }
        Line {
-         SrcBlock                "Gain"
+         SrcBlock                "Compare\nTo Constant"
          SrcPort                 1
-         DstBlock                "Sum4"
-         DstPort                 1
+         Points                  [-30, 0; 0, 110]
+         DstBlock                "Integrator"
+         DstPort                 2
        }
        Line {
-         SrcBlock                "Constant"
+         SrcBlock                "Constant1"
          SrcPort                 1
-         DstBlock                "Sum4"
-         DstPort                 2
+         DstBlock                "Integrator"
+         DstPort                 1
        }
        Line {
-         SrcBlock                "Sum5"
-         SrcPort                 1
-         DstBlock                "Rate Transition1"
+         SrcBlock                "Integrator"
+         SrcPort                 state
+         Points                  [0, -53]
+         DstBlock                "Compare\nTo Constant"
          DstPort                 1
        }
       }
@@ -2633,7 +2620,7 @@ Model {
       Position               [20, 15, 60, 55]
       IOType                 "viewer"
       Location               [6, 760, 772, 999]
-      Open                   on
+      Open                   off
       NumInputPorts          "1"
       ZoomMode               "yonly"
       List {
index e6349af382b855038d6d96ab64df52c5753f211e..9c7593572ca1148d209b221b5fd88575b8720aa7 100644 (file)
@@ -84,11 +84,19 @@ function CheckPrms(block)
 %endfunction\r
 \r
 function DoPostPropSetup(block)\r
-  block.NumDworks             = 1;\r
-  block.Dwork(1).Name         = 'plothandle';\r
+  block.NumDworks             = 3;\r
+  block.Dwork(1).Name         = 'plothandlerobot';\r
   block.Dwork(1).Dimensions   = 5;\r
   block.Dwork(1).DatatypeID   = 0;\r
   block.Dwork(1).Complexity   = 'Real';\r
+  block.Dwork(2).Name         = 'plothandlelaser';\r
+  block.Dwork(2).Dimensions   = 5;\r
+  block.Dwork(2).DatatypeID   = 0;\r
+  block.Dwork(2).Complexity   = 'Real';\r
+  block.Dwork(3).Name         = 'beamindex';\r
+  block.Dwork(3).Dimensions   = 1;\r
+  block.Dwork(3).DatatypeID   = 0;\r
+  block.Dwork(3).Complexity   = 'Real';\r
 %endfunction\r
 \r
 function SetInputPortSampleTime(block, port, time)\r
@@ -104,7 +112,12 @@ function Start(block)
     %set(fig, 'Color', 'black');\r
     hold('on');\r
     fig_axes = get(hFig, 'CurrentAxes');\r
+    % Clear space for storing robot plot handles\r
     block.Dwork(1).Data = zeros(size(block.Dwork(1).Data));\r
+    % Clear space for storing leaser beams handles\r
+    block.Dwork(2).Data = zeros(size(block.Dwork(2).Data));\r
+    % Initialize beam counter\r
+    block.Dwork(3).Data = 0;\r
     drawStyle = block.DialogPrm(2).Data;\r
     if drawStyle==0,\r
         axis('equal');\r
@@ -139,8 +152,9 @@ function Update(block)
         sin(x(3))  cos(x(3)) x(2)\r
         0 0 1]';\r
 \r
+    % Draw robot\r
     oldPlot = block.Dwork(1).Data;\r
-    toDelete = oldPlot([1 2]) ~= 0;\r
+    toDelete = oldPlot ~= 0;\r
     if any(toDelete), delete(oldPlot(toDelete)); end;\r
     \r
     outline=outline*mid*trans;\r
@@ -153,20 +167,36 @@ function Update(block)
         oldPlot(1) = plot(outline(:,1), outline(:,2), drawStyle);\r
         oldPlot(2) = plot(arrow(:,1), arrow(:,2), drawStyle);\r
     end\r
+    block.Dwork(1).Data = oldPlot;\r
+\r
+    % Draw laser beams\r
     if block.InputPort(2).IsSampleHit(),\r
-        if oldPlot(3), delete(oldPlot(3)), end;\r
-       oldPlot(3)=0;\r
+        oldPlot = block.Dwork(2).Data;\r
+        counter = block.Dwork(3).Data;\r
+        if length(y) == 1,\r
+            % Delete only the line which is going to be redrawn\r
+            counter = 1;%mod(counter,3)+1;\r
+            if oldPlot(counter), \r
+                delete(oldPlot(counter));\r
+                oldPlot(counter) = 0;\r
+            end;\r
+        else\r
+            % Received more beacons simultaneously -> delete all old\r
+            delete(oldPlot(oldPlot ~= 0));\r
+            counter = 1;\r
+        end\r
         if any(y~=0),\r
-            dir1 = homog(3*[robot.laserx robot.lasery; cos(y(1)) sin(y(1))]);\r
-            dir2 = homog(3*[robot.laserx robot.lasery; cos(y(2)) sin(y(2))]);\r
-            dir3 = homog(3*[robot.laserx robot.lasery; cos(y(3)) sin(y(3))]);\r
-            d = [dir1*trans;\r
-                dir2*trans;\r
-                dir3*trans];\r
-            oldPlot(3) = plot(d(:,1), d(:,2), 'r');\r
+            for i=[1:length(y)],\r
+                beam = homog([robot.laserx             robot.lasery; ...\r
+                              robot.laserx+4*cos(y(i)) robot.lasery+4*sin(y(i))]);\r
+                \r
+                line = beam*trans;\r
+                oldPlot(counter+i-1) = plot(line(:,1), line(:,2), 'r');\r
+            end\r
         end\r
+        block.Dwork(2).Data = oldPlot;\r
+        block.Dwork(3).Data = counter;\r
     end\r
     drawnow\r
-    block.Dwork(1).Data = oldPlot;\r
     %endfunction\r
 \r