Example #1
0
    def _get_vehicle_features(self):
        t = self.vehicle.get_transform()
        control = self.vehicle.get_control()

        imu_sensor = self.sensors['imu']
        gyroscope = imu_sensor.gyroscope
        accelerometer = imu_sensor.accelerometer

        return [
            env_utils.speed(self.vehicle),
            control.gear,
            control.steer,
            control.throttle,
            control.brake,
            # Accelerometer:
            accelerometer[0],
            accelerometer[1],
            accelerometer[2],
            # Gyroscope:
            gyroscope[0],
            gyroscope[1],
            gyroscope[2],
            # Location
            t.location.x,
            t.location.y,
            # Compass:
            math.radians(imu_sensor.compass)]
Example #2
0
    def reward(self, actions, time_cost=-1.0, a=2.0):
        """An example reward function. Subclass to define your own."""
        speed = env_utils.speed(self.vehicle)
        speed_limit = self.vehicle.get_speed_limit()

        if speed <= speed_limit:
            speed_penalty = 0.0
        else:
            speed_penalty = a * (speed_limit - speed)

        return time_cost - self.collision_penalty + speed_penalty
Example #3
0
 def debug_text(self, actions):
     return ['%d FPS' % self.clock.get_fps(),
             '',
             'Throttle: %.2f' % self.control.throttle,
             'Steer: %.2f' % self.control.steer,
             'Brake: %.2f' % self.control.brake,
             'Reverse: %s' % ('T' if self.control.reverse else 'F'),
             'Hand brake: %s' % ('T' if self.control.hand_brake else 'F'),
             'Gear: %s' % {-1: 'R', 0: 'N'}.get(self.control.gear),
             '',
             'Speed %.1f km/h' % env_utils.speed(self.vehicle),
             'Speed limit %.1f km/h' % self.vehicle.get_speed_limit(),
             '',
             'Reward: %.2f' % self.reward(actions),
             'Collision penalty: %.2f' % self.collision_penalty]