From 748835f6fb66cd5fc1aee8deb6fc335dcd971fdd Mon Sep 17 00:00:00 2001 From: William Chen <billyskc@ucla.edu> Date: Wed, 5 Jun 2019 15:08:07 -0700 Subject: [PATCH] colo dataset3 works for gs-ci journal --- CoLo-AT/Cooperative_Localization_Journal1.py | 2 ++ ...ative_Localization_Journal1.cpython-36.pyc | Bin 2523 -> 2553 bytes CoLo-AT/colo_d3.pdf | Bin 25601 -> 36578 bytes .../__pycache__/data_analyzer.cpython-36.pyc | Bin 7145 -> 7145 bytes CoLo-AT/data_analysis/data_analyzer.py | 6 +++--- .../realworld_dataset_manager.cpython-36.pyc | Bin 14102 -> 14249 bytes .../realworld_dataset_manager.py | 7 ++++++- CoLo-AT/j1_rw.py | 13 ++++++++----- .../__pycache__/ekf_gs_ci2.cpython-36.pyc | Bin 4272 -> 4281 bytes .../__pycache__/gs_ci_bound.cpython-36.pyc | Bin 3375 -> 3375 bytes CoLo-AT/localization_algos/ekf_gs_ci2.py | 2 +- .../__pycache__/sim_manager.cpython-36.pyc | Bin 5354 -> 5458 bytes CoLo-AT/simulation_process/sim_manager.py | 17 +++++++++-------- 13 files changed, 29 insertions(+), 18 deletions(-) diff --git a/CoLo-AT/Cooperative_Localization_Journal1.py b/CoLo-AT/Cooperative_Localization_Journal1.py index 78aa75a..59f954d 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 GIT binary patch delta 777 zcmZ{gO-|cD6vzD>e~vx2lkg#xE{a$IQWu3q5+n{lH$6aw<z#4-)FP5?kWeS`!rNvw z8#WvP3B(Dw02@|yZ_rhj?FMybFd<lF^ZfqLZ+^eg{A~YiqaBRVo4r4u-z{CEJAjh? zfO~jgm+E>>^|4CT0zk<cM5R!uQ<Q0>QNYy6bfQt94$+A*)241_5R=bwW)e$odK8a& zM|J8_kJwZrXl8&y(b(o$C(cZj2~kfNxXURNZgS`R{83=f1#Tt4Qs6HL{F;F0O7Mim zb8MZ;_43-jqz2E_oCY;4&o!*~DmJLFO^IzjV`;NS<+(=nCH3R~9=TOv+Y;Maz_w~w zp68Dou<zRM_syiCC`yUrNkl>tWl?&RrDafcVRRhDXXz+SOum(1cCLR5kZ2uITv2?s zVeA|0qFrM{;~-e(ZE3}mK^VouNwUgrjZ^5bj(Pa@6aS?&ELZ^qNVOmUi+@+Z1LU(S zvkSeOU*<04LQ$fluV2DA4f`aLy3(!&gOM~pE)3IfF#3>Sal(-y>`zXPN#e<gIKro? Z*zx%!*%W0<lx<OZqI6!CF1xVz{{a(xyVC#w delta 714 zcmZ{gzb^zq6vy}N&)L}@w|C1GqM$;Ha2k3Nl}f~B-5}1z$?npa%N1K+HHrU1A$0x+ zjmnAm7eqv&Gc(p<L-U>YzVqhu-n{qlA;fc@hYz3LwqC+Zd<(G2?%@tz*@ZgU$W)?I z$ki^+G@|9ubuyjk6sSWCV)pf}n;FF7zL%K<$x5GkEsF)(=o+FvuX6e-C=|DB>gT{C zqlI$?l*}pd>><xBc%I}{B=1-o?IBtrcES6ixc^dkH#t>BQUXEYa~ss90kNr0aNm@3 zA(5A;-e1(7{A^HQs}fuNfvuLXJTGDW683wAwSpQ-YV8NLHl&7Pi->Y#xYG(d*Pq9O zL{k)H;I%t3iAbEq>28)L7WWdDT^nbCEkZ2B5#qBIbJ?5_;TX%!)nJ5&1Jv#`qqx1_ zN$Tv;JcR|eVQr7C^D9L|PzS6c2mtZ34nAO?-C9e~xI$<idZNJq?;h?&?KIjUv1~T5 z3!`};`+gSer&04@HgUxZM<&ru=j4bao^-?$?xv!~=T0&uWLn6KkcN<j-?GSV?Bx&W C9;(v- diff --git a/CoLo-AT/colo_d3.pdf b/CoLo-AT/colo_d3.pdf index 1180d28aba82324f8033794146bd84a7237a041e..7930a0632892d5b1bebaf4ca89ac69b8548b81ee 100644 GIT binary patch delta 25266 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 Y<>ukz2D8Hzgn)s<xNL0l8Vb1o14*EDfdBvi delta 14341 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 D>lyXE 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 GIT binary patch delta 23 fcmaE9{?eS?n3tDpk;#vZ?6<@iIW|8MV`l{bW_1VE delta 23 fcmaE9{?eS?n3tE!l<V6@_FH0%oSPqsv9kgIUP}i( diff --git a/CoLo-AT/data_analysis/data_analyzer.py b/CoLo-AT/data_analysis/data_analyzer.py index a6bc957..2614c75 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 GIT binary patch delta 3031 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 Tzx+zD@_UwF3vvGB^4)&}$p`Hh delta 2972 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 diff --git a/CoLo-AT/dataset_manager/realworld_dataset_manager.py b/CoLo-AT/dataset_manager/realworld_dataset_manager.py index e8c7c3c..18e0035 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 5ddda45..cec257a 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 GIT binary patch delta 262 zcmdm>xKokSn3tDJ+u}#e^NpO1EXHiLTq(@8+$l^oY$6P`JS7Yzj5W;7j44dg49$$S zyfy48%#sYXd_bB7Nb>_}rpbF*bQzf^zh;pXWlm$VVW?rQ;Ync;XGj6^BpFIrCVylR zW(D&n8?p*3Gu4OyO%|;YsbR}zn!s43R>N8&S|ggmB+k&v1Yu21XEg<yIG0tHA7-K` z#Kg%bSrx@0Vwk!Z*(4d6CQGwPYOwpI&zcDWJMD`E7#J9e7=gq~Fu@FDrPqk8bAMRX LV!t_<EtU%a5?4KR delta 253 zcmdm~xIvNAn3tEU=G)hpryDsNS&SKLxl)*Fxl@>H*hCm=c}f^c7;BiD8B>_08JZbu zd285Hm?Rl$`G7PFkmd){%#-)B=rS@*e$65&%9O@r!%)Lq!;``y&X5A+NivkMO#a9s z%nIgDHe?l6X08zdnk-r)Qp1+bG=Z^5t%kKmv_>?AS)8Gj3BsD3&T0xYaW1PYKg>i? zh>4R=vMP#0#4vR+vPm*BPnKqrlxOoxX8?l>_C<_9Mv(xJcnM;?WCjwOW7uN30DUAj A?EnA( 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 GIT binary patch delta 16 XcmZ24wO)$dn3tF9oB5B8>>9iPD@X+c delta 16 XcmZ24wO)$dn3tF9?B}l=*)@0pE`kM< diff --git a/CoLo-AT/localization_algos/ekf_gs_ci2.py b/CoLo-AT/localization_algos/ekf_gs_ci2.py index fd399d2..d31cbae 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 GIT binary patch delta 1318 zcmYjQOK%)S5T2gLdiLSnwY`pGJ2(<1k;Wk#8%s!jKmsH&Az%^`h!~JYv!3>P)-yZn z>RGc6YplpuBqTa;L`32iffW1$@&gbTZnO}Bqmeiw<%FmjJHTPS`MSEketgyShx5}+ zetvMU(4TwqVf|6QtnUqInx^CT8h+w3LZ9uLfwpV)jh42r1#DA?W#kOGKCT7ECj0+* zH`mu%ddukN_8Dr-zO}C3(j0SD6=Uv;F7TMQQ&kY%MvJed-nGkz7H;C0%5L)1OP|~6 z@FN=dsjo_qG?LVd{05JNvch)2d(MCi^#wUmnv~z`qtz11HD>Cjaf+2#sUUyW7ubC{ zVl>_>^apDio}--NnS$c+sFE5jvt{+m{mQ=HH#bfAG_Y@JK^{L1&stiADlXalxc1%3 z?|1KCR94UHB)Izy{SI~c$T+cgwMpA*+LOn}<hRF8PMNWvZYWc1L8=Vi>nN+;jXOJF zW2VZr6NvrDsX_sVZUy)n54SmZBK6a*a0dm)>-{^-$9~TPzun|2pKbsb8%Y$vNm{80 zGf%b66vio(KNdGr*8s0au;Us6nf$<9o<55?g0$!qdSx?PA7;aBN-wiAGE=|n$gf96 z4}LJOGd3p2a?@<_U@7;DUVt)+pn@Q0^XnFj5c?+oCp#xUFVq)c2*+-PYIjtstVA$L zq7w*e^uMVlB;9t9LKm+yBmXYkS)|339>g$9q)bL|4}D1hjd05%jJpwr0&gveV`UP; zRa$yZepZ~Da`Q)uZ6B1?MB$ceZ~IXgcu5Dw<gdlav!j$v7td^hGsMUYH4t+l{3eG9 z9LY1KX?Eq{T4~;}=)SJJSGhNF$SAvr;OI)P&nj~rw{RG|Ax~Au*+cna_5G=Laayr; ziayN-dXjJl;i3Gty25VDzp581&r{++z@yanQaCT?ha9txF?lmTd(t@#7f3{gWM;q% z#OCE!Lt}f&h<F<oD6mLCEvjrEnjdX&;L3=@HZ0M^ayB8TkFbs4C5llWXGMZ5#9k)2 zMDQvBl?bTIl_7S7GPk;6dgO2pgU$p!)l0|6TA^Gj6ueFXi_8#NvO9=0+tZ6ek-~LK zdXwNS1Xq4CJYH}I@R(kdthw^R@cCC(vn8@(xi*N7mxeKiG1A;5a0%WfxPjo>Nkd?3 zguzics05XfDfWe|kNh~AJ+>LjJxA~k!Md#0W|nJq%`O&hfQcbz2%e>x%)L_9mvwB{ dC~UxKj4M46;1Mx9*u-#A_G-_tCHZCT_CM$_SrGsL delta 1274 zcmY*ZOK%)S5T2fgclI^weOSRnF^Li+#t<jLybOtr0mVEb6M{tmfkv~Q_Ih9*>*`*! zYiwDFAHbn=;DW?~Qx1_L-?-$;1&}zlID}&oaYYEBK-G9d#9_Yuy85e{p0BI+m)X01 zdA?q+{B-Y+k4iVoo_S@$Fbor)SMd=~AndX|J2Lj1T^6xVP3S~s!A<1HBMZ5`>ui|s z8os>>4E1*kpb}6;@F&#w=7PF!KHl<hX)xQgOD-ZkYTjC4J1Vuh`{mtw$M}-%dD8gA zj4I<*BXY5Fb@h&eslCrTH&%YzxwfR8VbIToc1H9A4cepHhVkdpnA~1kdl0(yAau*O zw4H`>Q`=$-q_+65?@vMn^YnfL_&SfbIRrw6av*eF@GN?`ET`cxfH3QEU6z}`#b%yF z(5Bq#f2lnQ9g394xjlRd1Ve(6wgfRjEQ$r5gohcfWkf!yzwJ}UPGPQ~0_alVkZZPB zi_MrG^W1}Fr^{GNeK&EEEgbwX@vEtFb6VXfZ+N-}c{i6q5_Wka)O6){Hmge2xkc^v zxD4c|&vk>?p)AJl8p0I52AT+Z>fu%o@<A3!7~m)RDyv?7@f<14D21nqcw`O_@Pl(e zb8sD}g9JlSu%4%>wh7@)Dm}0Msh*obD~gQm5VX_7#4YV^he;d-c^_J8wRZHWNm7%M zg?DhA*a-w(O1Tgr89uf%j?`DRlkByFgWA01JV_dLuknQmp2{YV9DSQIspp`E@K@!0 z5(|k3>Mveb-%fro^D!l`4WGgPl@Q>@b#<h<!aNl;&ooYxuoUq`hJl1R^-a^a&tOdb zTt2(+KL%%!0~u480?!b8mf$&p=LudQSU}KL!ZUb@mgfmd6mvu9eYVMgYb%X2xIi0= z#fBK)7c5b1g@7gz-XM4xVIN*0dXa!`4_-&WHX30^Z4F|1Xg*D`|7g+LhX;L&q;!RF ziS*6}-h?Q$x{kEyk%0Vy%OrY-;0h@p$@oyxn2ETX@IbcXlm{U|IKumhvmnXWwW_vH zFRvAKi@Vh>h<+eZ2`wu0K0%k@J%XzU+ReKHrz<YH-=I5DqxKBDroL|fI92qfPuf|6 z4+*5&>C7&++$pzOxePXj{HAuYLE0Z3np!LP91eIAcVQX@+QfecntpBfaqMAP-R>M? J7u5aE+Q0vXTV4PF diff --git a/CoLo-AT/simulation_process/sim_manager.py b/CoLo-AT/simulation_process/sim_manager.py index 9f2fabc..984d287 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) -- GitLab