コード例 #1
0
    def test_objects(self):
        """Test the object scoring."""
        objects = self.eval.score.object

        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0.4, objects.characteristics)
        self.assertAlmostEqual(0.4, objects.geolocation)
        self.assertAlmostEqual(0.5, objects.actionable)
        self.assertAlmostEqual(0.5, objects.autonomy)
        self.assertAlmostEqual(0.1, objects.extra_object_penalty)
        self.assertAlmostEqual(0.46, objects.score_ratio)
コード例 #2
0
    def test_objects(self):
        """Test the object scoring."""
        objects = self.eval.score.object

        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0.4, objects.characteristics)
        self.assertAlmostEqual(0.4, objects.geolocation)
        self.assertAlmostEqual(0.5, objects.actionable)
        self.assertAlmostEqual(0.5, objects.autonomy)
        self.assertAlmostEqual(0.5, objects.interoperability)
        self.assertAlmostEqual(0.1, objects.extra_object_penalty)
        self.assertAlmostEqual(0.46, objects.score_ratio)
コード例 #3
0
    def test_timeline(self):
        """Test the timeline scoring."""
        judge = self.eval.feedback.judge
        timeline = self.eval.score.timeline

        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0.93333333, timeline.mission_time)
        self.assertAlmostEqual(0, timeline.mission_penalty)
        self.assertAlmostEqual(0, timeline.timeout)
        self.assertAlmostEqual(0.74666666666, timeline.score_ratio)

        judge.flight_time_sec = 60 * 20
        judge.post_process_time_sec = 0
        judge.used_timeout = False
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(1, timeline.mission_time)
        self.assertAlmostEqual(0, timeline.mission_penalty)
        self.assertAlmostEqual(1, timeline.timeout)
        self.assertAlmostEqual(1, timeline.score_ratio)

        judge.flight_time_sec = 60 * 25
        judge.post_process_time_sec = 60 * 5
        judge.used_timeout = True
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0.5, timeline.mission_time)
        self.assertAlmostEqual(0, timeline.mission_penalty)
        self.assertAlmostEqual(0, timeline.timeout)
        self.assertAlmostEqual(0.4, timeline.score_ratio)

        judge.flight_time_sec = 60 * 30
        judge.post_process_time_sec = 60 * 10
        judge.used_timeout = True
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0, timeline.mission_time)
        self.assertAlmostEqual(0, timeline.mission_penalty)
        self.assertAlmostEqual(0, timeline.timeout)
        self.assertAlmostEqual(0, timeline.score_ratio)

        judge.flight_time_sec = 60 * 35
        judge.post_process_time_sec = 60 * 20
        judge.used_timeout = True
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0, timeline.mission_time)
        self.assertAlmostEqual(27, timeline.mission_penalty)
        self.assertAlmostEqual(0, timeline.timeout)
        self.assertAlmostEqual(-27, timeline.score_ratio)
コード例 #4
0
    def test_timeline(self):
        """Test the timeline scoring."""
        judge = self.eval.feedback.judge
        timeline = self.eval.score.timeline

        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0.84888889, timeline.mission_time)
        self.assertAlmostEqual(0, timeline.mission_penalty)
        self.assertAlmostEqual(0, timeline.timeout)
        self.assertAlmostEqual(0.67911111, timeline.score_ratio)

        judge.flight_time_sec = 60 * 50
        judge.used_timeout = False
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0.0, timeline.mission_time)
        self.assertAlmostEqual(4.32, timeline.mission_penalty)
        self.assertAlmostEqual(1, timeline.timeout)
        self.assertAlmostEqual(-4.12, timeline.score_ratio)
コード例 #5
0
    def test_timeline(self):
        """Test the timeline scoring."""
        judge = self.eval.feedback.judge
        timeline = self.eval.score.timeline

        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0.84888889, timeline.mission_time)
        self.assertAlmostEqual(0, timeline.mission_penalty)
        self.assertAlmostEqual(0, timeline.timeout)
        self.assertAlmostEqual(0.67911111, timeline.score_ratio)

        judge.flight_time_sec = 60 * 50
        judge.used_timeout = False
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0.0, timeline.mission_time)
        self.assertAlmostEqual(4.32, timeline.mission_penalty)
        self.assertAlmostEqual(1, timeline.timeout)
        self.assertAlmostEqual(-4.12, timeline.score_ratio)
