@@ -230,14 +230,14 @@ def reset(self):
230230 self .x0 = np .zeros (X_DIM )
231231 self .set_weights ()
232232
233- def set_weights (self ):
233+ def set_weights (self , prev_accel_constraint = True ):
234234 if self .e2e :
235235 self .set_weights_for_xva_policy ()
236236 self .params [:,0 ] = - 10.
237237 self .params [:,1 ] = 10.
238238 self .params [:,2 ] = 1e5
239239 else :
240- self .set_weights_for_lead_policy ()
240+ self .set_weights_for_lead_policy (prev_accel_constraint )
241241
242242 def get_cost_multipliers (self ):
243243 v_ego = self .x0 [1 ]
@@ -257,14 +257,15 @@ def get_cost_multipliers(self):
257257 a_change = min (a_change_tf , a_change_v_ego )
258258 return (a_change , j_ego , d_zone_tf )
259259
260- def set_weights_for_lead_policy (self ):
260+ def set_weights_for_lead_policy (self , prev_accel_constraint = True ):
261261 cost_mulitpliers = self .get_cost_multipliers ()
262+ a_change_cost = A_CHANGE_COST if prev_accel_constraint else 0
262263 W = np .asfortranarray (np .diag ([X_EGO_OBSTACLE_COST , X_EGO_COST , V_EGO_COST ,
263- A_EGO_COST , A_CHANGE_COST * cost_mulitpliers [0 ],
264+ A_EGO_COST , a_change_cost * cost_mulitpliers [0 ],
264265 J_EGO_COST * cost_mulitpliers [1 ]]))
265266 for i in range (N ):
266267 # KRKeegan, decreased timescale to .5s since Toyota lag is set to .3s
267- W [4 ,4 ] = A_CHANGE_COST * cost_mulitpliers [0 ] * np .interp (T_IDXS [i ], [0.0 , 0.5 , 2.0 ], [1.0 , 1.0 , 0.0 ])
268+ W [4 ,4 ] = a_change_cost * cost_mulitpliers [0 ] * np .interp (T_IDXS [i ], [0.0 , 0.5 , 2.0 ], [1.0 , 1.0 , 0.0 ])
268269 self .solver .cost_set (i , 'W' , W )
269270 # Setting the slice without the copy make the array not contiguous,
270271 # causing issues with the C interface.
@@ -345,11 +346,10 @@ def update_TF(self, carstate):
345346 else :
346347 self .desired_TF = T_FOLLOW
347348
348- def update (self , carstate , radarstate , v_cruise , prev_accel_constraint = False ):
349+ def update (self , carstate , radarstate , v_cruise ):
349350 self .update_TF (carstate )
350351 self .set_weights ()
351352 v_ego = self .x0 [1 ]
352- a_ego = self .x0 [2 ]
353353 self .status = radarstate .leadOne .status or radarstate .leadTwo .status
354354
355355 lead_xv_0 = self .process_lead (radarstate .leadOne )
@@ -377,10 +377,7 @@ def update(self, carstate, radarstate, v_cruise, prev_accel_constraint=False):
377377 x_obstacles = np .column_stack ([lead_0_obstacle , lead_1_obstacle , cruise_obstacle ])
378378 self .source = SOURCES [np .argmin (x_obstacles [0 ])]
379379 self .params [:,2 ] = np .min (x_obstacles , axis = 1 )
380- if prev_accel_constraint :
381- self .params [:,3 ] = np .copy (self .prev_a )
382- else :
383- self .params [:,3 ] = a_ego
380+ self .params [:,3 ] = np .copy (self .prev_a )
384381 self .params [:,4 ] = self .desired_TF
385382
386383 self .run ()
0 commit comments