Conscience Core
CscEntityModel.h
Go to the documentation of this file.
1 //
2 // CscEntityModel.hpp
3 // ConscienceRobotManager
4 //
5 // Created by ILIES ZAOUI on 21/08/2018.
6 // Copyright © 2018 IliesZaoui. All rights reserved.
7 //
8 
9 #ifndef CscRobotModel_h
10 #define CscRobotModel_h
11 
12 #include "CscCommon.h"
13 
14 
15 #include "Axiomes/Csc3dTypes.h"
18 #include "CoreObjects/CscMember.h"
23 
24 #define ENTITY_MODEL_ID_CARE "49"
25 #define ENTITY_MODEL_ID_BERING "46"
26 #define ENTITY_MODEL_ID_BERING_1B "51"
27 #define ENTITY_MODEL_ID_DJIMAVIC3 "60"
28 #define ENTITY_MODEL_ID_UBIK "58"
29 #define ENTITY_MODEL_ID_UBIKMAX "65"
30 
31 inline static const std::string ENTITY_TYPE_FLY = "Fly";
32 inline static const std::string ENTITY_TYPE_ROVER = "Rover";
33 inline static const std::string ENTITY_TYPE_POD = "Pod";
34 inline static const std::string ENTITY_TYPE_STATIC = "Static";
35 inline static const std::string ENTITY_TYPE_ARM = "Arm";
36 inline static const std::string ENTITY_TYPE_MARIN = "Marin";
37 
38 using std::optional;
39 using std::string;
40 using std::vector;
41 
42 using namespace conscience_core::axiomes;
43 
45  float rightMovementCoef = 1.0;
46  float leftMovementCoef = 1.0;
47  float backMovementCoef = 1.0;
48 };
49 struct FieldOfView {
50  double width;
51  double height;
52 };
53 
55 
56 private:
57  vector<const CscMemberJoint *> *joints;
58  vector<const CscMember *> *members;
59  vector<const CscPropeller *> *propellers;
60  vector<const CscMemberWheel *> *wheels;
61  vector<const CscTranslation *> *translations;
62  vector<const CscEntityLidar *> *lidars;
63  CscPoint3d *origin;
64  const CscEntityVision *vision;
65  const string id;
66  const map<string, float> maxHeightByMemberName;
67  const float defaultYPositionCm;
68  const CscPoint3d *const defaultRotationPitchYawRoll;
69  const string name;
70  const string entityType;
71  const string owner;
72  RobotModelGlobalCoefs globalCoefs;
73  bool entityHasLeftAndRightSides;
74 
75  bool computeHasLeftAndRightSides();
76 
77 public:
78  inline static const string MEMBER_CORE = "Conscience_Member_Core";
79  inline static const int MEMBER_CORE_ID = 0;
80  inline static const string MEMBER_HEAD = "Conscience_Member_Head";
81  inline static const string MEMBER_LENSE = "Conscience_Member_Lense";
82  inline static const string MEMBER_LIDAR = "Conscience_Lidar";
83  inline static const string MEMBER_FOOT_LEFT = "Conscience_Member_FootLeft";
84  inline static const string MEMBER_FOOT_RIGHT = "Conscience_Member_FootRight";
85  inline static const string MEMBER_PREFIX = "Conscience_Member_";
86 
87  inline static const CscPoint3d *INITIAL_EULER = new CscPoint3d(0, 0, -M_PI_2);
88  inline static const CscQuaternion INITIAL_QUATERNION = CscQuaternion::fromAngleAxis(-M_PI_2, AXIS_3D_X);
89 
94  const string &modelId,
95  string entityType,
96  string name,
97  string robotOwner,
98  vector<const CscMember *> *membersIn,
99  vector<const CscMemberJoint *> *jointsIn,
100  vector<const CscPropeller *> *propellersIn,
101  vector<const CscMemberWheel *> *wheelsIn,
102  vector<const CscTranslation *> *translationsIn,
103 
104  vector<const CscEntityLidar *> *lidarsIn,
105 
106  float defaultYPositionCm,
107  const CscPoint3d *defaultRotationPitchYawRoll,
108  const map<string, float> &maxHeightByMemberNameIn,
109 
110  const CscEntityVision *visionIn,
111  const RobotModelGlobalCoefs &globalCoefs);
112 
113  virtual ~CscEntityModel();
114  virtual const string &getId() const;
115 
116  string getEntityType() const;
117  string getName() const;
118  FieldOfView getLenseFieldOfView() const;
119  string getOwner() const;
120 
121  CscArea3d getBoundingBox() const;
125  CscSize3d getCoreMemberDimensions() const;
126 
127  const vector<const CscMember *> *getMembers() const;
128 
129  const vector<const CscMemberJoint *> *getPivots() const;
130  const vector<const CscTranslation *> *getTranslations() const;
131  const vector<const CscPropeller *> *getPropellers() const;
132  const vector<const CscMemberWheel *> *getWheels() const;
133  const vector<const CscEntityLidar *> *getLidars() const;
134 
135  const CscMemberJoint *getPivotById(int id) const;
136  const CscTranslation *getTranslationById(int id) const;
137  const CscPropeller *getPropellerById(int id) const;
138  const CscMemberWheel *getWheelById(int id) const;
139 
140  optional<int> getPivotIdByTag(string searchTag) const; // Tag : cameraAxisPan, cameraAxisTilt, A compléter
141 
142  virtual int countMembers() const;
143  virtual int countPivots() const;
144  virtual int countTranslations() const;
145  virtual int countPropellers() const;
146  virtual int countWheels() const;
147  virtual int countLidars() const;
148  float getHeightMaxByMember(const string &memberName) const;
149  const RobotModelGlobalCoefs &getGlobalCoefs() const;
150  bool hasLeftAndRightSides() const;
151  CscEntityModel *clone() const;
152 
153  const CscMember *getMemberById(int memberId) const;
154  const CscMember *getMemberByName(const string &memberName) const;
155 
159  const int getMemberIndexByName(const string &memberName) const;
160 
161  const CscEntityVision *getVision() const;
162  bool isWheelFlagged(int wheelId, string flag) const;
163  bool isPropellerFlagged(int propellerId, string flag) const;
164  bool hasLense() const;
165 
173  const map<int, float> maxDeltaPercentPivotByPivotId(float maxPivotDeltaInDegree) const;
174 
175  float getDefaultYPositionCm() const;
176 
180  const CscPoint3d *getDefaultRotationPitchYawRoll() const;
181 };
182 #endif
CscMember
Definition: CscMember.h:16
CscMemberWheel
Definition: CscMemberWheel.h:18
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
CscEntityModel
Definition: CscEntityModel.h:54
conscience_core::axiomes
Definition: Csc2dTypes.cpp:9
conscience_core::axiomes::CscArea3d
Definition: Csc3dTypes.h:231
CscMember.h
FieldOfView::height
double height
Definition: CscEntityModel.h:51
CscTranslation.h
CscPropeller
Definition: CscPropeller.h:15
CscMemberJoint
Definition: CscMemberJoint.h:20
ENTITY_TYPE_FLY
static const std::string ENTITY_TYPE_FLY
Definition: CscEntityModel.h:31
CscEntityLidar.h
ENTITY_TYPE_ROVER
static const std::string ENTITY_TYPE_ROVER
Definition: CscEntityModel.h:32
ENTITY_TYPE_STATIC
static const std::string ENTITY_TYPE_STATIC
Definition: CscEntityModel.h:34
FieldOfView
Definition: CscEntityModel.h:49
FieldOfView::width
double width
Definition: CscEntityModel.h:50
RobotModelGlobalCoefs
Definition: CscEntityModel.h:44
CscCommon.h
CscTranslation
Definition: CscTranslation.h:16
Csc3dTypes.h
conscience_core::axiomes::CscQuaternion::fromAngleAxis
static CscQuaternion fromAngleAxis(double angleRad, Axis3d axis)
Definition: Csc3dTypes.cpp:590
conscience_core::axiomes::AXIS_3D_X
@ AXIS_3D_X
Definition: Csc3dTypes.h:131
ENTITY_TYPE_ARM
static const std::string ENTITY_TYPE_ARM
Definition: CscEntityModel.h:35
conscience_core::axiomes::CscQuaternion
Definition: Csc3dTypes.h:138
CscMemberJoint.h
CscEntityVision
Definition: CscEntityVision.h:16
ENTITY_TYPE_MARIN
static const std::string ENTITY_TYPE_MARIN
Definition: CscEntityModel.h:36
CscMemberWheel.h
CscPropeller.h
CscEntityVision.h
ENTITY_TYPE_POD
static const std::string ENTITY_TYPE_POD
Definition: CscEntityModel.h:33