diff --git a/CoLo-AT/dataset_manager/__pycache__/existing_dataset.cpython-36.pyc b/CoLo-AT/dataset_manager/__pycache__/existing_dataset.cpython-36.pyc
index 3c4964b7c5fa18e5c4e54efd6d80b0a0f47841d3..67e140af40210d6d0afaeb1ef2c0b4393be92044 100644
Binary files a/CoLo-AT/dataset_manager/__pycache__/existing_dataset.cpython-36.pyc and b/CoLo-AT/dataset_manager/__pycache__/existing_dataset.cpython-36.pyc differ
diff --git a/CoLo-AT/dataset_manager/existing_dataset.py b/CoLo-AT/dataset_manager/existing_dataset.py
index ec3fc68c7b5fcb9569e077ba48ede319c77a666c..966391e0bba272748ed330c4dbca0e4aaf25ba56 100755
--- a/CoLo-AT/dataset_manager/existing_dataset.py
+++ b/CoLo-AT/dataset_manager/existing_dataset.py
@@ -351,10 +351,14 @@ class Dataset:
             v0 = self.dataset_data[req_type][robot_idx][prev_time_idx]['velocity']
             v1 = self.dataset_data[req_type][robot_idx][post_time_idx]['velocity']
             velocity = linear_interpolation([t0, v0], [t1, v1], req_time)
+            a_v0 = self.dataset_data[req_type][robot_idx][prev_time_idx]['angular velocity']
+            a_v1 = self.dataset_data[req_type][robot_idx][post_time_idx]['angular velocity']
+            a_v = linear_interpolation([t0, a_v0], [t1, a_v1], req_time)
             o0 = self.dataset_data[req_type][robot_idx][prev_time_idx]['orientation']
             o1 = self.dataset_data[req_type][robot_idx][post_time_idx]['orientation']
             orientation =  linear_interpolation([t0, o0], [t1, o1], req_time)
-            message['data'] = {'time':req_time, 'velocity':velocity, 'orientation':orientation}
+
+            message['data'] = {'time':req_time, 'velocity':velocity, 'angular velocity': a_v, 'orientation':orientation, 'delta_t': 0}
         else: #measurement:  meas_info = {'time':time, 'subject_ID':subject_ID, 'measurment_range': measurment_range, 'bearing':bearing}
             pass
             
@@ -375,8 +379,8 @@ class Dataset:
                 lx = matched_gt_data['x_pos']
                 ly = matched_gt_data['y_pos']
 
+            np.random.seed(6)
             measurment_range = sqrt((lx-gt_x)*(lx-gt_x)+(ly-gt_y)*(ly-gt_y)) + float(np.random.normal(0, sqrt(var_dis), 1))
-            # bearing not matching with closest dataline....
             bearing = (atan2((ly-gt_y), (lx-gt_x))-gt_orientation)%pi + float(np.random.normal(0, sqrt(var_phi), 1)) 
             if abs(bearing-pi) < abs(bearing):
                 bearing = bearing-pi
@@ -394,13 +398,8 @@ class Dataset:
         message['data'] = self.dataset_data[req_type][robot_idx][time_idx]
         message['groundtruth'] = self.dataset_matched_gt_data[req_type][robot_idx][time_idx]
         return message
-
-    def create_additional_dataline(self, req, time_idx, meas_input_var):
-        message = self.create_synthetic_dataline(req, time_idx, meas_input_var)
-        return message
-
     
-    def get_dataline_at_specific_time(self, req, time_diff_limit = 0.1):
+    def get_dataline_at_specific_time(self, req, time_diff_limit = 0.2):
         message = req.get_message()
         req_type = req.get_type()
         meas_input_var = [0.01, 0.01]
@@ -414,16 +413,9 @@ class Dataset:
             gt_orientation = self.groundtruth_data[robot_idx][g_idx]['orientation'] 
             message['groundtruth'] =  {'time':req_time, 'x_pos':gt_x, 'y_pos':gt_y, 'orientation':gt_orientation}
             if req_type == 'odometry': 
