2021-06-18 15:29:43 +02:00

56 lines
2.1 KiB
Python

import sys
import time
import geopy.distance
import requests
from dse_shared_libs import daf, traffic_light_state, traffic_light_color, target_velocity
from devices.traffic_light import TrafficLight
from devices.vehicle import Vehicle
sys.modules['daf'] = daf
sys.modules['traffic_light_state'] = traffic_light_state
sys.modules['traffic_light_color'] = traffic_light_color
sys.modules['target_velocity'] = target_velocity
"""
USED AS ENTRYPOINT FOR DOCKERFILE
Start all vehicles / traffic lights here
"""
if __name__ == '__main__':
ENTITY_IDENT_URL = 'http://entityident:5002/api/v1/resources/'
available = False
while not available:
try:
response = requests.get(ENTITY_IDENT_URL + 'cars')
cars = response.json()
response = requests.get(ENTITY_IDENT_URL + 'traffic_lights')
traffic_lights = response.json()
except requests.exceptions.ConnectionError as e:
print("Is the entity_ident_server running and reachable?")
continue
available = True
for traffic_light in traffic_lights['cursor']:
print(traffic_light)
TrafficLight(tlid=traffic_light['id'],
switching_time=traffic_light['switchingTime']).start()
time.sleep(0.5)
for index, car in enumerate(cars['cursor']):
print(car)
# Get location of first TL
tl_1_loc = geopy.Point(47.89584, 16.20719)
# Calculate starting point by going south of TL_location the amount specified in cars.json
d = geopy.distance.distance(kilometers=car['startingDistance'] / float(1000))
starting_point = d.destination(point=tl_1_loc, bearing=182)
starting_velocity = car['startingVelocity']
print('StartingPoint is {} and startingVelocity is {}'.format(starting_point, starting_velocity))
Vehicle(vin=car['vin'], starting_point=starting_point, starting_velocity=starting_velocity).start_driving()
# Sleep for amount of seconds defined in second car before second car starts
if len(cars['cursor']) > 1 and index < len(cars['cursor']) - 1:
time.sleep(cars['cursor'][index + 1]['startingTime'])