Conscience Core
CscObjectiveAi.h
Go to the documentation of this file.
1 /*
2  * CscObjectiveAi.h
3  *
4  * Created on: 31 mai 2014
5  * Author: ilieszaoui
6  */
7 
8 #ifndef CSCOBJECTIVEAI_H_
9 #define CSCOBJECTIVEAI_H_
10 
13 #include "CscCommon.h"
14 #include "CscGeneration.h"
22 
23 using namespace conscience_core::knowledge;
24 
26 public:
31  CscObjectiveAi(const CscWorldEntity *entity, int idIn, CscState *stateIn, CscKnowledgeItemTarget *knowledgeItemIn, int personByGenerationMaxIn, CscWorldPlace *placeModelIn);
32  void nextStep();
33  CscPerson *getBestPerson();
34  int countGenerations();
35  int countTotalPersons();
36  bool isSolved();
37  bool validateCurrentSolution();
38  CscPerson *generatePerson(CscKnowledgeItemTarget *knoItem, CscState *initialState);
39  int getUsageCount();
40  void incrementUsageCount();
41  CscSequence *getResult();
42  void changeIKTarget(vector<CscJacobianInverseKinematic::TargetIKParams *> targets);
43 
44  CscState *getInitialState();
45  string toString();
46 
47  int getId() const;
48  CscWorldElementId getEntityId();
49  int getKnowledgeItemId() const;
50  int getValidationCount() const;
51 
52  CscEnvironmentSimulator *getEnvironment() const;
53  int getLastUsageTimeInt() const;
54  time_t lastUsageTime = 0;
55  float getEstimatedDuration();
56  CscKnowledgeItem *getKnowledgeItem() const;
57  virtual ~CscObjectiveAi();
58  bool getDeployableToGlobalSimulator();
59  int counterIteration = 0;
60  CscState *getLastSolutionFound();
61 
62 private:
63  const CscWorldEntity *entity;
64 
65  int id;
66  CscEnvironmentSimulator *environment;
67  CscKnowledgeItemTarget *knowledgeItem;
68  CscState *initialState;
69  CscState *lastSolutionFound;
70  CscGeneration *currentGeneration;
71  CscGeneration *previousGeneration;
72  CscPerson *bestPerson;
73  bool solved;
74  int personByGenerationMax;
75  int maxSequenceSize;
76  int currentGenerationId;
77  int currentPersonId;
78  int validationCount;
79  int usageCount;
80  float objectiveLimit;
81 
82  bool initialStateReached;
83 
84  vector<string> *names;
85  vector<string> *namesWheels;
86  void initJointsNames();
87  void initWheelsNames();
88  vector<float> *getDeltasBetweenValues(map<int, int> initialState, map<int, int> compareState);
89  float defaultStateDelay = 200.0;
90  float defaultStateDuration = 200.0; // 5 actions per second for genetic
91  bool validateKinematicSolution();
92  bool validateGeneticSolution();
93  void moveToInitialState();
94  bool isAIMemberPivotStationary(const string &memberName, float acceptedDelta);
95 
96  bool deployableToGlobalSimulator;
97 
98  /*
99  Allow to block or limit outputs, if knowledge used has outputs which must be immobile or limited
100  Complete pivotsCanMoveValues, propellersCanMoveValues and wheelsCanMoveValues in CscKnowledgeItem
101  */
102  void limitOutputs();
103 
104  /*
105  Return the outputName which precise the two members linked by this output (ex: Core_HipLeft)
106  */
107  string outputName(const vector<const CscMember *> *members, int memberA, int memberB);
108 
109  /*
110  Cut sequence of personToAdd where the mean of speed is smaller among states can become bestPerson
111  and replay the sequence in realTime
112  */
113  void cutSequenceAndTryAgain(CscPerson *personToAdd);
114 };
115 
116 #endif /* CSCOBJECTIVEAI_H_ */
CscKnowledgeItemTargetMemberToState.h
CscWorldEntity
Definition: CscWorldEntity.h:19
conscience_core::knowledge::CscKnowledgeItemTarget
Definition: CscKnowledgeItemTarget.h:22
CSC_DLL_IMPORTEXPORT
#define CSC_DLL_IMPORTEXPORT
Definition: os.h:34
CscJacobianInverseKinematic.h
CscKnowledgeItemTargetMemberToStateFromMember.h
CscKnowledgeItem.h
CscObjectiveAi
Definition: CscObjectiveAi.h:25
conscience_core::knowledge
Definition: CscEntityReflexion.h:35
CscGeneration.h
CscPerson
Definition: CscPerson.h:19
CscKnowledgeItemTarget.h
CscState
Definition: CscState.h:24
CscWorldElementId
string CscWorldElementId
Definition: Command.h:15
CscGeneration
Definition: CscGeneration.h:20
CscCommon.h
CscKnowledgeItemTargetArmToPosition.h
CscStrategyType.h
CscEnvironmentSimulator.h
CscEnvironmentSimulator
Definition: CscEnvironmentSimulator.h:31
CscWorldPlace
Definition: CscWorldPlace.h:34
CscEntityModel.h
conscience_core::knowledge::CscKnowledgeItem
Definition: CscKnowledgeItem.h:43
CscSequence
Definition: CscSequence.h:51