-                message['data'] = {'time':req_time, 'velocity':0 , 'orientation':gt_orientation + float(np.random.normal(0, sqrt(odo_input_var[1]), 1) )}
-            else:
-                subject_ID = 6
-                [lx, ly] = self.landmark_map[subject_ID]
-                measurment_range = sqrt((lx-gt_x)*(lx-gt_x)+(ly-gt_y)*(ly-gt_y)) + float(np.random.normal(0, sqrt(meas_input_var[0]), 1))
-                bearing = (atan2((ly-gt_y), (lx-gt_x))-gt_orientation)%pi + float(np.random.normal(0, sqrt(meas_input_var[1]), 1)) 
-                if abs(bearing-pi) < abs(bearing):
-                    bearing = bearing-pi
-                
-                message['data'] = {'time':req_time, 'subject_ID':subject_ID, 'measurment_range': measurment_range, 'bearing':bearing}
+                message['data'] = {'time':req_time, 'velocity':0 , 'angular velocity': 0, 'orientation':gt_orientation, 'delta_t': 0}
+            else:                
+                message['data'] = {'time':req_time, 'subject_ID':None, 'measurment_range': 0, 'bearing':0}
             valid_dataline = True
             time_idx = 0
             return valid_dataline, message, req_type, robot_idx, time_idx
@@ -436,9 +428,9 @@ class Dataset:
         message['data'] = self.dataset_data[req_type][robot_idx][time_idx]
         message['groundtruth'] = self.dataset_matched_gt_data[req_type][robot_idx][time_idx]
         
+        
         if abs(respond_time-req_time) > time_diff_limit and self.adding_actifical_dataline:
-            message = self.create_additional_dataline(req, time_idx, meas_input_var)
-
+            message = self.create_synthetic_dataline(req, time_idx, meas_input_var)
         if req_time > self.end_time:
             valid_dataline = False
         else:
diff --git a/CoLo-AT/robots/__pycache__/robot_system.cpython-36.pyc b/CoLo-AT/robots/__pycache__/robot_system.cpython-36.pyc
index 764c3acefb5a5748df2049ab1d5b37a629ec6b64..f804a9e8365eebc5c47729bdfb6824eaa49232ac 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/robots/robot_system.py b/CoLo-AT/robots/robot_system.py
index ae0849fd5c92ce9fd440fe7d14de067765d2b6a8..d1c9daf6b4dba9726b07a2ce830730088dcd7c8e 100644
--- a/CoLo-AT/robots/robot_system.py
+++ b/CoLo-AT/robots/robot_system.py
@@ -96,7 +96,7 @@ class RobotSystem:
 			obj_id = message_data['subject_ID']
 			meas_range = message_data['measurment_range'] 
 			bearing = message_data['bearing']
-			if message_data['subject_ID'] > 5: #landmark observation
+			if message_data['subject_ID'] != None and message_data['subject_ID'] > 5: #landmark observation
 				update_type = 'landmark observation'
 				landmark_loc = self.landmark_map.get(obj_id)
 				if landmark_loc != None:
@@ -105,12 +105,13 @@ class RobotSystem:
 				else: 
 					valid_update = False
 			else:
-				update_type = 'relative observation'
 				if obj_id in self.robot_labels:
+					update_type = 'relative observation'
 					obser_index = self.robot_labels.index(obj_id)
 					valid_update = True
 					sensor_input = [obser_index, meas_range, bearing, message_data['time'], obj_id]
 				else:
+					update_type = 'invalid observation'
 					valid_update = False
 					sensor_input = None
 				
@@ -125,6 +126,7 @@ class RobotSystem:
 			sensor_input = [sender_idx, comm_rbt_state, comm_rbt_state_variance]
 			sensor_covariance = np.matrix([[0.01, 0], [0, 0.01]])
 		else:
