| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -255,9 +255,6 @@ class LongitudinalMpc: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    elif self.mode == 'blended': | 
					 | 
					 | 
					 | 
					    elif self.mode == 'blended': | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      cost_weights = [0., 0.2, 0.25, 1.0, 0.0, 1.0] | 
					 | 
					 | 
					 | 
					      cost_weights = [0., 0.2, 0.25, 1.0, 0.0, 1.0] | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      constraint_cost_weights = [LIMIT_COST, LIMIT_COST, LIMIT_COST, 50.0] | 
					 | 
					 | 
					 | 
					      constraint_cost_weights = [LIMIT_COST, LIMIT_COST, LIMIT_COST, 50.0] | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    elif self.mode == 'e2e': | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      cost_weights = [0., 0.2, 0.25, 1., 0.0, .1] | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      constraint_cost_weights = [LIMIT_COST, LIMIT_COST, LIMIT_COST, 0.0] | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    else: | 
					 | 
					 | 
					 | 
					    else: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      raise NotImplementedError(f'Planner mode {self.mode} not recognized in planner cost set') | 
					 | 
					 | 
					 | 
					      raise NotImplementedError(f'Planner mode {self.mode} not recognized in planner cost set') | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.set_cost_weights(cost_weights, constraint_cost_weights) | 
					 | 
					 | 
					 | 
					    self.set_cost_weights(cost_weights, constraint_cost_weights) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -386,28 +383,6 @@ class LongitudinalMpc: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					         (lead_1_obstacle[0] - lead_0_obstacle[0]): | 
					 | 
					 | 
					 | 
					         (lead_1_obstacle[0] - lead_0_obstacle[0]): | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        self.source = 'lead1' | 
					 | 
					 | 
					 | 
					        self.source = 'lead1' | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  def update_with_xva(self, x, v, a): | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.params[:,0] = -10. | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.params[:,1] = 10. | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.params[:,2] = 1e5 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.params[:,4] = T_FOLLOW | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.params[:,5] = LEAD_DANGER_FACTOR | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    # v, and a are in local frame, but x is wrt the x[0] position | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    # In >90degree turns, x goes to 0 (and may even be -ve) | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    # So, we use integral(v) + x[0] to obtain the forward-distance | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    xforward = ((v[1:] + v[:-1]) / 2) * (T_IDXS[1:] - T_IDXS[:-1]) | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    x = np.cumsum(np.insert(xforward, 0, x[0])) | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.yref[:,1] = x | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.yref[:,2] = v | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.yref[:,3] = a | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    for i in range(N): | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      self.solver.cost_set(i, "yref", self.yref[i]) | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.solver.cost_set(N, "yref", self.yref[N][:COST_E_DIM]) | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.params[:,3] = np.copy(self.prev_a) | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    self.run() | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  def run(self): | 
					 | 
					 | 
					 | 
					  def run(self): | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    # t0 = sec_since_boot() | 
					 | 
					 | 
					 | 
					    # t0 = sec_since_boot() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    # reset = 0 | 
					 | 
					 | 
					 | 
					    # reset = 0 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |