123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- #pragma once
- /*
- * 中央决策大脑
- */
- #ifndef _IV_DECITION_BRAIN_
- #define _IV_DECITION_BRAIN_
- #include <common/boost.h>
- #include <common/gps_type.h>
- //#include <control/controller.h>
- //#include <control/can.h>
- #include <perception/eyes.h>
- #include <decision/decition_maker.h>
- //#include <decition/decition_executer.h>
- #include <decision/decition_voter.h>
- #include <decision/decide_gps_00.h>
- #include <decision/decide_line_00.h>
- #include <decision/adc_tools/compute_00.h>
- #include <perception/sensor.h>
- #include <perception/sensor_camera.h>
- #include <perception/sensor_gps.h>
- #include<perception/sensor_lidar.h>
- #include<perception/sensor_radar.h>
- //#include <server/carcalling.h>
- //#include "adcivstatedb.h"
- //#include "decition/vehiclestate_type.h"
- #include "common/hmi_type.h"
- #include "common/platform_type.h"
- #include"common/gps_type.h"
- #include <QMutex>
- #include <QTime>
- #include <memory>
- #include "brainstate.pb.h"
- #include "decition.pb.h"
- #include "mapreq.pb.h"
- #include "chassis.pb.h"
- #include "hmi.pb.h"
- #include "radio_send.pb.h"
- #include "ivlog.h"
- #include "formation_map.pb.h"
- #include "vbox.pb.h"
- #include "v2x.pb.h"
- #include "ultrasonic.pb.h"
- #include "fanyaapi.h"
- namespace iv {
- namespace decision {
- class BrainDecition
- {
- public:
- BrainDecition();
- ~BrainDecition();
- void inialize();/* 初始化*/
- bool loadMapFromFile(std::string fileName);/* 加载地图*/
- bool loadMapFromFile2(std::string fileName);
- bool loadMapFromFile3(std::string fileName);
- bool loadMapFromFile4(std::string fileName);
- void start();/* 启动大脑*/
- void stop(); //关闭
- std::vector<iv::GPSData> navigation_data; //导航数据,GPS结构体数组
- std::vector<iv::GPSData> navigation_data2; //导航数据,GPS结构体数组2
- std::vector<iv::GPSData> navigation_data3; //导航数据,GPS结构体数组3
- std::vector<iv::GPSData> navigation_data4; //导航数据,GPS结构体数组4
- std::vector<iv::ObsRadar> radar_data;
- std::vector<iv::ObsRadar> lidar_data;
- std::vector<iv::ObsRadar> camera_data;
- /* std::vector<std::vector<iv::GPSData>> mapsL;
- std::vector<std::vector<iv::GPSData>> mapsR;*/
- double decision_period = 0.0;
- double look1 = 0.0;
- double look2 = 0.0;
- double look3 = 0.0;
- double look4 = 0.0;
- double look5 = 0.0;
- double look6 = 0.0;
- double look7 = 0.0;
- void UpdateMap(const char * mapdata,const int mapdatasize);
- private:
- // iv::perception::Eyes* eyes; //眼睛
- // iv::carcalling::carcalling* carcall;
- iv::perception::Eyes* eyes;
- iv::decision::DecitionMaker* decitionMaker; //决策器
- iv::decision::DecitionVoter* decitionVoter; //决策仲裁 判断器
- // iv::decition::DecitionExecuter* decitionExecuter; //决策执行器
- iv::decision::DecideGps00* decitionGps00; //决策器
- iv::decision::DecideLine00* decitionLine00;
- // boost::shared_ptr<iv::control::Controller> controller; //实际车辆控制器
- boost::thread* thread_run;
-
- iv::ObsLiDAR obs_lidar_; //激光雷达障碍物
- iv::ObsRadar obs_radar_; //毫米波雷达障碍物
- //iv::ObsCamera obs_camera_; //摄像头障碍物
- iv::CameraInfoPtr obs_camera_;
- // iv::GPSData gps_data_; //gps 惯导数据
- iv::LidarGridPtr obs_lidar_grid_;//激光雷达网格化
- iv::LidarGridPtr old_obs_lidar_grid_;//激光雷达网格化
- iv::TrafficLight trafficLight;
- //iv::StationCmd stationCmd;
- int lastMode;
- bool lastPause;
- void run(); //实际执行逻辑
- void * mpamapreq;
- void * mpa;
- void * mpvbox;
- QMutex mMutexMap;
- void * mpaDecition;
- void * mpaVechicleState;
- void * mpaToPlatform;
- void * mpaPlanTrace;
- void * mpaObsTraceLeft;
- void * mpaObsTraceRight;
- void ShareDecition(iv::decision::Decition decision);
- void ShareBrainstate(iv::brain::brainstate xbs);
- private:
- void * mpaPAD;
- void * mpaHMI;
- void * mpaPlatform;
- void *mpaGroup;
- void * mpmapChangeSig;
- void * v2x;
- void * ultra;
- std::string mstrmemmap_index;
- int mnOldTime;
- QTime mTime;
- double mfSpeedLast;
- double mfVehSpeedLast;
- public:
- void UpdatePAD(const char *pdata, const int ndatasize);
- void UpdateHMI(const char * pdata,const int ndatasize);
- void UpdatePlatform(const char * pdata,const int ndatasize);
- void UpdateGroupInfo(const char * pdata,const int ndatasize);
- void UpdateSate();
- void UpdateVbox(const char * pdata,const int ndatasize);
- void Updatev2x(const char * pdata,const int ndatasize);
- void Updateultra(const char * pdata,const int ndatasize);
- private:
- // Adcivstatedb * mpasd;
- void UpdateChassis(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
- void adjuseGpsLidarPosition();
- fanyaapi mmpcapi;
- bool mbUseExternMPC = false;
- };
- }
- }
- #endif // !_IV_DECITION_BRAIN_
|