From fe87188e669701bef8924e0924fee5cdccc62fc4 Mon Sep 17 00:00:00 2001 From: Steven Lange <langestx@informatik.hu-berlin.de> Date: Fri, 1 Dec 2017 13:30:59 +0100 Subject: [PATCH] CACC Sim added --- .../{ => CACC}/ACC-module_v0.01_Flowchart.txt | 0 modules/CACC/CACC-Module-Test.py | 124 ++++++++++++++++++ 2 files changed, 124 insertions(+) rename modules/{ => CACC}/ACC-module_v0.01_Flowchart.txt (100%) create mode 100644 modules/CACC/CACC-Module-Test.py diff --git a/modules/ACC-module_v0.01_Flowchart.txt b/modules/CACC/ACC-module_v0.01_Flowchart.txt similarity index 100% rename from modules/ACC-module_v0.01_Flowchart.txt rename to modules/CACC/ACC-module_v0.01_Flowchart.txt diff --git a/modules/CACC/CACC-Module-Test.py b/modules/CACC/CACC-Module-Test.py new file mode 100644 index 00000000..412a2b0f --- /dev/null +++ b/modules/CACC/CACC-Module-Test.py @@ -0,0 +1,124 @@ +import matplotlib +matplotlib.use('TkAgg') +from matplotlib import pyplot as plt + +class Car(object): + cSpeed = None + cPos = None + cDist = None + + IPD = None + PS = None + + def __init__(self, prev, speed, position, distance, IPD, PS): + self.plattonPrev = prev + self.cSpeed = speed + self.cPos = position + self.cDist = distance + self.IPD = IPD + self.PS = PS + return None + + def getPos(self): + return self.cPos + + def getSpeed(self): + return self.cSpeed + + def getDistance(self): + return self.cDist + + def updatePos(self): + self.cPos = self.cPos + self.cSpeed + + def updateDis(self): + if not self.plattonPrev == None: + self.cDist = self.plattonPrev.getPos() - self.cPos + + def updateSpeed(self): + v_c = self.cSpeed + v_v = None + PS = self.PS + c = None + if not self.plattonPrev == None: + v_v = self.plattonPrev.getSpeed() + c = ((v_c - v_v)/v_c)**(v_c/v_v) + print(c, v_v/v_c) + + v_z = v_v + (v_v - PS)*c + self.cSpeed = (1-c)*v_c + c * v_z + else: + v_v = self.cSpeed + c = 0.5 + v_z = v_v - (v_v - PS) * c + self.cSpeed = (1-c) * v_c + c * v_z + +def update(carList): + for item in carList: + item.updatePos() + item.updateDis() + item.updateSpeed() + +if __name__ == "__main__": + IPD = 60.0 + PS = 40.0 + + v_0 = 78.0 + v_1 = 80.0 + + pos_0 = IPD + pos_1 = 0.0 + + dist0 = 0 + dist1 = pos_0 - pos_1 + + car0 = Car(None, v_0, pos_0, dist0, IPD, PS) + car1 = Car(car0, v_1, pos_1, dist1, IPD, PS) + + i = 0 + t = [] + maxT = 40 + + y_pos0 =[] + y_pos1 = [] + + y_speed0 = [] + y_speed1 = [] + + y_dist0 = [] + y_dist1 = [] + + carList = [car0, car1] + + while i <= maxT: + t.append(i) + + y_pos0.append(car0.getPos()) + y_pos1.append(car1.getPos()) + + y_speed0.append(car0.getSpeed()) + y_speed1.append(car1.getSpeed()) + + y_dist1.append(car1.getDistance()) + + i = i+1 + update(carList) + + + plt.subplot(131) + plt.plot(t, y_pos1) + plt.plot(t, y_pos0) + plt.title("Position") + + plt.subplot(132) + plt.plot([0,maxT],[PS, PS], 'r--') + plt.plot(t, y_speed1) + plt.plot(t, y_speed0) + plt.title("Speed") + + plt.subplot(133) + plt.plot([0,maxT],[IPD, IPD], 'r--') + plt.plot(t, y_dist1) + plt.title("Distance") + + plt.show() -- GitLab