Ejemplo n.º 1
0
def generate_scenario():
    time = np.arange(0, t_max, sample_time, dtype=float)
    radar = autosim.SquareRadar(radar_range, clutter_density, PD,
                                measurement_covariance)
    measurements_clutter = [
        radar.generate_clutter_measurements(timestamp) for timestamp in time
    ]
    target_measurements, true_target = generate_target(time, radar)
    measurements_all = []
    for k, measurement in enumerate(target_measurements):
        measurements_all.append(measurements_clutter[k].union(measurement))
    return true_target, measurements_all, time
Ejemplo n.º 2
0
def generate_scenario(targets=target_mmsi, tmax=540):
    time = np.arange(0, tmax, 3, dtype=float)
    radar = autosim.SquareRadar(radar_range, clutter_density, PD_high, measurement_covariance)
    true_targets = dict()
    true_detectability_mode = dict()
    measurements_all = generate_clutter(time, radar)
    for mmsi in targets:
        target_measurements, target_state, detectability_state = generate_target(time, mmsi, radar)
        true_targets[mmsi] = target_state
        true_detectability_mode[mmsi] = detectability_state
        for k, measurement in enumerate(target_measurements):
            measurements_all[k] = measurements_all[k].union(measurement)
    return true_targets, true_detectability_mode, measurements_all, time
def generate_scenario():
    time = np.arange(0, t_max, sample_time, dtype=float)
    radar = autosim.SquareRadar(radar_range, clutter_density, PD_high,
                                measurement_covariance_matrix)
    measurements_clutter = generate_clutter(time, radar)
    target_measurements, target_state, detectability_state, existence_state = generate_target(
        time, radar)
    true_target = target_state
    true_detectability_mode = detectability_state
    true_existence = existence_state
    measurements_all = []
    for k, measurement in enumerate(target_measurements):
        measurements_all.append(measurements_clutter[k].union(measurement))
    return true_target, true_detectability_mode, true_existence, measurements_clutter, measurements_all, time
Ejemplo n.º 4
0
def setup_radar():
    radar_range = 500
    clutter_density = 5e-5
    high_clutter_density = 2e-4
    P_D = 0.9
    R = 7.**2 * np.identity(2)
    radar = autosim.SquareRadar(radar_range,
                                clutter_density,
                                detection_probability=P_D,
                                measurement_covariance=R)
    clutter_map = autoclutter.GeometricClutterMap(-radar_range, radar_range,
                                                  -radar_range, radar_range,
                                                  clutter_density)
    high_density_region = autoclutter.SquareRegion(
        high_clutter_density, [[-radar_range, -radar_range], [0, -radar_range],
                               [0, 0], [-radar_range, 0]])
    clutter_map.add_region(high_density_region)
    radar.add_clutter_map(clutter_map)
    return radar
Ejemplo n.º 5
0
p11 = 0.98          # Survival probability
p21 = 0             # Probability of birth
P_Markov = np.array([[p11, 1 - p11], [p21, 1 - p21]])
initiate_thresh = 0.99
terminate_thresh = 0.10
# MofN
N_test = 6
M_req = 4
N_terminate = 3

c1 = 15
c2 = 25

# Set up tracking system
v_max = 10*dt
radar = simulation.SquareRadar(radar_range, clutter_density, P_D, R)
gate = tracking.TrackGate(P_G, v_max)
target_model = tracking.DWNAModel(q)

PDAF_tracker = tracking.PDAFTracker(P_D, target_model, gate)
M_of_N = track_initiation.MOfNInitiation(M_req, N_test, PDAF_tracker, gate)

N_timesteps = 20
grid_density = 50
# true_clutter_map = clutter_maps.GeometricClutterMap(-radar_range, radar_range, -radar_range, radar_range, clutter_density)
# true_clutter_map = clutter_maps.nonuniform_musicki_map()
# true_clutter_map = clutter_maps.nonuniform_test_map(radar_range)
true_clutter_map = test_scenario.clutter_testing_map()
classic_clutter_map = clutter_maps.ClassicClutterMap.from_geometric_map(true_clutter_map, grid_density, N_timesteps)
spatial_clutter_map = clutter_maps.SpatialClutterMap.from_geometric_map(true_clutter_map, grid_density, N_timesteps)
temporal_clutter_map = clutter_maps.TemporalClutterMap.from_geometric_map(true_clutter_map, grid_density, N_timesteps)
Ejemplo n.º 6
0
def false_tracks(P_D, target_model, gate, M_req, N_test, N_terminate,
                 initiate_thresh, terminate_thresh, P_Markov, radar_range, R,
                 time):
    print('Starting false tracks analysis')
    clutter_MofN = dict()
    clutter_IPDA = dict()
    clut_arr = [4e-5, 3.5e-5, 3e-5, 2.5e-5, 2e-5, 1.5e-5, 1e-5, 5e-6]
    for method in range(2):
        clut_it = -1
        for run in range(len(clut_arr)):
            # Run tracking
            if method == 0:
                PDAF_tracker = tracking.PDAFTracker(P_D, target_model, gate)
                M_of_N = track_initiation.MOfNInitiation(
                    M_req, N_test, PDAF_tracker, gate)
                track_termination = tracking.TrackTerminatorMofN(N_terminate)
                track_manager = tracking.Manager(PDAF_tracker, M_of_N,
                                                 track_termination)
            else:
                IPDAF_tracker = tracking.IPDAFTracker(P_D, target_model, gate,
                                                      P_Markov, gate.gamma)
                IPDAInitiation = track_initiation.IPDAInitiation(
                    initiate_thresh, terminate_thresh, IPDAF_tracker, gate)
                track_termination = tracking.TrackTerminatorIPDA(
                    terminate_thresh)
                track_manager = tracking.Manager(IPDAF_tracker, IPDAInitiation,
                                                 track_termination)

            clut_it += 1
            clutter_density = clut_arr[clut_it]
            print(clutter_density)
            radar = simulation.SquareRadar(radar_range, clutter_density, P_D,
                                           R)
            for k, timestamp in enumerate(time):
                measurements = radar.generate_clutter_measurements(timestamp)
                track_manager.step(measurements, timestamp)
                if k % 50 == 0:
                    print(len(track_manager.track_file))
            if method == 0:
                clutter_MofN[clutter_density] = len(track_manager.track_file)
            else:
                clutter_IPDA[clutter_density] = len(track_manager.track_file)

    list_MofN = sorted(clutter_MofN.items())
    list_IPDA = sorted(clutter_IPDA.items())
    xMofN, yMofN = zip(*list_MofN)
    xIPDA, yIPDA = zip(*list_IPDA)

    str_out = ('Densities IPDA: ' + str(xIPDA) + '\n\nFalse tracks IPDA: ' +
               str(yIPDA) + '\n\nDensities MofN: ' + str(xMofN) +
               '\n\nFalse tracks MofN: ' + str(yMofN))

    with codecs.open('./Results/{}.txt'.format('false_tracks_sim'), 'wt',
                     'utf-8') as file:
        file.write(str_out)

    # Plot
    fig, ax = visualization.setup_plot(None)
    plt.semilogy(xMofN, yMofN, '--', label='M of N')
    plt.semilogy(xIPDA, yIPDA, label='IPDA')
    ax.set_title('False tracks detected over 1000 scans')
    ax.set_xlabel('Clutter density')
    ax.set_ylabel('False tracks detected')
    plt.ticklabel_format(style='sci', axis='x', scilimits=(0, 0))
    ax.legend()