Exemple #1
0
 def long_pid_control(self, next_waypoint: Transform,
                      control: VehicleControl):
     dist_to_car = next_waypoint.location.z
     if dist_to_car < self.distance_to_keep:
         self.logger.info("TOO CLOSE BRAKING!")
         control.brake = True
         control.throttle = 0
     else:
         error = dist_to_car - self.distance_to_keep
         error_dt = 0 if len(self.long_error_queue
                             ) == 0 else error - self.long_error_queue[-1]
         self.long_error_queue.append(error)
         error_it = sum(self.long_error_queue)
         e_p = self.lon_kp * error
         e_d = self.lon_kd * error_dt
         e_i = self.lon_ki * error_it
         long_control = np.clip(e_p + e_d + e_i, -1, self.max_throttle)
         control.throttle = long_control
 def long_pid_control(self, next_waypoint, control: VehicleControl):
     self_point = self.agent.vehicle.transform.to_array()
     target_point = next_waypoint.location.to_array()
     x_diff = target_point[0] - self_point[0]
     y_diff = target_point[1] - self_point[1]
     z_diff = target_point[2] - self_point[2]
     dist_to_car = math.sqrt(x_diff * x_diff + z_diff * z_diff)
     if dist_to_car < self.distance_to_keep:
         self.logger.info(
             f"TOO CLOSE BRAKING! dist_to_car: {dist_to_car} < self.distance_to_keep:{self.distance_to_keep}"
         )
         control.brake = True
         control.throttle = 0
     else:
         error = dist_to_car - self.distance_to_keep
         error_dt = 0 if len(self.long_error_queue
                             ) == 0 else error - self.long_error_queue[-1]
         self.long_error_queue.append(error)
         error_it = sum(self.long_error_queue)
         e_p = self.lon_kp * error
         e_d = self.lon_kd * error_dt
         e_i = self.lon_ki * error_it
         long_control = np.clip(e_p + e_d + e_i, -1, self.max_throttle)
         control.throttle = long_control