コード例 #6
0
    def test_non_negative(self):
        """Test that total score doesn't go negative."""
        self.eval = interop_admin_api_pb2.MissionEvaluation()
        self.eval.team = 'team'
        feedback = self.eval.feedback
        feedback.uas_telemetry_time_max_sec = 100.0
        feedback.uas_telemetry_time_avg_sec = 100.0
        wpt = feedback.waypoints.add()
        wpt.score_ratio = 0
        wpt = feedback.waypoints.add()
        wpt.score_ratio = 0
        obs = feedback.stationary_obstacles.add()
        obs.hit = True
        obs = feedback.stationary_obstacles.add()
        obs.hit = True
        odlcs = feedback.odlc
        odlcs.score_ratio = 0
        odlcs.extra_object_penalty_ratio = 1.0
        t = odlcs.odlcs.add()
        t.score_ratio = 0
        t.classifications_score_ratio = 0
        t.geolocation_score_ratio = 0
        t.actionable_score_ratio = 0
        t.autonomous_score_ratio = 0
        judge = feedback.judge
        judge.flight_time_sec = 60 * 100
        judge.post_process_time_sec = 60 * 100
        judge.used_timeout = True
        judge.min_auto_flight_time = True
        judge.safety_pilot_takeovers = 10
        judge.waypoints_captured = 0
        judge.out_of_bounds = 10
        judge.unsafe_out_of_bounds = 5
        judge.things_fell_off_uas = True
        judge.crashed = False
        judge.air_drop_accuracy = interop_admin_api_pb2.MissionJudgeFeedback.INSUFFICIENT_ACCURACY
        judge.ugv_drove_to_location = False
        judge.operational_excellence_percent = 0

        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0, self.eval.score.score_ratio)
コード例 #7
0
    def test_obstacles(self):
        """Test the obstacle scoring."""
        feedback = self.eval.feedback
        avoid = self.eval.score.obstacle_avoidance

        mission_evaluation.score_team(self.eval)
        self.assertTrue(avoid.telemetry_prerequisite)
        self.assertAlmostEqual(0.5, avoid.stationary_obstacle)
        self.assertAlmostEqual(0, avoid.moving_obstacle)
        self.assertAlmostEqual(0.25, avoid.score_ratio)

        feedback.stationary_obstacles[0].hit = False
        feedback.moving_obstacles[0].hit = False
        mission_evaluation.score_team(self.eval)
        self.assertTrue(avoid.telemetry_prerequisite)
        self.assertAlmostEqual(1, avoid.stationary_obstacle)
        self.assertAlmostEqual(0.5, avoid.moving_obstacle)
        self.assertAlmostEqual(0.75, avoid.score_ratio)

        feedback.uas_telemetry_time_avg_sec = 1.01
        mission_evaluation.score_team(self.eval)
        self.assertFalse(avoid.telemetry_prerequisite)
        self.assertAlmostEqual(0, avoid.stationary_obstacle)
        self.assertAlmostEqual(0, avoid.moving_obstacle)
        self.assertAlmostEqual(0, avoid.score_ratio)
コード例 #8
0
    def test_obstacles(self):
        """Test the obstacle scoring."""
        feedback = self.eval.feedback
        avoid = self.eval.score.obstacle_avoidance

        mission_evaluation.score_team(self.eval)
        self.assertTrue(avoid.telemetry_prerequisite)
        self.assertAlmostEqual(0.5, avoid.stationary_obstacle)
        self.assertAlmostEqual(0, avoid.moving_obstacle)
        self.assertAlmostEqual(0.25, avoid.score_ratio)

        feedback.stationary_obstacles[0].hit = False
        feedback.moving_obstacles[0].hit = False
        mission_evaluation.score_team(self.eval)
        self.assertTrue(avoid.telemetry_prerequisite)
        self.assertAlmostEqual(1, avoid.stationary_obstacle)
        self.assertAlmostEqual(0.5, avoid.moving_obstacle)
        self.assertAlmostEqual(0.75, avoid.score_ratio)

        feedback.uas_telemetry_time_avg_sec = 1.01
        mission_evaluation.score_team(self.eval)
        self.assertFalse(avoid.telemetry_prerequisite)
        self.assertAlmostEqual(0, avoid.stationary_obstacle)
        self.assertAlmostEqual(0, avoid.moving_obstacle)
        self.assertAlmostEqual(0, avoid.score_ratio)
