cameradecisionmain.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import modulecommpython
  2. import numpy as np
  3. import time
  4. import sys
  5. import proto.cameraobjectarray_pb2 as cameraobjectarray_pb2
  6. import proto.decitionspeedlimit_pb2 as decitionspeedlimit_pb2
  7. import proto.gpsimu_pb2 as gpsimu_pb2 # 2024.10.14
  8. from PyModuleCommModule import PyModuleComm
  9. from cameradecision import CameraDecision
  10. time_gpsimu = 0
  11. msg_gpsimu = gpsimu_pb2.gpsimu()
  12. time_objectarray = 0
  13. msg_cameraobjectarray = cameraobjectarray_pb2.cameraobjectarray()
  14. gdecision = CameraDecision()
  15. # 2024.10.14
  16. def gpsimu_callback(arr : np,nsize,time):
  17. global msg_gpsimu
  18. global time_gpsimu
  19. # print("Python callback function called from C++!. time: ",time)
  20. # print(" size: ",nsize)
  21. sub_arr = arr[0:nsize]
  22. databytes = sub_arr.tobytes()
  23. msg = gpsimu_pb2.gpsimu()
  24. msg.ParseFromString(databytes)
  25. msg_gpsimu = msg
  26. time_gpsimu = time
  27. # 2024.10.14
  28. def cameraobjectarray_callback(arr : np,nsize,time):
  29. global msg_cameraobjectarray
  30. global time_objectarray
  31. sub_arr = arr[0:nsize]
  32. databytes = sub_arr.tobytes() #sub_arr.tostring()
  33. msg = cameraobjectarray_pb2.cameraobjectarray()
  34. msg.ParseFromString(databytes)
  35. msg_cameraobjectarray = msg
  36. time_objectarray = time
  37. # length = len(msg_cameraobjectarray.obj)
  38. # print("obj size: ",length)
  39. pass
  40. def SendDefDecision(md : PyModuleComm):
  41. pass
  42. def MakeDecision(md : PyModuleComm, xobjarray: cameraobjectarray_pb2.cameraobjectarray,xgpsimu: gpsimu_pb2.gpsimu): # 2024.10.14
  43. global gdecision
  44. if time_objectarray == 0 :
  45. print(" no object")
  46. return
  47. # print("map1 point lenth: ",length)
  48. xdecision = gdecision.CalcDecision(xobjarray,xgpsimu) # 2024.10.14
  49. serialized_str = xdecision.SerializeToString()
  50. serialized_array = np.frombuffer(serialized_str, dtype=np.uint8)
  51. length = len(serialized_array)
  52. md.SendData(serialized_array,length)
  53. pass
  54. def main():
  55. # 初始化一个变量
  56. count = 0
  57. count = 3.5/1.5
  58. count = int(count)
  59. print("count = ",count)
  60. mc = PyModuleComm("hcp2_gpsimu") # 2024.10.14
  61. mc.RegisterRecv(gpsimu_callback) # 2024.10.14
  62. mobj = PyModuleComm("signarray")
  63. mobj.RegisterRecv(cameraobjectarray_callback)
  64. md = PyModuleComm("decitonspeedlimit")
  65. md.RegiseterSend(100000,1)
  66. # 使用while循环,只要count小于10,就继续循环
  67. while count < 10:
  68. MakeDecision(md,msg_cameraobjectarray,msg_gpsimu)
  69. time.sleep(0.05)
  70. print("循环结束!")
  71. # 调用main函数
  72. if __name__ == "__main__":
  73. main()