def step(self, carstate: State, command: Command):

        if self.front_stuck > 15:
            d = min(carstate.distances_from_edge)
            command.accelerator = max(0, min(1, 1.3 - 0.7 * d))
            command.gear = -1
            command.brake = 0.0
            command.clutch = 0.0
            command.steering = -1 * carstate.angle * np.pi / (180.0 * 0.785398)
        else:

            if carstate.speed_x < 3:
                command.gear = 1
            if carstate.rpm > 8000:
                command.gear = min(6, command.gear + 1)
            if carstate.rpm < 2500:
                command.gear = command.gear - 1
            if command.gear <= 0:
                command.gear = 1

            command.accelerator = 1
            command.gear = 1 if carstate.gear <= 0 else carstate.gear
            command.brake = 0.0
            command.clutch = 0.0
            command.steering = carstate.angle * np.pi / (180.0 * 0.785398)
            command.steering -= 0.35 * np.sign(
                carstate.distance_from_center) * min(
                    1.5, math.fabs(carstate.distance_from_center))

        return True
    def step(self, carstate: State, command: Command):
        command.accelerator = min(
            1, (carstate.distance_from_center -
                0.2)**4)  #2 - min(carstate.distances_from_edge)
        command.gear = -1
        command.brake = 0.0
        command.clutch = 0.0
        command.steering = -1 * carstate.angle * np.pi / (180.0 *
                                                          0.785398) * 1.5

        return True