コード例 #9
0
    def test_map(self):
        """Test the map scoring."""
        mf = self.eval.feedback.map
        me = self.eval.score.map

        mf.quality = interop_admin_api_pb2.MapEvaluation.MapQuality.INSUFFICIENT
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0.0, me.score_ratio)

        mf.quality = interop_admin_api_pb2.MapEvaluation.MapQuality.MEDIUM
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0.5, me.score_ratio)

        mf.quality = interop_admin_api_pb2.MapEvaluation.MapQuality.HIGH
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(1.0, me.score_ratio)
コード例 #10
0
    def test_air_delivery(self):
        """Test the air delivery scoring."""
        judge = self.eval.feedback.judge
        air = self.eval.score.air_delivery

        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(50, air.delivery_accuracy)
        self.assertAlmostEqual(0.6666667, air.score_ratio)

        judge.air_delivery_accuracy_ft = 200
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(200, air.delivery_accuracy)
        self.assertAlmostEqual(0, air.score_ratio)

        judge.air_delivery_accuracy_ft = 0
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(1, air.score_ratio)
コード例 #11
0
    def test_air_delivery(self):
        """Test the air delivery scoring."""
        judge = self.eval.feedback.judge
        air = self.eval.score.air_delivery

        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(50, air.delivery_accuracy)
        self.assertAlmostEqual(0.6666667, air.score_ratio)

        judge.air_delivery_accuracy_ft = 200
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(200, air.delivery_accuracy)
        self.assertAlmostEqual(0, air.score_ratio)

        judge.air_delivery_accuracy_ft = 0
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(1, air.score_ratio)
コード例 #12
0
    def test_air_drop(self):
        """Test the air drop scoring."""
        judge = self.eval.feedback.judge
        air = self.eval.score.air_drop

        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0.25, air.drop_accuracy)
        self.assertAlmostEqual(0, air.drive_to_location)
        self.assertAlmostEqual(0.125, air.score_ratio)

        judge.air_drop_accuracy = interop_admin_api_pb2.MissionJudgeFeedback.WITHIN_05_FT
        judge.ugv_drove_to_location = True
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(1, air.drop_accuracy)
        self.assertAlmostEqual(1, air.drive_to_location)
        self.assertAlmostEqual(1, air.score_ratio)

        judge.air_drop_accuracy = interop_admin_api_pb2.MissionJudgeFeedback.WITHIN_15_FT
        judge.ugv_drove_to_location = True
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0.5, air.drop_accuracy)
        self.assertAlmostEqual(1, air.drive_to_location)
        self.assertAlmostEqual(0.75, air.score_ratio)
