diff --git a/CoLo-AT/Cooperative_Localization_Journal1.py b/CoLo-AT/Cooperative_Localization_Journal1.py
index 78aa75a08f28d845133f84096c78aaad23a5ecf0..59f954dff36053322ed47bb2aa8f50996a1e470d 100644
--- a/CoLo-AT/Cooperative_Localization_Journal1.py
+++ b/CoLo-AT/Cooperative_Localization_Journal1.py
@@ -41,6 +41,7 @@ def all_algorithms_comp(dataset_path, robot_labels, duration, graph_name, robots
 
 	testing_dataset = RW_Dataset_Manager('testing')
 	start_time, starting_states, dataset_data, time_arr = testing_dataset.load_datasets(dataset_path, robot_labels, duration)
+	testing_dataset.dataset_analysis(duration)
 	analyzer = Analyzer('analyzer', robot_labels)
 
 	loc_algo = EKF_GS_CI2('algo')
@@ -51,6 +52,7 @@ def all_algorithms_comp(dataset_path, robot_labels, duration, graph_name, robots
 	sim.sim_process_native(robot_labels, testing_dataset, robot, state_recorder, simple_plot = False ,  robots_cant_observe_lm = robots_cant_observe_lm)
 	analyzer.calculate_loc_err_and_trace_state_variance_per_run(state_recorder, plot_graphs = True)
 	analyzer.trajectory_plot(state_recorder)
+	
 	##############################################################################
 	'''
 	testing_dataset.dataset_reset()
diff --git a/CoLo-AT/__pycache__/Cooperative_Localization_Journal1.cpython-36.pyc b/CoLo-AT/__pycache__/Cooperative_Localization_Journal1.cpython-36.pyc
index 994caf1e5942bfd5a5db55f4e442c674b2c52baf..f61628b9573c970d4e070e8d112414736c57bca8 100644
Binary files a/CoLo-AT/__pycache__/Cooperative_Localization_Journal1.cpython-36.pyc and b/CoLo-AT/__pycache__/Cooperative_Localization_Journal1.cpython-36.pyc differ
diff --git a/CoLo-AT/colo_d3.pdf b/CoLo-AT/colo_d3.pdf
index 1180d28aba82324f8033794146bd84a7237a041e..7930a0632892d5b1bebaf4ca89ac69b8548b81ee 100644
Binary files a/CoLo-AT/colo_d3.pdf and b/CoLo-AT/colo_d3.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 487698deadc7a65695954f9daa06aef9cb606afd..18812b6a3f8fed8faf5b81d65bea7d299bf7cf94 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 a6bc95746f241e5cd91553c38bebf06bbc97be71..2614c75e193fdd66dd858563a9a60381fb00b967 100644
--- a/CoLo-AT/data_analysis/data_analyzer.py
+++ b/CoLo-AT/data_analysis/data_analyzer.py
@@ -139,9 +139,9 @@ class Analyzer():
 				break
 
 			if num_dataline_per_time_iterval != 0:
-				loc_err_per_run.append(loc_err_per_time_iterval/num_dataline_per_time_iterval)
+				loc_err_per_run.append( loc_err_per_time_iterval/num_dataline_per_time_iterval)
 				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)
+				trace_per_run.append(trace_per_time_iterval/num_dataline_per_time_iterval) 
 				   
 			
 
@@ -275,7 +275,7 @@ class Analyzer():
 		for data_recorder in arr_data_recorder:
 			loc_err_per_run, state_err_per_run, trace_per_run, time_stamps = self.calculate_loc_err_and_trace_state_variance_per_run(data_recorder, plot_graphs = False, selected_labels = selected_labels)
 			if only_trace == None or data_recorder.name not in only_trace:
-				arr_loc_err.append([time_stamps, state_err_per_run, data_recorder.name])
+				arr_loc_err.append([time_stamps, loc_err_per_run, data_recorder.name])
 			arr_trace.append([time_stamps, trace_per_run, data_recorder.name] )
 
 		print('Plotting Comparison Graphs')
diff --git a/CoLo-AT/dataset_manager/__pycache__/realworld_dataset_manager.cpython-36.pyc b/CoLo-AT/dataset_manager/__pycache__/realworld_dataset_manager.cpython-36.pyc
index 7703bdb3d0ca0acc5db1c1d0a506c1a597b0d88b..4c95089bb8c6d74eadc4b62445f43ba21e1d038c 100644
Binary files a/CoLo-AT/dataset_manager/__pycache__/realworld_dataset_manager.cpython-36.pyc and b/CoLo-AT/dataset_manager/__pycache__/realworld_dataset_manager.cpython-36.pyc differ
diff --git a/CoLo-AT/dataset_manager/realworld_dataset_manager.py b/CoLo-AT/dataset_manager/realworld_dataset_manager.py
index e8c7c3c3ca5569506f0f993f0a3b0dacccbe4865..18e0035555991a9bfd7c28c32fe0463d0d298440 100755
--- a/CoLo-AT/dataset_manager/realworld_dataset_manager.py
+++ b/CoLo-AT/dataset_manager/realworld_dataset_manager.py
@@ -85,6 +85,7 @@ class RW_Dataset_Manager:
         self.gt_data_odo = [[] for i in range(self.num_robots)]
         self.gt_data_meas = [[] for i in range(self.num_robots)]
         self.groundtruth_data = [[] for i in range(self.num_robots)]
+        self.velocity_arr = [[] for i in range(self.num_robots)]
 
         #self.groundtruth_time= [[] for i in range(self.num_robots)]
         self.time_arr = {'odometry': [[] for i in range(self.num_robots)], 'measurement': [[] for i in range(self.num_robots)], 'groundtruth': [[] for i in range(self.num_robots)]}
@@ -189,6 +190,7 @@ class RW_Dataset_Manager:
                         self.odometry_data[i].append(odo_info)
                         self.gt_data_odo[i].append(matched_gt_info)
                         self.time_arr['odometry'][i].append(time)
+                        self.velocity_arr[i].append(velocity)
         
         self.data_trackers = {'odometry': np.ones((self.num_robots,), dtype=np.int), 'measurement':np.ones((self.num_robots,), dtype=np.int)} 
         # tracker for each robot for both each type of data to keep track of their location in the dataset
@@ -228,7 +230,7 @@ class RW_Dataset_Manager:
                 t+=sampling_period
                 
 
-        return 1
+        return True
 
     def dataset_reset(self):
         self.data_trackers = {'odometry': np.ones((self.num_robots,), dtype=np.int),'measurement':np.ones((self.num_robots,), dtype=np.int), 'groundtruth':np.ones((self.num_robots,), dtype=np.int)} 
@@ -491,5 +493,8 @@ class RW_Dataset_Manager:
         return gt
 
 
+        
+
+
 
 
diff --git a/CoLo-AT/j1_rw.py b/CoLo-AT/j1_rw.py
index 5ddda45e05241bb70f7882f6e1b9001f6b1baa74..cec257a02faea062ce083754443cad83d84f67b7 100644
--- a/CoLo-AT/j1_rw.py
+++ b/CoLo-AT/j1_rw.py
@@ -1,21 +1,23 @@
 from Cooperative_Localization_Journal1 import all_algorithms_comp
 
-'''
+
 # for all colo datasets,  may need to change scale on comparison graph: loc[0,0.5], trace[0,0.05]
 
-datasets_path = "/Users/shengkangchen/Documents/CoLo/CoLo-D/CoLo-Datasets/official_dataset"
+datasets_path = "/home/william/CoLo/CoLo-D/CoLo-Datasets/official_dataset"
 robot_labels = [1,2,3]
 duration = 180 # duration for the simulation in sec
 
-for i in [1, 2, 3, 4]:
+for i in [3]:
     dataset_label = str(i)
     dataset_path = datasets_path + dataset_label + "/"
     graph_name = 'colo_d'+dataset_label
     print(dataset_path)
     all_algorithms_comp(dataset_path, robot_labels, duration, graph_name, robots_cant_observe_lm = [2])
     
-'''
 
+
+
+'''
 # for all UTIAS datasets, may need to change scale on comparison graph: loc[0,1.5], trace[0,0.2]
 #datasets_path = "/Users/shengkangchen/Documents/CoLo/CoLo-D/UTIAS-dataset/MRCLAM_Dataset"
 datasets_path = "/home/william/CoLo/CoLo-D/UTIAS-dataset/MRCLAM_Dataset" # for desktop Ubuntu
@@ -28,4 +30,5 @@ dataset_label = str(i)
 dataset_path = datasets_path + dataset_label + "/"
 graph_name = 'UTIAS_d'+dataset_label
 print(dataset_path)
-all_algorithms_comp(dataset_path, robot_labels, duration, graph_name, robots_cant_observe_lm = [4, 5])
\ No newline at end of file
+all_algorithms_comp(dataset_path, robot_labels, duration, graph_name, robots_cant_observe_lm = [4, 5])
+'''
\ No newline at end of file
diff --git a/CoLo-AT/localization_algos/__pycache__/ekf_gs_ci2.cpython-36.pyc b/CoLo-AT/localization_algos/__pycache__/ekf_gs_ci2.cpython-36.pyc
index a02f049cf7ac54d49143049b5fe2c2769f6fa360..fa4ee702c06f4060b139d73d1c14ff75b71df710 100644
Binary files a/CoLo-AT/localization_algos/__pycache__/ekf_gs_ci2.cpython-36.pyc and b/CoLo-AT/localization_algos/__pycache__/ekf_gs_ci2.cpython-36.pyc differ
diff --git a/CoLo-AT/localization_algos/__pycache__/gs_ci_bound.cpython-36.pyc b/CoLo-AT/localization_algos/__pycache__/gs_ci_bound.cpython-36.pyc
index 607a82df754796bfe76937e000767780fb5e9098..dd2f23e76b39c9d3ddfc8c0ce01ec0202a61d009 100644
Binary files a/CoLo-AT/localization_algos/__pycache__/gs_ci_bound.cpython-36.pyc and b/CoLo-AT/localization_algos/__pycache__/gs_ci_bound.cpython-36.pyc differ
diff --git a/CoLo-AT/localization_algos/ekf_gs_ci2.py b/CoLo-AT/localization_algos/ekf_gs_ci2.py
index fd399d232e4f791a519343d5c95e3e4bdaaef87e..d31cbae7a7d4813733901cdf8adf03bc8daf7e49 100644
--- a/CoLo-AT/localization_algos/ekf_gs_ci2.py
+++ b/CoLo-AT/localization_algos/ekf_gs_ci2.py
@@ -25,7 +25,7 @@ class EKF_GS_CI2(ekf_algo_framework):
 		[measurement_data, sensor_covariance] = sensor_data
 		sigma_odo = sensor_covariance
 
-		var_v = 0.25# variance of the velocity
+		var_v = 0.1**2# variance of the velocity
 		exp_v = 0 # expected vecolcity for other robots 
 		
 		i = 2*index
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 cd22333eeb9494a4a8108613451740afd219fd98..df0b7434989e93a8cd849fc74f56fe079bedb67f 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/sim_manager.py b/CoLo-AT/simulation_process/sim_manager.py
index 9f2fabc242f24ac4994e0ee86ecf4056f9edb8cb..984d28764899a63cdf82da320e92be3641f68bdf 100644
--- a/CoLo-AT/simulation_process/sim_manager.py
+++ b/CoLo-AT/simulation_process/sim_manager.py
@@ -19,18 +19,20 @@ class SimulationManager():
 		receiver_idx = rbt_idx
 		#sender_idx = (rbt_idx+1)%(num_robots)
 		sender_idx = None
-		'''
+		
+		#if i observe j, j will send data to i
 		if rsp.get_type()=='measurement' and rsp.get_data()['subject_ID'] <= 5:
 			sender_id = rsp.get_data()['subject_ID'] 
 			sender_idx = self.robot_labels.index(sender_id)
-		'''
 		
+		
+		'''
 		if rbt_idx == 0:
 			sender_idx = 1
 		
 		if rbt_idx == 1:
 			sender_idx = 2
-		
+		'''
 		return receiver_idx, sender_idx
 
 	def simulated_communication(self, receiver_status, sender_status):
@@ -46,14 +48,13 @@ class SimulationManager():
 
 		mean = math.exp(-1.5*dis)
 		std = math.exp(-0.5*dis)
-		'''
+		
 		if numpy.random.normal(mean, std) > threshold:
 			return True
 		else:
 			return False
-		'''
-
-		return True
+		
+		#return True
 	def allow_operation(self, rsp):
 		'''
 		if rsp.get_type()=='measurement':
@@ -89,7 +90,7 @@ class SimulationManager():
 
 		state_var = []
 		while self.time < start_time+duration: 
-			#print("remaining time:", start_time+duration-self.time)
+			# print("remaining time:", start_time+duration-self.time)
 			g_req= request_response.Request_response(None, None)
 			prev_time = self.time 
 			valid_op, self.time , rsp = dm.respond(g_req, self.time)