timestamp = start_time + timedelta(seconds=k) for truth in truths: try: truth_state = truth[timestamp] except IndexError: # This truth not alive at this time. Skip this iteration of the for loop. continue # Generate actual detection from the state with a 10% chance that no detection is received. if np.random.rand() <= probability_detection: # Generate actual detection from the state measurement = measurement_model.function(truth_state, noise=True) measurement_set.add( TrueDetection(state_vector=measurement, groundtruth_path=truth, timestamp=truth_state.timestamp, measurement_model=measurement_model)) # Generate clutter at this time-step for _ in range(np.random.poisson(clutter_rate)): x = uniform.rvs(-100, 200) y = uniform.rvs(-100, 200) measurement_set.add( Clutter(np.array([[x], [y]]), timestamp=timestamp, measurement_model=measurement_model)) all_measurements.append(measurement_set) # Plot true detections and clutter. plotter.plot_measurements(all_measurements, [0, 2], color='g')
mapping=(0, 2), noise_covar=np.array([[0.75, 0], [0, 0.75]])) prob_detect = 0.9 # 90% chance of detection. for k in range(20): measurement_set = set() for truth in truths: # Generate actual detection from the state with a 10% chance that no detection is received. if np.random.rand() <= prob_detect: measurement = measurement_model.function(truth[k], noise=True) measurement_set.add( TrueDetection(state_vector=measurement, groundtruth_path=truth, timestamp=truth[k].timestamp)) # Generate clutter at this time-step truth_x = truth[k].state_vector[0] truth_y = truth[k].state_vector[2] for _ in range(np.random.randint(10)): x = uniform.rvs(truth_x - 10, 20) y = uniform.rvs(truth_y - 10, 20) measurement_set.add( Clutter(np.array([[x], [y]]), timestamp=truth[k].timestamp)) all_measurements.append(measurement_set) # Plot measurements. for set_ in all_measurements: # Plot actual detections.