def setUp(self):
        simDef = SimDefinition("MAPLEAF/Examples/Simulations/Canards.mapleaf", silent=True)

        simDef.setValue("SimControl.loggingLevel", "0")
        simDef.setValue("Rocket.ControlSystem.MomentController.gainTableFilePath", "MAPLEAF/Examples/TabulatedData/testPIDControlLaw.txt")
        simDef.setValue("Rocket.Sustainer.Canards.Actuators.deflectionTablePath","MAPLEAF/Examples/TabulatedData/testFinDeflectionLaw.txt")
        
        simDef.removeKey("Rocket.ControlSystem.FlightPlan.filePath")
        
        simRunner = Simulation(simDefinition=simDef, silent=True)
        self.rocket = simRunner.createRocket()
    def test_pinkNoiseStdDev(self):
        simDef = SimDefinition("MAPLEAF/Examples/Simulations/Wind.mapleaf",
                               silent=True)
        simDef.setValue("Environment.TurbulenceModel", "PinkNoise1D")
        simDef.setValue("Environment.PinkNoiseModel.velocityStdDeviation", "1")
        simDef.setValue("Environment.PinkNoiseModel.randomSeed1", "63583")
        simDef.setValue("Environment.turbulenceOffWhenUnderChute", "False")

        # Make sure turbulence intensity is not present since it overrides the given std deviation
        simDef.removeKey("Environment.PinkNoiseModel.turbulenceIntensity")
        envReader = SubDictReader("Environment", simDef)

        turbModel = turbulenceModelFactory(envReader)
        v1 = turbModel.getTurbVelocity(1, Vector(1, 0, 0), None)
        self.assertAlmostEqual(v1[0], 0.7946604314895807 / 2.26)
        v2 = turbModel.getTurbVelocity(1, Vector(1, 0, 0), None)
        self.assertAlmostEqual(v2[0], 0.5874110050866364 / 2.26)
Example #3
0
    def test_rocketCGCalculation(self):
        # Check actual CG Loc Calculation

        # Top stage CG: #
        # Nosecone: 1 kg @ 0m
        # Recovery: 5 kg @ -2m
        # BodyTube: 1 kg @ -0.762m
        # Mass:     50 kg @ -2.6m
        # Motor:    11.4885 kg @ 2.130434783
        # Fins:     1 kg @ -4.011m
        # Total Weight = 69.4885 kg
        # Stage 1 CG: -2.4564359077698

        expectedCG = Vector(0, 0, -1.731185736)

        # Remove overrides from rocket definition file
        simDef = SimDefinition("MAPLEAF/Examples/Simulations/Wind.mapleaf",
                               silent=True)
        simDef.removeKey("Rocket.Sustainer.constCG")
        simDef.removeKey("Rocket.Sustainer.constMass")
        simDef.removeKey("Rocket.Sustainer.constMOI")

        rocketDictReader = SubDictReader("Rocket", simDef)
        rocket = Rocket(rocketDictReader, silent=True)
        rocketInertia = rocket.getInertia(0, rocket.rigidBody.state)
        assertVectorsAlmostEqual(self, rocketInertia.CG, expectedCG, n=4)
    def test_readInitialParticlePositions(self):
        simDef = SimDefinition(
            "MAPLEAF/Examples/Simulations/InitializedOptimization.mapleaf",
            silent=True)
        opt = optimizationRunnerFactory(simDefinition=simDef, silent=True)

        # Check that initial position has been loaded
        bW1 = opt.initPositions[0][0]
        self.assertAlmostEqual(bW1, 0.1)

        # Check that the other initial position has been generated and is inside the expected bands
        bW2 = opt.initPositions[1][0]
        self.assertGreaterEqual(bW2, 0.01)
        self.assertLessEqual(bW2, 0.2)

        # Check that additional unexpected variables cause a crash
        extraVariableKey = 'Optimization.IndependentVariables.InitialParticlePositions.p1.extraVariable'
        with self.assertRaises(ValueError):
            simDef.setValue(extraVariableKey, '25')
            opt = optimizationRunnerFactory(simDefinition=simDef, silent=True)

        simDef.removeKey(extraVariableKey)

        # Check that an out of bounds value causes a crash
        with self.assertRaises(ValueError):
            simDef.setValue(
                'Optimization.IndependentVariables.InitialParticlePositions.p1.bodyWeight',
                '0.21')
            opt = optimizationRunnerFactory(simDefinition=simDef, silent=True)

        # Check that specifying the position of too many particles causes a crash
        with self.assertRaises(ValueError):
            simDef.setValue(
                'Optimization.IndependentVariables.InitialParticlePositions.p2.bodyWeight',
                '0.15')
            simDef.setValue(
                'Optimization.IndependentVariables.InitialParticlePositions.p3.bodyWeight',
                '0.15')
            opt = optimizationRunnerFactory(simDefinition=simDef, silent=True)