From 347cf557f77fbe8cf7cad60b37251f1258ffbebf Mon Sep 17 00:00:00 2001 From: Nuno Guedelha Date: Tue, 18 May 2021 20:47:39 +0200 Subject: [PATCH 1/4] Update model iCubGazeboV2_5 configuration w.r.t. matlab-whole-body-simulator/pull/49 - Full dependency PR link: https://github.com/dic-iit/matlab-whole-body-simulator/pull/49 --- .../app/robots/iCubGazeboV2_5/configRobotSim.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/+floatingBaseBalancingTorqueControlWithSimulator/app/robots/iCubGazeboV2_5/configRobotSim.m b/controllers/+floatingBaseBalancingTorqueControlWithSimulator/app/robots/iCubGazeboV2_5/configRobotSim.m index 44b1c40..72e4ef9 100644 --- a/controllers/+floatingBaseBalancingTorqueControlWithSimulator/app/robots/iCubGazeboV2_5/configRobotSim.m +++ b/controllers/+floatingBaseBalancingTorqueControlWithSimulator/app/robots/iCubGazeboV2_5/configRobotSim.m @@ -49,7 +49,7 @@ % Initial condition of iCub and for the integrators. initialConditions.base_position = [0; 0; 0.619]; initialConditions.orientation = diag([-1, -1, 1]); -initialConditions.w_H_b = mwbs.State.Rp2H(initialConditions.orientation, initialConditions.base_position); +initialConditions.w_H_b = mwbs.Utils.Rp2H(initialConditions.orientation, initialConditions.base_position); % joint (inital) position initialConditions.s = [ From 9663c200741428054a3d89149e52b945cd2f57bb Mon Sep 17 00:00:00 2001 From: Nuno Guedelha Date: Wed, 19 May 2021 00:04:08 +0200 Subject: [PATCH 2/4] Replace 'holder' blocks in +floatingBaseBalancingTorqueControlWithSimulator - Restore the link of the 'holder' blocks in the controller model to the WBToolbox (utilities) library -> after the new holder implementation was (https://github.com/robotology/wb-toolbox/pull/211). - Remove the 'holder' block (not required anymore) from the 'utilityBlocks_lib.slx' library. --- .../torqueControlBalancingWithSimu.mdl | 760 +++++++++--------- .../Utilities/utilityBlocks_lib.slx | Bin 60583 -> 58636 bytes 2 files changed, 366 insertions(+), 394 deletions(-) diff --git a/controllers/+floatingBaseBalancingTorqueControlWithSimulator/torqueControlBalancingWithSimu.mdl b/controllers/+floatingBaseBalancingTorqueControlWithSimulator/torqueControlBalancingWithSimu.mdl index 34d5344..587283c 100644 --- a/controllers/+floatingBaseBalancingTorqueControlWithSimulator/torqueControlBalancingWithSimu.mdl +++ b/controllers/+floatingBaseBalancingTorqueControlWithSimulator/torqueControlBalancingWithSimu.mdl @@ -7,7 +7,7 @@ Model { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" - ComputedModelVersion "3.131" + ComputedModelVersion "3.138" NumModelReferences 0 NumTestPointedSignals 0 NumProvidedFunctions 0 @@ -167,9 +167,9 @@ Model { Type "LIBRARY_BLOCK" } ExternalFileReference { - Reference "utilityBlocks_lib/Holder" + Reference "WBToolboxLibrary/Utilities/holder\n" Path "torqueControlBalancingWithSimu/MOMENTUM BASED TORQUE CONTROL/Joint Torque Saturation/holder 7" - SID "4996" + SID "5021" Type "LIBRARY_BLOCK" } ExternalFileReference { @@ -201,17 +201,17 @@ Model { Type "LIBRARY_BLOCK" } ExternalFileReference { - Reference "utilityBlocks_lib/Holder" + Reference "WBToolboxLibrary/Utilities/holder\n" Path "torqueControlBalancingWithSimu/MOMENTUM BASED TORQUE CONTROL/Robot State and References/Compute bas" "e to fixed link transform/LFoot to base link transform /holder 1" - SID "4982" + SID "5022" Type "LIBRARY_BLOCK" } ExternalFileReference { - Reference "utilityBlocks_lib/Holder" + Reference "WBToolboxLibrary/Utilities/holder\n" Path "torqueControlBalancingWithSimu/MOMENTUM BASED TORQUE CONTROL/Robot State and References/Compute bas" "e to fixed link transform/LFoot to base link transform /holder 2" - SID "4983" + SID "5024" Type "LIBRARY_BLOCK" } ExternalFileReference { @@ -229,17 +229,17 @@ Model { Type "LIBRARY_BLOCK" } ExternalFileReference { - Reference "utilityBlocks_lib/Holder" + Reference "WBToolboxLibrary/Utilities/holder\n" Path "torqueControlBalancingWithSimu/MOMENTUM BASED TORQUE CONTROL/Robot State and References/Compute bas" "e to fixed link transform/RFoot to base link transform/holder 3" - SID "4984" + SID "5025" Type "LIBRARY_BLOCK" } ExternalFileReference { - Reference "utilityBlocks_lib/Holder" + Reference "WBToolboxLibrary/Utilities/holder\n" Path "torqueControlBalancingWithSimu/MOMENTUM BASED TORQUE CONTROL/Robot State and References/Compute bas" "e to fixed link transform/RFoot to base link transform/holder 4" - SID "4985" + SID "5026" Type "LIBRARY_BLOCK" } ExternalFileReference { @@ -264,17 +264,17 @@ Model { Type "LIBRARY_BLOCK" } ExternalFileReference { - Reference "utilityBlocks_lib/Holder" + Reference "WBToolboxLibrary/Utilities/holder\n" Path "torqueControlBalancingWithSimu/MOMENTUM BASED TORQUE CONTROL/Robot State and References/State Machi" "ne/holder 5" - SID "4993" + SID "5027" Type "LIBRARY_BLOCK" } ExternalFileReference { - Reference "utilityBlocks_lib/Holder" + Reference "WBToolboxLibrary/Utilities/holder\n" Path "torqueControlBalancingWithSimu/MOMENTUM BASED TORQUE CONTROL/Robot State and References/State Machi" "ne/holder 6" - SID "4994" + SID "5028" Type "LIBRARY_BLOCK" } ExternalFileReference { @@ -403,7 +403,7 @@ Model { } Array { Type "Simulink.EditorInfo" - Dimension 83 + Dimension 85 Object { $ObjectID 5 IsActive [1] @@ -420,99 +420,99 @@ Model { IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "4955" + LoadSaveID "5027" Extents [2171.0, 1188.0] - ZoomFactor [2.0773052223433903] - Offset [-119.91137569995328, 23.052613159122757] - SceneRectInView [-119.91137569995328, 23.052613159122757, 1045.1040013999066, 571.89477368175449] + ZoomFactor [5.35] + Offset [869.696261682243, 445.47196261682245] + SceneRectInView [869.696261682243, 445.47196261682245, 405.79439252336454, 222.05607476635515] } Object { $ObjectID 7 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "5014" + LoadSaveID "4836" Extents [2171.0, 1188.0] - ZoomFactor [2.03] - Offset [-310.81869612068976, -180.61083743842369] - SceneRectInView [-310.81869612068976, -180.61083743842369, 1069.4581280788179, 585.22167487684737] + ZoomFactor [1.7499999999999998] + Offset [89.479636723777276, -28.60714285714289] + SceneRectInView [89.479636723777276, -28.60714285714289, 1240.5714285714287, 678.85714285714289] } Object { $ObjectID 8 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "4938" + LoadSaveID "4850" Extents [2171.0, 1188.0] - ZoomFactor [2.9013369436452869] - Offset [-326.36442414255714, -208.23320111992533] - SceneRectInView [-326.36442414255714, -208.23320111992533, 748.27572328511428, 409.46640223985065] + ZoomFactor [1.4619722213339303] + Offset [435.01764465702286, -184.30046955202982] + SceneRectInView [435.01764465702286, -184.30046955202982, 1484.9803356859543, 812.60093910405965] } Object { $ObjectID 9 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "4850" + LoadSaveID "5021" Extents [2171.0, 1188.0] - ZoomFactor [1.3964802319507956] - Offset [400.19641548607717, -203.35510808500248] - SceneRectInView [400.19641548607717, -203.35510808500248, 1554.6227940278457, 850.710216170005] + ZoomFactor [5.35] + Offset [869.696261682243, 445.47196261682245] + SceneRectInView [869.696261682243, 445.47196261682245, 405.79439252336454, 222.05607476635515] } Object { $ObjectID 10 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "4226" + LoadSaveID "2087" Extents [2171.0, 1188.0] - ZoomFactor [4.6350722637938047] - Offset [12.87372526868586, 135.34665821934539] - SceneRectInView [12.87372526868586, 135.34665821934539, 468.38536196262828, 256.30668356130923] + ZoomFactor [1.7499999999999998] + Offset [-736.65534376844744, 2332.9648668093268] + SceneRectInView [-736.65534376844744, 2332.9648668093268, 1240.5714285714287, 678.85714285714289] } Object { $ObjectID 11 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "4993" + LoadSaveID "4553" Extents [2171.0, 1188.0] - ZoomFactor [3.8] - Offset [-158.02631578947376, -70.1842105263158] - SceneRectInView [-158.02631578947376, -70.1842105263158, 571.31578947368428, 312.63157894736844] + ZoomFactor [2.959848934448341] + Offset [-123.75340862692485, -116.18591781381241] + SceneRectInView [-123.75340862692485, -116.18591781381241, 733.4833797538497, 401.37183562762482] } Object { $ObjectID 12 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "4994" + LoadSaveID "2163" Extents [2171.0, 1188.0] - ZoomFactor [3.8] - Offset [-158.02631578947376, -70.1842105263158] - SceneRectInView [-158.02631578947376, -70.1842105263158, 571.31578947368428, 312.63157894736844] + ZoomFactor [1.4201130022789792] + Offset [-608.35758121641425, -114.33481638525888] + SceneRectInView [-608.35758121641425, -114.33481638525888, 1528.7515828078519, 836.55314618872774] } Object { $ObjectID 13 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "4913" + LoadSaveID "4307" Extents [2171.0, 1188.0] - ZoomFactor [3.2951942101426641] - Offset [80.154339026122614, 154.55463376836479] - SceneRectInView [80.154339026122614, 154.55463376836479, 658.838253999605, 360.52503258937384] + ZoomFactor [2.56669704897075] + Offset [-48.06941549217828, -144.92583198051949] + SceneRectInView [-48.06941549217828, -144.92583198051949, 845.83414348435656, 462.851663961039] } Object { $ObjectID 14 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "4216" + LoadSaveID "4211" Extents [2171.0, 1188.0] - ZoomFactor [5.2673944072532821] - Offset [569.47947453590621, 441.73077216658527] - SceneRectInView [569.47947453590621, 441.73077216658527, 412.15823842818759, 225.53845566682949] + ZoomFactor [2.4071047957371228] + Offset [-112.83168536009441, -373.76948051948051] + SceneRectInView [-112.83168536009441, -373.76948051948051, 901.91337072018882, 493.538961038961] } Object { $ObjectID 15 @@ -530,94 +530,160 @@ Model { IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "4620" + LoadSaveID "4245" Extents [2171.0, 1188.0] - ZoomFactor [10.0] - Offset [82.52421875, 140.1] - SceneRectInView [82.52421875, 140.1, 217.1, 118.8] + ZoomFactor [1.4619722213339303] + Offset [435.01764465702286, -184.30046955202982] + SceneRectInView [435.01764465702286, -184.30046955202982, 1484.9803356859543, 812.60093910405965] } Object { $ObjectID 17 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "2163" + LoadSaveID "4996" Extents [2171.0, 1188.0] - ZoomFactor [1.4201130022789792] - Offset [-608.35758121641425, -114.33481638525888] - SceneRectInView [-608.35758121641425, -114.33481638525888, 1528.7515828078519, 836.55314618872774] + ZoomFactor [6.803174603174603] + Offset [12.942137190853941, -10.749679188054131] + SceneRectInView [12.942137190853941, -10.749679188054131, 319.11572561829212, 174.62435837610826] } Object { $ObjectID 18 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "3241" + LoadSaveID "4955" Extents [2171.0, 1188.0] - ZoomFactor [1.5612382234185733] - Offset [-827.23464439655174, -71.967241379310337] - SceneRectInView [-827.23464439655174, -71.967241379310337, 1390.5629310344827, 760.93448275862067] + ZoomFactor [2.0773052223433903] + Offset [-119.91137569995328, 23.052613159122757] + SceneRectInView [-119.91137569995328, 23.052613159122757, 1045.1040013999066, 571.89477368175449] } Object { $ObjectID 19 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "4030" + LoadSaveID "5014" Extents [2171.0, 1188.0] - ZoomFactor [3.2861189801699715] - Offset [256.79612068965514, -277.26034482758621] - SceneRectInView [256.79612068965514, -277.26034482758621, 660.65775862068972, 361.52068965517242] + ZoomFactor [2.03] + Offset [-310.81869612068976, -180.61083743842369] + SceneRectInView [-310.81869612068976, -180.61083743842369, 1069.4581280788179, 585.22167487684737] } Object { $ObjectID 20 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "4806" + LoadSaveID "4938" Extents [2171.0, 1188.0] - ZoomFactor [2.0483743061062651] - Offset [-793.97389720558533, -290.08334454895737] - SceneRectInView [-793.97389720558533, -290.08334454895737, 1059.8648857917149, 579.97212543554] + ZoomFactor [2.9013369436452869] + Offset [-326.36442414255714, -208.23320111992533] + SceneRectInView [-326.36442414255714, -208.23320111992533, 748.27572328511428, 409.46640223985065] } Object { $ObjectID 21 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "4245" + LoadSaveID "4226" Extents [2171.0, 1188.0] - ZoomFactor [1.0] - Offset [92.0078125, -350.98802908437432] - SceneRectInView [92.0078125, -350.98802908437432, 2171.0, 1188.0] + ZoomFactor [4.6350722637938047] + Offset [12.87372526868586, 135.34665821934539] + SceneRectInView [12.87372526868586, 135.34665821934539, 468.38536196262828, 256.30668356130923] } Object { $ObjectID 22 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "4211" + LoadSaveID "4993" Extents [2171.0, 1188.0] - ZoomFactor [2.4071047957371228] - Offset [-112.83168536009441, -373.76948051948051] - SceneRectInView [-112.83168536009441, -373.76948051948051, 901.91337072018882, 493.538961038961] + ZoomFactor [3.8] + Offset [-158.02631578947376, -70.1842105263158] + SceneRectInView [-158.02631578947376, -70.1842105263158, 571.31578947368428, 312.63157894736844] } Object { $ObjectID 23 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "4307" + LoadSaveID "4994" Extents [2171.0, 1188.0] - ZoomFactor [2.56669704897075] - Offset [-48.06941549217828, -144.92583198051949] - SceneRectInView [-48.06941549217828, -144.92583198051949, 845.83414348435656, 462.851663961039] + ZoomFactor [3.8] + Offset [-158.02631578947376, -70.1842105263158] + SceneRectInView [-158.02631578947376, -70.1842105263158, 571.31578947368428, 312.63157894736844] } Object { $ObjectID 24 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" + LoadSaveID "4913" + Extents [2171.0, 1188.0] + ZoomFactor [3.2951942101426641] + Offset [80.154339026122614, 154.55463376836479] + SceneRectInView [80.154339026122614, 154.55463376836479, 658.838253999605, 360.52503258937384] + } + Object { + $ObjectID 25 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "4216" + Extents [2171.0, 1188.0] + ZoomFactor [5.2673944072532821] + Offset [569.47947453590621, 441.73077216658527] + SceneRectInView [569.47947453590621, 441.73077216658527, 412.15823842818759, 225.53845566682949] + } + Object { + $ObjectID 26 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "4620" + Extents [2171.0, 1188.0] + ZoomFactor [10.0] + Offset [82.52421875, 140.1] + SceneRectInView [82.52421875, 140.1, 217.1, 118.8] + } + Object { + $ObjectID 27 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "3241" + Extents [2171.0, 1188.0] + ZoomFactor [1.5612382234185733] + Offset [-827.23464439655174, -71.967241379310337] + SceneRectInView [-827.23464439655174, -71.967241379310337, 1390.5629310344827, 760.93448275862067] + } + Object { + $ObjectID 28 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "4030" + Extents [2171.0, 1188.0] + ZoomFactor [3.2861189801699715] + Offset [256.79612068965514, -277.26034482758621] + SceneRectInView [256.79612068965514, -277.26034482758621, 660.65775862068972, 361.52068965517242] + } + Object { + $ObjectID 29 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "4806" + Extents [2171.0, 1188.0] + ZoomFactor [2.0483743061062651] + Offset [-793.97389720558533, -290.08334454895737] + SceneRectInView [-793.97389720558533, -290.08334454895737, 1059.8648857917149, 579.97212543554] + } + Object { + $ObjectID 30 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" LoadSaveID "4519" Extents [2171.0, 1188.0] ZoomFactor [1.5723743845222296] @@ -625,7 +691,7 @@ Model { SceneRectInView [-706.68143309105676, -478.27262581168833, 1380.7144286821135, 755.54525162337666] } Object { - $ObjectID 25 + $ObjectID 31 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -636,7 +702,7 @@ Model { SceneRectInView [96.146189545676577, -4.1074743527112787, 703.95762090864685, 385.21494870542256] } Object { - $ObjectID 26 + $ObjectID 32 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -647,7 +713,7 @@ Model { SceneRectInView [-211.69612560424537, 252.15114629325387, 605.0, 331.06402579456471] } Object { - $ObjectID 27 + $ObjectID 33 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -658,7 +724,7 @@ Model { SceneRectInView [-410.51953125, -620.5, 2171.0, 1188.0] } Object { - $ObjectID 28 + $ObjectID 34 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -669,7 +735,7 @@ Model { SceneRectInView [-128.63423482247225, -154.52586206896552, 701.83189655172418, 384.05172413793105] } Object { - $ObjectID 29 + $ObjectID 35 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -680,7 +746,7 @@ Model { SceneRectInView [-194.803483319316, -141.48435660218672, 1189.606966638632, 650.96871320437344] } Object { - $ObjectID 30 + $ObjectID 36 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -691,29 +757,7 @@ Model { SceneRectInView [-1178.7732548019947, -284.77258542366184, 1369.7496346039895, 749.54517084732367] } Object { - $ObjectID 31 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "4553" - Extents [2171.0, 1188.0] - ZoomFactor [2.441659625391233] - Offset [-116.92703117366869, -144.85219724177151] - SceneRectInView [-116.92703117366869, -144.85219724177151, 889.14932180693916, 486.55430414861524] - } - Object { - $ObjectID 32 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "2087" - Extents [2171.0, 1188.0] - ZoomFactor [1.7499999999999998] - Offset [-736.65534376844744, 2332.9648668093268] - SceneRectInView [-736.65534376844744, 2332.9648668093268, 1240.5714285714287, 678.85714285714289] - } - Object { - $ObjectID 33 + $ObjectID 37 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -724,7 +768,7 @@ Model { SceneRectInView [-33.739659926470551, -42.831932773109244, 364.8739495798319, 199.66386554621849] } Object { - $ObjectID 34 + $ObjectID 38 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -735,7 +779,7 @@ Model { SceneRectInView [-33.739659926470551, -42.831932773109244, 364.8739495798319, 199.66386554621849] } Object { - $ObjectID 35 + $ObjectID 39 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -746,7 +790,7 @@ Model { SceneRectInView [42.960073495100346, -92.586881707886135, 510.17360300979931, 279.17376341577227] } Object { - $ObjectID 36 + $ObjectID 40 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -757,7 +801,7 @@ Model { SceneRectInView [-39.932291666666657, -42.75, 452.29166666666669, 247.5] } Object { - $ObjectID 37 + $ObjectID 41 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -768,7 +812,7 @@ Model { SceneRectInView [-256.01528596010269, -463.59387395006996, 1774.7883844202054, 971.18774790013993] } Object { - $ObjectID 38 + $ObjectID 42 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -779,7 +823,7 @@ Model { SceneRectInView [1438.5531788793103, 818.97931034482758, 778.56551724137933, 426.04137931034484] } Object { - $ObjectID 39 + $ObjectID 43 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -790,7 +834,7 @@ Model { SceneRectInView [917.234213362069, -427.28793103448277, 975.078448275862, 533.57586206896553] } Object { - $ObjectID 40 + $ObjectID 44 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -801,7 +845,7 @@ Model { SceneRectInView [-544.74878771551721, -352.2155172413793, 963.84913793103453, 527.43103448275861] } Object { - $ObjectID 41 + $ObjectID 45 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -812,7 +856,7 @@ Model { SceneRectInView [374.06441393490434, 302.07339302379842, 1297.2149221301913, 709.85321395240317] } Object { - $ObjectID 42 + $ObjectID 46 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -823,18 +867,7 @@ Model { SceneRectInView [732.82082435344819, -198.046551724138, 2023.1474137931036, 1107.093103448276] } Object { - $ObjectID 43 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "4836" - Extents [2171.0, 1188.0] - ZoomFactor [1.7499999999999998] - Offset [89.479636723777276, -28.60714285714289] - SceneRectInView [89.479636723777276, -28.60714285714289, 1240.5714285714287, 678.85714285714289] - } - Object { - $ObjectID 44 + $ObjectID 47 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -845,7 +878,7 @@ Model { SceneRectInView [-132.82012310290415, -16.387940803946407, 723.66666666666663, 396.0] } Object { - $ObjectID 45 + $ObjectID 48 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -856,7 +889,7 @@ Model { SceneRectInView [-165.54878048780483, -115.96864111498257, 756.44599303135885, 413.93728222996515] } Object { - $ObjectID 46 + $ObjectID 49 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -867,7 +900,7 @@ Model { SceneRectInView [-221.49999999999994, -146.6, 868.4, 475.2] } Object { - $ObjectID 47 + $ObjectID 50 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -878,7 +911,7 @@ Model { SceneRectInView [-173.20175438596488, -108.42105263157893, 761.75438596491222, 416.84210526315786] } Object { - $ObjectID 48 + $ObjectID 51 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -889,7 +922,7 @@ Model { SceneRectInView [-173.20175438596488, -108.42105263157893, 761.75438596491222, 416.84210526315786] } Object { - $ObjectID 49 + $ObjectID 52 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -900,7 +933,7 @@ Model { SceneRectInView [-164.07534246575341, -91.924657534246592, 743.49315068493149, 406.84931506849318] } Object { - $ObjectID 50 + $ObjectID 53 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -911,7 +944,7 @@ Model { SceneRectInView [-173.20175438596488, -115.42105263157893, 761.75438596491222, 416.84210526315786] } Object { - $ObjectID 51 + $ObjectID 54 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -922,7 +955,7 @@ Model { SceneRectInView [-165.70175438596488, -113.92105263157893, 761.75438596491222, 416.84210526315786] } Object { - $ObjectID 52 + $ObjectID 55 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -933,7 +966,7 @@ Model { SceneRectInView [-165.70175438596488, -113.92105263157893, 761.75438596491222, 416.84210526315786] } Object { - $ObjectID 53 + $ObjectID 56 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -944,7 +977,7 @@ Model { SceneRectInView [-327.9765625, -403.5, 2171.0, 1188.0] } Object { - $ObjectID 54 + $ObjectID 57 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -955,7 +988,7 @@ Model { SceneRectInView [-33.739659926470551, -42.831932773109244, 364.8739495798319, 199.66386554621849] } Object { - $ObjectID 55 + $ObjectID 58 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -966,7 +999,7 @@ Model { SceneRectInView [-33.739659926470551, -42.831932773109244, 364.8739495798319, 199.66386554621849] } Object { - $ObjectID 56 + $ObjectID 59 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -977,7 +1010,7 @@ Model { SceneRectInView [-43.454503676470551, -32.331932773109244, 364.8739495798319, 199.66386554621849] } Object { - $ObjectID 57 + $ObjectID 60 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -988,7 +1021,7 @@ Model { SceneRectInView [-116.23828124999997, -57.0, 361.83333333333331, 198.0] } Object { - $ObjectID 58 + $ObjectID 61 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -999,7 +1032,7 @@ Model { SceneRectInView [-108.23828125, -66.072916666666657, 418.97553943452374, 229.26897321428569] } Object { - $ObjectID 59 + $ObjectID 62 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1010,7 +1043,7 @@ Model { SceneRectInView [-25.672433035714278, -45.831932773109244, 348.7394957983193, 199.66386554621849] } Object { - $ObjectID 60 + $ObjectID 63 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1021,18 +1054,7 @@ Model { SceneRectInView [-29.932291666666686, -42.75, 432.29166666666669, 247.5] } Object { - $ObjectID 61 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "4996" - Extents [2075.0, 1188.0] - ZoomFactor [8.0] - Offset [10.776074743527147, -15.071488336727981] - SceneRectInView [10.776074743527147, -15.071488336727981, 259.375, 148.5] - } - Object { - $ObjectID 62 + $ObjectID 64 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1043,7 +1065,7 @@ Model { SceneRectInView [-25.756466649159648, -45.831932773109244, 348.7394957983193, 199.66386554621849] } Object { - $ObjectID 63 + $ObjectID 65 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1054,7 +1076,7 @@ Model { SceneRectInView [-191.40632054176072, -117.29872084273889, 691.66666666666663, 396.0] } Object { - $ObjectID 64 + $ObjectID 66 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1065,7 +1087,7 @@ Model { SceneRectInView [-92.7656132430399, -55.8837471783296, 468.39729119638827, 268.17155756207677] } Object { - $ObjectID 65 + $ObjectID 67 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1076,7 +1098,7 @@ Model { SceneRectInView [-25.672433035714278, -45.831932773109244, 348.7394957983193, 199.66386554621849] } Object { - $ObjectID 66 + $ObjectID 68 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1087,7 +1109,7 @@ Model { SceneRectInView [-99.198645598194133, -48.972911963882623, 468.39729119638827, 268.17155756207677] } Object { - $ObjectID 67 + $ObjectID 69 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1098,7 +1120,7 @@ Model { SceneRectInView [-80.667161130818016, -31.015048908954071, 468.39729119638827, 268.17155756207677] } Object { - $ObjectID 68 + $ObjectID 70 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1109,7 +1131,7 @@ Model { SceneRectInView [13.879095336481726, -85.310064935064929, 502.36680932703655, 287.62012987012986] } Object { - $ObjectID 69 + $ObjectID 71 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1120,7 +1142,7 @@ Model { SceneRectInView [13.972911622276058, -85.325665859564168, 502.42130750605327, 287.65133171912834] } Object { - $ObjectID 70 + $ObjectID 72 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1131,7 +1153,7 @@ Model { SceneRectInView [-25.672433035714278, -45.831932773109244, 348.7394957983193, 199.66386554621849] } Object { - $ObjectID 71 + $ObjectID 73 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1142,7 +1164,7 @@ Model { SceneRectInView [-25.672433035714278, -45.831932773109244, 348.7394957983193, 199.66386554621849] } Object { - $ObjectID 72 + $ObjectID 74 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1153,7 +1175,7 @@ Model { SceneRectInView [-64.168329397874857, -71.912514757969319, 518.75, 297.0] } Object { - $ObjectID 73 + $ObjectID 75 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1164,7 +1186,7 @@ Model { SceneRectInView [-25.672433035714278, -45.831932773109244, 348.7394957983193, 199.66386554621849] } Object { - $ObjectID 74 + $ObjectID 76 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1175,7 +1197,7 @@ Model { SceneRectInView [-25.672433035714278, -45.831932773109244, 348.7394957983193, 199.66386554621849] } Object { - $ObjectID 75 + $ObjectID 77 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1186,7 +1208,7 @@ Model { SceneRectInView [-8.0130751303127283, -114.03393582177664, 473.82302526062546, 223.19657177225341] } Object { - $ObjectID 76 + $ObjectID 78 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1197,7 +1219,7 @@ Model { SceneRectInView [16.019427876904615, -398.80851543704892, 1030.9142692461908, 485.61703087409785] } Object { - $ObjectID 77 + $ObjectID 79 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1208,7 +1230,7 @@ Model { SceneRectInView [-105.54956270048115, -242.68495036561927, 864.60693790096229, 407.2771777265437] } Object { - $ObjectID 78 + $ObjectID 80 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1219,7 +1241,7 @@ Model { SceneRectInView [-396.83333333333337, -304.36666666666662, 1148.0, 792.0] } Object { - $ObjectID 79 + $ObjectID 81 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1230,7 +1252,7 @@ Model { SceneRectInView [34.9092200413223, -92.857244318181813, 438.7831224173554, 302.71448863636363] } Object { - $ObjectID 80 + $ObjectID 82 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1241,7 +1263,7 @@ Model { SceneRectInView [-183.3666666666665, -165.10000000000005, 867.6, 475.2] } Object { - $ObjectID 81 + $ObjectID 83 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1252,7 +1274,7 @@ Model { SceneRectInView [10.41989407940855, -23.235071395084702, 501.20498970990775, 274.51891552575859] } Object { - $ObjectID 82 + $ObjectID 84 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1263,7 +1285,7 @@ Model { SceneRectInView [-68.684210488152473, -33.394738158739756, 477.63157399976672, 216.05262934094131] } Object { - $ObjectID 83 + $ObjectID 85 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1274,7 +1296,7 @@ Model { SceneRectInView [0.0, 0.0, 0.0, 0.0] } Object { - $ObjectID 84 + $ObjectID 86 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1285,7 +1307,7 @@ Model { SceneRectInView [0.0, 0.0, 0.0, 0.0] } Object { - $ObjectID 85 + $ObjectID 87 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1296,7 +1318,7 @@ Model { SceneRectInView [0.0, 0.0, 0.0, 0.0] } Object { - $ObjectID 86 + $ObjectID 88 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1307,7 +1329,7 @@ Model { SceneRectInView [0.0, 0.0, 0.0, 0.0] } Object { - $ObjectID 87 + $ObjectID 89 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1323,20 +1345,7 @@ Model { Type "Simulink.DockComponentInfo" Dimension 3 Object { - $ObjectID 88 - Type "GLUE2:PropertyInspector" - ID "Property Inspector" - Visible [0] - CreateCallback "" - UserData "" - Floating [0] - DockPosition "Right" - Width [640] - Height [480] - Minimized "Unset" - } - Object { - $ObjectID 89 + $ObjectID 90 Type "GLUE2:SpreadSheet" ID "ModelData" Visible [0] @@ -1349,7 +1358,7 @@ Model { Minimized "Unset" } Object { - $ObjectID 90 + $ObjectID 91 Type "Simulink:Editor:ReferencedFiles" ID "Referenced Files" Visible [0] @@ -1361,6 +1370,19 @@ Model { Height [480] Minimized "Unset" } + Object { + $ObjectID 92 + Type "GLUE2:PropertyInspector" + ID "Property Inspector" + Visible [0] + CreateCallback "" + UserData "" + Floating [0] + DockPosition "Right" + Width [640] + Height [480] + Minimized "Unset" + } PropName "DockComponentsInfo" } WindowState "AAAA/wAAAAD9AAAAAwAAAAAAAAFeAAAE4fwCAAAABPsAAAAWAEQAbwBjAGsAVwBpAGQAZwBlAHQAMwEAAAAxAAAB+AAAA" @@ -1389,9 +1411,9 @@ Model { ModifiedByFormat "%" LastModifiedBy "nunoguedelha" ModifiedDateFormat "%" - LastModifiedDate "Tue May 11 08:23:07 2021" - RTWModifiedTimeStamp 542621747 - ModelVersionFormat "%" + LastModifiedDate "Tue May 18 23:18:08 2021" + RTWModifiedTimeStamp 543280378 + ModelVersionFormat "%" SampleTimeColors on SampleTimeAnnotations on LibraryLinkDisplay "disabled" @@ -1448,7 +1470,7 @@ Model { TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" - $ObjectID 91 + $ObjectID 93 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "torqueControlBalancingWithSimu" signals_ [] @@ -1468,7 +1490,7 @@ Model { } Object { $PropName "InstrumentedSignals" - $ObjectID 92 + $ObjectID 94 $ClassName "Simulink.HMI.InstrumentedSignals" Persistence [] } @@ -1502,7 +1524,7 @@ Model { Type "Handle" Dimension 1 Simulink.ConfigSet { - $ObjectID 93 + $ObjectID 95 Version "20.1.0" DisabledProps [] Description "" @@ -1510,7 +1532,7 @@ Model { Type "Handle" Dimension 9 Simulink.SolverCC { - $ObjectID 94 + $ObjectID 96 Version "20.1.0" DisabledProps [] Description "" @@ -1552,7 +1574,7 @@ Model { ODENIntegrationMethod "ode3" } Simulink.DataIOCC { - $ObjectID 95 + $ObjectID 97 Version "20.1.0" DisabledProps [] Description "" @@ -1594,7 +1616,7 @@ Model { LoggingIntervals "[-inf, inf]" } Simulink.OptimizationCC { - $ObjectID 96 + $ObjectID 98 Version "20.1.0" Array { Type "Cell" @@ -1668,7 +1690,7 @@ Model { EfficientTunableParamExpr off } Simulink.DebuggingCC { - $ObjectID 97 + $ObjectID 99 Version "20.1.0" Array { Type "Cell" @@ -1791,7 +1813,7 @@ Model { VariantConditionMismatch "none" } Simulink.HardwareCC { - $ObjectID 98 + $ObjectID 100 Version "20.1.0" DisabledProps [] Description "" @@ -1841,7 +1863,7 @@ Model { HardwareBoardFeatureSet "EmbeddedCoderHSP" } Simulink.ModelReferenceCC { - $ObjectID 99 + $ObjectID 101 Version "20.1.0" DisabledProps [] Description "" @@ -1861,7 +1883,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 100 + $ObjectID 102 Version "20.1.0" DisabledProps [] Description "" @@ -1905,7 +1927,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 101 + $ObjectID 103 Version "20.1.0" Array { Type "Cell" @@ -2011,7 +2033,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 102 + $ObjectID 104 Version "20.1.0" Array { Type "Cell" @@ -2101,7 +2123,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 103 + $ObjectID 105 Version "20.1.0" Array { Type "Cell" @@ -2131,7 +2153,7 @@ Model { Type "Handle" Dimension 1 Simulink.CPPComponent { - $ObjectID 104 + $ObjectID 106 Version "20.1.0" Array { Type "Cell" @@ -2242,7 +2264,7 @@ Model { } } SlCovCC.ConfigComp { - $ObjectID 105 + $ObjectID 107 Version "20.1.0" DisabledProps [] Description "Simulink Coverage Configuration Component" @@ -2291,11 +2313,11 @@ Model { } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" - $ObjectID 93 + $ObjectID 95 } Object { $PropName "DataTransfer" - $ObjectID 106 + $ObjectID 108 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" @@ -2679,7 +2701,7 @@ Model { ShowPageBoundaries off ZoomFactor "237" ReportName "simulink-default.rpt" - SIDHighWatermark "5020" + SIDHighWatermark "5028" SimulinkSubDomain "Simulink" Block { BlockType BusCreator @@ -2759,7 +2781,7 @@ Model { ZOrder 553 ForegroundColor "magenta" HideAutomaticName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Utilities/Configuration" SourceType "" SourceProductName "WholeBodyToolbox" @@ -2771,12 +2793,6 @@ Model { ContentPreviewEnabled off ConfigSource "Workspace" ConfigObject "'WBTConfigRobot'" - RobotName "'icubSim'" - UrdfFile "'model.urdf'" - ControlledJoints "{'l_elbow','l_shoulder_pitch','torso_roll'}" - ControlBoardsNames "{'left_arm','right_arm','torso'}" - LocalName "'WBT'" - GravityVector "[0,0,-9.81]" } Block { BlockType Constant @@ -2787,7 +2803,7 @@ Model { Value "zeros(3,1)" Object { $PropName "MaskObject" - $ObjectID 107 + $ObjectID 109 $ClassName "Simulink.Mask" Type "Fixed neck position" Description "we assume that the neck position is fixed (\"lumped\" head and torso) in the [0 0 0] position." @@ -2796,12 +2812,12 @@ Model { RunInitForIconRedraw "off" Object { $PropName "DialogControls" - $ObjectID 108 + $ObjectID 110 $ClassName "Simulink.dialog.Group" Prompt "%" Object { $PropName "DialogControls" - $ObjectID 109 + $ObjectID 111 $ClassName "Simulink.dialog.Text" Prompt "%" Name "DescTextVar" @@ -3745,7 +3761,7 @@ Model { ZOrder 757 ShowName off HideAutomaticName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Utilities/MatchSignalSizes" SourceType "MatchSignalSizes" SourceProductName "WholeBodyToolbox" @@ -3925,7 +3941,7 @@ Model { ZOrder 751 ForegroundColor "red" BackgroundColor "yellow" - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Utilities/QP" SourceType "QP" SourceProductName "WholeBodyToolbox" @@ -4290,7 +4306,7 @@ Model { ZOrder 757 ShowName off HideAutomaticName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Utilities/MatchSignalSizes" SourceType "MatchSignalSizes" SourceProductName "WholeBodyToolbox" @@ -4454,7 +4470,7 @@ Model { Ports [5, 2] Position [1575, 1014, 1685, 1166] ZOrder 752 - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Utilities/QP" SourceType "QP" SourceProductName "WholeBodyToolbox" @@ -5051,7 +5067,7 @@ Model { Position [1175, -194, 1325, 259] ZOrder 73 HideAutomaticName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Dynamics/CentroidalMomentum" SourceType "CentroidalMomentum" SourceProductName "WholeBodyToolbox" @@ -5137,7 +5153,7 @@ Model { Ports [2, 1] Position [155, -51, 320, 16] ZOrder 894 - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Kinematics/ForwardKinematics" SourceType "ForwardKinematics" SourceProductName "WholeBodyToolbox" @@ -5156,7 +5172,7 @@ Model { Ports [2, 1] Position [155, 64, 325, 131] ZOrder 899 - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Kinematics/ForwardKinematics" SourceType "ForwardKinematics" SourceProductName "WholeBodyToolbox" @@ -5419,7 +5435,7 @@ Model { ZOrder 40 ShowName off HideAutomaticName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Jacobians/Jacobian" SourceType "Jacobian" SourceProductName "WholeBodyToolbox" @@ -5440,7 +5456,7 @@ Model { ZOrder 79 ShowName off HideAutomaticName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Jacobians/Jacobian" SourceType "Jacobian" SourceProductName "WholeBodyToolbox" @@ -7168,7 +7184,7 @@ Model { RequestExecContextInheritance off Object { $PropName "MaskObject" - $ObjectID 110 + $ObjectID 112 $ClassName "Simulink.Mask" Display "disp('VISUALIZER')" } @@ -11548,7 +11564,7 @@ Model { Position [395, 281, 575, 344] ZOrder 223 HideAutomaticName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Dynamics/CentroidalMomentum" SourceType "CentroidalMomentum" SourceProductName "WholeBodyToolbox" @@ -11593,7 +11609,7 @@ Model { Position [395, 132, 535, 233] ZOrder 222 HideAutomaticName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Dynamics/GetBiasForces" SourceType "Get Generalized Bias Forces" SourceProductName "WholeBodyToolbox" @@ -11612,7 +11628,7 @@ Model { Position [395, 19, 535, 86] ZOrder 221 HideAutomaticName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Dynamics/MassMatrix" SourceType "MassMatrix" SourceProductName "WholeBodyToolbox" @@ -11842,7 +11858,7 @@ Model { ZOrder 882 ShowName off HideAutomaticName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Kinematics/ForwardKinematics" SourceType "ForwardKinematics" SourceProductName "WholeBodyToolbox" @@ -11903,7 +11919,7 @@ Model { ZOrder 829 ShowName off HideAutomaticName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Jacobians/DotJNu" SourceType "DotJNu" SourceProductName "WholeBodyToolbox" @@ -11924,7 +11940,7 @@ Model { ZOrder 831 ShowName off HideAutomaticName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Jacobians/DotJNu" SourceType "DotJNu" SourceProductName "WholeBodyToolbox" @@ -11954,7 +11970,7 @@ Model { Position [60, 260, 225, 300] ZOrder 835 ShowName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Jacobians/Jacobian" SourceType "Jacobian" SourceProductName "WholeBodyToolbox" @@ -11974,7 +11990,7 @@ Model { Position [60, 160, 225, 195] ZOrder 828 ShowName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Jacobians/Jacobian" SourceType "Jacobian" SourceProductName "WholeBodyToolbox" @@ -11994,7 +12010,7 @@ Model { Position [60, 210, 225, 245] ZOrder 830 ShowName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Jacobians/Jacobian" SourceType "Jacobian" SourceProductName "WholeBodyToolbox" @@ -12014,7 +12030,7 @@ Model { Position [60, 35, 220, 75] ZOrder 826 ShowName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Kinematics/ForwardKinematics" SourceType "ForwardKinematics" SourceProductName "WholeBodyToolbox" @@ -12034,7 +12050,7 @@ Model { Position [60, 95, 220, 135] ZOrder 827 ShowName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Kinematics/ForwardKinematics" SourceType "ForwardKinematics" SourceProductName "WholeBodyToolbox" @@ -12646,7 +12662,7 @@ Model { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "244" + ZoomFactor "296" SimulinkSubDomain "Simulink" Block { BlockType Inport @@ -12880,29 +12896,21 @@ Model { Block { BlockType Reference Name "holder 7" - SID "4996" + SID "5021" Ports [1, 1] - Position [-25, 12, 25, 28] - ZOrder 725 - ShowName off - HideAutomaticName off - LibraryVersion "3.11" - SourceBlock "utilityBlocks_lib/Holder" - SourceType "SubSystem" - SourceProductName "WholeBodyControllers" - ShowPortLabels "FromPortIcon" - SystemSampleTime "-1" + Position [-35, 12, 25, 28] + ZOrder 726 + BackgroundColor "[0.537255, 0.721569, 1.000000]" + LibraryVersion "1.0" + SourceBlock "WBToolboxLibrary/Utilities/holder\n" + SourceType "Holder" + SourceProductName "WholeBodyToolbox" RTWMemSecFuncInitTerm "Inherit from model" RTWMemSecFuncExecute "Inherit from model" RTWMemSecDataConstants "Inherit from model" RTWMemSecDataInternal "Inherit from model" RTWMemSecDataParameters "Inherit from model" - VariantActivationTime "update diagram" - AllowZeroVariantControls off - PropagateVariantConditions off ContentPreviewEnabled on - Latency "0" - AutoFrameSizeCalculation off } Block { BlockType Outport @@ -12940,7 +12948,7 @@ Model { ZOrder 7 Points [0, -140] Branch { - ZOrder 36 + ZOrder 46 DstBlock "holder 7" DstPort 1 } @@ -12960,7 +12968,7 @@ Model { DstPort 1 } Line { - ZOrder 35 + ZOrder 45 SrcBlock "holder 7" SrcPort 1 DstBlock "Saturate Torque Derivative" @@ -13348,7 +13356,7 @@ Model { Ports [2, 1] Position [745, 475, 905, 530] ZOrder 687 - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Jacobians/Jacobian" SourceType "Jacobian" SourceProductName "WholeBodyToolbox" @@ -13367,7 +13375,7 @@ Model { Ports [2, 1] Position [745, 565, 905, 620] ZOrder 688 - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Jacobians/Jacobian" SourceType "Jacobian" SourceProductName "WholeBodyToolbox" @@ -13630,7 +13638,7 @@ Model { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "100" + ZoomFactor "146" SimulinkSubDomain "Simulink" Block { BlockType Inport @@ -13678,7 +13686,7 @@ Model { Ports [2, 1] Position [575, 190, 740, 250] ZOrder 737 - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Kinematics/ForwardKinematics" SourceType "ForwardKinematics" SourceProductName "WholeBodyToolbox" @@ -13697,7 +13705,7 @@ Model { Ports [2, 1] Position [575, 25, 740, 85] ZOrder 729 - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Kinematics/ForwardKinematics" SourceType "ForwardKinematics" SourceProductName "WholeBodyToolbox" @@ -13983,52 +13991,42 @@ Model { Block { BlockType Reference Name "holder 1" - SID "4982" + SID "5022" Ports [1, 1] - Position [1150, 109, 1220, 131] - ZOrder 754 - LibraryVersion "3.11" - SourceBlock "utilityBlocks_lib/Holder" - SourceType "SubSystem" - SourceProductName "WholeBodyControllers" - ShowPortLabels "FromPortIcon" - SystemSampleTime "Config.tStep" + Position [1165, 108, 1230, 132] + ZOrder 757 + BackgroundColor "[0.537255, 0.721569, 1.000000]" + HideAutomaticName off + LibraryVersion "1.0" + SourceBlock "WBToolboxLibrary/Utilities/holder\n" + SourceType "Holder" + SourceProductName "WholeBodyToolbox" RTWMemSecFuncInitTerm "Inherit from model" RTWMemSecFuncExecute "Inherit from model" RTWMemSecDataConstants "Inherit from model" RTWMemSecDataInternal "Inherit from model" RTWMemSecDataParameters "Inherit from model" - VariantActivationTime "update diagram" - AllowZeroVariantControls off - PropagateVariantConditions off ContentPreviewEnabled on - Latency "0" - AutoFrameSizeCalculation off } Block { BlockType Reference Name "holder 2" - SID "4983" + SID "5024" Ports [1, 1] - Position [1150, 209, 1220, 231] - ZOrder 755 - LibraryVersion "3.11" - SourceBlock "utilityBlocks_lib/Holder" - SourceType "SubSystem" - SourceProductName "WholeBodyControllers" - ShowPortLabels "FromPortIcon" - SystemSampleTime "Config.tStep" + Position [1165, 209, 1230, 231] + ZOrder 759 + BackgroundColor "[0.537255, 0.721569, 1.000000]" + HideAutomaticName off + LibraryVersion "1.0" + SourceBlock "WBToolboxLibrary/Utilities/holder\n" + SourceType "Holder" + SourceProductName "WholeBodyToolbox" RTWMemSecFuncInitTerm "Inherit from model" RTWMemSecFuncExecute "Inherit from model" RTWMemSecDataConstants "Inherit from model" RTWMemSecDataInternal "Inherit from model" RTWMemSecDataParameters "Inherit from model" - VariantActivationTime "update diagram" - AllowZeroVariantControls off - PropagateVariantConditions off ContentPreviewEnabled on - Latency "0" - AutoFrameSizeCalculation off } Block { BlockType SubSystem @@ -14189,7 +14187,7 @@ Model { SrcPort 1 Points [65, 0] Branch { - ZOrder 41 + ZOrder 77 Points [0, 50] DstBlock "holder 1" DstPort 1 @@ -14201,7 +14199,7 @@ Model { } } Line { - ZOrder 42 + ZOrder 80 SrcBlock "holder 2" SrcPort 1 DstBlock "Selector2" @@ -14251,13 +14249,13 @@ Model { SrcPort 1 Points [96, 0] Branch { - ZOrder 64 + ZOrder 81 Points [0, 50] DstBlock "Selector1" DstPort 1 } Branch { - ZOrder 43 + ZOrder 79 DstBlock "holder 2" DstPort 1 } @@ -14312,7 +14310,7 @@ Model { DstPort 4 } Line { - ZOrder 37 + ZOrder 78 SrcBlock "holder 1" SrcPort 1 DstBlock "Get Base Rotation From IMU" @@ -14361,7 +14359,7 @@ Model { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "140" + ZoomFactor "146" SimulinkSubDomain "Simulink" Block { BlockType Inport @@ -14409,7 +14407,7 @@ Model { Ports [2, 1] Position [575, 25, 740, 85] ZOrder 729 - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Kinematics/ForwardKinematics" SourceType "ForwardKinematics" SourceProductName "WholeBodyToolbox" @@ -14428,7 +14426,7 @@ Model { Ports [2, 1] Position [575, 190, 740, 250] ZOrder 737 - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Kinematics/ForwardKinematics" SourceType "ForwardKinematics" SourceProductName "WholeBodyToolbox" @@ -14714,52 +14712,42 @@ Model { Block { BlockType Reference Name "holder 3" - SID "4984" + SID "5025" Ports [1, 1] - Position [1170, 112, 1225, 128] - ZOrder 750 - LibraryVersion "3.11" - SourceBlock "utilityBlocks_lib/Holder" - SourceType "SubSystem" - SourceProductName "WholeBodyControllers" - ShowPortLabels "FromPortIcon" - SystemSampleTime "Config.tStep" + Position [1165, 109, 1230, 131] + ZOrder 755 + BackgroundColor "[0.537255, 0.721569, 1.000000]" + HideAutomaticName off + LibraryVersion "1.0" + SourceBlock "WBToolboxLibrary/Utilities/holder\n" + SourceType "Holder" + SourceProductName "WholeBodyToolbox" RTWMemSecFuncInitTerm "Inherit from model" RTWMemSecFuncExecute "Inherit from model" RTWMemSecDataConstants "Inherit from model" RTWMemSecDataInternal "Inherit from model" RTWMemSecDataParameters "Inherit from model" - VariantActivationTime "update diagram" - AllowZeroVariantControls off - PropagateVariantConditions off ContentPreviewEnabled on - Latency "0" - AutoFrameSizeCalculation off } Block { BlockType Reference Name "holder 4" - SID "4985" + SID "5026" Ports [1, 1] - Position [1170, 212, 1225, 228] - ZOrder 751 - LibraryVersion "3.11" - SourceBlock "utilityBlocks_lib/Holder" - SourceType "SubSystem" - SourceProductName "WholeBodyControllers" - ShowPortLabels "FromPortIcon" - SystemSampleTime "Config.tStep" + Position [1165, 209, 1230, 231] + ZOrder 756 + BackgroundColor "[0.537255, 0.721569, 1.000000]" + HideAutomaticName off + LibraryVersion "1.0" + SourceBlock "WBToolboxLibrary/Utilities/holder\n" + SourceType "Holder" + SourceProductName "WholeBodyToolbox" RTWMemSecFuncInitTerm "Inherit from model" RTWMemSecFuncExecute "Inherit from model" RTWMemSecDataConstants "Inherit from model" RTWMemSecDataInternal "Inherit from model" RTWMemSecDataParameters "Inherit from model" - VariantActivationTime "update diagram" - AllowZeroVariantControls off - PropagateVariantConditions off ContentPreviewEnabled on - Latency "0" - AutoFrameSizeCalculation off } Block { BlockType SubSystem @@ -14920,7 +14908,7 @@ Model { SrcPort 1 Points [65, 0] Branch { - ZOrder 31 + ZOrder 55 Points [0, 50] DstBlock "holder 3" DstPort 1 @@ -14932,7 +14920,7 @@ Model { } } Line { - ZOrder 32 + ZOrder 56 SrcBlock "holder 4" SrcPort 1 DstBlock "Selector2" @@ -14982,7 +14970,7 @@ Model { SrcPort 1 Points [96, 0] Branch { - ZOrder 33 + ZOrder 57 DstBlock "holder 4" DstPort 1 } @@ -15050,7 +15038,7 @@ Model { DstPort 4 } Line { - ZOrder 30 + ZOrder 54 SrcBlock "holder 3" SrcPort 1 DstBlock "Get Base Rotation From IMU" @@ -15072,7 +15060,7 @@ Model { Ports [2, 1] Position [180, 22, 345, 53] ZOrder 894 - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Kinematics/ForwardKinematics" SourceType "ForwardKinematics" SourceProductName "WholeBodyToolbox" @@ -15091,7 +15079,7 @@ Model { Ports [2, 1] Position [180, 107, 345, 138] ZOrder 899 - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Kinematics/ForwardKinematics" SourceType "ForwardKinematics" SourceProductName "WholeBodyToolbox" @@ -15432,7 +15420,7 @@ Model { Position [330, 295, 430, 315] ZOrder 594 ShowName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Utilities/MinimumJerkTrajectoryGenerator" SourceType "MinimumJerkTrajectoryGenerator" SourceProductName "WholeBodyToolbox" @@ -15911,52 +15899,42 @@ Model { Block { BlockType Reference Name "holder 5" - SID "4993" + SID "5027" Ports [1, 1] - Position [-170, 122, -115, 138] - ZOrder 957 - LibraryVersion "3.11" - SourceBlock "utilityBlocks_lib/Holder" - SourceType "SubSystem" - SourceProductName "WholeBodyControllers" - ShowPortLabels "FromPortIcon" - SystemSampleTime "Config.tStep" + Position [-175, 119, -110, 141] + ZOrder 961 + BackgroundColor "[0.537255, 0.721569, 1.000000]" + HideAutomaticName off + LibraryVersion "1.0" + SourceBlock "WBToolboxLibrary/Utilities/holder\n" + SourceType "Holder" + SourceProductName "WholeBodyToolbox" RTWMemSecFuncInitTerm "Inherit from model" RTWMemSecFuncExecute "Inherit from model" RTWMemSecDataConstants "Inherit from model" RTWMemSecDataInternal "Inherit from model" RTWMemSecDataParameters "Inherit from model" - VariantActivationTime "update diagram" - AllowZeroVariantControls off - PropagateVariantConditions off ContentPreviewEnabled on - Latency "0" - AutoFrameSizeCalculation off } Block { BlockType Reference Name "holder 6" - SID "4994" + SID "5028" Ports [1, 1] - Position [-170, 157, -115, 173] - ZOrder 958 - LibraryVersion "3.11" - SourceBlock "utilityBlocks_lib/Holder" - SourceType "SubSystem" - SourceProductName "WholeBodyControllers" - ShowPortLabels "FromPortIcon" - SystemSampleTime "Config.tStep" + Position [-175, 154, -110, 176] + ZOrder 962 + BackgroundColor "[0.537255, 0.721569, 1.000000]" + HideAutomaticName off + LibraryVersion "1.0" + SourceBlock "WBToolboxLibrary/Utilities/holder\n" + SourceType "Holder" + SourceProductName "WholeBodyToolbox" RTWMemSecFuncInitTerm "Inherit from model" RTWMemSecFuncExecute "Inherit from model" RTWMemSecDataConstants "Inherit from model" RTWMemSecDataInternal "Inherit from model" RTWMemSecDataParameters "Inherit from model" - VariantActivationTime "update diagram" - AllowZeroVariantControls off - PropagateVariantConditions off ContentPreviewEnabled on - Latency "0" - AutoFrameSizeCalculation off } Block { BlockType SubSystem @@ -16010,7 +15988,7 @@ Model { Ports [2, 1] Position [110, 230, 275, 290] ZOrder 578 - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Kinematics/ForwardKinematics" SourceType "ForwardKinematics" SourceProductName "WholeBodyToolbox" @@ -16126,7 +16104,7 @@ Model { Ports [2, 1] Position [110, 230, 275, 290] ZOrder 578 - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Model/Kinematics/ForwardKinematics" SourceType "ForwardKinematics" SourceProductName "WholeBodyToolbox" @@ -16285,7 +16263,7 @@ Model { SrcPort 1 Points [13, 0] Branch { - ZOrder 513 + ZOrder 565 Points [0, -70] DstBlock "holder 5" DstPort 1 @@ -16424,7 +16402,7 @@ Model { ZOrder 413 Points [0, -35] Branch { - ZOrder 515 + ZOrder 562 Points [0, -40] DstBlock "holder 6" DstPort 1 @@ -16494,14 +16472,14 @@ Model { } } Line { - ZOrder 514 + ZOrder 564 SrcBlock "holder 5" SrcPort 1 DstBlock "STATE MACHINE" DstPort 1 } Line { - ZOrder 516 + ZOrder 563 SrcBlock "holder 6" SrcPort 1 DstBlock "STATE MACHINE" @@ -17215,7 +17193,7 @@ Model { Position [215, -278, 365, -172] ZOrder 597 ShowName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Utilities/MinimumJerkTrajectoryGenerator" SourceType "MinimumJerkTrajectoryGenerator" SourceProductName "WholeBodyToolbox" @@ -17440,7 +17418,7 @@ Model { Position [90, -120, 240, -10] ZOrder 598 ShowName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Utilities/MinimumJerkTrajectoryGenerator" SourceType "MinimumJerkTrajectoryGenerator" SourceProductName "WholeBodyToolbox" @@ -18029,7 +18007,7 @@ Model { RequestExecContextInheritance off Object { $PropName "MaskObject" - $ObjectID 111 + $ObjectID 113 $ClassName "Simulink.Mask" Display "disp('EMERGENCY STOP')" RunInitForIconRedraw "off" @@ -18147,7 +18125,7 @@ Model { ZOrder 560 BackgroundColor "[0.513700, 0.851000, 0.670600]" ShowName off - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/States/GetLimits" SourceType "GetLimits" SourceProductName "WholeBodyToolbox" @@ -19098,7 +19076,7 @@ Model { Ports [] Position [180, 110, 255, 140] ZOrder 1281 - LibraryVersion "1.684" + LibraryVersion "1.0" SourceBlock "WBToolboxLibrary/Utilities/Configuration" SourceType "" SourceProductName "WholeBodyToolbox" @@ -19110,12 +19088,6 @@ Model { ContentPreviewEnabled on ConfigSource "Workspace" ConfigObject "'WBTConfigRobotSim'" - RobotName "'icubSim'" - UrdfFile "'model.urdf'" - ControlledJoints "{'l_elbow','l_shoulder_pitch','torso_roll'}" - ControlBoardsNames "{'left_arm','right_arm','torso'}" - LocalName "'WBT'" - GravityVector "[0,0,-9.81]" } Block { BlockType Constant diff --git a/library/simulink-library/Utilities/utilityBlocks_lib.slx b/library/simulink-library/Utilities/utilityBlocks_lib.slx index 0a85f1c1bb0a42fcdebcf13bc3dff52e659251ba..00f8baf772f0b743428d0f0da5fbb73e1f587e7a 100644 GIT binary patch delta 24079 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 From fde36b540974310d0216438e02c43b37250004fd Mon Sep 17 00:00:00 2001 From: Nuno Guedelha Date: Wed, 19 May 2021 03:02:18 +0200 Subject: [PATCH 3/4] Restore measured joint torques in the signals Visualizer in 'torqueControlBalancingWithSimu.mdl' model --- .../torqueControlBalancingWithSimu.mdl | 898 ++++++++++-------- 1 file changed, 500 insertions(+), 398 deletions(-) diff --git a/controllers/+floatingBaseBalancingTorqueControlWithSimulator/torqueControlBalancingWithSimu.mdl b/controllers/+floatingBaseBalancingTorqueControlWithSimulator/torqueControlBalancingWithSimu.mdl index 587283c..c1e2538 100644 --- a/controllers/+floatingBaseBalancingTorqueControlWithSimulator/torqueControlBalancingWithSimu.mdl +++ b/controllers/+floatingBaseBalancingTorqueControlWithSimulator/torqueControlBalancingWithSimu.mdl @@ -7,7 +7,7 @@ Model { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" - ComputedModelVersion "3.138" + ComputedModelVersion "3.147" NumModelReferences 0 NumTestPointedSignals 0 NumProvidedFunctions 0 @@ -411,37 +411,136 @@ Model { ViewObjType "SimulinkTopLevel" LoadSaveID "0" Extents [2171.0, 1188.0] - ZoomFactor [2.372878019401897] - Offset [714.07882907428, 185.18910568892798] - SceneRectInView [714.07882907428, 185.18910568892798, 914.922715052676, 500.65784683674764] + ZoomFactor [2.4375644261187928] + Offset [726.58468706252916, 193.76634864967335] + SceneRectInView [726.58468706252916, 193.76634864967335, 890.64312587494169, 487.37173355109661] } Object { $ObjectID 6 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "5027" + LoadSaveID "4504" Extents [2171.0, 1188.0] - ZoomFactor [5.35] - Offset [869.696261682243, 445.47196261682245] - SceneRectInView [869.696261682243, 445.47196261682245, 405.79439252336454, 222.05607476635515] + ZoomFactor [1.2045690550363448] + Offset [-226.1716864224137, -519.62241379310342] + SceneRectInView [-226.1716864224137, -519.62241379310342, 1802.3043103448274, 986.24482758620684] } Object { $ObjectID 7 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "4836" + LoadSaveID "3241" Extents [2171.0, 1188.0] - ZoomFactor [1.7499999999999998] - Offset [89.479636723777276, -28.60714285714289] - SceneRectInView [89.479636723777276, -28.60714285714289, 1240.5714285714287, 678.85714285714289] + ZoomFactor [1.5612382234185733] + Offset [-827.23464439655174, -71.967241379310337] + SceneRectInView [-827.23464439655174, -71.967241379310337, 1390.5629310344827, 760.93448275862067] } Object { $ObjectID 8 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" + LoadSaveID "4937" + Extents [2171.0, 1188.0] + ZoomFactor [1.0] + Offset [-327.9765625, -403.5] + SceneRectInView [-327.9765625, -403.5, 2171.0, 1188.0] + } + Object { + $ObjectID 9 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "4537" + Extents [2171.0, 1188.0] + ZoomFactor [5.1816867469879524] + Offset [-108.23828125, -66.072916666666657] + SceneRectInView [-108.23828125, -66.072916666666657, 418.97553943452374, 229.26897321428569] + } + Object { + $ObjectID 10 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "4104" + Extents [2171.0, 1188.0] + ZoomFactor [3.0933333333333333] + Offset [-128.63423482247225, -154.52586206896552] + SceneRectInView [-128.63423482247225, -154.52586206896552, 701.83189655172418, 384.05172413793105] + } + Object { + $ObjectID 11 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "4955" + Extents [2171.0, 1188.0] + ZoomFactor [2.0773052223433903] + Offset [-119.91137569995328, 42.539639718463263] + SceneRectInView [-119.91137569995328, 42.539639718463263, 1045.1040013999066, 571.89477368175449] + } + Object { + $ObjectID 12 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "2275" + Extents [2171.0, 1188.0] + ZoomFactor [2.6666666666666665] + Offset [-7.0625, -38.25] + SceneRectInView [-7.0625, -38.25, 814.125, 445.5] + } + Object { + $ObjectID 13 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "4806" + Extents [2171.0, 1188.0] + ZoomFactor [2.0483743061062651] + Offset [-793.97389720558533, -290.08334454895737] + SceneRectInView [-793.97389720558533, -290.08334454895737, 1059.8648857917149, 579.97212543554] + } + Object { + $ObjectID 14 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "4620" + Extents [2171.0, 1188.0] + ZoomFactor [10.0] + Offset [82.52421875, 140.1] + SceneRectInView [82.52421875, 140.1, 217.1, 118.8] + } + Object { + $ObjectID 15 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "4836" + Extents [2171.0, 1188.0] + ZoomFactor [1.7391304347826086] + Offset [50.564062499999977, -29.050000000000011] + SceneRectInView [50.564062499999977, -29.050000000000011, 1248.325, 683.1] + } + Object { + $ObjectID 16 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "5027" + Extents [2171.0, 1188.0] + ZoomFactor [5.35] + Offset [869.696261682243, 445.47196261682245] + SceneRectInView [869.696261682243, 445.47196261682245, 405.79439252336454, 222.05607476635515] + } + Object { + $ObjectID 17 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" LoadSaveID "4850" Extents [2171.0, 1188.0] ZoomFactor [1.4619722213339303] @@ -449,7 +548,7 @@ Model { SceneRectInView [435.01764465702286, -184.30046955202982, 1484.9803356859543, 812.60093910405965] } Object { - $ObjectID 9 + $ObjectID 18 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -460,7 +559,7 @@ Model { SceneRectInView [869.696261682243, 445.47196261682245, 405.79439252336454, 222.05607476635515] } Object { - $ObjectID 10 + $ObjectID 19 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -471,7 +570,7 @@ Model { SceneRectInView [-736.65534376844744, 2332.9648668093268, 1240.5714285714287, 678.85714285714289] } Object { - $ObjectID 11 + $ObjectID 20 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -482,7 +581,7 @@ Model { SceneRectInView [-123.75340862692485, -116.18591781381241, 733.4833797538497, 401.37183562762482] } Object { - $ObjectID 12 + $ObjectID 21 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -493,7 +592,7 @@ Model { SceneRectInView [-608.35758121641425, -114.33481638525888, 1528.7515828078519, 836.55314618872774] } Object { - $ObjectID 13 + $ObjectID 22 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -504,7 +603,7 @@ Model { SceneRectInView [-48.06941549217828, -144.92583198051949, 845.83414348435656, 462.851663961039] } Object { - $ObjectID 14 + $ObjectID 23 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -515,7 +614,7 @@ Model { SceneRectInView [-112.83168536009441, -373.76948051948051, 901.91337072018882, 493.538961038961] } Object { - $ObjectID 15 + $ObjectID 24 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -526,7 +625,7 @@ Model { SceneRectInView [-33.73965992647058, -45.831932773109244, 364.8739495798319, 199.66386554621849] } Object { - $ObjectID 16 + $ObjectID 25 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -537,7 +636,7 @@ Model { SceneRectInView [435.01764465702286, -184.30046955202982, 1484.9803356859543, 812.60093910405965] } Object { - $ObjectID 17 + $ObjectID 26 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -548,18 +647,7 @@ Model { SceneRectInView [12.942137190853941, -10.749679188054131, 319.11572561829212, 174.62435837610826] } Object { - $ObjectID 18 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "4955" - Extents [2171.0, 1188.0] - ZoomFactor [2.0773052223433903] - Offset [-119.91137569995328, 23.052613159122757] - SceneRectInView [-119.91137569995328, 23.052613159122757, 1045.1040013999066, 571.89477368175449] - } - Object { - $ObjectID 19 + $ObjectID 27 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -570,7 +658,7 @@ Model { SceneRectInView [-310.81869612068976, -180.61083743842369, 1069.4581280788179, 585.22167487684737] } Object { - $ObjectID 20 + $ObjectID 28 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -581,7 +669,7 @@ Model { SceneRectInView [-326.36442414255714, -208.23320111992533, 748.27572328511428, 409.46640223985065] } Object { - $ObjectID 21 + $ObjectID 29 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -592,7 +680,7 @@ Model { SceneRectInView [12.87372526868586, 135.34665821934539, 468.38536196262828, 256.30668356130923] } Object { - $ObjectID 22 + $ObjectID 30 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -603,7 +691,7 @@ Model { SceneRectInView [-158.02631578947376, -70.1842105263158, 571.31578947368428, 312.63157894736844] } Object { - $ObjectID 23 + $ObjectID 31 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -614,7 +702,7 @@ Model { SceneRectInView [-158.02631578947376, -70.1842105263158, 571.31578947368428, 312.63157894736844] } Object { - $ObjectID 24 + $ObjectID 32 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -625,7 +713,7 @@ Model { SceneRectInView [80.154339026122614, 154.55463376836479, 658.838253999605, 360.52503258937384] } Object { - $ObjectID 25 + $ObjectID 33 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -636,29 +724,7 @@ Model { SceneRectInView [569.47947453590621, 441.73077216658527, 412.15823842818759, 225.53845566682949] } Object { - $ObjectID 26 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "4620" - Extents [2171.0, 1188.0] - ZoomFactor [10.0] - Offset [82.52421875, 140.1] - SceneRectInView [82.52421875, 140.1, 217.1, 118.8] - } - Object { - $ObjectID 27 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "3241" - Extents [2171.0, 1188.0] - ZoomFactor [1.5612382234185733] - Offset [-827.23464439655174, -71.967241379310337] - SceneRectInView [-827.23464439655174, -71.967241379310337, 1390.5629310344827, 760.93448275862067] - } - Object { - $ObjectID 28 + $ObjectID 34 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -669,18 +735,7 @@ Model { SceneRectInView [256.79612068965514, -277.26034482758621, 660.65775862068972, 361.52068965517242] } Object { - $ObjectID 29 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "4806" - Extents [2171.0, 1188.0] - ZoomFactor [2.0483743061062651] - Offset [-793.97389720558533, -290.08334454895737] - SceneRectInView [-793.97389720558533, -290.08334454895737, 1059.8648857917149, 579.97212543554] - } - Object { - $ObjectID 30 + $ObjectID 35 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -691,7 +746,7 @@ Model { SceneRectInView [-706.68143309105676, -478.27262581168833, 1380.7144286821135, 755.54525162337666] } Object { - $ObjectID 31 + $ObjectID 36 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -702,7 +757,7 @@ Model { SceneRectInView [96.146189545676577, -4.1074743527112787, 703.95762090864685, 385.21494870542256] } Object { - $ObjectID 32 + $ObjectID 37 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -713,40 +768,7 @@ Model { SceneRectInView [-211.69612560424537, 252.15114629325387, 605.0, 331.06402579456471] } Object { - $ObjectID 33 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "4504" - Extents [2171.0, 1188.0] - ZoomFactor [1.0] - Offset [-410.51953125, -620.5] - SceneRectInView [-410.51953125, -620.5, 2171.0, 1188.0] - } - Object { - $ObjectID 34 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "4104" - Extents [2171.0, 1188.0] - ZoomFactor [3.0933333333333333] - Offset [-128.63423482247225, -154.52586206896552] - SceneRectInView [-128.63423482247225, -154.52586206896552, 701.83189655172418, 384.05172413793105] - } - Object { - $ObjectID 35 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "2275" - Extents [2171.0, 1188.0] - ZoomFactor [1.8249725000639532] - Offset [-194.803483319316, -141.48435660218672] - SceneRectInView [-194.803483319316, -141.48435660218672, 1189.606966638632, 650.96871320437344] - } - Object { - $ObjectID 36 + $ObjectID 38 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -757,7 +779,7 @@ Model { SceneRectInView [-1178.7732548019947, -284.77258542366184, 1369.7496346039895, 749.54517084732367] } Object { - $ObjectID 37 + $ObjectID 39 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -768,7 +790,7 @@ Model { SceneRectInView [-33.739659926470551, -42.831932773109244, 364.8739495798319, 199.66386554621849] } Object { - $ObjectID 38 + $ObjectID 40 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -779,7 +801,7 @@ Model { SceneRectInView [-33.739659926470551, -42.831932773109244, 364.8739495798319, 199.66386554621849] } Object { - $ObjectID 39 + $ObjectID 41 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -790,7 +812,7 @@ Model { SceneRectInView [42.960073495100346, -92.586881707886135, 510.17360300979931, 279.17376341577227] } Object { - $ObjectID 40 + $ObjectID 42 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -801,7 +823,7 @@ Model { SceneRectInView [-39.932291666666657, -42.75, 452.29166666666669, 247.5] } Object { - $ObjectID 41 + $ObjectID 43 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -812,7 +834,7 @@ Model { SceneRectInView [-256.01528596010269, -463.59387395006996, 1774.7883844202054, 971.18774790013993] } Object { - $ObjectID 42 + $ObjectID 44 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -823,7 +845,7 @@ Model { SceneRectInView [1438.5531788793103, 818.97931034482758, 778.56551724137933, 426.04137931034484] } Object { - $ObjectID 43 + $ObjectID 45 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -834,7 +856,7 @@ Model { SceneRectInView [917.234213362069, -427.28793103448277, 975.078448275862, 533.57586206896553] } Object { - $ObjectID 44 + $ObjectID 46 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -845,7 +867,7 @@ Model { SceneRectInView [-544.74878771551721, -352.2155172413793, 963.84913793103453, 527.43103448275861] } Object { - $ObjectID 45 + $ObjectID 47 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -856,7 +878,7 @@ Model { SceneRectInView [374.06441393490434, 302.07339302379842, 1297.2149221301913, 709.85321395240317] } Object { - $ObjectID 46 + $ObjectID 48 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -867,7 +889,7 @@ Model { SceneRectInView [732.82082435344819, -198.046551724138, 2023.1474137931036, 1107.093103448276] } Object { - $ObjectID 47 + $ObjectID 49 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -878,7 +900,7 @@ Model { SceneRectInView [-132.82012310290415, -16.387940803946407, 723.66666666666663, 396.0] } Object { - $ObjectID 48 + $ObjectID 50 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -889,7 +911,7 @@ Model { SceneRectInView [-165.54878048780483, -115.96864111498257, 756.44599303135885, 413.93728222996515] } Object { - $ObjectID 49 + $ObjectID 51 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -900,7 +922,7 @@ Model { SceneRectInView [-221.49999999999994, -146.6, 868.4, 475.2] } Object { - $ObjectID 50 + $ObjectID 52 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -911,7 +933,7 @@ Model { SceneRectInView [-173.20175438596488, -108.42105263157893, 761.75438596491222, 416.84210526315786] } Object { - $ObjectID 51 + $ObjectID 53 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -922,7 +944,7 @@ Model { SceneRectInView [-173.20175438596488, -108.42105263157893, 761.75438596491222, 416.84210526315786] } Object { - $ObjectID 52 + $ObjectID 54 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -933,7 +955,7 @@ Model { SceneRectInView [-164.07534246575341, -91.924657534246592, 743.49315068493149, 406.84931506849318] } Object { - $ObjectID 53 + $ObjectID 55 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -944,7 +966,7 @@ Model { SceneRectInView [-173.20175438596488, -115.42105263157893, 761.75438596491222, 416.84210526315786] } Object { - $ObjectID 54 + $ObjectID 56 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -955,7 +977,7 @@ Model { SceneRectInView [-165.70175438596488, -113.92105263157893, 761.75438596491222, 416.84210526315786] } Object { - $ObjectID 55 + $ObjectID 57 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -966,18 +988,7 @@ Model { SceneRectInView [-165.70175438596488, -113.92105263157893, 761.75438596491222, 416.84210526315786] } Object { - $ObjectID 56 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "4937" - Extents [2171.0, 1188.0] - ZoomFactor [1.0] - Offset [-327.9765625, -403.5] - SceneRectInView [-327.9765625, -403.5, 2171.0, 1188.0] - } - Object { - $ObjectID 57 + $ObjectID 58 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -988,7 +999,7 @@ Model { SceneRectInView [-33.739659926470551, -42.831932773109244, 364.8739495798319, 199.66386554621849] } Object { - $ObjectID 58 + $ObjectID 59 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -999,7 +1010,7 @@ Model { SceneRectInView [-33.739659926470551, -42.831932773109244, 364.8739495798319, 199.66386554621849] } Object { - $ObjectID 59 + $ObjectID 60 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1010,7 +1021,7 @@ Model { SceneRectInView [-43.454503676470551, -32.331932773109244, 364.8739495798319, 199.66386554621849] } Object { - $ObjectID 60 + $ObjectID 61 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1020,17 +1031,6 @@ Model { Offset [-116.23828124999997, -57.0] SceneRectInView [-116.23828124999997, -57.0, 361.83333333333331, 198.0] } - Object { - $ObjectID 61 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "4537" - Extents [2171.0, 1188.0] - ZoomFactor [5.1816867469879524] - Offset [-108.23828125, -66.072916666666657] - SceneRectInView [-108.23828125, -66.072916666666657, 418.97553943452374, 229.26897321428569] - } Object { $ObjectID 62 IsActive [0] @@ -1346,26 +1346,26 @@ Model { Dimension 3 Object { $ObjectID 90 - Type "GLUE2:SpreadSheet" - ID "ModelData" + Type "Simulink:Editor:ReferencedFiles" + ID "Referenced Files" Visible [0] - CreateCallback "DataView.createSpreadSheetComponent" - UserData "" + CreateCallback "" + UserData "{\"filterShowRefModels\":\"true\",\"filterShowRefSubs\":\"true\",\"filterShowOnlyDirtyFiles\":\"false\"}\n" Floating [0] - DockPosition "Bottom" + DockPosition "Left" Width [640] Height [480] Minimized "Unset" } Object { $ObjectID 91 - Type "Simulink:Editor:ReferencedFiles" - ID "Referenced Files" + Type "GLUE2:SpreadSheet" + ID "ModelData" Visible [0] - CreateCallback "" - UserData "{\"filterShowRefModels\":\"true\",\"filterShowRefSubs\":\"true\",\"filterShowOnlyDirtyFiles\":\"false\"}\n" + CreateCallback "DataView.createSpreadSheetComponent" + UserData "" Floating [0] - DockPosition "Left" + DockPosition "Bottom" Width [640] Height [480] Minimized "Unset" @@ -1411,9 +1411,9 @@ Model { ModifiedByFormat "%" LastModifiedBy "nunoguedelha" ModifiedDateFormat "%" - LastModifiedDate "Tue May 18 23:18:08 2021" - RTWModifiedTimeStamp 543280378 - ModelVersionFormat "%" + LastModifiedDate "Wed May 19 03:01:34 2021" + RTWModifiedTimeStamp 543293907 + ModelVersionFormat "%" SampleTimeColors on SampleTimeAnnotations on LibraryLinkDisplay "disabled" @@ -2699,18 +2699,18 @@ Model { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "237" + ZoomFactor "244" ReportName "simulink-default.rpt" - SIDHighWatermark "5028" + SIDHighWatermark "5035" SimulinkSubDomain "Simulink" Block { BlockType BusCreator Name "Bus\nCreator" SID "4944" - Ports [6, 1] - Position [1565, 400, 1570, 570] + Ports [7, 1] + Position [1565, 385, 1570, 575] ZOrder 1276 - Inputs "6" + Inputs "7" DisplayOption "bar" InheritFromInputs on } @@ -2719,7 +2719,7 @@ Model { Name "Bus\nSelector1" SID "5013" Ports [1, 2] - Position [1450, 396, 1455, 454] + Position [1450, 391, 1455, 444] ZOrder 1290 OutputSignals "joints_position,joints_velocity" Port { @@ -2735,10 +2735,10 @@ Model { BlockType BusSelector Name "Bus\nSelector2" SID "4945" - Ports [1, 6] - Position [760, 404, 765, 596] + Ports [1, 7] + Position [760, 401, 765, 589] ZOrder 1277 - OutputSignals "joints_position,joints_velocity,nuDot,imuOut,wrench_RFoot,wrench_LFoot" + OutputSignals "joints_position,joints_velocity,nuDot,joints_torque,imuOut,wrench_RFoot,wrench_LFoot" Port { PortNumber 1 Name "" @@ -2753,14 +2753,18 @@ Model { } Port { PortNumber 4 - Name "" + Name "" } Port { PortNumber 5 - Name "" + Name "" } Port { PortNumber 6 + Name "" + } + Port { + PortNumber 7 Name "" } } @@ -2768,7 +2772,7 @@ Model { BlockType Clock Name "Clock1" SID "2166" - Position [875, 595, 895, 615] + Position [875, 585, 895, 605] ZOrder 1285 ShowName off } @@ -2777,7 +2781,7 @@ Model { Name "Configuration" SID "4537" Ports [] - Position [955, 325, 1020, 345] + Position [940, 315, 1005, 335] ZOrder 553 ForegroundColor "magenta" HideAutomaticName off @@ -2830,8 +2834,8 @@ Model { BlockType SubSystem Name "MOMENTUM BASED TORQUE CONTROL" SID "4836" - Ports [8, 1] - Position [940, 388, 1090, 612] + Ports [9, 1] + Position [940, 370, 1090, 620] ZOrder 961 ForegroundColor "red" BackgroundColor "yellow" @@ -2856,7 +2860,7 @@ Model { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "175" + ZoomFactor "174" SimulinkSubDomain "Simulink" Block { BlockType Inport @@ -2885,17 +2889,25 @@ Model { BlockType Inport Name "jointAcc" SID "4966" - Position [160, 148, 190, 162] + Position [160, 123, 190, 137] ZOrder 969 Port "4" } + Block { + BlockType Inport + Name "jointTorq" + SID "5032" + Position [160, 163, 190, 177] + ZOrder 976 + Port "5" + } Block { BlockType Inport Name "IMU_meas" SID "4840" Position [160, 503, 190, 517] ZOrder 559 - Port "5" + Port "6" } Block { BlockType Inport @@ -2903,7 +2915,7 @@ Model { SID "4880" Position [160, 553, 190, 567] ZOrder 963 - Port "6" + Port "7" } Block { BlockType Inport @@ -2911,7 +2923,7 @@ Model { SID "4881" Position [160, 603, 190, 617] ZOrder 964 - Port "7" + Port "8" } Block { BlockType Inport @@ -2919,7 +2931,7 @@ Model { SID "5000" Position [160, 68, 190, 82] ZOrder 973 - Port "8" + Port "9" } Block { BlockType SubSystem @@ -7206,7 +7218,7 @@ Model { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "182" + ZoomFactor "267" SimulinkSubDomain "Simulink" Block { BlockType SubSystem @@ -8603,7 +8615,7 @@ Model { BlockType From Name "From" SID "4725" - Position [490, 275, 585, 295] + Position [470, 285, 565, 305] ZOrder 898 ShowName off HideAutomaticName off @@ -8645,7 +8657,7 @@ Model { BlockType From Name "From12" SID "4795" - Position [500, 196, 580, 214] + Position [500, 216, 580, 234] ZOrder 947 ShowName off GotoTag "pos_CoM_des" @@ -8655,7 +8667,7 @@ Model { BlockType From Name "From13" SID "4798" - Position [515, 317, 565, 333] + Position [510, 322, 565, 338] ZOrder 950 ShowName off HideAutomaticName off @@ -8673,6 +8685,17 @@ Model { GotoTag "jointPos" TagVisibility "global" } + Block { + BlockType From + Name "From15" + SID "5034" + Position [500, 77, 575, 93] + ZOrder 979 + ShowName off + HideAutomaticName off + GotoTag "JointsTorque" + TagVisibility "global" + } Block { BlockType From Name "From2" @@ -8687,7 +8710,7 @@ Model { BlockType From Name "From3" SID "4796" - Position [500, 156, 580, 174] + Position [500, 181, 580, 199] ZOrder 948 ShowName off GotoTag "pos_CoM" @@ -8708,7 +8731,7 @@ Model { BlockType From Name "From5" SID "4721" - Position [505, 36, 580, 54] + Position [500, 41, 575, 59] ZOrder 865 ShowName off GotoTag "tau_star" @@ -8718,7 +8741,7 @@ Model { BlockType From Name "From6" SID "4781" - Position [500, 115, 580, 135] + Position [500, 145, 580, 165] ZOrder 937 ShowName off GotoTag "jointPos_des" @@ -8728,7 +8751,7 @@ Model { BlockType From Name "From7" SID "4485" - Position [505, 76, 580, 94] + Position [500, 111, 580, 129] ZOrder 715 ShowName off HideAutomaticName off @@ -8914,8 +8937,8 @@ Model { BlockType SubSystem Name "Visualizer" SID "4504" - Ports [9, 0, 1] - Position [635, 25, 775, 385] + Ports [10, 0, 1] + Position [635, 27, 775, 388] ZOrder 707 RequestExecContextInheritance off System { @@ -8936,7 +8959,7 @@ Model { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "100" + ZoomFactor "120" SimulinkSubDomain "Simulink" Block { BlockType Inport @@ -8945,13 +8968,21 @@ Model { Position [65, -192, 95, -178] ZOrder 591 } + Block { + BlockType Inport + Name "JointsTorque" + SID "5030" + Position [65, 113, 95, 127] + ZOrder 897 + Port "2" + } Block { BlockType Inport Name "w_H_b" SID "4506" Position [740, -457, 770, -443] ZOrder 592 - Port "2" + Port "3" } Block { BlockType Inport @@ -8959,7 +8990,7 @@ Model { SID "4508" Position [740, -157, 770, -143] ZOrder 594 - Port "3" + Port "4" } Block { BlockType Inport @@ -8967,7 +8998,7 @@ Model { SID "4509" Position [65, 253, 95, 267] ZOrder 595 - Port "4" + Port "5" Port { PortNumber 1 Name "CoM_Measured" @@ -8979,7 +9010,7 @@ Model { SID "4511" Position [65, 288, 95, 302] ZOrder 597 - Port "5" + Port "6" Port { PortNumber 1 Name "CoM_Desired" @@ -8991,7 +9022,7 @@ Model { SID "4507" Position [65, -277, 95, -263] ZOrder 593 - Port "6" + Port "7" Port { PortNumber 1 Name "state" @@ -9004,7 +9035,7 @@ Model { SID "4562" Position [65, -337, 95, -323] ZOrder 873 - Port "7" + Port "8" } Block { BlockType Inport @@ -9012,7 +9043,7 @@ Model { SID "4109" Position [740, 192, 770, 208] ZOrder 887 - Port "8" + Port "9" } Block { BlockType Inport @@ -9020,14 +9051,14 @@ Model { SID "4826" Position [740, -307, 770, -293] ZOrder 895 - Port "9" + Port "10" } Block { BlockType EnablePort Name "Enable" SID "4513" Ports [] - Position [72, 40, 92, 60] + Position [72, -45, 92, -25] ZOrder 599 ShowName off HideAutomaticName off @@ -10126,72 +10157,75 @@ Model { "tyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 0],'LineStyle','-','LineWidth',0.5,'" "Marker','none','Visible','on'),struct('Color',[0 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','o" "n'),struct('Color',[0 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on')}},'UserDefinedChannelNa" - "mes',{{}},'NumLines',0,'LineNames',{{[]}},'ShowContent',true,'Placement',1),struct('MinYLimReal','-4.19072','MaxYL" - "imReal','4.87188','YLabelReal','','MinYLimMag','0','MaxYLimMag','10','LegendVisibility','on','XGrid',true,'YGrid'," - "true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.686274509803922 0.6862745098039" - "22],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.411764705882353 0.160784313725" - "49;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647" - " 1 1;1 0.0745098039215686 0.650980392156863],'Title','%','LinePropertiesCache',{{struct('Color',[1 1 " - "0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 1],'LineStyle','-','LineWid" - "th',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Vi" - "sible','on'),struct('Color',[1 0 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color'" - ",[0 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 0 1],'LineStyle','-','L" - "ineWidth',0.5,'Marker','none','Visible','on')}},'UserDefinedChannelNames',{{}},'NumLines',0,'LineNames',{{[]}},'Sh" - "owContent',true,'Placement',2),struct('MinYLimReal','-4.21765','MaxYLimReal','4.8762','YLabelReal','','MinYLimMag'" - ",'0','MaxYLimMag','10','LegendVisibility','on','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0]," - "'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.074" - "5098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.07450" - "98039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'" - "Title','%','LinePropertiesCache',{{struct('Color',[1 1 0],'LineStyle','-','LineWidth',0.5,'Marker','n" - "one','Visible','on'),struct('Color',[1 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct" - "('Color',[0 1 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 0],'LineStyle" - "','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 0],'LineStyle','-','LineWidth',0.5,'Mark" - "er','none','Visible','on'),struct('Color',[0 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on')}" - "},'UserDefinedChannelNames',{{}},'NumLines',0,'LineNames',{{[]}},'ShowContent',true,'Placement',3),struct('MinYLim" - "Real','-45.10013','MaxYLimReal','35.90119','YLabelReal','','MinYLimMag','0','MaxYLimMag','10','LegendVisibility','" - "on','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.686274" - "509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.41176" - "4705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.27450980392" - "1569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%','LinePropertiesCach" - "e',{{struct('Color',[1 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 1]" - ",'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 1],'LineStyle','-','LineWidth" - "',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visi" - "ble','on'),struct('Color',[0 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[" - "0 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on')}},'UserDefinedChannelNames',{{}},'NumLines'" - ",0,'LineNames',{{[]}},'ShowContent',true,'Placement',4),struct('MinYLimReal','-44.89002','MaxYLimReal','34.01019'," - "'YLabelReal','','MinYLimMag','0','MaxYLimMag','10','LegendVisibility','on','XGrid',true,'YGrid',true,'PlotMagPhase" - "',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrder',[" - "1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.3921568627450" - "98 0.831372549019608 0.0745098039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.074509803" - "9215686 0.650980392156863],'Title','%','LinePropertiesCache',{{struct('Color',[1 1 0],'LineStyle','-'" - ",'LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 1],'LineStyle','-','LineWidth',0.5,'Marker','" - "none','Visible','on'),struct('Color',[0 1 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struc" - "t('Color',[1 0 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 0],'LineStyl" - "e','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 0 1],'LineStyle','-','LineWidth',0.5,'Mar" - "ker','none','Visible','on')}},'UserDefinedChannelNames',{{}},'NumLines',0,'LineNames',{{[]}},'ShowContent',true,'P" - "lacement',5),struct('MinYLimReal','-0.5','MaxYLimReal','14.5','YLabelReal','','MinYLimMag','0','MaxYLimMag','10','" - "LegendVisibility','on','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.68627" - "4509803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.62352941" - "1764706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.7176470588" - "23529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','','LinePropertie" + "mes',{{}},'NumLines',3,'LineNames',{{'torso:1','torso:2','torso:3'}},'ShowContent',true,'Placement',1),struct('Min" + "YLimReal','-4.19072','MaxYLimReal','4.87188','YLabelReal','','MinYLimMag','0','MaxYLimMag','10','LegendVisibility'" + ",'on','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.6862" + "74509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.411" + "764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.274509803" + "921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%','LinePropertiesCa" + "che',{{struct('Color',[1 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 " + "1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 1],'LineStyle','-','LineWid" + "th',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Vi" + "sible','on'),struct('Color',[0 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color'" + ",[0 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on')}},'UserDefinedChannelNames',{{}},'NumLine" + "s',4,'LineNames',{{'left_arm:1','left_arm:2','left_arm:3','left_arm:4'}},'ShowContent',true,'Placement',2),struct(" + "'MinYLimReal','-4.21765','MaxYLimReal','4.8762','YLabelReal','','MinYLimMag','0','MaxYLimMag','10','LegendVisibili" + "ty','on','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.6" + "86274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0." + "411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.274509" + "803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%','LinePropertie" "sCache',{{struct('Color',[1 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1" " 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 1],'LineStyle','-','Line" "Width',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 0],'LineStyle','-','LineWidth',0.5,'Marker','none'," "'Visible','on'),struct('Color',[0 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Col" "or',[0 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on')}},'UserDefinedChannelNames',{{}},'NumL" - "ines',0,'LineNames',{{[]}},'ShowContent',true,'Placement',6)},'DisplayPropertyDefaults',struct('YLabelReal','','Ax" - "esColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.06666" - "66666666667;0.0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372" - "549019608 0.0745098039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.6" - "50980392156863],'Title','%','LinePropertiesCache',{{struct('Color',[1 1 0],'LineStyle','-','LineWidth" - "',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visi" - "ble','on'),struct('Color',[0 1 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[" - "1 0 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 0],'LineStyle','-','Lin" - "eWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none'" - ",'Visible','on')}},'UserDefinedChannelNames',{{}},'NumLines',0,'LineNames',{{[]}},'ShowContent',true,'Placement',1" - "),'TimeRangeSamples','14','TimeRangeFrames','14','DisplayLayoutDimensions',[6 1]),extmgr.Configuration('Tools','Pl" - "ot Navigation',true,'OnceAtStop',false,'PreviousAutoscale','XY'),extmgr.Configuration('Tools','Measurements',true," - "'Version','2018a')),'Version','2020a','Location',[1266 568 2566 1252])" + "ines',4,'LineNames',{{'right_arm:1','right_arm:2','right_arm:3','right_arm:4'}},'ShowContent',true,'Placement',3)," + "struct('MinYLimReal','-45.10013','MaxYLimReal','35.90119','YLabelReal','','MinYLimMag','0','MaxYLimMag','10','Lege" + "ndVisibility','on','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509" + "803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764" + "706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.71764705882352" + "9 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%','Lin" + "ePropertiesCache',{{struct('Color',[1 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct(" + "'Color',[1 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 1],'LineStyle'" + ",'-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 0],'LineStyle','-','LineWidth',0.5,'Marke" + "r','none','Visible','on'),struct('Color',[0 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),s" + "truct('Color',[0 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on')}},'UserDefinedChannelNames'," + "{{}},'NumLines',6,'LineNames',{{'left_leg:1','left_leg:2','left_leg:3','left_leg:4','left_leg:5','left_leg:6'}},'S" + "howContent',true,'Placement',4),struct('MinYLimReal','-44.89002','MaxYLimReal','34.01019','YLabelReal','','MinYLim" + "Mag','0','MaxYLimMag','10','LegendVisibility','on','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0" + " 0],'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0" + ".0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0" + "745098039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.65098039215686" + "3],'Title','%','LinePropertiesCache',{{struct('Color',[1 1 0],'LineStyle','-','LineWidth',0.5,'Marker" + "','none','Visible','on'),struct('Color',[1 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),st" + "ruct('Color',[0 1 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 0],'LineS" + "tyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 0],'LineStyle','-','LineWidth',0.5,'" + "Marker','none','Visible','on'),struct('Color',[0 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','o" + "n')}},'UserDefinedChannelNames',{{}},'NumLines',6,'LineNames',{{'right_leg:1','right_leg:2','right_leg:3','right_l" + "eg:4','right_leg:5','right_leg:6'}},'ShowContent',true,'Placement',5),struct('MinYLimReal','-0.5','MaxYLimReal','1" + "4.5','YLabelReal','','MinYLimMag','0','MaxYLimMag','10','LegendVisibility','on','XGrid',true,'YGrid',true,'PlotMag" + "Phase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrd" + "er',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.39215686" + "2745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745" + "098039215686 0.650980392156863],'Title','','LinePropertiesCache',{{struct('Color',[1 1 0],'LineStyle','-','LineWid" + "th',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Vi" + "sible','on'),struct('Color',[0 1 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color'" + ",[1 0 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 0],'LineStyle','-','L" + "ineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 0 1],'LineStyle','-','LineWidth',0.5,'Marker','non" + "e','Visible','on')}},'UserDefinedChannelNames',{{}},'NumLines',1,'LineNames',{{'state'}},'ShowContent',true,'Place" + "ment',6)},'DisplayPropertyDefaults',struct('YLabelReal','','AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 " + "0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1" + " 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.274" + "509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%','LineProper" + "tiesCache',{{struct('Color',[1 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color'" + ",[1 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 1],'LineStyle','-','L" + "ineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 0],'LineStyle','-','LineWidth',0.5,'Marker','non" + "e','Visible','on'),struct('Color',[0 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('" + "Color',[0 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on')}},'UserDefinedChannelNames',{{}},'N" + "umLines',0,'LineNames',{{[]}},'ShowContent',true,'Placement',1),'TimeRangeSamples','14','TimeRangeFrames','14','Di" + "splayLayoutDimensions',[6 1]),extmgr.Configuration('Tools','Plot Navigation',true,'OnceAtStop',false,'PreviousAuto" + "scale','XY'),extmgr.Configuration('Tools','Measurements',true,'Version','2020b')),'Version','2020b','Location',[31" + "5 -1206 1615 -522])" NumInputPorts "6" Floating off } @@ -10267,82 +10301,85 @@ Model { "mgr.Configuration('Core','Source UI',true),extmgr.Configuration('Sources','WiredSimulink',true,'DataLogging',true," "'DataLoggingVariableName','tauError_DATA','DataLoggingSaveFormat','StructureWithTime','DataLoggingDecimation','1'," "'DataLoggingDecimateData',true),extmgr.Configuration('Visuals','Time Domain',true,'SerializedDisplays',{struct('Mi" - "nYLimReal','-23.63249','MaxYLimReal','27.95301','YLabelReal','','MinYLimMag','0.00000','MaxYLimMag','27.95301','Le" - "gendVisibility','On','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.6862745" - "09803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.6235294117" - "64706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823" - "529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%','L" - "inePropertiesCache',{{struct('Color',[1 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struc" - "t('Color',[1 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 1],'LineStyl" - "e','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 0],'LineStyle','-','LineWidth',0.5,'Mar" - "ker','none','Visible','on'),struct('Color',[0 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on')" - ",struct('Color',[0 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on')}},'UserDefinedChannelNames" - "',{{}},'NumLines',0,'LineNames',{{[]}},'ShowContent',true,'Placement',1),struct('MinYLimReal','-6.49775','MaxYLimR" - "eal','5.80954','YLabelReal','','MinYLimMag','0','MaxYLimMag','10','LegendVisibility','on','XGrid',true,'YGrid',tru" - "e,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922]" - ",'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;" - "0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 " - "1;1 0.0745098039215686 0.650980392156863],'Title','%','LinePropertiesCache',{{struct('Color',[1 1 0]," - "'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 1],'LineStyle','-','LineWidth'" - ",0.5,'Marker','none','Visible','on'),struct('Color',[0 1 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visib" - "le','on'),struct('Color',[1 0 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0" - " 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 0 1],'LineStyle','-','Line" - "Width',0.5,'Marker','none','Visible','on')}},'UserDefinedChannelNames',{{}},'NumLines',0,'LineNames',{{[]}},'ShowC" - "ontent',true,'Placement',2),struct('MinYLimReal','-8.17969','MaxYLimReal','7.65402','YLabelReal','','MinYLimMag','" - "0','MaxYLimMag','10','LegendVisibility','on','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'A" - "xesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.07450" - "98039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098" - "039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Ti" - "tle','%','LinePropertiesCache',{{struct('Color',[1 1 0],'LineStyle','-','LineWidth',0.5,'Marker','non" - "e','Visible','on'),struct('Color',[1 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('" - "Color',[0 1 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 0],'LineStyle'," - "'-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 0],'LineStyle','-','LineWidth',0.5,'Marker" - "','none','Visible','on'),struct('Color',[0 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on')}}," - "'UserDefinedChannelNames',{{}},'NumLines',0,'LineNames',{{[]}},'ShowContent',true,'Placement',3),struct('MinYLimRe" - "al','-23.22756','MaxYLimReal','25.22297','YLabelReal','','MinYLimMag','0','MaxYLimMag','10','LegendVisibility','on" - "','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.68627450" - "9803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.4117647" - "05882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.2745098039215" - "69 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%','LinePropertiesCache'" - ",{{struct('Color',[1 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 1],'" - "LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 1],'LineStyle','-','LineWidth'," - "0.5,'Marker','none','Visible','on'),struct('Color',[1 0 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visibl" - "e','on'),struct('Color',[0 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 " - "0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on')}},'UserDefinedChannelNames',{{}},'NumLines',0" - ",'LineNames',{{[]}},'ShowContent',true,'Placement',4),struct('MinYLimReal','-66.44849','MaxYLimReal','41.64929','Y" - "LabelReal','','MinYLimMag','0','MaxYLimMag','10','LegendVisibility','on','XGrid',true,'YGrid',true,'PlotMagPhase'," - "false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 " - "1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.392156862745098" - " 0.831372549019608 0.0745098039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.07450980392" - "15686 0.650980392156863],'Title','%','LinePropertiesCache',{{struct('Color',[1 1 0],'LineStyle','-','" - "LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 1],'LineStyle','-','LineWidth',0.5,'Marker','no" - "ne','Visible','on'),struct('Color',[0 1 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct(" - "'Color',[1 0 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 0],'LineStyle'" - ",'-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 0 1],'LineStyle','-','LineWidth',0.5,'Marke" - "r','none','Visible','on')}},'UserDefinedChannelNames',{{}},'NumLines',0,'LineNames',{{[]}},'ShowContent',true,'Pla" - "cement',5),struct('MinYLimReal','0.25','MaxYLimReal','7.75','YLabelReal','','MinYLimMag','0','MaxYLimMag','10','Le" - "gendVisibility','on','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.6862745" - "09803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.6235294117" - "64706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823" - "529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','','LinePropertiesC" + "nYLimReal','-4.50647','MaxYLimReal','5.03641','YLabelReal','','MinYLimMag','0.00000','MaxYLimMag','5.03641','Legen" + "dVisibility','On','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.6862745098" + "03922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.6235294117647" + "06 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529" + " 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%','Line" + "PropertiesCache',{{struct('Color',[1 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('" + "Color',[1 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 1],'LineStyle'," + "'-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 0],'LineStyle','-','LineWidth',0.5,'Marker" + "','none','Visible','on'),struct('Color',[0 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),st" + "ruct('Color',[0 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on')}},'UserDefinedChannelNames',{" + "{}},'NumLines',3,'LineNames',{{'torso:1','torso:2','torso:3'}},'ShowContent',true,'Placement',1),struct('MinYLimRe" + "al','-3.06971','MaxYLimReal','2.15443','YLabelReal','','MinYLimMag','0','MaxYLimMag','10','LegendVisibility','on'," + "'XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.6862745098" + "03922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.411764705" + "882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.274509803921569" + " 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%','LinePropertiesCache',{" + "{struct('Color',[1 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 1],'Li" + "neStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 1],'LineStyle','-','LineWidth',0." + "5,'Marker','none','Visible','on'),struct('Color',[1 0 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible'" + ",'on'),struct('Color',[0 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 0 " + "1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on')}},'UserDefinedChannelNames',{{}},'NumLines',4,'" + "LineNames',{{'left_arm:1','left_arm:2','left_arm:3','left_arm:4'}},'ShowContent',true,'Placement',2),struct('MinYL" + "imReal','-3.06612','MaxYLimReal','2.1535','YLabelReal','','MinYLimMag','0','MaxYLimMag','10','LegendVisibility','o" + "n','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.6862745" + "09803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.411764" + "705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.274509803921" + "569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%','LinePropertiesCache" + "',{{struct('Color',[1 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 1]," + "'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 1],'LineStyle','-','LineWidth'" + ",0.5,'Marker','none','Visible','on'),struct('Color',[1 0 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visib" + "le','on'),struct('Color',[0 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0" + " 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on')}},'UserDefinedChannelNames',{{}},'NumLines'," + "4,'LineNames',{{'right_arm:1','right_arm:2','right_arm:3','right_arm:4'}},'ShowContent',true,'Placement',3),struct" + "('MinYLimReal','-12.14454','MaxYLimReal','18.32823','YLabelReal','','MinYLimMag','0','MaxYLimMag','10','LegendVisi" + "bility','on','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922" + " 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;" + "1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.27" + "4509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%','LinePrope" + "rtiesCache',{{struct('Color',[1 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color" + "',[1 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 1],'LineStyle','-','" + "LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 0],'LineStyle','-','LineWidth',0.5,'Marker','no" + "ne','Visible','on'),struct('Color',[0 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct(" + "'Color',[0 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on')}},'UserDefinedChannelNames',{{}},'" + "NumLines',6,'LineNames',{{'left_leg:1','left_leg:2','left_leg:3','left_leg:4','left_leg:5','left_leg:6'}},'ShowCon" + "tent',true,'Placement',4),struct('MinYLimReal','-12.71807','MaxYLimReal','7.61789','YLabelReal','','MinYLimMag','0" + "','MaxYLimMag','10','LegendVisibility','on','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'Ax" + "esTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.074509" + "8039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.07450980" + "39215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Tit" + "le','%','LinePropertiesCache',{{struct('Color',[1 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none" + "','Visible','on'),struct('Color',[1 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('C" + "olor',[0 1 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 0],'LineStyle','" + "-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 0],'LineStyle','-','LineWidth',0.5,'Marker'" + ",'none','Visible','on'),struct('Color',[0 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on')}},'" + "UserDefinedChannelNames',{{}},'NumLines',6,'LineNames',{{'right_leg:1','right_leg:2','right_leg:3','right_leg:4','" + "right_leg:5','right_leg:6'}},'ShowContent',true,'Placement',5),struct('MinYLimReal','0.625','MaxYLimReal','4.375'," + "'YLabelReal','','MinYLimMag','0','MaxYLimMag','10','LegendVisibility','on','XGrid',true,'YGrid',true,'PlotMagPhase" + "',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrder',[" + "1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.3921568627450" + "98 0.831372549019608 0.0745098039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.074509803" + "9215686 0.650980392156863],'Title','','LinePropertiesCache',{{struct('Color',[1 1 0],'LineStyle','-','LineWidth',0" + ".5,'Marker','none','Visible','on'),struct('Color',[1 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible" + "','on'),struct('Color',[0 1 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0" + " 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 0],'LineStyle','-','LineWi" + "dth',0.5,'Marker','none','Visible','on'),struct('Color',[0 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','V" + "isible','on')}},'UserDefinedChannelNames',{{}},'NumLines',1,'LineNames',{{'state'}},'ShowContent',true,'Placement'" + ",6)},'DisplayPropertyDefaults',struct('YLabelReal','','AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.686" + "274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.41" + "1764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.27450980" + "3921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%','LinePropertiesC" "ache',{{struct('Color',[1 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0" " 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 1],'LineStyle','-','LineWi" "dth',0.5,'Marker','none','Visible','on'),struct('Color',[1 0 0],'LineStyle','-','LineWidth',0.5,'Marker','none','V" "isible','on'),struct('Color',[0 1 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color" "',[0 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on')}},'UserDefinedChannelNames',{{}},'NumLin" - "es',0,'LineNames',{{[]}},'ShowContent',true,'Placement',6)},'DisplayPropertyDefaults',struct('YLabelReal','','Axes" - "Color',[0 0 0],'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666" - "666666667;0.0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.83137254" - "9019608 0.0745098039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650" - "980392156863],'Title','%','LinePropertiesCache',{{struct('Color',[1 1 0],'LineStyle','-','LineWidth'," - "0.5,'Marker','none','Visible','on'),struct('Color',[1 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visibl" - "e','on'),struct('Color',[0 1 1],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[1 " - "0 0],'LineStyle','-','LineWidth',0.5,'Marker','none','Visible','on'),struct('Color',[0 1 0],'LineStyle','-','LineW" - "idth',0.5,'Marker','none','Visible','on'),struct('Color',[0 0 1],'LineStyle','-','LineWidth',0.5,'Marker','none','" - "Visible','on')}},'UserDefinedChannelNames',{{}},'NumLines',0,'LineNames',{{[]}},'ShowContent',true,'Placement',1)," - "'TimeRangeSamples','90','TimeRangeFrames','90','DisplayLayoutDimensions',[6 1]),extmgr.Configuration('Tools','Plot" - " Navigation',true,'OnceAtStop',false,'PreviousAutoscale','XY'),extmgr.Configuration('Tools','Measurements',true,'V" - "ersion','2018a')),'Version','2020a','Location',[135 169 1990 1170])" + "es',0,'LineNames',{{[]}},'ShowContent',true,'Placement',1),'TimeRangeSamples','90','TimeRangeFrames','90','Display" + "LayoutDimensions',[6 1]),extmgr.Configuration('Tools','Plot Navigation',true,'OnceAtStop',false,'PreviousAutoscale" + "','XY'),extmgr.Configuration('Tools','Measurements',true,'Version','2020b')),'Version','2020b','Location',[200 -12" + "15 1950 -214])" NumInputPorts "6" Floating off } @@ -10440,25 +10477,8 @@ Model { Branch { ZOrder 63 Points [0, 150] - Branch { - ZOrder 102 - Points [0, 155; 79, 0] - Branch { - ZOrder 14 - DstBlock "Sum" - DstPort 2 - } - Branch { - ZOrder 15 - DstBlock "Demux9" - DstPort 1 - } - } - Branch { - ZOrder 101 DstBlock "Sum" DstPort 1 - } } Branch { ZOrder 64 @@ -11068,6 +11088,22 @@ Model { DstPort 6 } } + Line { + ZOrder 190 + SrcBlock "JointsTorque" + SrcPort 1 + Points [120, 0] + Branch { + ZOrder 192 + DstBlock "Sum" + DstPort 2 + } + Branch { + ZOrder 191 + DstBlock "Demux9" + DstPort 1 + } + } } } Line { @@ -11090,17 +11126,17 @@ Model { } Branch { ZOrder 4 - Points [0, 40] + Points [0, 55] Branch { ZOrder 5 - Points [0, 135] + Points [0, 120] DstBlock "Desired and Measured Forces" DstPort 4 } Branch { ZOrder 6 DstBlock "Visualizer" - DstPort 6 + DstPort 7 } } Branch { @@ -11115,7 +11151,7 @@ Model { SrcBlock "From7" SrcPort 1 DstBlock "Visualizer" - DstPort 2 + DstPort 3 } Line { ZOrder 9 @@ -11129,7 +11165,7 @@ Model { SrcBlock "From12" SrcPort 1 DstBlock "Visualizer" - DstPort 5 + DstPort 6 } Line { ZOrder 11 @@ -11202,35 +11238,42 @@ Model { SrcBlock "From6" SrcPort 1 DstBlock "Visualizer" - DstPort 3 + DstPort 4 } Line { ZOrder 21 SrcBlock "From3" SrcPort 1 DstBlock "Visualizer" - DstPort 4 + DstPort 5 } Line { ZOrder 22 SrcBlock "From" SrcPort 1 DstBlock "Visualizer" - DstPort 7 + DstPort 8 } Line { ZOrder 23 SrcBlock "From13" SrcPort 1 DstBlock "Visualizer" - DstPort 8 + DstPort 9 } Line { ZOrder 24 SrcBlock "From14" SrcPort 1 DstBlock "Visualizer" - DstPort 9 + DstPort 10 + } + Line { + ZOrder 27 + SrcBlock "From15" + SrcPort 1 + DstBlock "Visualizer" + DstPort 2 } } } @@ -13007,6 +13050,17 @@ Model { } } } + Block { + BlockType Goto + Name "Joints Torque" + SID "5033" + Position [230, 162, 310, 178] + ZOrder 977 + ShowName off + HideAutomaticName off + GotoTag "JointsTorque" + TagVisibility "global" + } Block { BlockType SubSystem Name "Robot State and References" @@ -18960,7 +19014,7 @@ Model { ZOrder 329 SrcBlock "jointAcc" SrcPort 1 - Points [308, 0; 0, 210] + Points [308, 0; 0, 235] DstBlock "Balancing Controller QP" DstPort 13 } @@ -18978,13 +19032,20 @@ Model { DstBlock "Goto" DstPort 1 } + Line { + ZOrder 372 + SrcBlock "jointTorq" + SrcPort 1 + DstBlock "Joints Torque" + DstPort 1 + } } } Block { BlockType Memory Name "Memory" SID "5002" - Position [1125, 485, 1155, 515] + Position [1125, 480, 1155, 510] ZOrder 1286 InitialCondition "zeros(Config.N_DOF,1)" InheritSampleTime on @@ -18993,8 +19054,8 @@ Model { BlockType SubSystem Name "Robot Simulator" SID "4955" - Ports [1, 5] - Position [1190, 427, 1385, 573] + Ports [1, 6] + Position [1190, 419, 1385, 566] ZOrder 1279 ForegroundColor "red" BackgroundColor "yellow" @@ -19111,7 +19172,7 @@ Model { Name "Friction Model" SID "5016" Ports [2, 1] - Position [-5, 197, 110, 328] + Position [-25, 197, 90, 328] ZOrder 1285 ErrorFcn "Stateflow.Translate.translate" PermitHierarchicalResolution "ExplicitOnly" @@ -19119,6 +19180,11 @@ Model { RequestExecContextInheritance off SFBlockType "MATLAB Function" ContentPreviewEnabled on + Port { + PortNumber 1 + Name "joints_torque" + PropagatedSignals "jointTorques" + } System { Name "Friction Model" Location [223, 338, 826, 833] @@ -19275,7 +19341,7 @@ Model { Name "RobotDynWithContacts" SID "4937" Ports [3, 4] - Position [180, 244, 375, 356] + Position [200, 244, 395, 356] ZOrder 1231 ForegroundColor "red" BackgroundColor "yellow" @@ -19334,6 +19400,14 @@ Model { ZOrder 1280 Port "5" } + Block { + BlockType Outport + Name "joints_torque" + SID "5035" + Position [870, 398, 900, 412] + ZOrder 1288 + Port "6" + } Line { ZOrder 324 SrcBlock "RobotDynWithContacts" @@ -19345,7 +19419,7 @@ Model { ZOrder 322 SrcBlock "RobotDynWithContacts" SrcPort 1 - Points [81, 0] + Points [61, 0] Branch { ZOrder 351 Points [0, -80] @@ -19413,7 +19487,7 @@ Model { ZOrder 300 SrcBlock "RobotDynWithContacts" SrcPort 4 - Points [23, 0; 0, 105] + Points [17, 0; 0, 105] DstBlock "Bus\nSelector1" DstPort 1 } @@ -19450,13 +19524,6 @@ Model { DstBlock "Friction Model" DstPort 2 } - Line { - ZOrder 348 - SrcBlock "Friction Model" - SrcPort 1 - DstBlock "RobotDynWithContacts" - DstPort 1 - } Line { Name "" ZOrder 352 @@ -19470,10 +19537,29 @@ Model { ZOrder 357 SrcBlock "Memory" SrcPort 1 - Points [-164, 0; 0, 55] + Points [-220, 0; 0, 55] DstBlock "Friction Model" DstPort 1 } + Line { + Name "joints_torque" + ZOrder 348 + Labels [0, 0] + SrcBlock "Friction Model" + SrcPort 1 + Points [12, 0] + Branch { + ZOrder 371 + DstBlock "RobotDynWithContacts" + DstPort 1 + } + Branch { + ZOrder 370 + Points [0, 282; 731, 0; 0, -142] + DstBlock "joints_torque" + DstPort 1 + } + } } } Block { @@ -19603,7 +19689,7 @@ Model { Name "Selector" SID "4963" Ports [1, 1] - Position [840, 473, 880, 497] + Position [840, 462, 880, 478] ZOrder 1280 InputPortWidth "6+robot_config.N_DOF" IndexOptions "Index vector (dialog)" @@ -19615,7 +19701,7 @@ Model { Name "Selector1" SID "4975" Ports [1, 1] - Position [840, 443, 880, 467] + Position [840, 437, 880, 453] ZOrder 1281 InputPortWidth "robot_config.N_DOF" IndexOptions "Index vector (dialog)" @@ -19627,7 +19713,7 @@ Model { Name "Selector2" SID "4976" Ports [1, 1] - Position [840, 413, 880, 437] + Position [840, 412, 880, 428] ZOrder 1282 InputPortWidth "robot_config.N_DOF" IndexOptions "Index vector (dialog)" @@ -19638,7 +19724,7 @@ Model { ZOrder 321 SrcBlock "Bus\nCreator" SrcPort 1 - Points [48, 0; 0, 161; -903, 0; 0, -146] + Points [19, 0; 0, 170; -858, 0; 0, -155] DstBlock "Bus\nSelector2" DstPort 1 } @@ -19653,10 +19739,10 @@ Model { ZOrder 362 SrcBlock "Robot Simulator" SrcPort 1 - Points [19, 0; 0, -15] + Points [19, 0; 0, -10] Branch { - ZOrder 449 - Points [0, -53; -123, 0; 0, -87] + ZOrder 472 + Points [0, -48; -123, 0; 0, -87] DstBlock "Robot Visualizer" DstPort 1 } @@ -19699,27 +19785,27 @@ Model { ZOrder 379 Labels [0, 0] SrcBlock "Bus\nSelector2" - SrcPort 4 + SrcPort 5 DstBlock "MOMENTUM BASED TORQUE CONTROL" - DstPort 5 + DstPort 6 } Line { Name "" ZOrder 380 Labels [0, 0] SrcBlock "Bus\nSelector2" - SrcPort 5 + SrcPort 6 DstBlock "MOMENTUM BASED TORQUE CONTROL" - DstPort 6 + DstPort 7 } Line { Name "" ZOrder 381 Labels [0, 0] SrcBlock "Bus\nSelector2" - SrcPort 6 + SrcPort 7 DstBlock "MOMENTUM BASED TORQUE CONTROL" - DstPort 7 + DstPort 8 } Line { Name "" @@ -19788,7 +19874,7 @@ Model { SrcBlock "Clock1" SrcPort 1 DstBlock "MOMENTUM BASED TORQUE CONTROL" - DstPort 8 + DstPort 9 } Line { Name "" @@ -19808,6 +19894,22 @@ Model { DstBlock "Bus\nCreator" DstPort 2 } + Line { + ZOrder 473 + SrcBlock "Robot Simulator" + SrcPort 6 + DstBlock "Bus\nCreator" + DstPort 7 + } + Line { + Name "" + ZOrder 474 + Labels [0, 0] + SrcBlock "Bus\nSelector2" + SrcPort 4 + DstBlock "MOMENTUM BASED TORQUE CONTROL" + DstPort 5 + } } } #Finite State Machines From 258bced9cdb74a8c745ca3548c4c60ee85f295aa Mon Sep 17 00:00:00 2001 From: Nuno Guedelha Date: Thu, 20 May 2021 03:11:15 +0200 Subject: [PATCH 4/4] Refactored handling of encoder spikes and joints limits hit - Converted boolean flags to enumerations. - Introduced None/Warning/EmergencyStop choices. --- .../app/robots/iCubGazeboV2_5/configRobot.m | 4 +- .../src/EventWithEncoderSpikes.m | 12 + .../src/EventWithJointLimits.m | 12 + .../torqueControlBalancingWithSimu.mdl | 1802 +++++++++++------ library/matlab-wbc/+wbc/checkInputSpikes.m | 32 +- 5 files changed, 1181 insertions(+), 681 deletions(-) create mode 100644 controllers/+floatingBaseBalancingTorqueControlWithSimulator/src/EventWithEncoderSpikes.m create mode 100644 controllers/+floatingBaseBalancingTorqueControlWithSimulator/src/EventWithJointLimits.m diff --git a/controllers/+floatingBaseBalancingTorqueControlWithSimulator/app/robots/iCubGazeboV2_5/configRobot.m b/controllers/+floatingBaseBalancingTorqueControlWithSimulator/app/robots/iCubGazeboV2_5/configRobot.m index 55304cd..e8bdb3d 100644 --- a/controllers/+floatingBaseBalancingTorqueControlWithSimulator/app/robots/iCubGazeboV2_5/configRobot.m +++ b/controllers/+floatingBaseBalancingTorqueControlWithSimulator/app/robots/iCubGazeboV2_5/configRobot.m @@ -50,8 +50,8 @@ % if TRUE, the controller will STOP if the joints hit the joints limits % and/or if the (unsigned) difference between two consecutive joints % encoders measurements is greater than a given threshold. -Config.EMERGENCY_STOP_WITH_JOINTS_LIMITS = false; -Config.EMERGENCY_STOP_WITH_ENCODER_SPIKES = false; +Config.EVENT_WITH_JOINTS_LIMITS = EventWithJointLimits.None; +Config.EVENT_WITH_ENCODER_SPIKES = EventWithEncoderSpikes.Warning; % Config.USE_MOTOR_REFLECTED_INERTIA: if set to true, motors reflected % inertias are included in the system mass matrix. If diff --git a/controllers/+floatingBaseBalancingTorqueControlWithSimulator/src/EventWithEncoderSpikes.m b/controllers/+floatingBaseBalancingTorqueControlWithSimulator/src/EventWithEncoderSpikes.m new file mode 100644 index 0000000..4e8644c --- /dev/null +++ b/controllers/+floatingBaseBalancingTorqueControlWithSimulator/src/EventWithEncoderSpikes.m @@ -0,0 +1,12 @@ +classdef EventWithEncoderSpikes < Simulink.IntEnumType + %EVENTWITHENCODERSPIKES Class for selecting a None, Warning or EmergencyStop signal + % + % Class for selecting a None, Warning or EmergencyStop signal triggered by an encoder spike + % event. + + enumeration + None(0) + Warning(1) + EmergencyStop(2) + end +end diff --git a/controllers/+floatingBaseBalancingTorqueControlWithSimulator/src/EventWithJointLimits.m b/controllers/+floatingBaseBalancingTorqueControlWithSimulator/src/EventWithJointLimits.m new file mode 100644 index 0000000..72f3942 --- /dev/null +++ b/controllers/+floatingBaseBalancingTorqueControlWithSimulator/src/EventWithJointLimits.m @@ -0,0 +1,12 @@ +classdef EventWithJointLimits < Simulink.IntEnumType + %EVENTWITHJOINTLIMITS Class for selecting a None, Warning or EmergencyStop signal + % + % Class for selecting a None, Warning or EmergencyStop signal triggered by the joints hitting + % the limits. + + enumeration + None(0) + Warning(1) + EmergencyStop(2) + end +end diff --git a/controllers/+floatingBaseBalancingTorqueControlWithSimulator/torqueControlBalancingWithSimu.mdl b/controllers/+floatingBaseBalancingTorqueControlWithSimulator/torqueControlBalancingWithSimu.mdl index c1e2538..8db2ed3 100644 --- a/controllers/+floatingBaseBalancingTorqueControlWithSimulator/torqueControlBalancingWithSimu.mdl +++ b/controllers/+floatingBaseBalancingTorqueControlWithSimulator/torqueControlBalancingWithSimu.mdl @@ -7,7 +7,7 @@ Model { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" - ComputedModelVersion "3.147" + ComputedModelVersion "3.163" NumModelReferences 0 NumTestPointedSignals 0 NumProvidedFunctions 0 @@ -403,7 +403,7 @@ Model { } Array { Type "Simulink.EditorInfo" - Dimension 85 + Dimension 92 Object { $ObjectID 5 IsActive [1] @@ -411,48 +411,114 @@ Model { ViewObjType "SimulinkTopLevel" LoadSaveID "0" Extents [2171.0, 1188.0] - ZoomFactor [2.4375644261187928] - Offset [726.58468706252916, 193.76634864967335] - SceneRectInView [726.58468706252916, 193.76634864967335, 890.64312587494169, 487.37173355109661] + ZoomFactor [2.4976689976689981] + Offset [730.52460481801211, 199.73022868787916] + SceneRectInView [730.52460481801211, 199.73022868787916, 869.2104526364908, 475.643490433971] } Object { $ObjectID 6 IsActive [0] - IsTabbed [0] + IsTabbed [1] ViewObjType "SimulinkSubsys" - LoadSaveID "4504" + LoadSaveID "5049" Extents [2171.0, 1188.0] - ZoomFactor [1.2045690550363448] - Offset [-226.1716864224137, -519.62241379310342] - SceneRectInView [-226.1716864224137, -519.62241379310342, 1802.3043103448274, 986.24482758620684] + ZoomFactor [2.5] + Offset [-241.59999999999951, -174.0] + SceneRectInView [-241.59999999999951, -174.0, 868.4, 475.2] } Object { $ObjectID 7 IsActive [0] - IsTabbed [0] + IsTabbed [1] ViewObjType "SimulinkSubsys" - LoadSaveID "3241" + LoadSaveID "4913" Extents [2171.0, 1188.0] - ZoomFactor [1.5612382234185733] - Offset [-827.23464439655174, -71.967241379310337] - SceneRectInView [-827.23464439655174, -71.967241379310337, 1390.5629310344827, 760.93448275862067] + ZoomFactor [4.2428571428571429] + Offset [73.923874158249163, 177.2895622895623] + SceneRectInView [73.923874158249163, 177.2895622895623, 511.68350168350167, 280.0] } Object { $ObjectID 8 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "4937" + LoadSaveID "5068" Extents [2171.0, 1188.0] - ZoomFactor [1.0] - Offset [-327.9765625, -403.5] - SceneRectInView [-327.9765625, -403.5, 2171.0, 1188.0] + ZoomFactor [2.5] + Offset [-303.99999999999994, -170.6] + SceneRectInView [-303.99999999999994, -170.6, 868.4, 475.2] } Object { $ObjectID 9 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" + LoadSaveID "4917" + Extents [2171.0, 1188.0] + ZoomFactor [4.8157303370786515] + Offset [12.092860475968251, -51.73023868409328] + SceneRectInView [12.092860475968251, -51.73023868409328, 450.8142790480635, 246.6915538964069] + } + Object { + $ObjectID 10 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "5063" + Extents [2171.0, 1188.0] + ZoomFactor [3.0] + Offset [-109.63541666666663, -75.5] + SceneRectInView [-109.63541666666663, -75.5, 723.66666666666663, 396.0] + } + Object { + $ObjectID 11 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "5052" + Extents [2171.0, 1188.0] + ZoomFactor [3.0] + Offset [-184.80476190476185, -123.14285714285728] + SceneRectInView [-184.80476190476185, -123.14285714285728, 723.66666666666663, 396.0] + } + Object { + $ObjectID 12 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "5047" + Extents [2171.0, 1188.0] + ZoomFactor [3.0] + Offset [-114.62722701149414, -98.742241379310371] + SceneRectInView [-114.62722701149414, -98.742241379310371, 723.66666666666663, 396.0] + } + Object { + $ObjectID 13 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "5065" + Extents [2171.0, 1188.0] + ZoomFactor [3.0] + Offset [-236.66666666666663, -131.0] + SceneRectInView [-236.66666666666663, -131.0, 723.66666666666663, 396.0] + } + Object { + $ObjectID 14 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "4925" + Extents [2171.0, 1188.0] + ZoomFactor [4.2967418546365916] + Offset [-72.008282781147926, -61.127916472235171] + SceneRectInView [-72.008282781147926, -61.127916472235171, 505.26656556229585, 276.48856742883805] + } + Object { + $ObjectID 15 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" LoadSaveID "4537" Extents [2171.0, 1188.0] ZoomFactor [5.1816867469879524] @@ -460,18 +526,29 @@ Model { SceneRectInView [-108.23828125, -66.072916666666657, 418.97553943452374, 229.26897321428569] } Object { - $ObjectID 10 + $ObjectID 16 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" - LoadSaveID "4104" + LoadSaveID "5041" Extents [2171.0, 1188.0] - ZoomFactor [3.0933333333333333] - Offset [-128.63423482247225, -154.52586206896552] - SceneRectInView [-128.63423482247225, -154.52586206896552, 701.83189655172418, 384.05172413793105] + ZoomFactor [3.3] + Offset [-233.78787878787875, -136.0] + SceneRectInView [-233.78787878787875, -136.0, 657.87878787878788, 360.0] } Object { - $ObjectID 11 + $ObjectID 17 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "4836" + Extents [2171.0, 1188.0] + ZoomFactor [1.7391304347826086] + Offset [50.564062499999977, -29.050000000000011] + SceneRectInView [50.564062499999977, -29.050000000000011, 1248.325, 683.1] + } + Object { + $ObjectID 18 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -482,7 +559,73 @@ Model { SceneRectInView [-119.91137569995328, 42.539639718463263, 1045.1040013999066, 571.89477368175449] } Object { - $ObjectID 12 + $ObjectID 19 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "2355" + Extents [2171.0, 1188.0] + ZoomFactor [1.0730804810360777] + Offset [732.82082435344819, -198.046551724138] + SceneRectInView [732.82082435344819, -198.046551724138, 2023.1474137931036, 1107.093103448276] + } + Object { + $ObjectID 20 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "4553" + Extents [2171.0, 1188.0] + ZoomFactor [2.959848934448341] + Offset [-123.75340862692485, -116.18591781381241] + SceneRectInView [-123.75340862692485, -116.18591781381241, 733.4833797538497, 401.37183562762482] + } + Object { + $ObjectID 21 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "4504" + Extents [2171.0, 1188.0] + ZoomFactor [1.2045690550363448] + Offset [-226.1716864224137, -519.62241379310342] + SceneRectInView [-226.1716864224137, -519.62241379310342, 1802.3043103448274, 986.24482758620684] + } + Object { + $ObjectID 22 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "3241" + Extents [2171.0, 1188.0] + ZoomFactor [1.5612382234185733] + Offset [-827.23464439655174, -71.967241379310337] + SceneRectInView [-827.23464439655174, -71.967241379310337, 1390.5629310344827, 760.93448275862067] + } + Object { + $ObjectID 23 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "4937" + Extents [2171.0, 1188.0] + ZoomFactor [1.0] + Offset [-327.9765625, -403.5] + SceneRectInView [-327.9765625, -403.5, 2171.0, 1188.0] + } + Object { + $ObjectID 24 + IsActive [0] + IsTabbed [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "4104" + Extents [2171.0, 1188.0] + ZoomFactor [3.0933333333333333] + Offset [-128.63423482247225, -154.52586206896552] + SceneRectInView [-128.63423482247225, -154.52586206896552, 701.83189655172418, 384.05172413793105] + } + Object { + $ObjectID 25 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -493,7 +636,7 @@ Model { SceneRectInView [-7.0625, -38.25, 814.125, 445.5] } Object { - $ObjectID 13 + $ObjectID 26 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -504,7 +647,7 @@ Model { SceneRectInView [-793.97389720558533, -290.08334454895737, 1059.8648857917149, 579.97212543554] } Object { - $ObjectID 14 + $ObjectID 27 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -515,18 +658,7 @@ Model { SceneRectInView [82.52421875, 140.1, 217.1, 118.8] } Object { - $ObjectID 15 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "4836" - Extents [2171.0, 1188.0] - ZoomFactor [1.7391304347826086] - Offset [50.564062499999977, -29.050000000000011] - SceneRectInView [50.564062499999977, -29.050000000000011, 1248.325, 683.1] - } - Object { - $ObjectID 16 + $ObjectID 28 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -537,7 +669,7 @@ Model { SceneRectInView [869.696261682243, 445.47196261682245, 405.79439252336454, 222.05607476635515] } Object { - $ObjectID 17 + $ObjectID 29 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -548,7 +680,7 @@ Model { SceneRectInView [435.01764465702286, -184.30046955202982, 1484.9803356859543, 812.60093910405965] } Object { - $ObjectID 18 + $ObjectID 30 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -559,7 +691,7 @@ Model { SceneRectInView [869.696261682243, 445.47196261682245, 405.79439252336454, 222.05607476635515] } Object { - $ObjectID 19 + $ObjectID 31 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -570,18 +702,7 @@ Model { SceneRectInView [-736.65534376844744, 2332.9648668093268, 1240.5714285714287, 678.85714285714289] } Object { - $ObjectID 20 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "4553" - Extents [2171.0, 1188.0] - ZoomFactor [2.959848934448341] - Offset [-123.75340862692485, -116.18591781381241] - SceneRectInView [-123.75340862692485, -116.18591781381241, 733.4833797538497, 401.37183562762482] - } - Object { - $ObjectID 21 + $ObjectID 32 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -592,7 +713,7 @@ Model { SceneRectInView [-608.35758121641425, -114.33481638525888, 1528.7515828078519, 836.55314618872774] } Object { - $ObjectID 22 + $ObjectID 33 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -603,7 +724,7 @@ Model { SceneRectInView [-48.06941549217828, -144.92583198051949, 845.83414348435656, 462.851663961039] } Object { - $ObjectID 23 + $ObjectID 34 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -614,7 +735,7 @@ Model { SceneRectInView [-112.83168536009441, -373.76948051948051, 901.91337072018882, 493.538961038961] } Object { - $ObjectID 24 + $ObjectID 35 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -625,7 +746,7 @@ Model { SceneRectInView [-33.73965992647058, -45.831932773109244, 364.8739495798319, 199.66386554621849] } Object { - $ObjectID 25 + $ObjectID 36 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -636,7 +757,7 @@ Model { SceneRectInView [435.01764465702286, -184.30046955202982, 1484.9803356859543, 812.60093910405965] } Object { - $ObjectID 26 + $ObjectID 37 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -647,7 +768,7 @@ Model { SceneRectInView [12.942137190853941, -10.749679188054131, 319.11572561829212, 174.62435837610826] } Object { - $ObjectID 27 + $ObjectID 38 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -658,7 +779,7 @@ Model { SceneRectInView [-310.81869612068976, -180.61083743842369, 1069.4581280788179, 585.22167487684737] } Object { - $ObjectID 28 + $ObjectID 39 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -669,7 +790,7 @@ Model { SceneRectInView [-326.36442414255714, -208.23320111992533, 748.27572328511428, 409.46640223985065] } Object { - $ObjectID 29 + $ObjectID 40 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -680,7 +801,7 @@ Model { SceneRectInView [12.87372526868586, 135.34665821934539, 468.38536196262828, 256.30668356130923] } Object { - $ObjectID 30 + $ObjectID 41 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -691,7 +812,7 @@ Model { SceneRectInView [-158.02631578947376, -70.1842105263158, 571.31578947368428, 312.63157894736844] } Object { - $ObjectID 31 + $ObjectID 42 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -702,18 +823,7 @@ Model { SceneRectInView [-158.02631578947376, -70.1842105263158, 571.31578947368428, 312.63157894736844] } Object { - $ObjectID 32 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "4913" - Extents [2171.0, 1188.0] - ZoomFactor [3.2951942101426641] - Offset [80.154339026122614, 154.55463376836479] - SceneRectInView [80.154339026122614, 154.55463376836479, 658.838253999605, 360.52503258937384] - } - Object { - $ObjectID 33 + $ObjectID 43 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -724,7 +834,7 @@ Model { SceneRectInView [569.47947453590621, 441.73077216658527, 412.15823842818759, 225.53845566682949] } Object { - $ObjectID 34 + $ObjectID 44 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -735,7 +845,7 @@ Model { SceneRectInView [256.79612068965514, -277.26034482758621, 660.65775862068972, 361.52068965517242] } Object { - $ObjectID 35 + $ObjectID 45 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -746,7 +856,7 @@ Model { SceneRectInView [-706.68143309105676, -478.27262581168833, 1380.7144286821135, 755.54525162337666] } Object { - $ObjectID 36 + $ObjectID 46 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -757,7 +867,7 @@ Model { SceneRectInView [96.146189545676577, -4.1074743527112787, 703.95762090864685, 385.21494870542256] } Object { - $ObjectID 37 + $ObjectID 47 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -768,7 +878,7 @@ Model { SceneRectInView [-211.69612560424537, 252.15114629325387, 605.0, 331.06402579456471] } Object { - $ObjectID 38 + $ObjectID 48 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -779,7 +889,7 @@ Model { SceneRectInView [-1178.7732548019947, -284.77258542366184, 1369.7496346039895, 749.54517084732367] } Object { - $ObjectID 39 + $ObjectID 49 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -790,7 +900,7 @@ Model { SceneRectInView [-33.739659926470551, -42.831932773109244, 364.8739495798319, 199.66386554621849] } Object { - $ObjectID 40 + $ObjectID 50 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -801,7 +911,7 @@ Model { SceneRectInView [-33.739659926470551, -42.831932773109244, 364.8739495798319, 199.66386554621849] } Object { - $ObjectID 41 + $ObjectID 51 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -812,7 +922,7 @@ Model { SceneRectInView [42.960073495100346, -92.586881707886135, 510.17360300979931, 279.17376341577227] } Object { - $ObjectID 42 + $ObjectID 52 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -823,7 +933,7 @@ Model { SceneRectInView [-39.932291666666657, -42.75, 452.29166666666669, 247.5] } Object { - $ObjectID 43 + $ObjectID 53 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -834,7 +944,7 @@ Model { SceneRectInView [-256.01528596010269, -463.59387395006996, 1774.7883844202054, 971.18774790013993] } Object { - $ObjectID 44 + $ObjectID 54 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -845,7 +955,7 @@ Model { SceneRectInView [1438.5531788793103, 818.97931034482758, 778.56551724137933, 426.04137931034484] } Object { - $ObjectID 45 + $ObjectID 55 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -856,7 +966,7 @@ Model { SceneRectInView [917.234213362069, -427.28793103448277, 975.078448275862, 533.57586206896553] } Object { - $ObjectID 46 + $ObjectID 56 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -867,7 +977,7 @@ Model { SceneRectInView [-544.74878771551721, -352.2155172413793, 963.84913793103453, 527.43103448275861] } Object { - $ObjectID 47 + $ObjectID 57 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -878,18 +988,7 @@ Model { SceneRectInView [374.06441393490434, 302.07339302379842, 1297.2149221301913, 709.85321395240317] } Object { - $ObjectID 48 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "2355" - Extents [2171.0, 1188.0] - ZoomFactor [1.0730804810360777] - Offset [732.82082435344819, -198.046551724138] - SceneRectInView [732.82082435344819, -198.046551724138, 2023.1474137931036, 1107.093103448276] - } - Object { - $ObjectID 49 + $ObjectID 58 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -900,7 +999,7 @@ Model { SceneRectInView [-132.82012310290415, -16.387940803946407, 723.66666666666663, 396.0] } Object { - $ObjectID 50 + $ObjectID 59 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -911,7 +1010,7 @@ Model { SceneRectInView [-165.54878048780483, -115.96864111498257, 756.44599303135885, 413.93728222996515] } Object { - $ObjectID 51 + $ObjectID 60 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -922,7 +1021,7 @@ Model { SceneRectInView [-221.49999999999994, -146.6, 868.4, 475.2] } Object { - $ObjectID 52 + $ObjectID 61 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -933,7 +1032,7 @@ Model { SceneRectInView [-173.20175438596488, -108.42105263157893, 761.75438596491222, 416.84210526315786] } Object { - $ObjectID 53 + $ObjectID 62 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -944,7 +1043,7 @@ Model { SceneRectInView [-173.20175438596488, -108.42105263157893, 761.75438596491222, 416.84210526315786] } Object { - $ObjectID 54 + $ObjectID 63 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -955,7 +1054,7 @@ Model { SceneRectInView [-164.07534246575341, -91.924657534246592, 743.49315068493149, 406.84931506849318] } Object { - $ObjectID 55 + $ObjectID 64 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -966,7 +1065,7 @@ Model { SceneRectInView [-173.20175438596488, -115.42105263157893, 761.75438596491222, 416.84210526315786] } Object { - $ObjectID 56 + $ObjectID 65 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -977,7 +1076,7 @@ Model { SceneRectInView [-165.70175438596488, -113.92105263157893, 761.75438596491222, 416.84210526315786] } Object { - $ObjectID 57 + $ObjectID 66 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -988,7 +1087,7 @@ Model { SceneRectInView [-165.70175438596488, -113.92105263157893, 761.75438596491222, 416.84210526315786] } Object { - $ObjectID 58 + $ObjectID 67 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -999,7 +1098,7 @@ Model { SceneRectInView [-33.739659926470551, -42.831932773109244, 364.8739495798319, 199.66386554621849] } Object { - $ObjectID 59 + $ObjectID 68 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1010,7 +1109,7 @@ Model { SceneRectInView [-33.739659926470551, -42.831932773109244, 364.8739495798319, 199.66386554621849] } Object { - $ObjectID 60 + $ObjectID 69 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1021,7 +1120,7 @@ Model { SceneRectInView [-43.454503676470551, -32.331932773109244, 364.8739495798319, 199.66386554621849] } Object { - $ObjectID 61 + $ObjectID 70 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1032,7 +1131,7 @@ Model { SceneRectInView [-116.23828124999997, -57.0, 361.83333333333331, 198.0] } Object { - $ObjectID 62 + $ObjectID 71 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1043,7 +1142,7 @@ Model { SceneRectInView [-25.672433035714278, -45.831932773109244, 348.7394957983193, 199.66386554621849] } Object { - $ObjectID 63 + $ObjectID 72 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1054,7 +1153,7 @@ Model { SceneRectInView [-29.932291666666686, -42.75, 432.29166666666669, 247.5] } Object { - $ObjectID 64 + $ObjectID 73 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1065,7 +1164,7 @@ Model { SceneRectInView [-25.756466649159648, -45.831932773109244, 348.7394957983193, 199.66386554621849] } Object { - $ObjectID 65 + $ObjectID 74 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1076,7 +1175,7 @@ Model { SceneRectInView [-191.40632054176072, -117.29872084273889, 691.66666666666663, 396.0] } Object { - $ObjectID 66 + $ObjectID 75 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1087,7 +1186,7 @@ Model { SceneRectInView [-92.7656132430399, -55.8837471783296, 468.39729119638827, 268.17155756207677] } Object { - $ObjectID 67 + $ObjectID 76 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1098,7 +1197,7 @@ Model { SceneRectInView [-25.672433035714278, -45.831932773109244, 348.7394957983193, 199.66386554621849] } Object { - $ObjectID 68 + $ObjectID 77 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1109,7 +1208,7 @@ Model { SceneRectInView [-99.198645598194133, -48.972911963882623, 468.39729119638827, 268.17155756207677] } Object { - $ObjectID 69 + $ObjectID 78 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1120,7 +1219,7 @@ Model { SceneRectInView [-80.667161130818016, -31.015048908954071, 468.39729119638827, 268.17155756207677] } Object { - $ObjectID 70 + $ObjectID 79 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1131,7 +1230,7 @@ Model { SceneRectInView [13.879095336481726, -85.310064935064929, 502.36680932703655, 287.62012987012986] } Object { - $ObjectID 71 + $ObjectID 80 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1142,7 +1241,7 @@ Model { SceneRectInView [13.972911622276058, -85.325665859564168, 502.42130750605327, 287.65133171912834] } Object { - $ObjectID 72 + $ObjectID 81 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1153,7 +1252,7 @@ Model { SceneRectInView [-25.672433035714278, -45.831932773109244, 348.7394957983193, 199.66386554621849] } Object { - $ObjectID 73 + $ObjectID 82 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1164,7 +1263,7 @@ Model { SceneRectInView [-25.672433035714278, -45.831932773109244, 348.7394957983193, 199.66386554621849] } Object { - $ObjectID 74 + $ObjectID 83 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1175,7 +1274,7 @@ Model { SceneRectInView [-64.168329397874857, -71.912514757969319, 518.75, 297.0] } Object { - $ObjectID 75 + $ObjectID 84 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1186,7 +1285,7 @@ Model { SceneRectInView [-25.672433035714278, -45.831932773109244, 348.7394957983193, 199.66386554621849] } Object { - $ObjectID 76 + $ObjectID 85 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1197,7 +1296,7 @@ Model { SceneRectInView [-25.672433035714278, -45.831932773109244, 348.7394957983193, 199.66386554621849] } Object { - $ObjectID 77 + $ObjectID 86 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1208,7 +1307,7 @@ Model { SceneRectInView [-8.0130751303127283, -114.03393582177664, 473.82302526062546, 223.19657177225341] } Object { - $ObjectID 78 + $ObjectID 87 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1219,7 +1318,7 @@ Model { SceneRectInView [16.019427876904615, -398.80851543704892, 1030.9142692461908, 485.61703087409785] } Object { - $ObjectID 79 + $ObjectID 88 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1230,7 +1329,7 @@ Model { SceneRectInView [-105.54956270048115, -242.68495036561927, 864.60693790096229, 407.2771777265437] } Object { - $ObjectID 80 + $ObjectID 89 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1241,7 +1340,7 @@ Model { SceneRectInView [-396.83333333333337, -304.36666666666662, 1148.0, 792.0] } Object { - $ObjectID 81 + $ObjectID 90 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1252,7 +1351,7 @@ Model { SceneRectInView [34.9092200413223, -92.857244318181813, 438.7831224173554, 302.71448863636363] } Object { - $ObjectID 82 + $ObjectID 91 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1263,29 +1362,7 @@ Model { SceneRectInView [-183.3666666666665, -165.10000000000005, 867.6, 475.2] } Object { - $ObjectID 83 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "4917" - Extents [2169.0, 1188.0] - ZoomFactor [4.3275706438106187] - Offset [10.41989407940855, -23.235071395084702] - SceneRectInView [10.41989407940855, -23.235071395084702, 501.20498970990775, 274.51891552575859] - } - Object { - $ObjectID 84 - IsActive [0] - IsTabbed [0] - ViewObjType "SimulinkSubsys" - LoadSaveID "4925" - Extents [1815.0, 821.0] - ZoomFactor [3.8000000393627378] - Offset [-68.684210488152473, -33.394738158739756] - SceneRectInView [-68.684210488152473, -33.394738158739756, 477.63157399976672, 216.05262934094131] - } - Object { - $ObjectID 85 + $ObjectID 92 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1296,7 +1373,7 @@ Model { SceneRectInView [0.0, 0.0, 0.0, 0.0] } Object { - $ObjectID 86 + $ObjectID 93 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1307,7 +1384,7 @@ Model { SceneRectInView [0.0, 0.0, 0.0, 0.0] } Object { - $ObjectID 87 + $ObjectID 94 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1318,7 +1395,7 @@ Model { SceneRectInView [0.0, 0.0, 0.0, 0.0] } Object { - $ObjectID 88 + $ObjectID 95 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1329,7 +1406,7 @@ Model { SceneRectInView [0.0, 0.0, 0.0, 0.0] } Object { - $ObjectID 89 + $ObjectID 96 IsActive [0] IsTabbed [0] ViewObjType "SimulinkSubsys" @@ -1345,7 +1422,7 @@ Model { Type "Simulink.DockComponentInfo" Dimension 3 Object { - $ObjectID 90 + $ObjectID 97 Type "Simulink:Editor:ReferencedFiles" ID "Referenced Files" Visible [0] @@ -1358,27 +1435,27 @@ Model { Minimized "Unset" } Object { - $ObjectID 91 - Type "GLUE2:SpreadSheet" - ID "ModelData" + $ObjectID 98 + Type "GLUE2:PropertyInspector" + ID "Property Inspector" Visible [0] - CreateCallback "DataView.createSpreadSheetComponent" + CreateCallback "" UserData "" Floating [0] - DockPosition "Bottom" + DockPosition "Right" Width [640] Height [480] Minimized "Unset" } Object { - $ObjectID 92 - Type "GLUE2:PropertyInspector" - ID "Property Inspector" + $ObjectID 99 + Type "GLUE2:SpreadSheet" + ID "ModelData" Visible [0] - CreateCallback "" + CreateCallback "DataView.createSpreadSheetComponent" UserData "" Floating [0] - DockPosition "Right" + DockPosition "Bottom" Width [640] Height [480] Minimized "Unset" @@ -1411,9 +1488,9 @@ Model { ModifiedByFormat "%" LastModifiedBy "nunoguedelha" ModifiedDateFormat "%" - LastModifiedDate "Wed May 19 03:01:34 2021" - RTWModifiedTimeStamp 543293907 - ModelVersionFormat "%" + LastModifiedDate "Thu May 20 06:03:16 2021" + RTWModifiedTimeStamp 543391391 + ModelVersionFormat "%" SampleTimeColors on SampleTimeAnnotations on LibraryLinkDisplay "disabled" @@ -1470,7 +1547,7 @@ Model { TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" - $ObjectID 93 + $ObjectID 100 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "torqueControlBalancingWithSimu" signals_ [] @@ -1490,7 +1567,7 @@ Model { } Object { $PropName "InstrumentedSignals" - $ObjectID 94 + $ObjectID 101 $ClassName "Simulink.HMI.InstrumentedSignals" Persistence [] } @@ -1524,7 +1601,7 @@ Model { Type "Handle" Dimension 1 Simulink.ConfigSet { - $ObjectID 95 + $ObjectID 102 Version "20.1.0" DisabledProps [] Description "" @@ -1532,7 +1609,7 @@ Model { Type "Handle" Dimension 9 Simulink.SolverCC { - $ObjectID 96 + $ObjectID 103 Version "20.1.0" DisabledProps [] Description "" @@ -1574,7 +1651,7 @@ Model { ODENIntegrationMethod "ode3" } Simulink.DataIOCC { - $ObjectID 97 + $ObjectID 104 Version "20.1.0" DisabledProps [] Description "" @@ -1616,7 +1693,7 @@ Model { LoggingIntervals "[-inf, inf]" } Simulink.OptimizationCC { - $ObjectID 98 + $ObjectID 105 Version "20.1.0" Array { Type "Cell" @@ -1690,7 +1767,7 @@ Model { EfficientTunableParamExpr off } Simulink.DebuggingCC { - $ObjectID 99 + $ObjectID 106 Version "20.1.0" Array { Type "Cell" @@ -1813,7 +1890,7 @@ Model { VariantConditionMismatch "none" } Simulink.HardwareCC { - $ObjectID 100 + $ObjectID 107 Version "20.1.0" DisabledProps [] Description "" @@ -1863,7 +1940,7 @@ Model { HardwareBoardFeatureSet "EmbeddedCoderHSP" } Simulink.ModelReferenceCC { - $ObjectID 101 + $ObjectID 108 Version "20.1.0" DisabledProps [] Description "" @@ -1883,7 +1960,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 102 + $ObjectID 109 Version "20.1.0" DisabledProps [] Description "" @@ -1927,7 +2004,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 103 + $ObjectID 110 Version "20.1.0" Array { Type "Cell" @@ -2033,7 +2110,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 104 + $ObjectID 111 Version "20.1.0" Array { Type "Cell" @@ -2123,7 +2200,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 105 + $ObjectID 112 Version "20.1.0" Array { Type "Cell" @@ -2153,7 +2230,7 @@ Model { Type "Handle" Dimension 1 Simulink.CPPComponent { - $ObjectID 106 + $ObjectID 113 Version "20.1.0" Array { Type "Cell" @@ -2264,7 +2341,7 @@ Model { } } SlCovCC.ConfigComp { - $ObjectID 107 + $ObjectID 114 Version "20.1.0" DisabledProps [] Description "Simulink Coverage Configuration Component" @@ -2313,11 +2390,11 @@ Model { } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" - $ObjectID 95 + $ObjectID 102 } Object { $PropName "DataTransfer" - $ObjectID 108 + $ObjectID 115 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" @@ -2466,6 +2543,11 @@ Model { Block { BlockType Ground } + Block { + BlockType InitialCondition + Value "1" + SampleTime "-1" + } Block { BlockType Inport Port "1" @@ -2699,9 +2781,9 @@ Model { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "244" + ZoomFactor "250" ReportName "simulink-default.rpt" - SIDHighWatermark "5035" + SIDHighWatermark "5071" SimulinkSubDomain "Simulink" Block { BlockType BusCreator @@ -2807,7 +2889,7 @@ Model { Value "zeros(3,1)" Object { $PropName "MaskObject" - $ObjectID 109 + $ObjectID 116 $ClassName "Simulink.Mask" Type "Fixed neck position" Description "we assume that the neck position is fixed (\"lumped\" head and torso) in the [0 0 0] position." @@ -2816,12 +2898,12 @@ Model { RunInitForIconRedraw "off" Object { $PropName "DialogControls" - $ObjectID 110 + $ObjectID 117 $ClassName "Simulink.dialog.Group" Prompt "%" Object { $PropName "DialogControls" - $ObjectID 111 + $ObjectID 118 $ClassName "Simulink.dialog.Text" Prompt "%" Name "DescTextVar" @@ -7196,7 +7278,7 @@ Model { RequestExecContextInheritance off Object { $PropName "MaskObject" - $ObjectID 112 + $ObjectID 119 $ClassName "Simulink.Mask" Display "disp('VISUALIZER')" } @@ -18056,12 +18138,13 @@ Model { Ports [1] Position [305, 211, 430, 239] ZOrder 966 - BackgroundColor "red" + ForegroundColor "red" + BackgroundColor "yellow" ShowName off RequestExecContextInheritance off Object { $PropName "MaskObject" - $ObjectID 113 + $ObjectID 120 $ClassName "Simulink.Mask" Display "disp('EMERGENCY STOP')" RunInitForIconRedraw "off" @@ -18070,7 +18153,7 @@ Model { Name "emergency stop: joint limits" Location [-75, -1417, 2485, 0] SystemRect [0.000000, 0.000000, 0.000000, 0.000000] - Open off + Open on PortBlocksUseCompactNotation off SetExecutionDomain off ExecutionDomainType "Deduce" @@ -18084,7 +18167,7 @@ Model { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "330" + ZoomFactor "424" SimulinkSubDomain "Simulink" Block { BlockType Inport @@ -18101,21 +18184,25 @@ Model { ZOrder 553 BlockRotation 270 BlockMirror on + ForegroundColor "red" + BackgroundColor "yellow" NameLocation "left" ShowName off - Value "Config.EMERGENCY_STOP_WITH_JOINTS_LIMITS" + Value "ismember(Config.EVENT_WITH_JOINTS_LIMITS,[EventWithJointLimits.Warning,EventWithJointLimits.Emerg" + "encyStop])" } Block { BlockType Constant - Name "ON_GAZEBO\n2" - SID "4916" - Position [224, 295, 496, 315] - ZOrder 555 + Name "ON_GAZEBO\n3" + SID "5059" + Position [232, 290, 488, 310] + ZOrder 563 BlockRotation 270 BlockMirror on NameLocation "left" ShowName off - Value "Config.EMERGENCY_STOP_WITH_ENCODER_SPIKES" + Value "ismember(Config.EVENT_WITH_ENCODER_SPIKES,[EventWithEncoderSpikes.Warning,EventWithEncoderSpikes." + "EmergencyStop])" } Block { BlockType SubSystem @@ -18143,7 +18230,7 @@ Model { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "433" + ZoomFactor "482" SimulinkSubDomain "Simulink" Block { BlockType Inport @@ -18162,14 +18249,6 @@ Model { ShowName off HideAutomaticName off } - Block { - BlockType Assertion - Name "Assertion" - SID "4920" - Position [360, 37, 420, 83] - ZOrder 207 - HideAutomaticName off - } Block { BlockType Reference Name "GetLimits" @@ -18358,50 +18437,220 @@ Model { DstBlock "res_check_range" DstPort 1 } - Line { - ZOrder 79 - SrcBlock " Demux " - SrcPort 1 - DstBlock " Terminator " - DstPort 1 + Line { + ZOrder 79 + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + ZOrder 80 + SrcBlock " SFunction " + SrcPort 1 + Points [20, 0] + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType ToWorkspace + Name "To Workspace" + SID "4923" + Ports [1] + Position [360, 117, 435, 143] + ZOrder 556 + ShowName off + HideAutomaticName off + VariableName "res_check_range" + MaxDataPoints "inf" + SaveFormat "Structure With Time" + FixptAsFi on + SampleTime "Config.tStep" + } + Block { + BlockType UnitDelay + Name "Unit Delay" + SID "4934" + Position [320, 48, 340, 72] + ZOrder 559 + ShowName off + HideAutomaticName off + InitialCondition "1" + SampleTime "Config.tStep" + HasFrameUpgradeWarning on + } + Block { + BlockType SubSystem + Name "Variant Subsystem" + SID "5063" + Ports [1] + Position [360, 39, 460, 81] + ZOrder 567 + ForegroundColor "green" + RequestExecContextInheritance off + Variant on + AllowZeroVariantControls on + ContentPreviewEnabled on + System { + Name "Variant Subsystem" + Location [-75, -1417, 2485, 0] + SystemRect [0.000000, 0.000000, 0.000000, 0.000000] + Open off + PortBlocksUseCompactNotation off + SetExecutionDomain off + ExecutionDomainType "Deduce" + ModelBrowserVisibility on + 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 "300" + SimulinkSubDomain "Simulink" + Block { + BlockType Inport + Name "In1" + SID "5064" + Position [55, 138, 85, 152] + ZOrder -1 + } + Block { + BlockType SubSystem + Name "Emergency STOP" + SID "5065" + Ports [1] + Position [195, 177, 300, 223] + ZOrder 2 + RequestExecContextInheritance off + VariantControl "Config.EVENT_WITH_JOINTS_LIMITS == EventWithJointLimits.EmergencyStop" + System { + Name "Emergency STOP" + Location [-75, -1417, 2485, 0] + SystemRect [0.000000, 0.000000, 0.000000, 0.000000] + Open off + PortBlocksUseCompactNotation off + SetExecutionDomain off + ExecutionDomainType "Deduce" + ModelBrowserVisibility on + 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 "300" + SimulinkSubDomain "Simulink" + Block { + BlockType Inport + Name "In1" + SID "5066" + Position [50, 52, 80, 68] + ZOrder 1 + } + Block { + BlockType Assertion + Name "Assertion" + SID "5067" + Position [135, 37, 200, 83] + ZOrder 557 + HideAutomaticName off + } + Line { + ZOrder 1 + SrcBlock "In1" + SrcPort 1 + DstBlock "Assertion" + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "Warning" + SID "5068" + Ports [1] + Position [195, 72, 300, 118] + ZOrder 1 + RequestExecContextInheritance off + VariantControl "Config.EVENT_WITH_JOINTS_LIMITS == EventWithJointLimits.Warning" + System { + Name "Warning" + Location [-75, -1417, 2485, 0] + SystemRect [0.000000, 0.000000, 0.000000, 0.000000] + Open off + PortBlocksUseCompactNotation off + SetExecutionDomain off + ExecutionDomainType "Deduce" + ModelBrowserVisibility on + 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" + SimulinkSubDomain "Simulink" + Block { + BlockType Inport + Name "In1" + SID "5069" + Position [55, 52, 85, 68] + ZOrder 1 + } + Block { + BlockType Assertion + Name "Assertion" + SID "5070" + Position [140, 37, 205, 83] + ZOrder 557 + HideAutomaticName off + StopWhenAssertionFail off } Line { - ZOrder 80 - SrcBlock " SFunction " + ZOrder 1 + SrcBlock "In1" SrcPort 1 - Points [20, 0] - DstBlock " Demux " + DstBlock "Assertion" DstPort 1 } + } + } + Annotation { + SID "5071" + Name "\n<" + "html>\n<" + "p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent" + ":0px;\">1) Add Subsystem or Model blocks" + " as valid variant choices.

