brain.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. #pragma once
  2. /*
  3. * 中央决策大脑
  4. */
  5. #ifndef _IV_DECITION_BRAIN_
  6. #define _IV_DECITION_BRAIN_
  7. #include <common/boost.h>
  8. #include <common/gps_type.h>
  9. //#include <control/controller.h>
  10. //#include <control/can.h>
  11. #include <perception/eyes.h>
  12. #include <decision/decition_maker.h>
  13. //#include <decition/decition_executer.h>
  14. #include <decision/decition_voter.h>
  15. #include <decision/decide_gps_00.h>
  16. #include <decision/decide_line_00.h>
  17. #include <decision/adc_tools/compute_00.h>
  18. #include <perception/sensor.h>
  19. #include <perception/sensor_camera.h>
  20. #include <perception/sensor_gps.h>
  21. #include<perception/sensor_lidar.h>
  22. #include<perception/sensor_radar.h>
  23. //#include <server/carcalling.h>
  24. //#include "adcivstatedb.h"
  25. //#include "decition/vehiclestate_type.h"
  26. #include "common/hmi_type.h"
  27. #include "common/platform_type.h"
  28. #include"common/gps_type.h"
  29. #include <QMutex>
  30. #include <QTime>
  31. #include <memory>
  32. #include "brainstate.pb.h"
  33. #include "decition.pb.h"
  34. #include "mapreq.pb.h"
  35. #include "chassis.pb.h"
  36. #include "hmi.pb.h"
  37. #include "radio_send.pb.h"
  38. #include "ivlog.h"
  39. #include "formation_map.pb.h"
  40. #include "vbox.pb.h"
  41. #include "v2x.pb.h"
  42. #include "ultrasonic.pb.h"
  43. #include "fanyaapi.h"
  44. namespace iv {
  45. namespace decision {
  46. class BrainDecition
  47. {
  48. public:
  49. BrainDecition();
  50. ~BrainDecition();
  51. void inialize();/* 初始化*/
  52. bool loadMapFromFile(std::string fileName);/* 加载地图*/
  53. bool loadMapFromFile2(std::string fileName);
  54. bool loadMapFromFile3(std::string fileName);
  55. bool loadMapFromFile4(std::string fileName);
  56. void start();/* 启动大脑*/
  57. void stop(); //关闭
  58. std::vector<iv::GPSData> navigation_data; //导航数据,GPS结构体数组
  59. std::vector<iv::GPSData> navigation_data2; //导航数据,GPS结构体数组2
  60. std::vector<iv::GPSData> navigation_data3; //导航数据,GPS结构体数组3
  61. std::vector<iv::GPSData> navigation_data4; //导航数据,GPS结构体数组4
  62. std::vector<iv::ObsRadar> radar_data;
  63. std::vector<iv::ObsRadar> lidar_data;
  64. std::vector<iv::ObsRadar> camera_data;
  65. /* std::vector<std::vector<iv::GPSData>> mapsL;
  66. std::vector<std::vector<iv::GPSData>> mapsR;*/
  67. double decision_period = 0.0;
  68. double look1 = 0.0;
  69. double look2 = 0.0;
  70. double look3 = 0.0;
  71. double look4 = 0.0;
  72. double look5 = 0.0;
  73. double look6 = 0.0;
  74. double look7 = 0.0;
  75. void UpdateMap(const char * mapdata,const int mapdatasize);
  76. private:
  77. // iv::perception::Eyes* eyes; //眼睛
  78. // iv::carcalling::carcalling* carcall;
  79. iv::perception::Eyes* eyes;
  80. iv::decision::DecitionMaker* decitionMaker; //决策器
  81. iv::decision::DecitionVoter* decitionVoter; //决策仲裁 判断器
  82. // iv::decition::DecitionExecuter* decitionExecuter; //决策执行器
  83. iv::decision::DecideGps00* decitionGps00; //决策器
  84. iv::decision::DecideLine00* decitionLine00;
  85. // boost::shared_ptr<iv::control::Controller> controller; //实际车辆控制器
  86. boost::thread* thread_run;
  87. iv::ObsLiDAR obs_lidar_; //激光雷达障碍物
  88. iv::ObsRadar obs_radar_; //毫米波雷达障碍物
  89. //iv::ObsCamera obs_camera_; //摄像头障碍物
  90. iv::CameraInfoPtr obs_camera_;
  91. // iv::GPSData gps_data_; //gps 惯导数据
  92. iv::LidarGridPtr obs_lidar_grid_;//激光雷达网格化
  93. iv::LidarGridPtr old_obs_lidar_grid_;//激光雷达网格化
  94. iv::TrafficLight trafficLight;
  95. //iv::StationCmd stationCmd;
  96. int lastMode;
  97. bool lastPause;
  98. void run(); //实际执行逻辑
  99. void * mpamapreq;
  100. void * mpa;
  101. void * mpvbox;
  102. QMutex mMutexMap;
  103. void * mpaDecition;
  104. void * mpaVechicleState;
  105. void * mpaToPlatform;
  106. void * mpaPlanTrace;
  107. void * mpaObsTraceLeft;
  108. void * mpaObsTraceRight;
  109. void ShareDecition(iv::decision::Decition decision);
  110. void ShareBrainstate(iv::brain::brainstate xbs);
  111. private:
  112. void * mpaPAD;
  113. void * mpaHMI;
  114. void * mpaPlatform;
  115. void *mpaGroup;
  116. void * mpmapChangeSig;
  117. void * v2x;
  118. void * ultra;
  119. std::string mstrmemmap_index;
  120. int mnOldTime;
  121. QTime mTime;
  122. double mfSpeedLast;
  123. double mfVehSpeedLast;
  124. public:
  125. void UpdatePAD(const char *pdata, const int ndatasize);
  126. void UpdateHMI(const char * pdata,const int ndatasize);
  127. void UpdatePlatform(const char * pdata,const int ndatasize);
  128. void UpdateGroupInfo(const char * pdata,const int ndatasize);
  129. void UpdateSate();
  130. void UpdateVbox(const char * pdata,const int ndatasize);
  131. void Updatev2x(const char * pdata,const int ndatasize);
  132. void Updateultra(const char * pdata,const int ndatasize);
  133. private:
  134. // Adcivstatedb * mpasd;
  135. void UpdateChassis(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
  136. void adjuseGpsLidarPosition();
  137. fanyaapi mmpcapi;
  138. bool mbUseExternMPC = false;
  139. };
  140. }
  141. }
  142. #endif // !_IV_DECITION_BRAIN_