-
Notifications
You must be signed in to change notification settings - Fork 1
/
platoon_simulation.py
80 lines (58 loc) · 2.1 KB
/
platoon_simulation.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#Sole contribution of Pratush Pandita
from device import vehicle
from threading import Thread
from config import *
import os
import shutil
import time
import argparse
from platoon_config import *
def main():
if os.path.exists(discovery_dir):
shutil.rmtree(discovery_dir)
if os.path.exists(messages_dir):
shutil.rmtree(messages_dir)
if os.path.exists(stability_dir):
shutil.rmtree(stability_dir)
if os.path.exists(car_info_dir):
shutil.rmtree(car_info_dir)
time.sleep(3)
os.makedirs(discovery_dir)
os.makedirs(messages_dir)
os.makedirs(stability_dir)
os.makedirs(car_info_dir)
parser = argparse.ArgumentParser()
parser.add_argument('--base-host', help='base station host', type=str)
parser.add_argument('--base-port', help='base station port', type=int)
parser.add_argument('--car-host', help='car host', type=str)
parser.add_argument('--simulation', help='allowed values are [1,2,3]', type=int)
args = parser.parse_args()
base_station_host = 'localhost'
base_station_port = 30201
car_host = 'localhost'
if args.base_host is not None:
base_station_host = args.base_host
if args.base_port is not None:
base_station_port = args.base_port
if args.car_host is not None:
car_host = args.car_host
if args.simulation is None or args.simulation not in [1,2,3]:
print('provide simulation config number from [1,2,3]')
exit(1)
vehicles = []
if args.simulation == 1:
cars_config = cars_config_1
elif args.simulation == 2:
cars_config = cars_config_2
elif args.simulation == 3:
cars_config = cars_config_3
for car in cars_config:
vehicles.append(Thread(target=vehicle, args=("device_" + car_host + "_" + str(car['car_port']),
base_station_host, base_station_port, car_host,car['top_port'],car['car_port'],
car['position'],car['speed'])))
for v in vehicles:
v.start()
for v in vehicles:
v.join()
if __name__ == '__main__':
main()