#ifndef DUBINS_PLANNER_H
#define DUBINS_PLANNER_H
#include "base_planner.h"
#include <adc_tools/dubins.h>
#include <QCoreApplication>

#include <math.h>
#include <iostream>



#include <stdio.h>
#include <string.h>

namespace iv{
namespace decition{
    class DubinsPlanner : public BasePlanner{
    public:
        DubinsPlanner();
        ~DubinsPlanner();

         static std::vector<iv::GPSData>  gpsMap;

        /**
         * @brief iv::decition::LaneChangePlanner::getPath
         * 采用的车道变换的局部路径生成方法。计算原始地图路径偏移offset距离之后的路径。
         *
         * @param now_gps_ins          实时gps信息
         * @param gpsMapLine           地图数据点
         * @param PathPoint            地图路线中距离车辆位置最近的一个点的序号
         * @param offset               在车辆避障中,地图源路线所在车道 与 即将去往的车道 之间的距离差值。可以为负值。
         * @param lidarGridPtr         激光雷达信息网格
         * @return                     返回一条车辆坐标系下的路径
         */
        std::vector<iv::Point2D> getPath(GPS_INS now_gps_ins, const std::vector<GPSData>& gpsMapLine, int PathPoint, double offset, iv::LidarGridPtr lidarGridPtr);

        int  static printConfiguration(double q[3], double x, void* user_data);

        };
    }
}


#endif // DUBINS_PLANNER_H