\n

2) You cannot connect blocks at" + " this level. At simulation, connectivity is automatically

\n

determined, based on the active variant and port name matching.

" + Tag "VSSAddChoiceText" + Position [71, 8, 449, 40] + InternalMargins [0, 0, 0, 0] + HorizontalAlignment "left" + Interpreter "rich" + ZOrder -1 + } } } - Block { - BlockType ToWorkspace - Name "To Workspace" - SID "4923" - Ports [1] - Position [350, 117, 425, 143] - ZOrder 556 - ShowName off - HideAutomaticName off - VariableName "res_check_range" - MaxDataPoints "inf" - SaveFormat "Structure With Time" - FixptAsFi on - SampleTime "Config.tStep" - } - Block { - BlockType UnitDelay - Name "Unit Delay" - SID "4934" - Position [320, 48, 340, 72] - ZOrder 559 - ShowName off - HideAutomaticName off - InitialCondition "1" - SampleTime "Config.tStep" - HasFrameUpgradeWarning on - } Block { BlockType Constant Name "index1" @@ -18441,10 +18690,10 @@ Model { DstPort 1 } Line { - ZOrder 7 + ZOrder 15 SrcBlock "Unit Delay" SrcPort 1 - DstBlock "Assertion" + DstBlock "Variant Subsystem" DstPort 1 } Line { @@ -18465,14 +18714,14 @@ Model { } Block { BlockType SubSystem - Name "STOP IF THERE ARE SPIKES IN THE ENCODERS" + Name "WARNING OR STOP IF THERE ARE SPIKES IN THE ENCODERS" SID "4925" Ports [1, 0, 1] Position [285, 339, 440, 371] ZOrder 556 RequestExecContextInheritance off System { - Name "STOP IF THERE ARE SPIKES IN THE ENCODERS" + Name "WARNING OR STOP IF THERE ARE SPIKES IN THE ENCODERS" Location [-75, -1417, 2485, 0] SystemRect [0.000000, 0.000000, 0.000000, 0.000000] Open off @@ -18489,38 +18738,36 @@ Model { TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "380" + ZoomFactor "430" SimulinkSubDomain "Simulink" Block { BlockType Inport Name "jointPos" SID "4926" - Position [-10, 53, 20, 67] + Position [-65, 88, -35, 102] ZOrder 552 } Block { BlockType EnablePort Name "Enable" - SID "4927" + SID "5045" Ports [] - Position [172, -15, 192, 5] - ZOrder 553 - ShowName off - HideAutomaticName off + Position [165, -10, 185, 10] + ZOrder 565 } Block { - BlockType Assertion - Name "Assertion" - SID "4928" - Position [335, 37, 400, 83] - ZOrder 556 - HideAutomaticName off + BlockType InitialCondition + Name "IC1" + SID "5039" + Position [30, 80, 65, 110] + ZOrder 562 + Value "0" } Block { BlockType SubSystem Name "MATLAB Function" SID "4929" - Ports [2, 2] + Ports [3, 2] Position [105, 26, 260, 164] ZOrder 205 ShowName off @@ -18549,22 +18796,30 @@ Model { TiledPageScale 1 ShowPageBoundaries off ZoomFactor "100" - SIDHighWatermark "3816" + SIDHighWatermark "3817" SimulinkSubDomain "Simulink" Block { BlockType Inport + Name "u_prev" + SID "4929::3817" + Position [20, 101, 40, 119] + ZOrder 167 + } + Block { + BlockType Inport Name "u" SID "4929::1" - Position [20, 101, 40, 119] + Position [20, 136, 40, 154] ZOrder -3 + Port "2" } Block { BlockType Inport Name "delta_u_max" SID "4929::18" - Position [20, 136, 40, 154] + Position [20, 171, 40, 189] ZOrder -1 - Port "2" + Port "3" } Block { BlockType Demux @@ -18580,11 +18835,11 @@ Model { Name " SFunction " SID "4929::3814" Tag "Stateflow S-Function 14" - Ports [2, 3] + Ports [3, 3] Position [180, 100, 230, 180] ZOrder 164 FunctionName "sf_sfun" - PortCounts "[2 3]" + PortCounts "[3 3]" SFunctionDeploymentMode off EnableBusSupport on SFcnIsStateOwnerBlock off @@ -18621,23 +18876,29 @@ Model { Port "2" } Line { - ZOrder 55 - SrcBlock "u" + ZOrder 68 + SrcBlock "u_prev" SrcPort 1 - Points [120, 0] DstBlock " SFunction " DstPort 1 } Line { - ZOrder 56 - SrcBlock "delta_u_max" + ZOrder 69 + SrcBlock "u" SrcPort 1 DstBlock " SFunction " DstPort 2 } Line { + ZOrder 70 + SrcBlock "delta_u_max" + SrcPort 1 + DstBlock " SFunction " + DstPort 3 + } + Line { Name "noSpikes" - ZOrder 57 + ZOrder 71 Labels [0, 0] SrcBlock " SFunction " SrcPort 2 @@ -18646,7 +18907,7 @@ Model { } Line { Name "res_check_spikes" - ZOrder 58 + ZOrder 72 Labels [0, 0] SrcBlock " SFunction " SrcPort 3 @@ -18654,14 +18915,14 @@ Model { DstPort 1 } Line { - ZOrder 59 + ZOrder 73 SrcBlock " Demux " SrcPort 1 DstBlock " Terminator " DstPort 1 } Line { - ZOrder 60 + ZOrder 74 SrcBlock " SFunction " SrcPort 1 DstBlock " Demux " @@ -18696,11 +18957,192 @@ Model { SampleTime "Config.tStep" HasFrameUpgradeWarning on } + Block { + BlockType UnitDelay + Name "Unit Delay1" + SID "5037" + Position [45, 38, 65, 62] + ZOrder 560 + ShowName off + HideAutomaticName off + SampleTime "Config.tStep" + HasFrameUpgradeWarning on + } + Block { + BlockType SubSystem + Name "Variant Subsystem" + SID "5047" + Ports [1] + Position [330, 39, 430, 81] + ZOrder 566 + ForegroundColor "green" + RequestExecContextInheritance off + Variant on + AllowZeroVariantControls on + ContentPreviewEnabled on + System { + Name "Variant Subsystem" + Location [-75, -1417, 2485, 0] + SystemRect [0.000000, 0.000000, 0.000000, 0.000000] + Open off + PortBlocksUseCompactNotation off + SetExecutionDomain off + ExecutionDomainType "Deduce" + ModelBrowserVisibility on + 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 "300" + SimulinkSubDomain "Simulink" + Block { + BlockType Inport + Name "In1" + SID "5048" + Position [55, 138, 85, 152] + ZOrder -1 + } + Block { + BlockType SubSystem + Name "Emergency STOP" + SID "5052" + Ports [1] + Position [195, 177, 300, 223] + ZOrder 2 + RequestExecContextInheritance off + VariantControl "Config.EVENT_WITH_ENCODER_SPIKES == EventWithEncoderSpikes.EmergencyStop" + System { + Name "Emergency STOP" + Location [-75, -1417, 2485, 0] + SystemRect [0.000000, 0.000000, 0.000000, 0.000000] + Open off + PortBlocksUseCompactNotation off + SetExecutionDomain off + ExecutionDomainType "Deduce" + ModelBrowserVisibility on + 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 "300" + SimulinkSubDomain "Simulink" + Block { + BlockType Inport + Name "In1" + SID "5053" + Position [50, 52, 80, 68] + ZOrder 1 + } + Block { + BlockType Assertion + Name "Assertion" + SID "5061" + Position [135, 37, 200, 83] + ZOrder 557 + HideAutomaticName off + } + Line { + ZOrder 1 + SrcBlock "In1" + SrcPort 1 + DstBlock "Assertion" + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "Warning" + SID "5049" + Ports [1] + Position [195, 72, 300, 118] + ZOrder 1 + RequestExecContextInheritance off + VariantControl "Config.EVENT_WITH_ENCODER_SPIKES == EventWithEncoderSpikes.Warning" + System { + Name "Warning" + Location [-75, -1417, 2485, 0] + SystemRect [0.000000, 0.000000, 0.000000, 0.000000] + Open on + PortBlocksUseCompactNotation off + SetExecutionDomain off + ExecutionDomainType "Deduce" + ModelBrowserVisibility on + 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" + SimulinkSubDomain "Simulink" + Block { + BlockType Inport + Name "In1" + SID "5050" + Position [55, 52, 85, 68] + ZOrder 1 + } + Block { + BlockType Assertion + Name "Assertion" + SID "4928" + Position [140, 37, 205, 83] + ZOrder 557 + HideAutomaticName off + StopWhenAssertionFail off + } + Line { + ZOrder 1 + SrcBlock "In1" + SrcPort 1 + DstBlock "Assertion" + DstPort 1 + } + } + } + Annotation { + SID "5056" + Name "\n<" + "html>\n<" + "p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent" + ":0px;\">1) Add Subsystem or Model blocks" + " as valid variant choices.

\n

2) You cannot connect blocks at" + " this level. At simulation, connectivity is automatically

