DESERT 3.5.1
Loading...
Searching...
No Matches
uwsc-mission-coordinator-module.h
Go to the documentation of this file.
1//
2// Copyright (c) 2024 Regents of the SIGNET lab, University of Padova.
3// All rights reserved.
4//
5// Redistribution and use in source and binary forms, with or without
6// modification, are permitted provided that the following conditions
7// are met:
8// 1. Redistributions of source code must retain the above copyright
9// notice, this list of conditions and the following disclaimer.
10// 2. Redistributions in binary form must reproduce the above copyright
11// notice, this list of conditions and the following disclaimer in the
12// documentation and/or other materials provided with the distribution.
13// 3. Neither the name of the University of Padova (SIGNET lab) nor the
14// names of its contributors may be used to endorse or promote products
15// derived from this software without specific prior written permission.
16//
17// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
21// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
42#ifndef UWMC_MODULE_H
43#define UWMC_MODULE_H
44#include <plugin.h>
45#include <vector>
46
48
53class UwMissionCoordinatorModule : public PlugIn
54{
55public:
60
64 virtual ~UwMissionCoordinatorModule() = default;
65
76 virtual int command(int argc, const char *const *argv) override;
77
86 virtual int recvSyncClMsg(ClMessage *m) override;
87
88protected:
92 typedef struct Mine {
101
102 Position *track_position;
105 Mine(Position *p, MineState s)
106 : track_position(p)
107 , state(s)
108 {
109 }
110 } Mine;
111
117 typedef struct AUV_stats {
118 int ctr_id;
119 int trk_id;
120 Position *rov_position;
121 std::vector<Mine> rov_mine;
128 AUV_stats(int id_ctr, int id_trk)
129 : ctr_id(id_ctr)
130 , trk_id(id_trk)
131 , rov_position(nullptr)
132 , rov_mine()
133 , n_mines(0)
134 , rov_status(false)
135 {
136 }
137
138 } AUV_stats;
139
140 std::vector<AUV_stats> auv_follower;
149 void removeMine(int id);
150
158 bool isTracked(Position *p) const;
159};
160
161#endif // UWMC_MODULE_H
UwMissionCoordinatorModule class is used to manage AUV followers and to collect statistics about them...
virtual int command(int argc, const char *const *argv) override
TCL command interpreter.
virtual int recvSyncClMsg(ClMessage *m) override
Recv syncronous cross layer messages to require an operation from another module.
virtual ~UwMissionCoordinatorModule()=default
Destructor of UwMissionCoordinatorModule class.
void removeMine(int id)
Send a signal to the AUV follower to inform it, that the mine it is detecting is removed.
std::vector< AUV_stats > auv_follower
ROV followers info.
UwMissionCoordinatorModule()
Default Constructor of UwMissionCoordinatorModule class.
bool isTracked(Position *p) const
Check if the mine at received position is already tracked.
AUV_stats describes statistics about the AUV follower.
Position * rov_position
Position of ROV follower.
AUV_stats(int id_ctr, int id_trk)
Constructor of AUV_stats struct.
std::vector< Mine > rov_mine
Mines found by ROV follower.
int n_mines
Number of mines found by ROV follower.
bool rov_status
Status of the ROV, if true is detecting a mine.
Mine describes a mine by its position and state.
Position * track_position
Mine tracked position.
MineState
MineState list all the possible state of a mine.
@ MINE_DETECTED
Mine found and started the removing process.