コード例 #1
0
import numpy as np
import params
from dynamics import Dynamics
from quadrotor_viewer import QuadRotor_Viewer
from scipy.spatial.transform import Rotation
from mpc import MPC, NMPC, LNMPC
from data_viewer import data_viewer
import time

if __name__ == "__main__":
    dynamics = Dynamics(params.dt)
    # viewer = QuadRotor_Viewer()
    data_view = data_viewer()
    A, B = dynamics.get_SS(dynamics.state)

    #LNMPC doesn't seem to work any better
    # controller =  MPC(A, B, params.u_max, params.u_min, T=params.T) #Typicall MPC
    controller = LNMPC(
        A, B, params.u_max, params.u_min, T=params.T
    )  #Non-linear model predictive control relinearizing about the current state
    # controller = NMPC(params.nu_max, params.nu_min, T = params.T) #Way to slow

    t0 = params.t0
    F_eq = params.mass * 9.81
    T_eq = 0.0
    u_eq = np.array([F_eq, T_eq, T_eq, T_eq])

    xr = np.array([
        5.0, -5.0, -5.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        np.deg2rad(0), 0.0, 0.0, 0.0
    ])