def test_interpolated_collision(self):
        # Get test data
        user = User.objects.create_user('testuser', '*****@*****.**',
                                        'testpass')
        user.save()
        utm = distance.proj_utm(zone=18, north=True)
        (obst_rad, obst_speed, obst_pos, log_details) = TESTDATA_MOVOBST_INTERP
        # Create the obstacle
        obst = MovingObstacle()
        obst.speed_avg = obst_speed
        obst.sphere_radius = obst_rad
        obst.save()
        for pos_id in xrange(len(obst_pos)):
            (lat, lon, alt) = obst_pos[pos_id]
            gpos = GpsPosition()
            gpos.latitude = lat
            gpos.longitude = lon
            gpos.save()
            apos = AerialPosition()
            apos.gps_position = gpos
            apos.altitude_msl = alt
            apos.save()
            wpt = Waypoint()
            wpt.order = pos_id
            wpt.position = apos
            wpt.save()
            obst.waypoints.add(wpt)
        obst.save()

        for (inside, log_list) in log_details:
            logs = []
            for i in range(len(log_list)):
                lat, lon, alt = log_list[i]
                pos = GpsPosition()
                pos.latitude = lat
                pos.longitude = lon
                pos.save()
                apos = AerialPosition()
                apos.altitude_msl = alt
                apos.gps_position = pos
                apos.save()
                log = UasTelemetry()
                log.user = user
                log.uas_position = apos
                log.uas_heading = 0
                log.save()
                if i == 0:
                    log.timestamp = timezone.now().replace(year=1970,
                                                           month=1,
                                                           day=1,
                                                           hour=0,
                                                           minute=0,
                                                           second=0,
                                                           microsecond=0)
                if i > 0:
                    log.timestamp = (
                        logs[i - 1].timestamp + datetime.timedelta(seconds=1))
                logs.append(log)
            self.assertEqual(
                obst.determine_interpolated_collision(logs[0], logs[1], utm),
                inside)
Example #2
0
    def test_interpolated_collision(self):
        # Get test data
        user = User.objects.create_user('testuser', '*****@*****.**',
                                        'testpass')
        user.save()
        utm = distance.proj_utm(zone=18, north=True)
        (obst_rad, obst_speed, obst_pos, log_details) = TESTDATA_MOVOBST_INTERP
        # Create the obstacle
        obst = MovingObstacle()
        obst.speed_avg = obst_speed
        obst.sphere_radius = obst_rad
        obst.save()
        for pos_id in xrange(len(obst_pos)):
            (lat, lon, alt) = obst_pos[pos_id]
            gpos = GpsPosition()
            gpos.latitude = lat
            gpos.longitude = lon
            gpos.save()
            apos = AerialPosition()
            apos.gps_position = gpos
            apos.altitude_msl = alt
            apos.save()
            wpt = Waypoint()
            wpt.order = pos_id
            wpt.position = apos
            wpt.save()
            obst.waypoints.add(wpt)
        obst.save()

        for (inside, log_list) in log_details:
            logs = []
            for i in range(len(log_list)):
                lat, lon, alt = log_list[i]
                pos = GpsPosition()
                pos.latitude = lat
                pos.longitude = lon
                pos.save()
                apos = AerialPosition()
                apos.altitude_msl = alt
                apos.gps_position = pos
                apos.save()
                log = UasTelemetry()
                log.user = user
                log.uas_position = apos
                log.uas_heading = 0
                log.save()
                if i == 0:
                    log.timestamp = timezone.now().replace(year=1970,
                                                           month=1,
                                                           day=1,
                                                           hour=0,
                                                           minute=0,
                                                           second=0,
                                                           microsecond=0)
                if i > 0:
                    log.timestamp = (logs[i - 1].timestamp +
                                     datetime.timedelta(seconds=1))
                logs.append(log)
            self.assertEqual(
                obst.determine_interpolated_collision(logs[0], logs[1], utm),
                inside)