@@ -63,8 +63,8 @@ def solve_DARE(A, B, Q, R):
6363    eps  =  0.01 
6464
6565    for  i  in  range (maxiter ):
66-         Xn  =  A .T  *  X  *  A  -  A .T  *  X  *  B  *  \
67-             la .inv (R  +  B .T  *  X  *  B ) *  B .T  *  X  *  A  +  Q 
66+         Xn  =  A .T  @  X  @  A  -  A .T  @  X  @  B  @  \
67+             la .inv (R  +  B .T  @  X  @  B ) @  B .T  @  X  @  A  +  Q 
6868        if  (abs (Xn  -  X )).max () <  eps :
6969            break 
7070        X  =  Xn 
@@ -83,9 +83,9 @@ def dlqr(A, B, Q, R):
8383    X  =  solve_DARE (A , B , Q , R )
8484
8585    # compute the LQR gain 
86-     K  =  np . matrix ( la .inv (B .T  *  X  *  B  +  R ) *  (B .T  *  X  *   A ) )
86+     K  =  la .inv (B .T  @  X  @  B  +  R ) @  (B .T  @  X  @  A )
8787
88-     eigVals , eigVecs  =  la .eig (A  -  B  *  K )
88+     eigVals , eigVecs  =  la .eig (A  -  B  @  K )
8989
9090    return  K , X , eigVals 
9191
@@ -99,7 +99,7 @@ def lqr_steering_control(state, cx, cy, cyaw, ck, pe, pth_e, sp):
9999    v  =  state .v 
100100    th_e  =  pi_2_pi (state .yaw  -  cyaw [ind ])
101101
102-     A  =  np .matrix ( np . zeros ((5 , 5 ) ))
102+     A  =  np .zeros ((5 , 5 ))
103103    A [0 , 0 ] =  1.0 
104104    A [0 , 1 ] =  dt 
105105    A [1 , 2 ] =  v 
@@ -108,21 +108,21 @@ def lqr_steering_control(state, cx, cy, cyaw, ck, pe, pth_e, sp):
108108    A [4 , 4 ] =  1.0 
109109    # print(A) 
110110
111-     B  =  np .matrix ( np . zeros ((5 , 2 ) ))
111+     B  =  np .zeros ((5 , 2 ))
112112    B [3 , 0 ] =  v  /  L 
113113    B [4 , 1 ] =  dt 
114114
115115    K , _ , _  =  dlqr (A , B , Q , R )
116116
117-     x  =  np .matrix ( np . zeros ((5 , 1 ) ))
117+     x  =  np .zeros ((5 , 1 ))
118118
119119    x [0 , 0 ] =  e 
120120    x [1 , 0 ] =  (e  -  pe ) /  dt 
121121    x [2 , 0 ] =  th_e 
122122    x [3 , 0 ] =  (th_e  -  pth_e ) /  dt 
123123    x [4 , 0 ] =  v  -  tv 
124124
125-     ustar  =  - K  *  x 
125+     ustar  =  - K  @  x 
126126
127127    # calc steering input 
128128
0 commit comments