From 521becf01af3d71faa1bec1eded9e66dcaa4d016 Mon Sep 17 00:00:00 2001 From: Steven Lange <langestx@informatik.hu-berlin.de> Date: Mon, 11 Dec 2017 11:47:10 +0100 Subject: [PATCH] Kalman-Filter auf (d,v) reduziert --- modules/CACC/.kalmanfilter.py.swp | Bin 12288 -> 0 bytes modules/CACC/CACC-Module-Test.py | 29 +++++++++++++++-------------- modules/CACC/kalmanfilter.py | 6 +----- modules/CACC/kfConfig.py | 7 ------- 4 files changed, 16 insertions(+), 26 deletions(-) delete mode 100644 modules/CACC/.kalmanfilter.py.swp delete mode 100644 modules/CACC/kfConfig.py diff --git a/modules/CACC/.kalmanfilter.py.swp b/modules/CACC/.kalmanfilter.py.swp deleted file mode 100644 index af88080ce0232adb046cd99d6a41b2aed11b01e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2&x<2P6vu1Ui>t1RD|oG#O9pz9jI#@ipg7EsogvJU`LQF8%2<<rNy>DpLv?k` z%wavO`X?xR5HJ1%t9bSxp4@}rO$1$Uf}$S8li;_iJ4q+Zf+s<&hEKY?s@|*jzV*6b zm^!H+Ztw7G)jGrVBx66ERE~c8ov}I^wpB+eX=uAmw)cV8_QuV%wfgXZ{gaMc1&6iG zxSbA2nWVOF(om*@+E(1|iPXdcVPw+oQPL1SO=`Yfk~WmA<XwX}Oe0Ea8|xbzwZ4c3 z0wG6+bai+-nbqID0$u@@n$F6#OKk1ARrjfvpDpprPu=vwcm=!yUIDLwSHLUa74Qmp z1-t_PBL&QGiM@?{FXTDDnBSKc?)j^~c?G-zUIDLwSHLUa74Qmp1-t@Y0k42pz$@?{ zR6vA`ef}_G-&{oS`2YXp@Bd$(VC-k`HFzHwa0qt56;J{keE&FO_rRy%6L1&Y0q=o# z!2wtYFM&TUG4><44?Y0zfZO0Ta21pQ2N%Kp$1n!m2DiW)pb4G^m%*QpVm@#e+ySqE z7WnHC#(o9gf_vaA@F6$>H^2_K3Z4NEfeT;>{Dl0i2H$}%!Drwj;4iO$SHLUa74Qmp z1-t_PvI0E6G?`Q@o>0`Oj@e@C!utblLhA4?nL`n!RI$F6pGQ6m);D5B(>6C@i@%V~ z9BbK?s^xmEFHH%Vjd(Qm^^aVsVO4~ov#GWMzQWNE#-@_rn!)~Z(5xOTFV9CYMifQU zaWFA#2K*GGr^Cy<R4Ps1ny;<~_19rs$01jqU-LuC{OB#hL05i6G9o(=`I<9Q0T0DM z8lFhvAt^3!wp8);lf(!WawXe6!$+jQ_*jKFms*^4I#V+XyO3a}X^=^}g+yH<kyIk; zR)<oJD*J`p%e?8%wL+)sLaJGo`!hY}1$6$ma{n!O&l=oB?s0FXY?<#-BEwWf{dgp_ z6zXg?!|7~>0VRjjt{xPYYi^qHT*TW-!JCn>ax&ObNr#~@S<wYN^M>NHtKoj^Ltf+O z*I&N!=VaPg%(OAfba$4i3pcMJyBO|$Vmr>p*+7SyLfOvx?dM@5v)6gim3cQ3WK62M zSe|}FQt{n@cXga3e2+Oh{FHfks!&Hb)Qn+SFNS5~_hwUMiv!V%raP1*TBNXDX-<|1 zC#1C;^NLC}@1&%8i26KBt*!~76cxX&WA|M6Dzf#0_pL%;)_d+P9XL0(#pWZ@j(gV> ziIGsY?l-Z5%FY9c(leaIrb0P7_q%YvTX5gf@frN(@$ckeFXXWpV*^ea1t*(MynYsD zVZU-S=35d>vTX@+XZ3D3tyvSkqDAp~agX@R_BeT_Arw{=;qza&5^88bYB4lhKeO!@ z+eYekf@DN}6YFWr(}&Q&V6|psyPvd3?^8Qg;k4H!V1^0CoHN1}<MFXQfPZ}Ksx{!) z@~~l|Xi+`*!1sa$JJf4C5~#gw%V@Zx@Rj)FO==rk%W^P`wc#oq3{Sa8uz#|@0pt2D A3IG5A diff --git a/modules/CACC/CACC-Module-Test.py b/modules/CACC/CACC-Module-Test.py index 1e2c89bc..19dae0ba 100644 --- a/modules/CACC/CACC-Module-Test.py +++ b/modules/CACC/CACC-Module-Test.py @@ -15,13 +15,18 @@ class Car(object): self.plattonPrev = prev if not prev == None: dt = 1/tStep - x = np.array([[0,0,0]]).T - P = np.array([[100,0,0],[0,100,0],[0,0,100]]) + x = np.array([[0,0]]).T + P = np.array([[10,0],[0,10]]) - F = np.array([[1,0,1],[1,0,0],[dt, -dt, 0]]) - Q = np.array([[1,0,0],[0,1,0],[0,0,1]]) - H = np.array([[1,0,0]]) - R = np.array([[10]]) + # f(x,v,a) = + # x = f1(x,v,a) = x + v*dt + a * dt**2 + # v = f2(x,v,a) = v + a*dt + # a = f3(x,v,a) = a + + F = np.array([[1,dt],[0,1]]) + Q = np.array([[1,0],[0,1]]) + H = np.array([[1,0]]) + R = np.array([[5]]) self.KF = KalmanFilter(x, P, F, Q, H, R, tStep) @@ -40,11 +45,8 @@ class Car(object): self.SpeedSystemUnc = random.uniform(-RAND,RAND) # in meter per seconds self.SpeedStatisticalUnc = lambda : random.gauss(0,RAND) # in meter per seconds - # self.SpeedSystemUnc = random.uniform(0,0) # in meter per seconds - # self.SpeedStatisticalUnc = lambda : random.gauss(0,0) # in meter per seconds self.EngineSystemUnc = random.uniform(-RAND,RAND) # in meter per seconds - # self.EngineSystemUnc = random.uniform(0,0) # in meter per seconds self.setSpeed(speed) self.getDistance() @@ -106,7 +108,7 @@ class Car(object): self.KF.predict() x = self.KF.getValue() d = x[0,0] - self.v_v = v_v = v + x[2,0]*self.tStep + self.v_v = v_v = v + x[1,0] if checkInbound(d, IPD, 0.01*IPD): if checkInbound (v, v_v, 0.01*v_v): if checkInbound(v, PS, 0.01*PS): @@ -130,7 +132,6 @@ class Car(object): if self.getCIPD() > d: print("raise") raise UnderCIPDerror("under CIPD!") - #self.KF.predict() else: # this is for the LV c = 0.5 @@ -153,8 +154,8 @@ def broadcastPlattonSettings(carList, newIPD, newPS): def update(carList): for item in carList: - if not item.plattonPrev == None: - item.KF.resetCov() + #if not item.plattonPrev == None: + #item.KF.resetCov() item.updatePos() for item in reversed(carList): item.updateSpeed() @@ -168,7 +169,7 @@ if __name__ == "__main__": v = [52.0, 50.0, 10.0] # startvektor (Startgeschwindikeit) pos = [90, 30, 0] # startvektor (Startposition) - tStep = 1000 + tStep = 50 cars = [] cars.append(Car(None, v[0], pos[0], setIPD[0], setPS[0],tStep)) diff --git a/modules/CACC/kalmanfilter.py b/modules/CACC/kalmanfilter.py index 0c8de984..fc9d0dc4 100644 --- a/modules/CACC/kalmanfilter.py +++ b/modules/CACC/kalmanfilter.py @@ -44,11 +44,7 @@ class KalmanFilter(object): # Kalman - Gain K = np.dot(np.dot(self.P, self.H.T), np.linalg.pinv(S)) - # Zweite Zeile 0.0 setzen, damit sie den alten Abstand nicht verändert!!! - # !!! - K[1,0] = 0.0 - # !!! - + # update the predecited values self.x = np.add(self.x, np.dot(K, y)) self.P = np.add(self.P, - np.dot(np.dot(K,S),K.T)) return None diff --git a/modules/CACC/kfConfig.py b/modules/CACC/kfConfig.py deleted file mode 100644 index d43a0e1d..00000000 --- a/modules/CACC/kfConfig.py +++ /dev/null @@ -1,7 +0,0 @@ -import numpy as np - -# Zustandsvektor [d_c, d_c-1, v_r] -x = np.array([[0, 0, 0, 0]]).T - -# Kovarianzmatrix (hohe Varianzen fuer schnelle Aenderungen) -P = np.array([[1,0,dt,0],[0,1,0,dt],[0,0,1,0],[0,0,0,1]]) -- GitLab