152 lines
4.5 KiB
C++
152 lines
4.5 KiB
C++
/*
|
|
* @Author: 1553836110 1553836110@qq.com
|
|
* @Date: 2023-09-28 15:45:17
|
|
* @LastEditors: zjk 1553836110@qq.com
|
|
* @LastEditTime: 2023-11-15 09:31:32
|
|
* @FilePath: /moos-ivp-pi/src/pTaskManger/TaskManger.h
|
|
* @Description:
|
|
*
|
|
* Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
|
|
*/
|
|
/************************************************************/
|
|
/* NAME: zjk */
|
|
/* ORGN: MIT */
|
|
/* FILE: TaskManger.h */
|
|
/* DATE: */
|
|
/************************************************************/
|
|
|
|
#ifndef TaskManger_HEADER
|
|
#define TaskManger_HEADER
|
|
|
|
#include "MOOS/libMOOS/MOOSLib.h"
|
|
#include "MOOS/libMOOS/Thirdparty/AppCasting/AppCastingMOOSApp.h"
|
|
#include <queue>
|
|
#include <list>
|
|
#include "json/json.h"
|
|
#include "VarDataPair.h"
|
|
|
|
using namespace std;
|
|
enum TaskType{WAYPOINTS, CONSTDEPTH, CONSTSPEED, CONSTHEADING, WAYPOLYGON, NOTYPE};
|
|
enum Status{FAULT=0, UNRUN=1, MANUAL=2 ,RUN=3, CONFIG=5};
|
|
// class TaskManger : public CMOOSApp
|
|
class TaskManger : public AppCastingMOOSApp
|
|
{
|
|
public:
|
|
TaskManger();
|
|
virtual ~TaskManger();
|
|
|
|
bool OnNewMail(MOOSMSG_LIST &NewMail);
|
|
bool Iterate();
|
|
bool OnConnectToServer();
|
|
bool OnStartUp();
|
|
void RegisterVariables();
|
|
bool buildReport();
|
|
void postFaultNumber(int n);
|
|
|
|
bool setSpeed(double speed);
|
|
bool setMaxDepth(string depth);
|
|
bool setWpt(std::string wpt, string speed, string depth);
|
|
bool setWayPol(string polygon, string speed, string depth);
|
|
bool setTaskTimer(string timerCount);
|
|
bool setSafetyRules(string maxTime, string maxDepth, string minAltitude, string polygon);
|
|
bool setWayConfig(string lead, string lead_damper, string capture_line, string capture_radius,string slip_radius);
|
|
|
|
bool sendNode(const string current_node, list<string> &nodeList);
|
|
|
|
bool getWord(const string str, int ct, string &word);
|
|
string getSpeed(const string node);
|
|
string getDepth(const string node);
|
|
string getWayPoint(const string node);
|
|
string getWayPolygon(const list<string> nodeList);
|
|
string getNodeName(const string node);
|
|
string getNode(list<string> &nodelist);
|
|
string getTimeCount();
|
|
string getMaxDepth();
|
|
TaskType getTaskTpye(const string node);
|
|
|
|
int readTaskFile(string taskName);
|
|
int readSafetyRules(string fileName);
|
|
int readWayConfig(string fileName);
|
|
void postReportToSSM();
|
|
|
|
inline void clearHelmFlag(){Notify("HELM_MAP_CLEAR",0.0);}
|
|
inline void taskStart();
|
|
inline void taskFinish();
|
|
void FaultFlagClear();
|
|
inline void InitConfig();
|
|
//内部消息发布
|
|
const string UPDATE_WPT = "WPT_UPDATE";
|
|
const string UPDATE_SPD = "SPEED_UPDATE";
|
|
const string UPDATE_DEP = "DEPTH_UPDATE";
|
|
const string UPDATE_TIMER = "TIMER_UPDATES";
|
|
const string UPDATE_MAXDEP = "MAXDEEP_UPDATES";
|
|
const string UPDATE_OPREGION = "OPREGION_UPDATES";
|
|
const string UPDATE_RESETFAULT = "OPREGION_RESET";
|
|
//内部消息订阅
|
|
const string MSG_WPTFLAG = "CurrentPointComplete";
|
|
const string MSG_ENDFLAG = "END_WayPoint";
|
|
const string MSG_START = "START";
|
|
const string MSG_SENDSAFTRULES = "SendSaftRules";
|
|
const string MSG_FALUT = "TaskFault";
|
|
const string MSG_RUN = "RUN";
|
|
const string MSG_CLEARFAULT = "ClearFalut";
|
|
//交互消息
|
|
const string MSG_IN_SSM = "uMission_action_cmd";
|
|
const string MSG_TO_SSM = "uMission_task_fb";
|
|
const string MSG_TO_FH = "uMission_fault_fb";
|
|
const string MSG_IN_MAN = "uManual_enable_cmd"; //TODO: 增加手操状态
|
|
const string MSG_FAULT_LEV2 = "uFH_errorMsg2_fb";
|
|
const string MSG_FALUT_LEV3 = "uFH_errorMsg3_fb";
|
|
|
|
protected:
|
|
// 任务参数
|
|
string node_wpt;
|
|
string node_depth;
|
|
string node_speed;
|
|
// 安全规则
|
|
string maxDepth;
|
|
string maxTime;
|
|
string safePolygon;
|
|
string minAltitude="0";
|
|
// 路径参数
|
|
string lead;
|
|
string lead_damper;
|
|
string lead_to_start;
|
|
string capture_line;
|
|
string capture_radius;
|
|
string slip_radius;
|
|
string efficiency_measure;
|
|
|
|
string faultMsg;
|
|
|
|
TaskType nodeType;
|
|
list<string> nodeList;
|
|
|
|
private:
|
|
bool current_node_complete = false;
|
|
bool current_pol_complete = false;
|
|
bool start=false;
|
|
bool time_out=false;
|
|
int st=10;
|
|
int faultNumber = 0;
|
|
int readTask = 0;
|
|
string msg;
|
|
string current_node;
|
|
Status state = UNRUN;
|
|
|
|
Json::Value RepList;
|
|
Json::StreamWriterBuilder RepJsBuilder;
|
|
|
|
|
|
//任务文件参数
|
|
//TODO:动态配置任务文件等参数
|
|
string planConfigPath;
|
|
vector<string> taskList;
|
|
int taskCount;
|
|
string taskName;
|
|
//发送节点信息
|
|
Json::Value node_rpt;
|
|
};
|
|
|
|
#endif
|