Exemple #1
0
  def test_syn_ss_sol_simulate(self):
    """Verifies that dyn_ss_sol mathes a simulation"""

    for roll in np.linspace(math.radians(-20), math.radians(20), num=11):
      for u in np.linspace(1, 30, num=10):
        A, B = create_dyn_state_matrices(u, self.VM)

        # Convert to discrete time system
        ss = StateSpace(A, B, np.eye(2), np.zeros((2, 2)))
        ss = ss.sample(0.01)

        for sa in np.linspace(math.radians(-20), math.radians(20), num=11):
          inp = np.array([[sa], [roll]])

          # Simulate for 1 second
          x1 = np.zeros((2, 1))
          for _ in range(100):
            x1 = ss.A @ x1 + ss.B @ inp

          # Compute steady state solution directly
          x2 = dyn_ss_sol(sa, u, roll, self.VM)

          np.testing.assert_almost_equal(x1, x2, decimal=3)
Exemple #2
0
#Velocidade Real
df = pd.read_csv('file.csv')

velocidadeReal = df['Velocidade'].tolist()

#modelo do sistema
A = np.array([[-R / L, -K / L], [K / J, -b / J]])
B = np.array([[1 / L, 0], [0, -1 / J]])
C = np.array([0, 1])
D = np.array([0, 0])

sys = StateSpace(A, B, C, D)

#discretizando o modelo
dsys = sys.sample(dt)

#Setando os dados que serao usados
Samples = len(velocidadeReal)
tempo = np.arange(0, (Samples + 1) * dt, dt)

P = np.array([[0.1389, 0], [0, 0.0389]])

#Sendo Q a covariancia do ruido do preocesso. O que representa a incerteza do modelo
Q = np.array([[0.1, 0], [0, 0.1]])

#Sendo R ruido na medicao

R = [0.1]

#Imagina-se os estados iniciais como 0