def main(): print("Input custom string?") run = pda.PDA() answer = input("Type 'Y' or 'N': ").upper() if answer == 'Y': while answer == 'Y': print("This program accepts a string input for a pushdown automata") string = input("String input (don't forget the '$'): ").lower() run.pushdown(string) print('\n New string input?') answer = input("Type 'Y' or 'N': ").upper() else: print("Here are some example strings:") input_strings = [] for i in range(1, 11): input_strings.append('a'*i+'b'*i+'$') for t in input_strings: run.pushdown(t)
clutter_intensity = 4 / (4000 * 4000) gate_size = 5 useTurnRateModel = True if useTurnRateModel: sigma_a = 4 # works really well with sigma_omega = 0.1 dynamic_model = dynamicmodels.ConstantTurnrate(sigma_a, sigma_omega) else: # constant velocity model sigma_a = 2 dynamic_model = dynamicmodels.WhitenoiseAccelleration(sigma_a, n=5) measurement_model = measurementmodels.CartesianPosition(sigma_z, state_dim=5) ekf_filter = ekf.EKF(dynamic_model, measurement_model) tracker = pda.PDA(ekf_filter, clutter_intensity, PD, gate_size) # allocate NEES = np.zeros(K) NEESpos = np.zeros(K) NEESvel = np.zeros(K) # initialize x_bar_init = np.array([7100, 3620, 0, 0, 0]) P_bar_init = np.diag([40, 40, 10, 10, 0.1])**2 #init_state = tracker.init_filter_state({"mean": x_bar_init, "cov": P_bar_init}) init_state = GaussParams(x_bar_init, P_bar_init) tracker_update = init_state
# make model measurement_model = measurementmodels.CartesianPosition(sigma_z, state_dim=5) dynamic_models: List[dynamicmodels.DynamicModel] = [] dynamic_models.append(dynamicmodels.WhitenoiseAccelleration(sigma_a_CV, n=5)) dynamic_models.append(dynamicmodels.ConstantTurnrate(sigma_a_CT, sigma_omega)) <<<<<<< Updated upstream dynamic_models.append(dynamicmodels.WhitenoiseAccelleration(sigma_a_CV_H, n=5)) ekf_filters = [] ekf_filters.append(ekf.EKF(dynamic_models[0], measurement_model)) ekf_filters.append(ekf.EKF(dynamic_models[1], measurement_model)) imm_filter1 = imm.IMM(ekf_filters, PI1) ekf_filters.append(ekf.EKF(dynamic_models[2], measurement_model)) imm_filter2 = imm.IMM(ekf_filters, PI2) tracker1 = pda.PDA(imm_filter1, clutter_intensity, PD, gate_size) tracker2 = pda.PDA(imm_filter2, clutter_intensity, PD, gate_size) ======= dynamic_models.append(dynamicmodels.WhitenoiseAccelleration(sigma_a_CV_HIGH, n=5)) #ADDED AV NADIA!!! ekf_filters1 = [] ekf_filters1.append(ekf.EKF(dynamic_models[0], measurement_model)) ekf_filters1.append(ekf.EKF(dynamic_models[1], measurement_model)) imm_filter1 = imm.IMM(ekf_filters, PI) #CV, CT and CV_high PI2 = tunes... (?????) ekf_filters2 = [] ekf_filters2.append(ekf.EKF(dynamic_models[0], measurement_model)) ekf_filters2.append(ekf.EKF(dynamic_models[1], measurement_model))
mean_init = Xgt[0] mean_init = np.append(mean_init, 0.1) cov_init = np.diag([sigma_z, sigma_z, 3, 3, 0.1]) ** 2 # make model measurement_model = measurementmodels.CartesianPosition(sigma_z, state_dim=5) dynamic_models: List[dynamicmodels.DynamicModel] = [] dynamic_models.append(dynamicmodels.WhitenoiseAccelleration(sigma_a_CV, n=5)) dynamic_models.append(dynamicmodels.ConstantTurnrate(sigma_a_CT, sigma_omega)) ekf_filters = [] ekf_filters.append(ekf.EKF(dynamic_models[0], measurement_model)) ekf_filters.append(ekf.EKF(dynamic_models[1], measurement_model)) trackers = [] trackers.append(pda.PDA(ekf_filters[0], clutter_intensity, PD, gate_size)) # EKF CV trackers.append(pda.PDA(ekf_filters[1], clutter_intensity, PD, gate_size)) # EKF CT names = ["CV_EKF", "CT_EKF"] init_ekf_state = GaussParams(mean_init, cov_init) # init_imm_pda_state = tracker.init_filter_state(init_ekf_state) NEES = np.zeros(K) NEESpos = np.zeros(K) NEESvel = np.zeros(K) tracker_update_init = [init_ekf_state, init_ekf_state] tracker_update_list = np.empty((len(trackers), len(Xgt)), dtype=MixtureParameters) tracker_predict_list = np.empty((len(trackers), len(Xgt)), dtype=MixtureParameters) tracker_estimate_list = np.empty((len(trackers), len(Xgt)), dtype=MixtureParameters)