import ADCPlatform import control import planning.decision as planning import initial.initial as initial import sensor.loadsensor as sensor import perception.perception as perception import perception.distanceprocessing as distanceprocessing from perception.perception import DistanceData import threading data = dict() data["control"] = None data["landLine"] = None data["radar"] = None data["image"] = None result = None distanceData = DistanceData() previous_distance = DistanceData() current_distance = DistanceData() if __name__ == '__main__': # 开启平台SDK # 设置服务器访问地址 serverUrl = 'https://web.simu.widc.icvrc.cn/api/' # 设置登录用户名 username = 'YYX_zdjs' # 设置登录密码 password = 'ps123456' # whether initialize perception model perceptionFlag = True image_left_bound = 303 image_right_bound = 337 result = ADCPlatform.start(serverUrl, username, password) if result: print("算法接入成功!") print("启动任务") ADCPlatform.start_task() # init func get sensor data SensorId, Controller, PerceptionArgs, MyCar = initial.init(perceptionFlag, image_left_bound, image_right_bound) # multi thread while true thread1 = threading.Thread(target=sensor.run, args=(SensorId, data, )) thread2 = threading.Thread(target=perception.run, args=(perceptionFlag, data, PerceptionArgs, distanceData, MyCar, )) thread1.start() thread2.start() epoch = 1 while True: distanceprocessing.run(distanceData, previous_distance, current_distance, MyCar) print("current : ", distanceData.distance_mid, "left : ", distanceData.distance_left, "right : ", distanceData.distance_right) print("car decison : ", MyCar.cardecision) planning.run(distanceData, MyCar) control.run(Controller, MyCar, SensorId) # if (MyCar.speed > 58): # MyCar.cardecision = 'follow' # if (MyCar.cardecision == 'follow' # and not MyCar.changing # and MyCar.speed < 41): # MyCar.cardecision = 'overtake' # direction = 'right' epoch += 1 if (epoch == 1000): epoch = 1 # 到不了这里 能一直跑到平台关闭 thread1.join() thread2.join() ADCPlatform.stop() else: # 停止平台 ADCPlatform.stop()