#pragma once
#ifndef _IV_DECITION__BASE_CONTROLLER_
#define _IV_DECITION__BASE_CONTROLLER_

#include <gps_type.h>
#include <decition_type.h>
#include <obstacle_type.h>
#include<vector>
#include <gnss_coordinate_convert.h>

namespace iv {
namespace decition {
//根据传感器传输来的信息作出决策
class BaseController {
public:

    int controller_id;
    std::string  controller_name;

    BaseController();
    ~BaseController();


    /**
      * @brief iv::decition::BaseController::getControlDecition
      * 基类BaseController的抽象方法 用于计算横向控制的方向盘和纵向控制的加速度
      *
      * @param now_gps_ins          实时gps信息
      * @param path                 目标路径
      * @param dSpeed               决策速度
      * @param obsDistacne          障碍物距离
      * @param obsSpeed             障碍物速度
      * @param computeAngle         是否要计算方向盘角度
      * @param computeAcc           是否要计算纵向加速度
      * @param decition             决策信息结构体的指针
      * @return                     iv::decition::Decition
      */
    virtual  iv::decition::Decition getControlDecition(GPS_INS now_gps_ins, std::vector<Point2D>  path , float dSpeed, float obsDistacne , float  obsSpeed,
                                                       bool computeAngle, bool computeAcc, Decition *decition);


private:


};

}
}


















#endif // ADC_CONTROLLER_H