get_drive_jinlong.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. Created on Mon Dec 25 17:35:56 2023
  5. @author: dell
  6. """
  7. # coding: utf-8
  8. #!/usr/bin/env python2
  9. import os
  10. import rosbag
  11. import csv
  12. import math
  13. import sys
  14. import time
  15. def parsebag(input_dir, output_dir):
  16. dic_object_detection = ['Time','Strg_Angle','Accel_Pos','BrkPel_Pos','Real_Speed','latitude','longitude']
  17. object_detection_file = open(output_dir + "/"+"drive.csv", 'w')
  18. writer_object_detection = csv.writer(object_detection_file)
  19. writer_object_detection.writerow(dic_object_detection)
  20. frame_max=sys.maxsize
  21. count_data_read=1
  22. count_cicv_location=1
  23. with rosbag.Bag(input_dir ,'r') as bag:
  24. latitude=0
  25. longitude=0
  26. speed=0
  27. Strg_Angle_Real_Value=0
  28. VCU_Accel_Pos_Value=0
  29. VCU_BrkPel_Pos_Value=0
  30. for topic,msg,t in bag.read_messages(): #t代表时间
  31. #print(topic)
  32. #print('-------------------------------------------------')
  33. if topic == "/cicv_location": #/pji_gps #/cicv_location
  34. count_cicv_location+=1
  35. latitude=msg.latitude
  36. longitude=msg.longitude
  37. speed=pow(pow(msg.velocity_x,2)+pow(msg.velocity_y,2),0.5)*3.6
  38. if count_cicv_location%10==0:
  39. message_location=[str(t)[:-6],Strg_Angle_Real_Value,VCU_Accel_Pos_Value,VCU_BrkPel_Pos_Value,speed,latitude,longitude]
  40. writer_object_detection.writerow(message_location)
  41. if topic == "/data_read": # 10hz
  42. Strg_Angle_Real_Value=msg.Strg_Angle_Real_Value
  43. VCU_Accel_Pos_Value=msg.VCU_Accel_Pos_Value
  44. VCU_BrkPel_Pos_Value=msg.VCU_BrkPel_Pos_Value
  45. count_data_read+=1
  46. if count_data_read%10==0:
  47. message_data =[str(t)[:-6],msg.Strg_Angle_Real_Value,msg.VCU_Accel_Pos_Value,msg.VCU_BrkPel_Pos_Value,speed,latitude,longitude]
  48. writer_object_detection.writerow(message_data)
  49. object_detection_file.close()
  50. if __name__ == "__main__":
  51. # print("Input the path of file...."+'\n')
  52. input_dir = sys.argv[1]
  53. #input_dir='/media/dell/56FAD34BFAD32651/data/jinlong_datareturn/test_1116/data_merge_2023-11-21-14-17-19_brake_12.bag'
  54. bagname=input_dir.split('/')[-1].split('.')[0]
  55. output_dir = sys.argv[2]
  56. #output_dir='/media/dell/56FAD34BFAD32651/data/jinlong_datareturn/test_1116/'
  57. output_dir=os.path.join(output_dir, bagname)
  58. if not os.path.exists(output_dir):
  59. os.makedirs(output_dir)
  60. parsebag(input_dir, output_dir)
  61. '''
  62. try:
  63. parsebag(input_dir, output_dir)
  64. print('successfully analysis '+input_dir)
  65. except Exception as e:
  66. print(e)
  67. '''
  68. #msg.Strg_Angle_Real_Value,msg.VCU_Accel_Pos_Value,msg.VCU_BrkPel_Pos_Value