\n

determined, based on the active variant and port name matching.

" + Tag "VSSAddChoiceText" + Position [71, 8, 449, 40] + InternalMargins [0, 0, 0, 0] + HorizontalAlignment "left" + Interpreter "rich" + ZOrder -1 + } + } + } Block { BlockType Constant Name "index1" SID "4931" - Position [-65, 121, 75, 139] + Position [-65, 131, 75, 149] ZOrder 554 ShowName off Value "Sat.maxJointsPositionDelta" @@ -18710,8 +19152,18 @@ Model { ZOrder 1 SrcBlock "jointPos" SrcPort 1 - DstBlock "MATLAB Function" - DstPort 1 + Points [15, 0] + Branch { + ZOrder 11 + Points [0, -45] + DstBlock "Unit Delay1" + DstPort 1 + } + Branch { + ZOrder 10 + DstBlock "IC1" + DstPort 1 + } } Line { ZOrder 6 @@ -18725,7 +19177,7 @@ Model { SrcBlock "index1" SrcPort 1 DstBlock "MATLAB Function" - DstPort 2 + DstPort 3 } Line { ZOrder 4 @@ -18735,10 +19187,24 @@ Model { DstPort 1 } Line { - ZOrder 7 + ZOrder 14 + SrcBlock "Unit Delay1" + SrcPort 1 + DstBlock "MATLAB Function" + DstPort 1 + } + Line { + ZOrder 15 + SrcBlock "IC1" + SrcPort 1 + DstBlock "MATLAB Function" + DstPort 2 + } + Line { + ZOrder 22 SrcBlock "Unit Delay" SrcPort 1 - DstBlock "Assertion" + DstBlock "Variant Subsystem" DstPort 1 } } @@ -18758,7 +19224,7 @@ Model { Branch { ZOrder 3 Points [0, 110] - DstBlock "STOP IF THERE ARE SPIKES IN THE ENCODERS" + DstBlock "WARNING OR STOP IF THERE ARE SPIKES IN THE ENCODERS" DstPort 1 } Branch { @@ -18768,10 +19234,10 @@ Model { } } Line { - ZOrder 5 - SrcBlock "ON_GAZEBO\n2" + ZOrder 13 + SrcBlock "ON_GAZEBO\n3" SrcPort 1 - DstBlock "STOP IF THERE ARE SPIKES IN THE ENCODERS" + DstBlock "WARNING OR STOP IF THERE ARE SPIKES IN THE ENCODERS" DstPort enable } } @@ -19922,7 +20388,7 @@ Stateflow { id 1 name "torqueControlBalancingWithSimu" sfVersion 80000036 - firstTarget 246 + firstTarget 247 } chart { id 2 @@ -22413,14 +22879,17 @@ Stateflow { chart { id 122 machine 1 - name "MOMENTUM BASED TORQUE CONTROL/emergency stop: joint limits/STOP IF THERE ARE SPIKES IN THE ENCODERS/MAT" - "LAB Function" + name "MOMENTUM BASED TORQUE CONTROL/emergency stop: joint limits/WARNING OR STOP IF THERE ARE SPIKES IN THE E" + "NCODERS/MATLAB Function" windowPosition [369.958 -65.92 200 534.4] viewLimits [0 156.75 0 153.75] screen [1 1 1366 768 1.25] treeNode [0 123 0 0] viewObj 122 - ssIdHighWaterMark 9 + visible 1 + subviewS { + } + ssIdHighWaterMark 10 decomposition CLUSTER_CHART type EML_CHART chartFileNumber 14 @@ -22430,8 +22899,8 @@ Stateflow { } supportVariableSizing 0 firstData 124 - firstTransition 129 - firstJunction 128 + firstTransition 130 + firstJunction 129 } state { id 123 @@ -22447,8 +22916,8 @@ Stateflow { decomposition CLUSTER_STATE eml { isEML 1 - script "function [noSpikes, res_check_spikes] = checkInputSpikesFCN(u, delta_u_max)\n\n [noSpikes, re" - "s_check_spikes] = wbc.checkInputSpikes(u, delta_u_max);\nend" + script "function [noSpikes, res_check_spikes] = checkInputSpikesFCN(u_prev, u, delta_u_max)\n\n [noSp" + "ikes, res_check_spikes] = wbc.checkInputSpikes(u_prev, u, delta_u_max);\nend" editorLayout "100 M4x1[10 5 700 500]" fimathString "fimath(...\n'RoundMode', 'floor',...\n'OverflowMode', 'wrap',...\n'ProductMode', 'KeepLSB', " "'ProductWordLength', 32,...\n'SumMode', 'KeepLSB', 'SumWordLength', 32,...\n'CastBeforeSum', true)" @@ -22457,7 +22926,32 @@ Stateflow { } } data { - id 124 + id 124 + ssIdNumber 10 + name "u_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 + unit { + name "inherit" + } + } + dataType "Inherit: Same as Simulink" + linkNode [122 0 125] + } + data { + id 125 ssIdNumber 6 name "u" scope INPUT_DATA @@ -22476,10 +22970,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [122 0 125] + linkNode [122 124 126] } data { - id 125 + id 126 ssIdNumber 4 name "delta_u_max" scope INPUT_DATA @@ -22501,10 +22995,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [122 124 126] + linkNode [122 125 127] } data { - id 126 + id 127 ssIdNumber 7 name "noSpikes" scope OUTPUT_DATA @@ -22524,10 +23018,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [122 125 127] + linkNode [122 126 128] } data { - id 127 + id 128 ssIdNumber 9 name "res_check_spikes" scope OUTPUT_DATA @@ -22549,10 +23043,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [122 126 0] + linkNode [122 127 0] } junction { - id 128 + id 129 position [23.5747 49.5747 7] chart 122 subviewer 122 @@ -22561,7 +23055,7 @@ Stateflow { linkNode [122 0 0] } transition { - id 129 + id 130 labelString "{eML_blk_kernel();}" labelPosition [40.125 31.875 102.544 14.964] fontSize 12 @@ -22569,7 +23063,7 @@ Stateflow { intersection [0 0 1 0 23.5747 14.625 0 0] } dst { - id 128 + id 129 intersection [1 0 -1 0 23.5747 42.5747 0 0] } midPoint [23.5747 24.9468] @@ -22585,22 +23079,22 @@ Stateflow { linkNode [122 0 0] } instance { - id 130 + id 131 machine 1 - name "MOMENTUM BASED TORQUE CONTROL/emergency stop: joint limits/STOP IF THERE ARE SPIKES IN THE ENCODERS/MAT" - "LAB Function" + name "MOMENTUM BASED TORQUE CONTROL/emergency stop: joint limits/WARNING OR STOP IF THERE ARE SPIKES IN THE E" + "NCODERS/MATLAB Function" chart 122 } chart { - id 131 + id 132 machine 1 name "MOMENTUM BASED TORQUE CONTROL/Balancing Controller QP/Compute Desired Torques/QPSolver/One Foot Two Fee" "t QP Selector" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] - treeNode [0 132 0 0] - viewObj 131 + treeNode [0 133 0 0] + viewObj 132 ssIdHighWaterMark 5 decomposition CLUSTER_CHART type EML_CHART @@ -22609,19 +23103,19 @@ Stateflow { eml { name "robotIsOnSingleSupportQP_FCN" } - firstData 133 - firstTransition 136 - firstJunction 135 + firstData 134 + firstTransition 137 + firstJunction 136 } state { - id 132 + id 133 labelString "eML_blk_kernel()" position [18 64.5 118 66] fontSize 12 - chart 131 - treeNode [131 0 0 0] + chart 132 + treeNode [132 0 0 0] superState SUBCHART - subviewer 131 + subviewer 132 ssIdNumber 1 type FUNC_STATE decomposition CLUSTER_STATE @@ -22633,7 +23127,7 @@ Stateflow { } } data { - id 133 + id 134 ssIdNumber 4 name "feetContactStatus" scope INPUT_DATA @@ -22652,10 +23146,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [131 0 134] + linkNode [132 0 135] } data { - id 134 + id 135 ssIdNumber 5 name "onOneFoot" scope OUTPUT_DATA @@ -22675,19 +23169,19 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [131 133 0] + linkNode [132 134 0] } junction { - id 135 + id 136 position [23.5747 49.5747 7] - chart 131 - subviewer 131 + chart 132 + subviewer 132 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [131 0 0] + linkNode [132 0 0] } transition { - id 136 + id 137 labelString "{eML_blk_kernel();}" labelPosition [28.125 13.875 102.544 14.964] fontSize 12 @@ -22695,37 +23189,37 @@ Stateflow { intersection [0 0 1 0 23.5747 14.625 0 0] } dst { - id 135 + id 136 intersection [1 0 -1 0 23.5747 42.5747 0 0] } midPoint [23.5747 24.9468] - chart 131 + chart 132 dataLimits [21.175 25.975 14.625 42.575] - subviewer 131 + subviewer 132 drawStyle SMART slide { sticky BOTH_STICK } executionOrder 1 ssIdNumber 2 - linkNode [131 0 0] + linkNode [132 0 0] } instance { - id 137 + id 138 machine 1 name "MOMENTUM BASED TORQUE CONTROL/Balancing Controller QP/Compute Desired Torques/QPSolver/One Foot Two Fee" "t QP Selector" - chart 131 + chart 132 } chart { - id 138 + id 139 machine 1 name "MOMENTUM BASED TORQUE CONTROL/Balancing Controller QP/Momentum Based Balancing Controller\n" windowPosition [352.761 488.141 161 328] viewLimits [0 156.75 0 153.75] screen [1 1 1280 1024 1.000677131425054] - treeNode [0 139 0 0] - viewObj 138 + treeNode [0 140 0 0] + viewObj 139 ssIdHighWaterMark 82 decomposition CLUSTER_CHART type EML_CHART @@ -22734,19 +23228,19 @@ Stateflow { eml { name "momentumBasedControllerFCN" } - firstData 140 - firstTransition 178 - firstJunction 177 + firstData 141 + firstTransition 179 + firstJunction 178 } state { - id 139 + id 140 labelString "eML_blk_kernel()" position [18 64.5 118 66] fontSize 12 - chart 138 - treeNode [138 0 0 0] + chart 139 + treeNode [139 0 0 0] superState SUBCHART - subviewer 138 + subviewer 139 ssIdNumber 1 type FUNC_STATE decomposition CLUSTER_STATE @@ -22768,7 +23262,7 @@ Stateflow { } } data { - id 140 + id 141 ssIdNumber 66 name "HessianMatrixOneFoot" scope OUTPUT_DATA @@ -22790,10 +23284,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 0 141] + linkNode [139 0 142] } data { - id 141 + id 142 ssIdNumber 64 name "gradientOneFoot" scope OUTPUT_DATA @@ -22815,10 +23309,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 140 142] + linkNode [139 141 143] } data { - id 142 + id 143 ssIdNumber 5 name "ConstraintsMatrixOneFoot" scope OUTPUT_DATA @@ -22838,10 +23332,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 141 143] + linkNode [139 142 144] } data { - id 143 + id 144 ssIdNumber 52 name "bVectorConstraintsOneFoot" scope OUTPUT_DATA @@ -22863,10 +23357,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 142 144] + linkNode [139 143 145] } data { - id 144 + id 145 ssIdNumber 69 name "HessianMatrixTwoFeet" scope OUTPUT_DATA @@ -22888,10 +23382,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 143 145] + linkNode [139 144 146] } data { - id 145 + id 146 ssIdNumber 70 name "gradientTwoFeet" scope OUTPUT_DATA @@ -22913,10 +23407,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 144 146] + linkNode [139 145 147] } data { - id 146 + id 147 ssIdNumber 53 name "ConstraintsMatrixTwoFeet" scope OUTPUT_DATA @@ -22938,10 +23432,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 145 147] + linkNode [139 146 148] } data { - id 147 + id 148 ssIdNumber 54 name "bVectorConstraintsTwoFeet" scope OUTPUT_DATA @@ -22963,10 +23457,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 146 148] + linkNode [139 147 149] } data { - id 148 + id 149 ssIdNumber 57 name "tauModel" scope OUTPUT_DATA @@ -22988,10 +23482,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 147 149] + linkNode [139 148 150] } data { - id 149 + id 150 ssIdNumber 58 name "Sigma" scope OUTPUT_DATA @@ -23013,10 +23507,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 148 150] + linkNode [139 149 151] } data { - id 150 + id 151 ssIdNumber 62 name "Na" scope OUTPUT_DATA @@ -23038,10 +23532,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 149 151] + linkNode [139 150 152] } data { - id 151 + id 152 ssIdNumber 63 name "f_LDot" scope OUTPUT_DATA @@ -23063,10 +23557,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 150 152] + linkNode [139 151 153] } data { - id 152 + id 153 ssIdNumber 13 name "feetContactStatus" scope INPUT_DATA @@ -23088,10 +23582,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 151 153] + linkNode [139 152 154] } data { - id 153 + id 154 ssIdNumber 50 name "ConstraintsMatrix" scope INPUT_DATA @@ -23113,10 +23607,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 152 154] + linkNode [139 153 155] } data { - id 154 + id 155 ssIdNumber 51 name "bVectorConstraints" scope INPUT_DATA @@ -23138,10 +23632,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 153 155] + linkNode [139 154 156] } data { - id 155 + id 156 ssIdNumber 14 name "jointPos" scope INPUT_DATA @@ -23163,10 +23657,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 154 156] + linkNode [139 155 157] } data { - id 156 + id 157 ssIdNumber 4 name "jointPos_des" scope INPUT_DATA @@ -23185,10 +23679,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 155 157] + linkNode [139 156 158] } data { - id 157 + id 158 ssIdNumber 7 name "nu" scope INPUT_DATA @@ -23210,10 +23704,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 156 158] + linkNode [139 157 159] } data { - id 158 + id 159 ssIdNumber 8 name "M" scope INPUT_DATA @@ -23235,10 +23729,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 157 159] + linkNode [139 158 160] } data { - id 159 + id 160 ssIdNumber 9 name "h" scope INPUT_DATA @@ -23260,10 +23754,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 158 160] + linkNode [139 159 161] } data { - id 160 + id 161 ssIdNumber 11 name "L" scope INPUT_DATA @@ -23285,10 +23779,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 159 161] + linkNode [139 160 162] } data { - id 161 + id 162 ssIdNumber 6 name "intL_angMomError" scope INPUT_DATA @@ -23310,10 +23804,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 160 162] + linkNode [139 161 163] } data { - id 162 + id 163 ssIdNumber 42 name "w_H_l_sole" scope INPUT_DATA @@ -23335,10 +23829,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 161 163] + linkNode [139 162 164] } data { - id 163 + id 164 ssIdNumber 12 name "w_H_r_sole" scope INPUT_DATA @@ -23360,10 +23854,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 162 164] + linkNode [139 163 165] } data { - id 164 + id 165 ssIdNumber 77 name "J_l_sole" scope INPUT_DATA @@ -23385,10 +23879,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 163 165] + linkNode [139 164 166] } data { - id 165 + id 166 ssIdNumber 38 name "J_r_sole" scope INPUT_DATA @@ -23410,10 +23904,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 164 166] + linkNode [139 165 167] } data { - id 166 + id 167 ssIdNumber 32 name "JDot_l_sole_nu" scope INPUT_DATA @@ -23435,10 +23929,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 165 167] + linkNode [139 166 168] } data { - id 167 + id 168 ssIdNumber 33 name "JDot_r_sole_nu" scope INPUT_DATA @@ -23460,10 +23954,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 166 168] + linkNode [139 167 169] } data { - id 168 + id 169 ssIdNumber 40 name "pos_CoM" scope INPUT_DATA @@ -23485,10 +23979,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 167 169] + linkNode [139 168 170] } data { - id 169 + id 170 ssIdNumber 16 name "J_CoM" scope INPUT_DATA @@ -23510,10 +24004,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 168 170] + linkNode [139 169 171] } data { - id 170 + id 171 ssIdNumber 15 name "desired_pos_vel_acc_CoM" scope INPUT_DATA @@ -23535,10 +24029,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 169 171] + linkNode [139 170 172] } data { - id 171 + id 172 ssIdNumber 17 name "KP_CoM" scope INPUT_DATA @@ -23560,10 +24054,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 170 172] + linkNode [139 171 173] } data { - id 172 + id 173 ssIdNumber 81 name "KD_CoM" scope INPUT_DATA @@ -23585,10 +24079,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 171 173] + linkNode [139 172 174] } data { - id 173 + id 174 ssIdNumber 82 name "KP_postural" scope INPUT_DATA @@ -23610,10 +24104,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 172 174] + linkNode [139 173 175] } data { - id 174 + id 175 ssIdNumber 20 name "Reg" scope PARAMETER_DATA @@ -23636,10 +24130,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 173 175] + linkNode [139 174 176] } data { - id 175 + id 176 ssIdNumber 47 name "Gain" scope PARAMETER_DATA @@ -23662,10 +24156,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 174 176] + linkNode [139 175 177] } data { - id 176 + id 177 ssIdNumber 19 name "Config" scope PARAMETER_DATA @@ -23687,19 +24181,19 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [138 175 0] + linkNode [139 176 0] } junction { - id 177 + id 178 position [23.5747 49.5747 7] - chart 138 - subviewer 138 + chart 139 + subviewer 139 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [138 0 0] + linkNode [139 0 0] } transition { - id 178 + id 179 labelString "{eML_blk_kernel();}" labelPosition [36.125 25.875 102.544 14.964] fontSize 12 @@ -23707,36 +24201,36 @@ Stateflow { intersection [0 0 1 0 23.5747 14.625 0 0] } dst { - id 177 + id 178 intersection [1 0 -1 0 23.5747 42.5747 0 0] } midPoint [23.5747 24.9468] - chart 138 + chart 139 dataLimits [21.175 25.975 14.625 42.575] - subviewer 138 + subviewer 139 drawStyle SMART slide { sticky BOTH_STICK } executionOrder 1 ssIdNumber 2 - linkNode [138 0 0] + linkNode [139 0 0] } instance { - id 179 + id 180 machine 1 name "MOMENTUM BASED TORQUE CONTROL/Balancing Controller QP/Momentum Based Balancing Controller\n" - chart 138 + chart 139 } chart { - id 180 + id 181 machine 1 name "MOMENTUM BASED TORQUE CONTROL/emergency stop: joint limits/STOP IF JOINTS HIT THE LIMITS/MATLAB Function" windowPosition [369.958 -65.92 200 534.4] viewLimits [0 156.75 0 153.75] screen [1 1 1366 768 1.25] - treeNode [0 181 0 0] - viewObj 180 + treeNode [0 182 0 0] + viewObj 181 ssIdHighWaterMark 9 decomposition CLUSTER_CHART type EML_CHART @@ -23746,19 +24240,19 @@ Stateflow { name "checkInputRangeFCN" } supportVariableSizing 0 - firstData 182 - firstTransition 189 - firstJunction 188 + firstData 183 + firstTransition 190 + firstJunction 189 } state { - id 181 + id 182 labelString "eML_blk_kernel()" position [18 64.5 118 66] fontSize 12 - chart 180 - treeNode [180 0 0 0] + chart 181 + treeNode [181 0 0 0] superState SUBCHART - subviewer 180 + subviewer 181 ssIdNumber 1 type FUNC_STATE decomposition CLUSTER_STATE @@ -23774,7 +24268,7 @@ Stateflow { } } data { - id 182 + id 183 ssIdNumber 4 name "umin" scope INPUT_DATA @@ -23796,10 +24290,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [180 0 183] + linkNode [181 0 184] } data { - id 183 + id 184 ssIdNumber 5 name "umax" scope INPUT_DATA @@ -23821,10 +24315,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [180 182 184] + linkNode [181 183 185] } data { - id 184 + id 185 ssIdNumber 6 name "u" scope INPUT_DATA @@ -23843,10 +24337,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [180 183 185] + linkNode [181 184 186] } data { - id 185 + id 186 ssIdNumber 7 name "inRange" scope OUTPUT_DATA @@ -23866,10 +24360,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [180 184 186] + linkNode [181 185 187] } data { - id 186 + id 187 ssIdNumber 8 name "tol" scope INPUT_DATA @@ -23891,10 +24385,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [180 185 187] + linkNode [181 186 188] } data { - id 187 + id 188 ssIdNumber 9 name "res_check_range" scope OUTPUT_DATA @@ -23916,19 +24410,19 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [180 186 0] + linkNode [181 187 0] } junction { - id 188 + id 189 position [23.5747 49.5747 7] - chart 180 - subviewer 180 + chart 181 + subviewer 181 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [180 0 0] + linkNode [181 0 0] } transition { - id 189 + id 190 labelString "{eML_blk_kernel();}" labelPosition [40.125 31.875 102.544 14.964] fontSize 12 @@ -23936,37 +24430,37 @@ Stateflow { intersection [0 0 1 0 23.5747 14.625 0 0] } dst { - id 188 + id 189 intersection [1 0 -1 0 23.5747 42.5747 0 0] } midPoint [23.5747 24.9468] - chart 180 + chart 181 dataLimits [21.175 25.975 14.625 42.575] - subviewer 180 + subviewer 181 drawStyle SMART slide { sticky BOTH_STICK } executionOrder 1 ssIdNumber 2 - linkNode [180 0 0] + linkNode [181 0 0] } instance { - id 190 + id 191 machine 1 name "MOMENTUM BASED TORQUE CONTROL/emergency stop: joint limits/STOP IF JOINTS HIT THE LIMITS/MATLAB Function" - chart 180 + chart 181 } chart { - id 191 + id 192 machine 1 name "MOMENTUM BASED TORQUE CONTROL/Balancing Controller QP/Compute angular momentum integral error/Select ba" "se to world transform" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] - treeNode [0 192 0 0] - viewObj 191 + treeNode [0 193 0 0] + viewObj 192 ssIdHighWaterMark 5 decomposition CLUSTER_CHART type EML_CHART @@ -23975,19 +24469,19 @@ Stateflow { eml { name "footOnGround" } - firstData 193 - firstTransition 196 - firstJunction 195 + firstData 194 + firstTransition 197 + firstJunction 196 } state { - id 192 + id 193 labelString "eML_blk_kernel()" position [18 64.5 118 66] fontSize 12 - chart 191 - treeNode [191 0 0 0] + chart 192 + treeNode [192 0 0 0] superState SUBCHART - subviewer 191 + subviewer 192 ssIdNumber 1 type FUNC_STATE decomposition CLUSTER_STATE @@ -24002,7 +24496,7 @@ Stateflow { } } data { - id 193 + id 194 ssIdNumber 4 name "state" scope INPUT_DATA @@ -24021,10 +24515,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [191 0 194] + linkNode [192 0 195] } data { - id 194 + id 195 ssIdNumber 5 name "booleanState" scope OUTPUT_DATA @@ -24044,19 +24538,19 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [191 193 0] + linkNode [192 194 0] } junction { - id 195 + id 196 position [23.5747 49.5747 7] - chart 191 - subviewer 191 + chart 192 + subviewer 192 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [191 0 0] + linkNode [192 0 0] } transition { - id 196 + id 197 labelString "{eML_blk_kernel();}" labelPosition [28.125 13.875 102.544 14.964] fontSize 12 @@ -24064,38 +24558,38 @@ Stateflow { intersection [0 0 1 0 23.5747 14.625 0 0] } dst { - id 195 + id 196 intersection [1 0 -1 0 23.5747 42.5747 0 0] } midPoint [23.5747 24.9468] - chart 191 + chart 192 dataLimits [21.175 25.975 14.625 42.575] - subviewer 191 + subviewer 192 drawStyle SMART slide { sticky BOTH_STICK } executionOrder 1 ssIdNumber 2 - linkNode [191 0 0] + linkNode [192 0 0] } instance { - id 197 + id 198 machine 1 name "MOMENTUM BASED TORQUE CONTROL/Balancing Controller QP/Compute angular momentum integral error/Select ba" "se to world transform" - chart 191 + chart 192 } chart { - id 198 + id 199 machine 1 name "MOMENTUM BASED TORQUE CONTROL/Balancing Controller QP/Compute angular momentum integral error/Get Equiv" "alent Base Velocity" windowPosition [357.12 483.496 167 391] viewLimits [0 156.75 0 153.75] screen [1 1 1280 1024 1.041666666666667] - treeNode [0 199 0 0] - viewObj 198 + treeNode [0 200 0 0] + viewObj 199 ssIdHighWaterMark 10 decomposition CLUSTER_CHART type EML_CHART @@ -24104,19 +24598,19 @@ Stateflow { eml { name "getEquivalentBaseVel_FCN" } - firstData 200 - firstTransition 207 - firstJunction 206 + firstData 201 + firstTransition 208 + firstJunction 207 } state { - id 199 + id 200 labelString "eML_blk_kernel()" position [18 64.5 118 66] fontSize 12 - chart 198 - treeNode [198 0 0 0] + chart 199 + treeNode [199 0 0 0] superState SUBCHART - subviewer 198 + subviewer 199 ssIdNumber 1 type FUNC_STATE decomposition CLUSTER_STATE @@ -24132,7 +24626,7 @@ Stateflow { } } data { - id 200 + id 201 ssIdNumber 4 name "J_l_sole" scope INPUT_DATA @@ -24151,10 +24645,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [198 0 201] + linkNode [199 0 202] } data { - id 201 + id 202 ssIdNumber 6 name "J_r_sole" scope INPUT_DATA @@ -24176,10 +24670,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [198 200 202] + linkNode [199 201 203] } data { - id 202 + id 203 ssIdNumber 9 name "feetContactStatus" scope INPUT_DATA @@ -24201,10 +24695,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [198 201 203] + linkNode [199 202 204] } data { - id 203 + id 204 ssIdNumber 10 name "jointPos_err" scope INPUT_DATA @@ -24226,10 +24720,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [198 202 204] + linkNode [199 203 205] } data { - id 204 + id 205 ssIdNumber 7 name "baseVel_equivalent" scope OUTPUT_DATA @@ -24251,10 +24745,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [198 203 205] + linkNode [199 204 206] } data { - id 205 + id 206 ssIdNumber 8 name "Reg" scope PARAMETER_DATA @@ -24276,19 +24770,19 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [198 204 0] + linkNode [199 205 0] } junction { - id 206 + id 207 position [23.5747 49.5747 7] - chart 198 - subviewer 198 + chart 199 + subviewer 199 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [198 0 0] + linkNode [199 0 0] } transition { - id 207 + id 208 labelString "{eML_blk_kernel();}" labelPosition [28.125 13.875 102.544 14.964] fontSize 12 @@ -24296,38 +24790,38 @@ Stateflow { intersection [0 0 1 0 23.5747 14.625 0 0] } dst { - id 206 + id 207 intersection [1 0 -1 0 23.5747 42.5747 0 0] } midPoint [23.5747 24.9468] - chart 198 + chart 199 dataLimits [21.175 25.975 14.625 42.575] - subviewer 198 + subviewer 199 drawStyle SMART slide { sticky BOTH_STICK } executionOrder 1 ssIdNumber 2 - linkNode [198 0 0] + linkNode [199 0 0] } instance { - id 208 + id 209 machine 1 name "MOMENTUM BASED TORQUE CONTROL/Balancing Controller QP/Compute angular momentum integral error/Get Equiv" "alent Base Velocity" - chart 198 + chart 199 } chart { - id 209 + id 210 machine 1 name "MOMENTUM BASED TORQUE CONTROL/Balancing Controller QP/Compute Desired Torques/QPSolver/QP Two Feet/Anal" "ytical Solution Two Feet (unconstrained)" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] - treeNode [0 210 0 0] - viewObj 209 + treeNode [0 211 0 0] + viewObj 210 ssIdHighWaterMark 6 decomposition CLUSTER_CHART type EML_CHART @@ -24336,19 +24830,19 @@ Stateflow { eml { name "analyticalSolutionQP_FCN" } - firstData 211 - firstTransition 215 - firstJunction 214 + firstData 212 + firstTransition 216 + firstJunction 215 } state { - id 210 + id 211 labelString "eML_blk_kernel()" position [18 64.5 118 66] fontSize 12 - chart 209 - treeNode [209 0 0 0] + chart 210 + treeNode [210 0 0 0] superState SUBCHART - subviewer 209 + subviewer 210 ssIdNumber 1 type FUNC_STATE decomposition CLUSTER_STATE @@ -24360,7 +24854,7 @@ Stateflow { } } data { - id 211 + id 212 ssIdNumber 4 name "H" scope INPUT_DATA @@ -24379,10 +24873,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [209 0 212] + linkNode [210 0 213] } data { - id 212 + id 213 ssIdNumber 5 name "analyticalSolution" scope OUTPUT_DATA @@ -24402,10 +24896,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [209 211 213] + linkNode [210 212 214] } data { - id 213 + id 214 ssIdNumber 6 name "g" scope INPUT_DATA @@ -24427,19 +24921,19 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [209 212 0] + linkNode [210 213 0] } junction { - id 214 + id 215 position [23.5747 49.5747 7] - chart 209 - subviewer 209 + chart 210 + subviewer 210 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [209 0 0] + linkNode [210 0 0] } transition { - id 215 + id 216 labelString "{eML_blk_kernel();}" labelPosition [28.125 13.875 102.544 14.964] fontSize 12 @@ -24447,38 +24941,38 @@ Stateflow { intersection [0 0 1 0 23.5747 14.625 0 0] } dst { - id 214 + id 215 intersection [1 0 -1 0 23.5747 42.5747 0 0] } midPoint [23.5747 24.9468] - chart 209 + chart 210 dataLimits [21.175 25.975 14.625 42.575] - subviewer 209 + subviewer 210 drawStyle SMART slide { sticky BOTH_STICK } executionOrder 1 ssIdNumber 2 - linkNode [209 0 0] + linkNode [210 0 0] } instance { - id 216 + id 217 machine 1 name "MOMENTUM BASED TORQUE CONTROL/Balancing Controller QP/Compute Desired Torques/QPSolver/QP Two Feet/Anal" "ytical Solution Two Feet (unconstrained)" - chart 209 + chart 210 } chart { - id 217 + id 218 machine 1 name "MOMENTUM BASED TORQUE CONTROL/Balancing Controller QP/Compute Desired Torques/QPSolver/QP Two Feet/Proc" "ess QP output" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] - treeNode [0 218 0 0] - viewObj 217 + treeNode [0 219 0 0] + viewObj 218 ssIdHighWaterMark 14 decomposition CLUSTER_CHART type EML_CHART @@ -24487,19 +24981,19 @@ Stateflow { eml { name "processOutputQP_twoFeetFCN" } - firstData 219 - firstTransition 225 - firstJunction 224 + firstData 220 + firstTransition 226 + firstJunction 225 } state { - id 218 + id 219 labelString "eML_blk_kernel()" position [18 64.5 118 66] fontSize 12 - chart 217 - treeNode [217 0 0 0] + chart 218 + treeNode [218 0 0 0] superState SUBCHART - subviewer 217 + subviewer 218 ssIdNumber 1 type FUNC_STATE decomposition CLUSTER_STATE @@ -24511,7 +25005,7 @@ Stateflow { } } data { - id 219 + id 220 ssIdNumber 7 name "analyticalSolution" scope INPUT_DATA @@ -24533,10 +25027,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [217 0 220] + linkNode [218 0 221] } data { - id 220 + id 221 ssIdNumber 4 name "primalSolution" scope INPUT_DATA @@ -24555,10 +25049,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [217 219 221] + linkNode [218 220 222] } data { - id 221 + id 222 ssIdNumber 6 name "QPStatus" scope INPUT_DATA @@ -24580,10 +25074,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [217 220 222] + linkNode [218 221 223] } data { - id 222 + id 223 ssIdNumber 5 name "f_star" scope OUTPUT_DATA @@ -24603,10 +25097,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [217 221 223] + linkNode [218 222 224] } data { - id 223 + id 224 ssIdNumber 10 name "Config" scope PARAMETER_DATA @@ -24628,19 +25122,19 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [217 222 0] + linkNode [218 223 0] } junction { - id 224 + id 225 position [23.5747 49.5747 7] - chart 217 - subviewer 217 + chart 218 + subviewer 218 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [217 0 0] + linkNode [218 0 0] } transition { - id 225 + id 226 labelString "{eML_blk_kernel();}" labelPosition [28.125 13.875 102.544 14.964] fontSize 12 @@ -24648,38 +25142,38 @@ Stateflow { intersection [0 0 1 0 23.5747 14.625 0 0] } dst { - id 224 + id 225 intersection [1 0 -1 0 23.5747 42.5747 0 0] } midPoint [23.5747 24.9468] - chart 217 + chart 218 dataLimits [21.175 25.975 14.625 42.575] - subviewer 217 + subviewer 218 drawStyle SMART slide { sticky BOTH_STICK } executionOrder 1 ssIdNumber 2 - linkNode [217 0 0] + linkNode [218 0 0] } instance { - id 226 + id 227 machine 1 name "MOMENTUM BASED TORQUE CONTROL/Balancing Controller QP/Compute Desired Torques/QPSolver/QP Two Feet/Proc" "ess QP output" - chart 217 + chart 218 } chart { - id 227 + id 228 machine 1 name "MOMENTUM BASED TORQUE CONTROL/Balancing Controller QP/Compute Desired Torques/QPSolver/QP One Foot/Anal" "ytical Solution QP One Foot (unconstrained)" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] - treeNode [0 228 0 0] - viewObj 227 + treeNode [0 229 0 0] + viewObj 228 ssIdHighWaterMark 6 decomposition CLUSTER_CHART type EML_CHART @@ -24688,19 +25182,19 @@ Stateflow { eml { name "analyticalSolutionQP_FCN" } - firstData 229 - firstTransition 233 - firstJunction 232 + firstData 230 + firstTransition 234 + firstJunction 233 } state { - id 228 + id 229 labelString "eML_blk_kernel()" position [18 64.5 118 66] fontSize 12 - chart 227 - treeNode [227 0 0 0] + chart 228 + treeNode [228 0 0 0] superState SUBCHART - subviewer 227 + subviewer 228 ssIdNumber 1 type FUNC_STATE decomposition CLUSTER_STATE @@ -24712,7 +25206,7 @@ Stateflow { } } data { - id 229 + id 230 ssIdNumber 4 name "H" scope INPUT_DATA @@ -24731,10 +25225,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [227 0 230] + linkNode [228 0 231] } data { - id 230 + id 231 ssIdNumber 5 name "analyticalSolution" scope OUTPUT_DATA @@ -24754,10 +25248,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [227 229 231] + linkNode [228 230 232] } data { - id 231 + id 232 ssIdNumber 6 name "g" scope INPUT_DATA @@ -24779,19 +25273,19 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [227 230 0] + linkNode [228 231 0] } junction { - id 232 + id 233 position [23.5747 49.5747 7] - chart 227 - subviewer 227 + chart 228 + subviewer 228 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [227 0 0] + linkNode [228 0 0] } transition { - id 233 + id 234 labelString "{eML_blk_kernel();}" labelPosition [28.125 13.875 102.544 14.964] fontSize 12 @@ -24799,38 +25293,38 @@ Stateflow { intersection [0 0 1 0 23.5747 14.625 0 0] } dst { - id 232 + id 233 intersection [1 0 -1 0 23.5747 42.5747 0 0] } midPoint [23.5747 24.9468] - chart 227 + chart 228 dataLimits [21.175 25.975 14.625 42.575] - subviewer 227 + subviewer 228 drawStyle SMART slide { sticky BOTH_STICK } executionOrder 1 ssIdNumber 2 - linkNode [227 0 0] + linkNode [228 0 0] } instance { - id 234 + id 235 machine 1 name "MOMENTUM BASED TORQUE CONTROL/Balancing Controller QP/Compute Desired Torques/QPSolver/QP One Foot/Anal" "ytical Solution QP One Foot (unconstrained)" - chart 227 + chart 228 } chart { - id 235 + id 236 machine 1 name "MOMENTUM BASED TORQUE CONTROL/Balancing Controller QP/Compute Desired Torques/QPSolver/QP One Foot/Proc" "ess QP output" windowPosition [422 539.941 189 413] viewLimits [0 156.75 0 153.75] screen [1 1 3600 1200 1.180555555555556] - treeNode [0 236 0 0] - viewObj 235 + treeNode [0 237 0 0] + viewObj 236 ssIdHighWaterMark 14 decomposition CLUSTER_CHART type EML_CHART @@ -24839,19 +25333,19 @@ Stateflow { eml { name "processOutputQP_oneFoot" } - firstData 237 - firstTransition 244 - firstJunction 243 + firstData 238 + firstTransition 245 + firstJunction 244 } state { - id 236 + id 237 labelString "eML_blk_kernel()" position [18 64.5 118 66] fontSize 12 - chart 235 - treeNode [235 0 0 0] + chart 236 + treeNode [236 0 0 0] superState SUBCHART - subviewer 235 + subviewer 236 ssIdNumber 1 type FUNC_STATE decomposition CLUSTER_STATE @@ -24864,7 +25358,7 @@ Stateflow { } } data { - id 237 + id 238 ssIdNumber 7 name "analyticalSolution" scope INPUT_DATA @@ -24886,10 +25380,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [235 0 238] + linkNode [236 0 239] } data { - id 238 + id 239 ssIdNumber 4 name "primalSolution" scope INPUT_DATA @@ -24908,10 +25402,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [235 237 239] + linkNode [236 238 240] } data { - id 239 + id 240 ssIdNumber 6 name "QPStatus" scope INPUT_DATA @@ -24933,10 +25427,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [235 238 240] + linkNode [236 239 241] } data { - id 240 + id 241 ssIdNumber 14 name "feetContactStatus" scope INPUT_DATA @@ -24958,10 +25452,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [235 239 241] + linkNode [236 240 242] } data { - id 241 + id 242 ssIdNumber 5 name "f_star" scope OUTPUT_DATA @@ -24981,10 +25475,10 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [235 240 242] + linkNode [236 241 243] } data { - id 242 + id 243 ssIdNumber 10 name "Config" scope PARAMETER_DATA @@ -25006,19 +25500,19 @@ Stateflow { } } dataType "Inherit: Same as Simulink" - linkNode [235 241 0] + linkNode [236 242 0] } junction { - id 243 + id 244 position [23.5747 49.5747 7] - chart 235 - subviewer 235 + chart 236 + subviewer 236 ssIdNumber 3 type CONNECTIVE_JUNCTION - linkNode [235 0 0] + linkNode [236 0 0] } transition { - id 244 + id 245 labelString "{eML_blk_kernel();}" labelPosition [28.125 13.875 102.544 14.964] fontSize 12 @@ -25026,39 +25520,39 @@ Stateflow { intersection [0 0 1 0 23.5747 14.625 0 0] } dst { - id 243 + id 244 intersection [1 0 -1 0 23.5747 42.5747 0 0] } midPoint [23.5747 24.9468] - chart 235 + chart 236 dataLimits [21.175 25.975 14.625 42.575] - subviewer 235 + subviewer 236 drawStyle SMART slide { sticky BOTH_STICK } executionOrder 1 ssIdNumber 2 - linkNode [235 0 0] + linkNode [236 0 0] } instance { - id 245 + id 246 machine 1 name "MOMENTUM BASED TORQUE CONTROL/Balancing Controller QP/Compute Desired Torques/QPSolver/QP One Foot/Proc" "ess QP output" - chart 235 + chart 236 } target { - id 246 + id 247 machine 1 name "sfun" codeFlags "" - linkNode [1 0 247] + linkNode [1 0 248] } target { - id 247 + id 248 machine 1 name "rtw" - linkNode [1 246 0] + linkNode [1 247 0] } } diff --git a/library/matlab-wbc/+wbc/checkInputSpikes.m b/library/matlab-wbc/+wbc/checkInputSpikes.m index 872e3a1..ca686ee 100644 --- a/library/matlab-wbc/+wbc/checkInputSpikes.m +++ b/library/matlab-wbc/+wbc/checkInputSpikes.m @@ -1,4 +1,4 @@ -function [noSpikes, res_check_spikes] = checkInputSpikes(u, delta_u_max) +function [noSpikes, res_check_spikes] = checkInputSpikes(u_prev, u, delta_u_max) % CHECKINPUTSPIKES checks the (unsigned) difference between two consecutive % measurements of the input u, i.e. delta = abs(u(k)-u(k-1)) @@ -6,7 +6,8 @@ % % FORMAT: [noSpikes, res_check_spikes] = checkInputSpikes(u, delta_u_max) % - % INPUT: - u = [n * 1] input values; + % INPUT: - u = [n x 1] input values; + % - u_prev = delayed [n x 1] input values; % - delta_u_max = user-defined threshold; % % OUTPUT: - noSpikes = FALSE if delta is greater than delta_u_max; @@ -19,29 +20,10 @@ % % Genoa, Dec 2018 % - - %% --- Initialization --- - - persistent u_previous - if isempty(u_previous) - - u_previous = u; - end - - delta = abs(u - u_previous); + delta = abs(u - u_prev); % u may be a vector - res_check_spikes = delta >= delta_u_max; - res_tot = sum(res_check_spikes); - - if abs(res_tot) < 0.1 - - noSpikes = 1; - else - noSpikes = 0; - end - - % now, set u_previous to be u - u_previous = u; -end \ No newline at end of file + res_check_spikes = (delta >= delta_u_max); + noSpikes = double(~any(res_check_spikes)); +end