Conscience Core
CscMoveForwardInGroup.h
Go to the documentation of this file.
1 //
2 // CscMoveForwardInGroup.hpp
3 // ConscienceRobotManager
4 //
5 // Created by Max Lhermitte on 15/02/2023.
6 // Copyright © 2023 IliesZaoui. All rights reserved.
7 //
8 
9 #ifndef CscMoveForwardInGroup_hpp
10 #define CscMoveForwardInGroup_hpp
11 
12 #include "../../Simulator/CscEnvironmentSimulator.h"
14 #include "Axiomes/Csc3dTypes.h"
15 #include "CscCommon.h"
19 
20 #include <mutex>
21 
22 namespace conscience_core::ai {
23 class CscEntityReflexion;
24 }
25 using namespace conscience_core::lidar;
26 
32 public:
33  bool hasAlreadySentSequenceStop = false;
35  private:
36  std::optional<float> angle;
37  std::optional<float> distance;
38  std::optional<float> height;
39 
40  public:
41  FollowParameters(std::optional<float> angle = 0.0f,
42  std::optional<float> distance = 0.0f,
43  std::optional<float> height = 0.0f);
44 
45  float getAngle() const;
46  float getDistance() const;
47  float getHeight() const;
48  };
49 
51  private:
52  const string serialNumber;
53  CscPoint3d *position;
54  CscPoint3d *positionTarget;
55  const FollowParameters *followParams;
56  CscEntityPositionManager *posManager;
57 
58  public:
59  SlaveMoveParameters(const string &serialNumber, const FollowParameters *followParams, CscEntityPositionManager *posManager);
61 
62  const string &getSerialNumber() const;
63  CscPoint3d *getPosition() const;
64  CscPoint3d *getPositionTarget() const;
65  const FollowParameters *getFollowParams() const;
66  CscEntityPositionManager *getPosManager() const;
67  void setPosition(CscPoint3d *position);
68  void setPositionTarget(CscPoint3d *positionTarget);
69  };
70 
72  ptr<CscMoveForwardInGroupTarget> masterReference,
73  ptr<CscEntityReflexion> entitySlaveReflexion,
74  const FollowParameters *followParameters,
75  const CscEnvironmentSimulator &environmentSimulator);
76 
78 
79  void moveForwardInGroupLoopTick();
80  const string &getFollowTargetWorldId() const;
81  void addSlave(ptr<CscEntityReflexion> slave, const CscMoveForwardInGroup::FollowParameters *params);
82  void removeSlave(const string &serialNumberSlaveToRemove);
83 
84  vector<SlaveMoveParameters *> getSlaveMoveParameters();
85  vector<string> getSlaveSerialNumbers();
86 
87 private:
88  unique_ptr<CscLogger> logger = CscLogger::getForCategory("CscMoveForwardInGroup");
89  const CscEnvironmentSimulator &globalEnvironment;
90  ptr<CscMoveForwardInGroupTarget> masterReference;
91  ptr<CscEntityReflexion> entitySlaveReflexion;
92  string followTargetWorldId;
93  CscPoint3d *masterPosition;
94  CscPoint3d *masterOrientation;
95  vector<SlaveMoveParameters *> slavesMoveParameters;
96  recursive_mutex slaveMutex;
97 
98  bool updateMasterPosition();
99  void updateSlavesPositionsTarget();
100 };
101 
102 }
103 
104 #endif
conscience_core::axiomes::CscPoint3d
The CscPoint3d class represents a point in three-dimensional space. It is primarily used to denote a ...
Definition: Csc3dTypes.h:24
CSC_DLL_IMPORTEXPORT
#define CSC_DLL_IMPORTEXPORT
Definition: os.h:34
conscience_core::ai
Definition: alerts.cpp:12
conscience_core::lidar
Definition: CscEntityReflexion.h:42
conscience_core::ai::multi_entity::CscMoveForwardInGroup::SlaveMoveParameters
Definition: CscMoveForwardInGroup.h:50
logger
static std::unique_ptr< CscLogger > logger
Definition: gltfHelpers.cpp:6
conscience_core::ai::multi_entity::CscMoveForwardInGroup
This class is made to allow entities called slave entities to know a position to follow another entit...
Definition: CscMoveForwardInGroup.h:31
conscience_core::ai::multi_entity
Definition: CscMoveForwardInGroup.cpp:17
conscience_core::ai::multi_entity::CscMoveForwardInGroup::FollowParameters
Definition: CscMoveForwardInGroup.h:34
CscCommon.h
CscMoveForwardInGroupTarget.h
Csc3dTypes.h
CscEnvironmentSimulator
Definition: CscEnvironmentSimulator.h:31
CscMoveForwardInGroupTargetObject.h
conscience_core::lidar::CscEntityPositionManager
Definition: CscEntityPositionManager.h:44
f
double f
Definition: HybridAStar.cpp:190
CscEntityPositionManager.h
ptr
std::shared_ptr< T > ptr
Definition: CscCommon.h:29