Go to the documentation of this file.00001
00013 #ifndef LGL_PURSUIT_API_HPP
00014 #define LGL_PURSUIT_API_HPP
00015
00016 #include "lgl/PursuitGraph.hpp"
00017 #include "lgl/PursuitNavigator.hpp"
00018 #include "lgl/VisibilityMap.hpp"
00019 #include "lgl/GeoData.hpp"
00020
00021
00022
00023
00024
00025 #include <string>
00026
00027
00028
00029
00030 namespace jafar {
00031 namespace lgl {
00032
00033
00034
00035
00036
00037 typedef struct {
00038
00039 std::string robotAccessPath ;
00040 std::string targetAccessPath ;
00041 std::string robotVisibPath ;
00042
00043
00044 unsigned int viewLength ;
00045 unsigned int riskTermMaxValue ;
00046 unsigned int sensorHeight ;
00047
00048
00049 unsigned int xOffset ;
00050 unsigned int yOffset ;
00051 double scale ;
00052 } PursuitInitParam;
00053
00054
00055 typedef struct {
00056 int x ;
00057 int y ;
00058 } Pos;
00059
00060 typedef struct {
00061 int x ;
00062 int y ;
00063 unsigned int t ;
00064 } Danger;
00065
00066 typedef struct {
00067
00068 Pos targetPos ;
00069 Pos robotPos ;
00070
00071 Pos desiredRobotPos ;
00072
00073
00074 unsigned int horizon ;
00075
00076 unsigned int nFront ;
00077 unsigned int nRisk ;
00078 unsigned int nDanger ;
00079
00080
00081 std::vector<Danger> dangerList ;
00082
00083 } PursuitState ;
00084
00085
00086
00087 class PursuitAPI
00088 {
00089 public:
00090
00091
00092
00093
00094 PursuitAPI( std::string _robotAccessPath ,
00095 std::string _targetAccessPath ,
00096 std::string _robotVisibPath ,
00097 unsigned int _viewLength ,
00098 unsigned int _riskTermMaxValue ,
00099 unsigned int _sensorHeight ,
00100 unsigned int _xOffset = 0 ,
00101 unsigned int _yOffset = 0 ,
00102 double _scale = 1.0
00103 );
00104
00105 ~PursuitAPI(){}
00106
00107
00108
00109
00110
00111
00112
00113 int startPG(Pos _robotPos, Pos _targetPos) ;
00114
00115
00116 int updatePG(Pos _robotPos, Pos _targetPos) ;
00117
00118
00119 int computePG();
00120
00121
00122
00123
00124
00125
00126
00127 int setInitParams( std::string _robotAccessPath ,
00128 std::string _targetAccessPath ,
00129 std::string _robotVisibPath ,
00130 unsigned int _viewLength ,
00131 unsigned int _riskTermMaxValue ,
00132 unsigned int _sensorHeight ,
00133 unsigned int _xOffset = 0 ,
00134 unsigned int _yOffset = 0 ,
00135 double _scale = 1.0
00136 );
00137
00138 PursuitInitParam getInitParams();
00139
00140 PursuitState getCurrentState();
00141
00142
00143
00144
00145
00146
00147
00148 bool checkPos( int x, int y );
00149 bool checkPos( double x, double y );
00150
00151
00152 private:
00153
00154
00155
00156
00157
00158
00159 PursuitInitParam initParam ;
00160
00161
00162 PursuitNavigator* pNavigator ;
00163 GeoData* pGeodata ;
00164 VisibilityMap* pVisibilityMap ;
00165
00166
00167 PursuitGraph* pPG ;
00168
00169
00170 PursuitState currentState ;
00171
00172
00173
00174
00175
00176
00177 int initWorld();
00178
00179
00180 int initPG();
00181
00182
00183 };
00184
00185 }
00186 }
00187
00188 #endif // LGL_PURSUIT_API_HPP