예제 #1
0
 def run_step(self) -> float:
     return float(
         VehicleControl.clamp(
             self.kp * (self.target_speed - Vehicle.get_speed(self.agent.vehicle)), 0,
             1
         )
     )
예제 #2
0
 def run_step(self, next_waypoint: Transform) -> float:
     target_y = next_waypoint.location.y
     target_x = next_waypoint.location.x
     angle_difference = math.atan2(
         target_y - self.agent.vehicle.transform.location.y,
         target_x - self.agent.vehicle.transform.location.x,
     ) - np.radians(self.agent.vehicle.transform.rotation.yaw)
     curr_look_forward = (self.look_ahead_gain *
                          Vehicle.get_speed(vehicle=self.agent.vehicle) +
                          self.look_ahead_distance)
     lateral_difference = math.atan2(
         2.0 * self.agent.vehicle.wheel_base * math.sin(angle_difference) /
         curr_look_forward,
         1.0,
     )
     return VehicleControl.clamp(lateral_difference, -1, 1)