コード例 #13
0
    def test_autonomous_flight(self):
        """Test the autonomous flight scoring."""
        feedback = self.eval.feedback
        judge = feedback.judge
        flight = self.eval.score.autonomous_flight

        mission_evaluation.score_team(self.eval)
        self.assertTrue(flight.telemetry_prerequisite)
        self.assertAlmostEqual(0.8, flight.flight)
        self.assertAlmostEqual(1, flight.waypoint_capture)
        self.assertAlmostEqual(0.35, flight.waypoint_accuracy)
        self.assertAlmostEqual(0.3, flight.out_of_bounds_penalty)
        self.assertEqual(0, flight.things_fell_off_penalty)
        self.assertEqual(0, flight.crashed_penalty)
        self.assertAlmostEqual(0.295, flight.score_ratio)

        feedback.waypoints[1].score_ratio = 1
        judge.waypoints_captured = 1
        judge.safety_pilot_takeovers = 0
        judge.out_of_bounds = 0
        judge.unsafe_out_of_bounds = 0
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(1, flight.flight)
        self.assertAlmostEqual(0.5, flight.waypoint_capture)
        self.assertAlmostEqual(0.75, flight.waypoint_accuracy)
        self.assertAlmostEqual(0, flight.out_of_bounds_penalty)
        self.assertAlmostEqual(0.825, flight.score_ratio)

        judge.things_fell_off_uas = True
        judge.crashed = True
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0.25, flight.things_fell_off_penalty)
        self.assertAlmostEqual(0.35, flight.crashed_penalty)
        self.assertAlmostEqual(0.225, flight.score_ratio)

        judge.min_auto_flight_time = False
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0, flight.flight)
        judge.flight_time_sec = 0
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0, flight.flight)
        self.assertAlmostEqual(0, self.eval.score.score_ratio)

        feedback.uas_telemetry_time_avg_sec = 2.0
        mission_evaluation.score_team(self.eval)
        self.assertFalse(flight.telemetry_prerequisite)
        self.assertAlmostEqual(0, flight.waypoint_accuracy)
コード例 #14
0
 def test_total(self):
     """Test the total scoring."""
     mission_evaluation.score_team(self.eval)
     self.assertAlmostEqual(0.455077778, self.eval.score.score_ratio)
コード例 #15
0
    def test_operational(self):
        """Test the operational excellence scoring."""
        operational = self.eval.score.operational_excellence

        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0.9, operational.score_ratio)
コード例 #16
0
    def test_autonomous_flight(self):
        """Test the autonomous flight scoring."""
        feedback = self.eval.feedback
        judge = feedback.judge
        flight = self.eval.score.autonomous_flight

        mission_evaluation.score_team(self.eval)
        self.assertTrue(flight.telemetry_prerequisite)
        self.assertAlmostEqual(0.8, flight.flight)
        self.assertAlmostEqual(1, flight.waypoint_capture)
        self.assertAlmostEqual(0.35, flight.waypoint_accuracy)
        self.assertAlmostEqual(0.3, flight.out_of_bounds_penalty)
        self.assertEqual(0, flight.things_fell_off_penalty)
        self.assertEqual(0, flight.crashed_penalty)
        self.assertAlmostEqual(0.295, flight.score_ratio)

        feedback.waypoints[1].score_ratio = 1
        judge.waypoints_captured = 1
        judge.safety_pilot_takeovers = 0
        judge.out_of_bounds = 0
        judge.unsafe_out_of_bounds = 0
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(1, flight.flight)
        self.assertAlmostEqual(0.5, flight.waypoint_capture)
        self.assertAlmostEqual(0.75, flight.waypoint_accuracy)
        self.assertAlmostEqual(0, flight.out_of_bounds_penalty)
        self.assertAlmostEqual(0.825, flight.score_ratio)

        judge.things_fell_off_uas = True
        judge.crashed = True
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0.25, flight.things_fell_off_penalty)
        self.assertAlmostEqual(0.35, flight.crashed_penalty)
        self.assertAlmostEqual(0.225, flight.score_ratio)

        judge.min_auto_flight_time = False
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0, flight.flight)
        judge.flight_time_sec = 0
        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0, flight.flight)
        self.assertAlmostEqual(0, self.eval.score.score_ratio)

        feedback.uas_telemetry_time_avg_sec = 2.0
        mission_evaluation.score_team(self.eval)
        self.assertFalse(flight.telemetry_prerequisite)
        self.assertAlmostEqual(0, flight.waypoint_accuracy)
コード例 #17
0
    def test_operational(self):
        """Test the operational excellence scoring."""
        operational = self.eval.score.operational_excellence

        mission_evaluation.score_team(self.eval)
        self.assertAlmostEqual(0.9, operational.score_ratio)
コード例 #18
0
 def test_total(self):
     """Test the total scoring."""
     mission_evaluation.score_team(self.eval)
     self.assertAlmostEqual(0.455077778, self.eval.score.score_ratio)