+
 			print('undefined message type!')
 
 		if valid_update:
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 6cfd0e6ece49a18042367124c5337d035c92bd4c..1f52de8ccdebd6de988d3d8bcff8fa717cd86d3d 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 8bd85f9ab45ec39fe2de3ed7f2669cf30395c845..2afa61a8e0fddd99c65d8befd44562410b9cfcd7 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 4db03761e6bbbce42f9a891f8c542d9cfab33024..d6bd79daa035e79255ab2ae8becbc770f9f1268d 100644
--- a/CoLo-AT/simulation_process/sim_manager.py
+++ b/CoLo-AT/simulation_process/sim_manager.py
@@ -113,6 +113,12 @@ class SimulationManager():
 				if valid ==  False:
 					print('invalid responese')
 					break 
+				message = rsp.get_message()
+				if rsp.get_type() == "odometry":
+					delta_t =  1/freqs[0][robot_idx]
+					message['data']['delta_t'] = delta_t
+					rsp.set_message(message)
+					
 				robot_state = robot_system.localization_update(rsp)
 				state_recorder.record_state(rsp, robot_state)
 
@@ -137,7 +143,6 @@ class SimulationManager():
 				sys.quit('Time inconsistant!')
 
 			next_possible_time_array[req_type_idx][robot_idx] += 1/freqs[req_type_idx][robot_idx]
-
 		
 		if simple_plot:
 			state_recorder.simple_plot(plot_title=self.name)
diff --git a/CoLo-AT/simulation_process/state_recorder.py b/CoLo-AT/simulation_process/state_recorder.py
index 559fb1d6a403a64103580c4e57a34e563588c2b1..b9ae1f5c6e3540019e45e4bb772921d9af1fbe84 100644
--- a/CoLo-AT/simulation_process/state_recorder.py
+++ b/CoLo-AT/simulation_process/state_recorder.py
@@ -67,7 +67,8 @@ class StatesRecorder():
 			print(updata_type)
 			print('neg trace: ', recorded_dataline)
 		
-		if(loc_err >= 1):
+
+		if(loc_err >= 0.5):
 			print(updata_type)
 			print('>1 m loc err: ',recorded_dataline)
 			print(req.get_message())
diff --git a/CoLo-AT/test_simulation.py b/CoLo-AT/test_simulation.py
index 8080a85d4bcfd4c4bdfbce18fd284715bb0d2223..a990e7d84b25084961e612d7ebc9c0fb8ac2a97a 100644
--- a/CoLo-AT/test_simulation.py
+++ b/CoLo-AT/test_simulation.py
@@ -26,17 +26,11 @@ from ekf_ls_ci import EKF_LS_CI
 from ekf_gs_bound import EKF_GS_BOUND
 from ekf_gs_ci import EKF_GS_CI
 
-#need to verify these algo
-from ekf_gs_sci2 import EKF_GS_SCI2
-from ekf_ls_ci2 import EKF_LS_CI2
-from ekf_gs_ci2 import EKF_GS_CI2
-from centralized_ekf2 import Centralized_EKF2
-
 
 dataset_path = '/home/william/UTIAS-dataset/MRCLAM_Dataset3/'
 
 dataset_labels = [1,2,3]
-duration = 100 # duration for the simulation in sec
+duration = 150 # duration for the simulation in sec
 testing_dataset = Dataset('testing')
 start_time, starting_states, dataset_data, time_arr = testing_dataset.load_MRCLAMDatasets(dataset_path, dataset_labels, duration)
 
@@ -48,8 +42,8 @@ robot = RobotSystem('robot', dataset_labels, loc_algo, distr_sys = False)
 
 sim = SimulationManager('sim Centralized_EKF')
 state_recorder = StatesRecorder('recorder',dataset_labels)
-#sim.sim_process_schedule(dataset_labels, testing_dataset, robot, state_recorder, freqs0, simple_plot = True)
-sim.sim_process_naive(dataset_labels, testing_dataset, robot, state_recorder, simple_plot = True)
+sim.sim_process_schedule(dataset_labels, testing_dataset, robot, state_recorder, freqs0, simple_plot = True)
+#sim.sim_process_naive(dataset_labels, testing_dataset, robot, state_recorder, simple_plot = True)
 
 analyzer = Analyzer('analyzer', dataset_labels)
 loc_err_per_run, trace_per_run, t_arr = analyzer.calculate_loc_err_and_trace_state_variance_per_run(state_recorder, plot_graphs = False)