From 6362b52c7c6233af81ea773c4910024c60cd864b Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期一, 16 十二月 2024 15:05:08 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/resources/agv.py | 135 +++++++++++++++++++++++++++++---------------- 1 files changed, 87 insertions(+), 48 deletions(-) diff --git a/zy-acs-manager/src/main/resources/agv.py b/zy-acs-manager/src/main/resources/agv.py index 1b2669a..2425f67 100644 --- a/zy-acs-manager/src/main/resources/agv.py +++ b/zy-acs-manager/src/main/resources/agv.py @@ -1,19 +1,14 @@ import ast import sys - import numpy as np import json import time import redis radiusLen = None - -#with open("./codeMatrix.txt", "r") as file: -# codeMatrix = np.array(json.loads(file.read())) - -#with open("./cdaMatrix.txt", "r") as file: -# data = json.loads(file.read()) -# cdaMatrix = np.array(data) +codeMatrix = None # 鍏ㄥ眬鍙橀噺 +cdaMatrix = None # 鍏ㄥ眬鍙橀噺 +waveMatrix = None # 鍏ㄥ眬鍙橀噺 # 灏嗗瓧绗︿覆杞崲涓烘诞鐐瑰瀷鏁扮粍 def convert_to_float_array(str_array): @@ -64,6 +59,7 @@ return list(zip(indices[0], indices[1])) def initWaveMatrix(): + global codeMatrix, waveMatrix # 澹版槑浣跨敤鍏ㄥ眬鍙橀噺 lev = 1 waveMatrix = np.empty_like(codeMatrix, dtype=object) @@ -79,7 +75,10 @@ # 浼樺寲鐗堟湰锛氫娇鐢ㄩ泦鍚堟潵鎻愰珮鎬ц兘 def mergeWave(originWave, vehicle): # 灏嗗瓧绗︿覆瑙f瀽涓洪泦鍚� - set_data = set(ast.literal_eval(originWave)) + try: + set_data = set(ast.literal_eval(originWave)) + except (ValueError, SyntaxError): + set_data = set() # 濡傛灉 vehicle 涓嶅湪闆嗗悎涓紝鍒欐坊鍔� set_data.add(vehicle) # 杩斿洖搴忓垪鍖栧悗鐨勫瓧绗︿覆 @@ -96,6 +95,7 @@ # 浣跨敤 numpy 鍔犻�熺殑浠g爜 def process_dynamic_matrix(dynamicMatrix, codeMatrix): + global waveMatrix # 澹版槑浣跨敤鍏ㄥ眬鍙橀噺 # 灏� dynamicMatrix 杞崲涓虹粨鏋勫寲鏁扮粍 dynamicMatrix = convert_to_structured_array(dynamicMatrix) @@ -111,59 +111,98 @@ # 閬嶅巻婊¤冻鏉′欢鐨勫潗鏍� for x, y in zip(x_indices, y_indices): # print(code) - data = dynamicMatrix[x][y] - vehicle = data['vehicle'] - includeList = getWaveScopeByCode(x,y) + vehicle = dynamicMatrix[x][y]['vehicle'] + includeList = getWaveScopeByCode(x, y) for include in includeList: originWave = waveMatrix[include['x']][include['y']] waveMatrix[include['x']][include['y']] = mergeWave(originWave, vehicle) -radiusLenStr = sys.argv[1] -radiusLen = float(radiusLenStr) +def main(): + global radiusLen, codeMatrix, cdaMatrix, waveMatrix # 澹版槑浣跨敤鍏ㄥ眬鍙橀噺 -codeMatrixPath = sys.argv[2] -cdaMatrixPath = sys.argv[3] + if len(sys.argv) != 6: + print("鐢ㄦ硶: python agv.py <radiusLen> <redisHost> <redisPwd> <redisPort> <redisIdx>") + sys.exit(1) -redisHost = sys.argv[4] -redisPwd = sys.argv[5] -redisPort = sys.argv[6] -redisIdx = sys.argv[7] + radiusLenStr = sys.argv[1] + try: + radiusLen = float(radiusLenStr) + except ValueError: + print("radiusLen 蹇呴』鏄竴涓诞鐐规暟") + sys.exit(1) -with open(codeMatrixPath, "r") as file: - codeMatrix = np.array(json.loads(file.read())) + redisHost = sys.argv[2] + redisPwd = sys.argv[3] + redisPort = sys.argv[4] + redisIdx = sys.argv[5] -with open(cdaMatrixPath, "r") as file: - data = json.loads(file.read()) - cdaMatrix = np.array(data) + startTime = time.perf_counter() -startTime = time.perf_counter() + # 鍒涘缓涓�涓繛鎺ユ睜 + try: + pool = redis.ConnectionPool(host=redisHost, port=int(redisPort), password=redisPwd, db=int(redisIdx)) + r = redis.Redis(connection_pool=pool, decode_responses=True) + except Exception as e: + print(f"鏃犳硶杩炴帴鍒� Redis: {e}") + sys.exit(1) -waveMatrix = initWaveMatrix() + try: + codeMatrixStr = r.get('KV.AGV_MAP_ASTAR_CODE_FLAG.1') + if codeMatrixStr is None: + raise ValueError("Redis 涓湭鎵惧埌閿�: KV.AGV_MAP_ASTAR_CODE_FLAG.1") + codeMatrix = np.array(json.loads(codeMatrixStr)) + except Exception as e: + print(f"鑾峰彇 codeMatrix 澶辫触: {e}") + sys.exit(1) -# 鍒涘缓涓�涓繛鎺ユ睜 -pool = redis.ConnectionPool(host=redisHost, port=int(redisPort), password=redisPwd, db=int(redisIdx)) -r = redis.Redis(connection_pool=pool) -dynamicMatrixStr = r.get('KV.AGV_MAP_ASTAR_DYNAMIC_FLAG.1') + try: + cdaMatrixStr = r.get('KV.AGV_MAP_ASTAR_CDA_FLAG.1') + if cdaMatrixStr is None: + raise ValueError("Redis 涓湭鎵惧埌閿�: KV.AGV_MAP_ASTAR_CDA_FLAG.1") + cdaMatrix = np.array(json.loads(cdaMatrixStr)) + except Exception as e: + print(f"鑾峰彇 cdaMatrix 澶辫触: {e}") + sys.exit(1) -dynamicMatrix = np.array(json.loads(dynamicMatrixStr)) -# # 浣跨敤 numpy 鍔犻�熺殑浠g爜 -process_dynamic_matrix(dynamicMatrix, codeMatrix) + try: + dynamicMatrixStr = r.get('KV.AGV_MAP_ASTAR_DYNAMIC_FLAG.1') + if dynamicMatrixStr is None: + raise ValueError("Redis 涓湭鎵惧埌閿�: KV.AGV_MAP_ASTAR_DYNAMIC_FLAG.1") + dynamicMatrix = np.array(json.loads(dynamicMatrixStr)) + except Exception as e: + print(f"鑾峰彇 dynamicMatrix 澶辫触: {e}") + sys.exit(1) -# for x in range(dynamicMatrix.shape[0]): -# for y in range(dynamicMatrix.shape[1]): -# data = dynamicMatrix[x, y] -# vehicle = data['vehicle'] -# if vehicle != '0' and vehicle != '-1': -# getWaveScopeByCode(x, y) + # 鍒濆鍖� waveMatrix + try: + waveMatrix = initWaveMatrix() + except Exception as e: + print(f"鍒濆鍖� waveMatrix 澶辫触: {e}") + sys.exit(1) -# 灏� numpy.ndarray 杞崲涓哄祵濂楀垪琛� -waveMatrixList = waveMatrix.tolist() -# 灏嗗祵濂楀垪琛ㄨ浆鎹负 JSON 瀛楃涓� -waveMatrixJsonStr = json.dumps(waveMatrixList) + # 澶勭悊 dynamicMatrix + try: + process_dynamic_matrix(dynamicMatrix, codeMatrix) + except Exception as e: + print(f"澶勭悊 dynamicMatrix 澶辫触: {e}") + sys.exit(1) -r.set("KV.AGV_MAP_ASTAR_WAVE_FLAG.1",waveMatrixJsonStr) + # 灏� numpy.ndarray 杞崲涓哄祵濂楀垪琛� + waveMatrixList = waveMatrix.tolist() + # 灏嗗祵濂楀垪琛ㄨ浆鎹负 JSON 瀛楃涓� + waveMatrixJsonStr = json.dumps(waveMatrixList) -end = time.perf_counter() -# print('绋嬪簭杩愯鏃堕棿涓�: %s Seconds' % (end - startTime)) -print("1") + try: + r.set("KV.AGV_MAP_ASTAR_WAVE_FLAG.1", waveMatrixJsonStr) + except Exception as e: + print(f"灏� waveMatrix 鍐欏叆 Redis 澶辫触: {e}") + sys.exit(1) + end = time.perf_counter() + # print('绋嬪簭杩愯鏃堕棿涓�: %s Seconds' % (end - startTime)) + print("1") + # 濡傛灉闇�瑕侊紝鍙互鎵撳嵃杩愯鏃堕棿 + # print(f"绋嬪簭杩愯鏃堕棿涓�: {end - startTime:.2f} 绉�") + +if __name__ == "__main__": + main() -- Gitblit v1.9.1