diff --git a/src/lmpc/lmpc.py b/src/lmpc/lmpc.py index d672cef..76c44aa 100644 --- a/src/lmpc/lmpc.py +++ b/src/lmpc/lmpc.py @@ -59,9 +59,9 @@ def set_output_bounds(self, ymin=np.zeros(0), ymax=np.zeros(0), ks =None, soft = ks=ks, soft=soft, binary=binary, prio=prio) def set_objective(self, uids=None, Q=None, R=None ,Rr=None, S=None, Qf=None, Qfx=None): - Q = np.zeros((0,0)) if Q is None else np.array(Q) - R = np.zeros((0,0)) if R is None else np.array(R) - Rr = np.zeros((0,0)) if Rr is None else np.array(Rr) + Q = np.zeros((0,0)) if Q is None else Q if np.isscalar(Q) else np.array(Q) + R = np.zeros((0,0)) if R is None else R if np.isscalar(R) else np.array(R) + Rr = np.zeros((0,0)) if Rr is None else Rr if np.isscalar(Rr) else np.array(Rr) S = np.zeros((0,0)) if S is None else np.array(S) Qf = np.zeros((0,0)) if Qf is None else np.array(Qf) Qfx = np.zeros((0,0)) if Qfx is None else np.array(Qfx) @@ -108,11 +108,18 @@ def settings(self,settings): def set_state_observer(self,F=None,G=None,Gd=None,C=None,Dd=None, f_offset=None,h_offset=None,Q=None,R=None,x0=None): - print(Q) - print(R) LinearMPC.set_state_observer_b(self.jl_mpc, F=F,G=G,Gd=Gd,C=C,Dd=Dd, f_offset=f_offset,h_offset=h_offset, Q=Q,R=R,x0=x0) + def get_state(self): + return LinearMPC.get_state(self.jl_mpc) + def set_state(self,x0): + return LinearMPC.set_state_b(self.jl_mpc,x0) + def correct_state(self,y): + return LinearMPC.correct_state_b(self.jl_mpc,y) + def predict_state(self,u): + return LinearMPC.predict_state_b(self.jl_mpc,u) + def set_operating_point(self,xo=None,uo=None,relinearize=True): LinearMPC.set_operating_point_b(self.jl_mpc,xo=xo,uo=uo,relinearize=relinearize)