diff --git a/CoLo-AT/Algorithm Comparison.pdf b/CoLo-AT/Algorithm Comparison.pdf index be8592ab63d020456462f6a207fa78bf16221817..19257be51e0530e4914cf84d90a705e80fff7465 100644 Binary files a/CoLo-AT/Algorithm Comparison.pdf and b/CoLo-AT/Algorithm Comparison.pdf differ diff --git a/CoLo-AT/data_analysis/__pycache__/data_analyzer.cpython-36.pyc b/CoLo-AT/data_analysis/__pycache__/data_analyzer.cpython-36.pyc index 7c702c1fe6559289fc6ad2a6503301457bd71125..487698deadc7a65695954f9daa06aef9cb606afd 100644 Binary files a/CoLo-AT/data_analysis/__pycache__/data_analyzer.cpython-36.pyc and b/CoLo-AT/data_analysis/__pycache__/data_analyzer.cpython-36.pyc differ diff --git a/CoLo-AT/data_analysis/data_analyzer.py b/CoLo-AT/data_analysis/data_analyzer.py index d1b233b6d10c97d17fc37a6a3cf43cbac14e2116..a6bc95746f241e5cd91553c38bebf06bbc97be71 100644 --- a/CoLo-AT/data_analysis/data_analyzer.py +++ b/CoLo-AT/data_analysis/data_analyzer.py @@ -76,7 +76,7 @@ class Analyzer(): - def calculate_loc_err_and_trace_state_variance_per_run(self, data_recorder, unit_time_interval = 1, plot_graphs = True, selected_labels = None): + def calculate_loc_err_and_trace_state_variance_per_run(self, data_recorder, unit_time_interval = 0.5, plot_graphs = True, selected_labels = None): #recorded_dataline = [time, robot_label, est_x_pos, est_y_pos, trace_state_var, gt_x_pos, gt_y_pos, loc_err, update type] data = data_recorder.get_recorded_data() @@ -143,10 +143,12 @@ class Analyzer(): state_err_per_run.append(state_err_per_time_interval/num_dataline_per_time_iterval) trace_per_run.append(trace_per_time_iterval/num_dataline_per_time_iterval) + + else: - loc_err_per_run.append(0) - state_err_per_run.append(0) - trace_per_run.append(0) + loc_err_per_run.append(loc_err_per_run[-1]) + state_err_per_run.append(state_err_per_run[-1]) + trace_per_run.append(trace_per_run[-1]) lm_measurement_num.append(lm_measurement_count) relative_measurment_num.append(relative_measurement_count) @@ -157,8 +159,9 @@ class Analyzer(): interval_start_time = interval_start_time+unit_time_interval print(data_recorder.name,': ') - print('Avg location deviation errors per run: ', sum(loc_err_per_run)/len(loc_err_per_run)) - print('Avg trace of state variances per run: ', sum(trace_per_run)/len(trace_per_run)) + print('Avg location deviation errors per run: ', np.mean(loc_err_per_run)) + print('Avg state estimation errors per run: ', np.mean(state_err_per_run)) + print('Avg trace of state variances per run: ', np.mean(trace_per_run)) if plot_graphs: self.plot_loc_err_and_trace(loc_err_per_run, trace_per_run, time_arr, operations_distr = [lm_measurement_num, relative_measurment_num, comm_num], recorder_name = recorder_name) diff --git a/CoLo-AT/dataset_manager/__pycache__/simulated_dataset_manager_w.cpython-36.pyc b/CoLo-AT/dataset_manager/__pycache__/simulated_dataset_manager_w.cpython-36.pyc index 35c5604c197dbd43ba397d71f598ccbad8207c35..f2a3c9d7665263c49923681c4c514744357791fd 100644 Binary files a/CoLo-AT/dataset_manager/__pycache__/simulated_dataset_manager_w.cpython-36.pyc and b/CoLo-AT/dataset_manager/__pycache__/simulated_dataset_manager_w.cpython-36.pyc differ diff --git a/CoLo-AT/dataset_manager/simulated_dataset_manager_w.py b/CoLo-AT/dataset_manager/simulated_dataset_manager_w.py index bd0238ae47b672357527b99485efdb6bca3f99ad..007c7d291ffe9b6f75afca5d5e81ede385ba257d 100755 --- a/CoLo-AT/dataset_manager/simulated_dataset_manager_w.py +++ b/CoLo-AT/dataset_manager/simulated_dataset_manager_w.py @@ -211,14 +211,6 @@ class Sim_Dataset_Manager: def dataset_reset(self): - self.start_time = 0 - self.starting_states = {} - self.starting_states[1] = [self.start_time, 0, 5, pi/2] - self.starting_states[2] = [self.start_time, 5, 0, pi] - self.starting_states[3] = [self.start_time, 0, -5, 3*pi/2] - self.starting_states[4] = [self.start_time, 0, 5, 2*pi] - - self.num_robots = len(self.robot_lables) self.measurement_data = [[] for i in range(self.num_robots)] self.odometry_data = [[] for i in range(self.num_robots)] self.groundtruth_data = [[] for i in range(self.num_robots)] diff --git a/CoLo-AT/gs_ci_journal_sim.py b/CoLo-AT/gs_ci_journal_sim.py index 9d4b5c4d9341091d1b8594dc99f8c602ca94197e..ed3498b87dde952c4f200cec0b82f0691b121ca2 100644 --- a/CoLo-AT/gs_ci_journal_sim.py +++ b/CoLo-AT/gs_ci_journal_sim.py @@ -27,7 +27,7 @@ from ekf_gs_sci2 import EKF_GS_SCI2 ############################################################################## -duration = 100 +duration = 150 robot_labels = [1,2,3,4] testing_dataset = Sim_Dataset_Manager('testing') start_time, starting_states, dataset_data, time_arr = testing_dataset.circular_path_4_robots(duration) @@ -65,7 +65,7 @@ robot = RobotSystem('robot', robot_labels, loc_algo, distr_sys = False) sim = SimulationManager('sim cen_ekf') state_recorder_LS_cen = StatesRecorder('LS_cen', robot_labels) sim.sim_process_native(robot_labels, testing_dataset, robot, state_recorder_LS_cen, simple_plot = False) -loc_err_per_run, state_err_per_run, trace_per_run, t_arr = analyzer.calculate_loc_err_and_trace_state_variance_per_run(state_recorder_LS_cen, plot_graphs = False) +loc_err_per_run, state_err_per_run, trace_per_run, t_arr = analyzer.calculate_loc_err_and_trace_state_variance_per_run(state_recorder_LS_cen, plot_graphs = False, selected_labels = [1]) ############################################################################## @@ -76,7 +76,7 @@ robot = RobotSystem('robot', robot_labels, loc_algo, distr_sys = False) sim = SimulationManager('sim ls_bda') state_recorder_LS_BDA = StatesRecorder('LS_BDA', robot_labels) sim.sim_process_native(robot_labels, testing_dataset, robot, state_recorder_LS_BDA, simple_plot = False) -loc_err_per_run, state_err_per_run, trace_per_run, t_arr = analyzer.calculate_loc_err_and_trace_state_variance_per_run(state_recorder_LS_BDA, plot_graphs = False) +loc_err_per_run, state_err_per_run, trace_per_run, t_arr = analyzer.calculate_loc_err_and_trace_state_variance_per_run(state_recorder_LS_BDA, plot_graphs = False, selected_labels = [1]) ############################################################################## @@ -88,7 +88,7 @@ robot = RobotSystem('robot', robot_labels, loc_algo, distr_sys = False) sim = SimulationManager('sim ls_ci') state_recorder_LS_CI = StatesRecorder('LS_CI', robot_labels) sim.sim_process_native(robot_labels, testing_dataset, robot, state_recorder_LS_CI, simple_plot = False) -loc_err_per_run, state_err_per_run, trace_per_run, t_arr = analyzer.calculate_loc_err_and_trace_state_variance_per_run(state_recorder_LS_CI, plot_graphs = False) +loc_err_per_run, state_err_per_run_ls_ci, trace_per_run, t_arr = analyzer.calculate_loc_err_and_trace_state_variance_per_run(state_recorder_LS_CI, plot_graphs = False, selected_labels = [1]) ############################################################################## @@ -99,7 +99,7 @@ robot = RobotSystem('robot', robot_labels, loc_algo, distr_sys = True) sim = SimulationManager('sim gs_sci') state_recorder_GS_SCI = StatesRecorder('GS_SCI', robot_labels) sim.sim_process_native(robot_labels, testing_dataset, robot, state_recorder_GS_SCI, simple_plot = False) -loc_err_per_run, state_err_per_run, trace_per_run, t_arr = analyzer.calculate_loc_err_and_trace_state_variance_per_run(state_recorder_GS_SCI, plot_graphs = False) +loc_err_per_run, state_err_per_run_sci, trace_per_run, t_arr = analyzer.calculate_loc_err_and_trace_state_variance_per_run(state_recorder_GS_SCI, plot_graphs = False, selected_labels = [1]) analyzer.algos_comparison([state_recorder, state_recorder_LS_cen, state_recorder_LS_BDA, state_recorder_LS_CI, state_recorder_GS_SCI, state_recorder_bound], only_trace = ['gs_ci_bound'], selected_labels = [1]) diff --git a/CoLo-AT/localization_algos/__pycache__/ekf_gs_sci2.cpython-36.pyc b/CoLo-AT/localization_algos/__pycache__/ekf_gs_sci2.cpython-36.pyc index c8abb3b50d3e7bbaa105b4b78ae49a4178137b74..a52f11c5e0e8030a79269ec134d0f7da2a092452 100644 Binary files a/CoLo-AT/localization_algos/__pycache__/ekf_gs_sci2.cpython-36.pyc and b/CoLo-AT/localization_algos/__pycache__/ekf_gs_sci2.cpython-36.pyc differ diff --git a/CoLo-AT/localization_algos/ekf_gs_sci2.py b/CoLo-AT/localization_algos/ekf_gs_sci2.py index e95628a36278dbd6abed15734b8396d233059e55..7bfb64e3feb49bb364ac4113204f425ce51a0b67 100644 --- a/CoLo-AT/localization_algos/ekf_gs_sci2.py +++ b/CoLo-AT/localization_algos/ekf_gs_sci2.py @@ -30,7 +30,7 @@ class EKF_GS_SCI2(ekf_algo_framework): [measurement_data, sensor_covariance] = sensor_data sigma_odo = sensor_covariance - var_v = 0.1 + var_v = 0.25 num_robots = int(len(s)/2) delta_t = measurement_data[0] @@ -108,7 +108,6 @@ class EKF_GS_SCI2(ekf_algo_framework): kalman_gain = total_sigma*H.getT()*sigma_invention.getI() s = s + kalman_gain*(z - z_hat) - total_sigma = total_sigma - kalman_gain*H*total_sigma i_mtx = np.identity(num_robots*2) sigma_i = (i_mtx - kalman_gain*H) * sigma_i * (i_mtx.copy() - kalman_gain*H).getT() + kalman_gain * sigma_z * kalman_gain.getT() @@ -197,7 +196,7 @@ class EKF_GS_SCI2(ekf_algo_framework): [comm_robot_s, orinetations, comm_robot_sigma_s]=comm_data num_robots = int(len(s)/2) - e = 0.8 # (iii+1)*0.01 + e = 0.83 # (iii+1)*0.01 [sigma_d, sigma_i] = sigma_s [comm_robot_sigma_d, comm_robot_sigma_i] = comm_robot_sigma_s diff --git a/CoLo-AT/robots/__pycache__/robot_system.cpython-36.pyc b/CoLo-AT/robots/__pycache__/robot_system.cpython-36.pyc index 1fd2769d85d4c09a6c7592f51c8ff5792061162a..f6533f73d45e44a77137725ae12f93b05af62170 100644 Binary files a/CoLo-AT/robots/__pycache__/robot_system.cpython-36.pyc and b/CoLo-AT/robots/__pycache__/robot_system.cpython-36.pyc differ diff --git a/CoLo-AT/simulation_process/__pycache__/sim_manager.cpython-36.pyc b/CoLo-AT/simulation_process/__pycache__/sim_manager.cpython-36.pyc index 1450bcf5f5e286f03e7a2161ce1cbf2616342420..898bd634c5771fc458900a539937375e91f436bf 100644 Binary files a/CoLo-AT/simulation_process/__pycache__/sim_manager.cpython-36.pyc and b/CoLo-AT/simulation_process/__pycache__/sim_manager.cpython-36.pyc differ diff --git a/CoLo-AT/simulation_process/__pycache__/state_recorder.cpython-36.pyc b/CoLo-AT/simulation_process/__pycache__/state_recorder.cpython-36.pyc index fecf62bb365b60850ecd554432651b7f9690698c..732abd46ebad50eb45b3176b5055226175851428 100644 Binary files a/CoLo-AT/simulation_process/__pycache__/state_recorder.cpython-36.pyc and b/CoLo-AT/simulation_process/__pycache__/state_recorder.cpython-36.pyc differ diff --git a/CoLo-AT/simulation_process/sim_manager.py b/CoLo-AT/simulation_process/sim_manager.py index a575a10245c019d7943229f498cc773225c44479..08908cd221926b304699983ddc78d8c89198daa0 100644 --- a/CoLo-AT/simulation_process/sim_manager.py +++ b/CoLo-AT/simulation_process/sim_manager.py @@ -13,6 +13,7 @@ from random import randint class SimulationManager(): def __init__(self, name): self.name = name + np.random.seed(12) def comm_controller(self, rbt_idx, num_robots, rsp): receiver_idx = rbt_idx