Conscience Core
CommandEntityToPosition.h
Go to the documentation of this file.
1 // ConscienceRobotManager
2 //
3 // Created by Louis Grignon on 21/12/2022.
4 // Copyright © 2022 IliesZaoui. All rights reserved.
5 //
6 #ifndef CommandEntityToPosition_h
7 #define CommandEntityToPosition_h
8 
10 #include "Command.h"
12 
14 
16 
17 ENUM(CommandEntityToPositionAlgorithm,
21  CommandEntityToPositionAlgorithm_Default,
22 
23  CommandEntityToPositionAlgorithm_Dijkstra);
24 
31 
32 public:
33  inline static const CommandTypeId COMMAND_ID = "ENTITY_TO_POSITION";
34  static constexpr int ERROR_CODE_UNREACHABLE = -1;
35  static constexpr int ERROR_CODE_OUTSIDE_ZONE = -2;
36  static constexpr int ERROR_CODE_ENTITY_REFLEXION_NOT_FOUND = -3;
37  static constexpr int ERROR_CODE_TOO_CLOSE = -4;
38 
50  const CscPoint3d *targetPosition,
51  ptr<CscEntityReflexion> entityReflexion,
52  CscArea3d *zone = nullptr,
53  optional<double> distanceWithObjectAutorized = {},
54  optional<int> matrixSize = {},
55  const CscPoint3d *startPosition = nullptr,
56  optional<bool> useGnssCoordinates = {},
57  const vector<string> *placeModelIdsToIgnore = nullptr,
58  optional<CommandEntityToPositionAlgorithm> algorithm = {});
59 
60  ~CommandEntityToPosition() override;
61 
65  void setDoNotPlayResult(bool value);
66 
70  void setDeletePointers(bool value);
71 
75  void setCartographyPoints(const vector<CscPoint3d *> *cartographyPoints);
76 
77 protected:
78  const CscCommandExecutionResultSequence *doExecute(CscEnvironmentSimulator &environmentSimulator) override;
79  ptr<CscEntityReflexion> getEntityReflexion() const override;
80 
81 private:
82  CommandEntityToPositionAlgorithm algorithm;
83  const CscPoint3d *targetPosition;
84  ptr<CscEntityReflexion> entityReflexion;
85  CscArea3d *zone;
86  optional<double> distanceWithObjectAutorized;
87  optional<int> matrixSize;
88  const CscPoint3d *startPosition;
89  optional<bool> useGnssCoordinates;
90  const vector<string> *placeModelIdsToIgnore;
91  bool doNotPlayResult = false;
92  bool deletePointers = true;
93  const vector<CscPoint3d *> *cartographyPoints = nullptr;
94 };
95 
99 optional<CscPoint3d *> computeValidReachPosition(CommandEntityToPositionAlgorithm algorithm, ptr<CscEntityReflexion> entityReflexion, const CscPoint3d *startPosition, const CscPoint3d *targetPosition, optional<double> distanceWithObjectAutorizedMaybe, const vector<string> *, CscArea3d *zone, optional<int> matrixSizeMaybe, optional<bool> useGnssCoordinatesMaybe, CscEnvironmentSimulator &environmentSimulator);
100 
101 CscPoint3d *evaluateEntityToPositionStartPosition(const CscPoint3d *requestedStartPosition, optional<bool> useGnssCoordinates, ptr<CscEntityReflexion> entityReflexion, CscEnvironmentSimulator &environmentSimulator);
102 
103 COMMAND_TYPE_BUILDER(CommandEntityToPosition, CscPoint3d, double, double, double)
104 COMMAND_TYPE_BUILDER(CommandEntityToPosition, CscArea3d, double, double, double, double, double, double)
105 COMMAND_REGISTER(CommandEntityToPosition, const CscPoint3d *, ptr<CscEntityReflexion>, CscArea3d *, optional<double>, optional<int>, const CscPoint3d *, optional<bool>, const vector<string> *, optional<CommandEntityToPositionAlgorithm>)
106 
107 }
108 
109 #endif
pathFinding.h
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::axiomes::CscArea3d
Definition: Csc3dTypes.h:231
Command.h
conscience_core::bridging::commands::environment_entities::evaluateEntityToPositionStartPosition
CscPoint3d * evaluateEntityToPositionStartPosition(const CscPoint3d *requestedStartPosition, optional< bool > useGnssCoordinates, ptr< CscEntityReflexion > entityReflexion, CscEnvironmentSimulator &environmentSimulator)
Definition: CommandEntityToPosition.cpp:750
conscience_core::bridging::commands::CommandTypeId
string CommandTypeId
Definition: Command.h:29
conscience_core::ai::algorithms::path_finding
Definition: Dijkstra.cpp:7
conscience_core::bridging::commands::environment_entities::ENUM
ENUM(CommandEntityToPositionAlgorithm, CommandEntityToPositionAlgorithm_Default, CommandEntityToPositionAlgorithm_Dijkstra)
conscience_core::bridging::commands::environment_entities
Definition: CommandEntityToOrientation.cpp:14
conscience_core::bridging::commands::CscCommand
Definition: Command.h:40
COMMAND_REGISTER
#define COMMAND_REGISTER(COMMAND_REGISTER_className,...)
Definition: CscCommandAutoParse.h:477
conscience_core::bridging::commands::environment_entities::computeValidReachPosition
optional< CscPoint3d * > computeValidReachPosition(CommandEntityToPositionAlgorithm algorithm, ptr< CscEntityReflexion > entityReflexion, const CscPoint3d *startPosition, const CscPoint3d *targetPosition, optional< double > distanceWithObjectAutorizedMaybe, const vector< string > *placeModelIdsToIgnore, CscArea3d *zone, optional< int > matrixSizeMaybe, optional< bool > useGnssCoordinatesMaybe, CscEnvironmentSimulator &environmentSimulator)
Definition: CommandEntityToPosition.cpp:737
conscience_core::bridging::commands::environment_objects::optional< double >
const ptr< CscObjectModel > const string const CscPoint3d const CscPoint3d optional< double >
Definition: environmentObjectsCommands.h:367
COMMAND_TYPE_BUILDER
#define COMMAND_TYPE_BUILDER(PREFIX, COMMAND_REGISTER_className,...)
Definition: CscCommandAutoParse.h:515
CscEnvironmentSimulator
Definition: CscEnvironmentSimulator.h:31
CscCommandAutoParse.h
ptr
std::shared_ptr< T > ptr
Definition: CscCommon.h:29
conscience_core::bridging::commands::environment_entities::CommandEntityToPosition
Definition: CommandEntityToPosition.h:30