Conscience Core
CscSimulationWorld.h
Go to the documentation of this file.
1 /*
2  * CscSimulationWorld.h
3  *
4  * Created on: 31 mai 2014
5  * Author: ilieszaoui
6  */
7 
8 #ifndef CSCSIMULATIONWORLD_H_
9 #define CSCSIMULATIONWORLD_H_
10 
13 #include "CoreObjects/CscMember.h"
16 #include "CscCommon.h"
22 #include <algorithm>
23 
24 using namespace conscience_core::simulator;
25 
26 namespace conscience_core::ai {
27 
29 private:
30  CscPhysicsSimulator *physicsSimulator;
31  const CscWorldEntity *entity;
32  vector<CscObjectiveAi *> *objectives;
33 
34  CscObjectiveAi *currentObjectiveUnderAnalysis = nullptr;
35  CscObjectiveAi *currentObjectiveUnderUsage = nullptr;
36 
37  int objectiveIndex;
38 
39  constexpr static float constSpeedValueCoefficient = 0.1;
40 
41  int personByGenerationMaxIn;
42 
43  int getNextObjectiveIdToIncrement();
44  void sortObjectives();
45 
46  void reduceObjectivesCount(int count);
47  void resetObjectiveIndex();
48  void reduceObjectivesCount();
49  void resetCurrentObjective();
50 
51  mutable std::recursive_mutex objectivesMutex;
52 
53 public:
54  CscSimulationWorld(const CscWorldEntity *entity);
55  virtual ~CscSimulationWorld();
56 
57  CscObjectiveAi *nextStep();
58 
59  CscObjectiveAi *generateNewObjectiveAi(const string &modelId, CscKnowledgeItem *knowledgeItemIn, CscState *initialState, CscEnvironmentSimulator &environmentSimulator);
60 
64  CscSequence *processKnowledgeItem(const string &modelId, CscKnowledgeItem *knowledgeItemIn, CscState *initialState, CscEnvironmentSimulator &environmentSimulator);
65 
66  bool hasObjectiveWithThisInitialState(CscState *stateIn, CscKnowledgeItem *knoItemIn) const;
67  CscObjectiveAi *getObjectiveWithThisInitialState(CscState *stateIn, CscKnowledgeItem *knoItemIn) const;
68  CscObjectiveAi *getObjectiveFromId(int objectiveId) const;
69  CscObjectiveAi *getObjectiveFromIndex(int objectiveIndex) const;
70 
71  string toString();
72 
73  int countPivots() const;
74  int countPropellers() const;
75  int countWheels() const;
76  int countObjectives() const;
77 
78  CscObjectiveAi *getCurrentObjectiveUnderAnalysis() const;
79  CscObjectiveAi *getCurrentObjectiveUnderUsage() const;
80 
81  void purgeObjectives();
82  void removeObjectivesByAITypes(CscArtificialIntelligenceType type);
83 
85  return physicsSimulator;
86  }
87 
88  CscState *fillStateInputs(const CscState *incompleteState) const;
89 
90  void changeIKTargetFromObjectiveId(int objectiveId, vector<CscJacobianInverseKinematic::TargetIKParams *> targets);
91 
92  const CscWorldEntity *getEntity() const;
93 };
94 
95 }
96 
97 #endif /* CSCSIMULATIONWORLD_H_ */
CscWorldEntity
Definition: CscWorldEntity.h:19
CSC_DLL_IMPORTEXPORT
#define CSC_DLL_IMPORTEXPORT
Definition: os.h:34
conscience_core::ai
Definition: alerts.cpp:12
CscKnowledgeItem.h
CscObjectiveAi
Definition: CscObjectiveAi.h:25
CscMember.h
conscience_core::simulator::CscPhysicsSimulator
Definition: CscPhysicsSimulator.h:77
CscKnowledgeItemState.h
CscPhysicsSimulator.h
CscKnowledgeItemTarget.h
CscState
Definition: CscState.h:24
CscKnowledgeItemSequence.h
CscObjectiveAi.h
CscCommon.h
conscience_core::ai::CscSimulationWorld
Definition: CscSimulationWorld.h:28
jwt::json::type
type
Generic JSON types used in JWTs.
Definition: jwt.h:1794
conscience_core::ai::CscSimulationWorld::getPhysicsSimulator
CscPhysicsSimulator * getPhysicsSimulator() const
Definition: CscSimulationWorld.h:84
CscMemberJoint.h
conscience_core::simulator
Definition: CscPhysicsSimulator.cpp:92
CscEnvironmentSimulator
Definition: CscEnvironmentSimulator.h:31
CscEntityModel.h
conscience_core::knowledge::CscKnowledgeItem
Definition: CscKnowledgeItem.h:43
CscPropeller.h
CscSequence
Definition: CscSequence.h:51
conscience_core::knowledge::CscArtificialIntelligenceType
CscArtificialIntelligenceType
Definition: CscKnowledgeItem.h:27