Conscience Core
Public Member Functions | Public Attributes | List of all members
CscEnvironmentSimulator Class Reference

#include <CscEnvironmentSimulator.h>

Public Member Functions

 CscEnvironmentSimulator (bool autoIncrement)
 
virtual ~CscEnvironmentSimulator ()
 
void clear ()
 
virtual vector< CscWorldObject * > getObjects (const function< bool(const CscWorldObject *)> filter=[](const CscWorldObject *) { return true;}) const
 
CscWorldElementgetElementByName (const string &nameIn)
 
float * getConscienceSimulationWorldStatus (bool rotationsAsEuler=false)
 
vector< CscPoint3d * > * getVertexFromStrategy (CscWorldElementId entityId, int strategy)
 
vector< CscPoint3d * > * getPatchFromStrategy (CscWorldElementId entityId, int strategy)
 
void importObject (CscWorldObject *object)
 
void importObjects (vector< CscWorldObject * > *objects)
 
void importPlace (CscWorldPlace *place, bool removeOthers=true)
 
void importLine (CscWorldLine *line)
 
void importImage (CscWorldImage *sceneImage)
 
void removeOtherElementByName (const string &name)
 
void importPointsAsObjects (vector< CscPoint3d * > *points)
 
void importEntity (const CscWorldEntity *entity, bool requiresExternalInit=false, const optional< function< void()>> &onRemoved={})
 
bool removeEntity (const CscWorldElementId &entityId)
 
virtual void clearEntities ()
 
bool hasEntity (const CscWorldElementId &entityId)
 
CscPhysicsSimulatorgetPhysicSimulator () const
 
void setFocusedObjectByIndex (int objectIndex)
 
CscWorldObjectgetFocusedObjectCurrent () const
 
int countObjects ()
 
virtual void clearObjects ()
 
CscWorldObjectgetObjectById (const CscWorldElementId objectId) const
 
const CscPoint3dgetObjectPositionInSimulator (const string &serialNumber) const
 
CscWorldObjectgetObjectByModelId (int objectModelId)
 
virtual vector< CscWorldObject * > getObjectsByModelId (int objectModelId)
 
CscWorldPlacegetPlace ()
 
CscWorldPlacegetPlaceById (const CscWorldElementId &placeId)
 
const vector< CscWorldPlace * > getPlaces (function< bool(const CscWorldPlace *)> filter=[](const CscWorldPlace *) { return true;})
 
const CscWorldEntitygetEntity (const CscWorldElementId &entityId) const
 
virtual vector< CscWorldEntity * > getEntities (const function< bool(const CscWorldEntity *)> filter=[](const CscWorldEntity *) { return true;})
 
virtual vector< string > getEntitySerialNumbers (const function< bool(const CscWorldEntity *)> filter=[](const CscWorldEntity *) { return true;})
 
const CscEntityModelgetEntityModel (const CscWorldElementId &entityId) const
 
const MemberStategetEntityMemberStateById (const CscWorldElementId &entityId, int id) const
 
const MemberStategetEntityMemberState (const CscWorldElementId &entityId, const CscMember *member) const
 
const MemberStategetEntityMemberStateByName (const CscWorldElementId &entityId, const string &memberName) const
 
const CscPoint3dgetEntityPosition (const CscWorldElementId &entityId) const
 
CscPoint3dOriented getEntityPositionAndRotation (const CscWorldElementId &entityId) const
 
CscPoint3d getEntityAcceleration (const CscWorldElementId &entityId) const
 
pair< CscPoint3d, CscQuaterniongetEntityPositionAndRotationQuaternion (const CscWorldElementId &entityId) const
 
void doWithEntities (function< void(const map< CscWorldElementId, const CscWorldEntity * > &entities)> action)
 
void doWithObjects (function< void(const vector< CscWorldObject * > &objects)> action)
 
CscStategetEntityState (const CscWorldElementId &entityId) const
 
void forceState (const CscWorldElementId &entityId, CscState *aState, int memberIdForInputs, const bool applyPos[3], const bool applyRot[3], const bool applyAcc[3], optional< int > nbMaxIteration={}, optional< int > maxLoopDurationMillis={})
 
void playSequence (const CscWorldElementId &entityId, CscState *init, CscSequence *sequence, const map< int, CscPivotMovementType > &pivotMovementByPivotId, bool geneticAi=false, bool extrapolationRealTime=false)
 
void playState (const CscWorldElementId &entityId, CscState *state, int duration, int delay, bool relativeValues)
 
void setAllPivotsToRelaxedMode (const CscWorldElementId &entityId)
 
void forceMemberValues (const CscWorldElementId &entityId, const CscMemberInputStatus *inputsValues, const bool applyPosition[3], const bool applyEuler[3], const bool applyAcceleration[3], optional< int > nbMaxIteration={}, optional< int > maxLoopDurationMillis={})
 
int moveMemberToStateFromMember (const CscWorldElementId &entityId, const CscMemberInputStatus *inputsValues, const bool applyPosition[3], const bool applyEuler[3], const bool applyAcceleration[3], int nbMaxIteration=40, int tryNumber=0)
 
float getJointHingeAngle (const CscWorldElementId &entityId, int jointIdIn) const
 
void updateMemberEulers (const CscWorldElementId &entityId, int memberId, double eulerX, double eulerY, double eulerZ)
 
void updateMemberPosition (const CscWorldElementId &entityId, int memberId, float posX, float posY, float posZ)
 
void moveObjectToPosition (CscWorldElement *object, const CscPoint3d *targetPosition)
 
void moveObjectToRotation (CscWorldElement *object, const CscPoint3d *targetRotation)
 
void moveObjectToPositionAndRotation (CscWorldElement *object, const CscPoint3d *targetPosition, const CscPoint3d *targetRotation)
 
virtual void clearPlaces ()
 
void loadDefaultPlaceFloor ()
 
void clearOtherElements ()
 
CscGridgetSceneFloor () const
 
void focusVisionIntoPosition (float posX, float posY, float posZ)
 
CscWorldObjectgetObjectByName (const string &name)
 
CscWorldObjectgetObjectByPosition (CscPoint3d *position, float radius)
 
virtual void removeObjectById (CscWorldElementId objectId)
 
void removeObjectByName (const string &name)
 
void removeObjectsByModelId (int objectModelId)
 
void removeObjectsByTag (const string &searchedTag)
 
bool removePlaceById (const string &placeId)
 
bool hasObjectWithModelId (int objectModelId)
 
void dump (fs::path outPath=fs::path(string(CSC_DEFAULT_OUT_DIR)+"/envSim_"+to_string(nowMillis())+".png")) const
 
CscPoint3dcomputeConsciencePositionFromGnssPosition (const CscPoint3d *gnssPosition, const string &projection)
 Converts a GNSS position to a Conscience coordinate system position. This method takes a CscPoint3d object representing a GNSS position (longitude in X, latitude in Z, altitude in Y) and returns a new CscPoint3d object with coordinates transformed to the Conscience coordinate system (centimeters). More...
 
CscPoint3dcomputeGnssPositionFromConsciencePosition (const CscPoint3d *consciencePosition, const string &projection)
 Converts a Conscience system position to a GNSS position. This method accepts a CscPoint3d object representing a position in the Conscience coordinate system (centimeters) and returns a new CscPoint3d object with coordinates mapped to GNSS positioning (longitude in X, latitude in Z, altitude in Y) More...
 
vector< CscPoint3d * > * computeGnssPositionsFromConsciencePositions (vector< CscPoint3d * > *consciencePositions, const string &projection)
 Converts a Conscience system positions to GNSS positions. This method accepts a list of CscPoint3d object representing positions in the Conscience coordinate system (centimeters) and returns a new list of CscPoint3d object with coordinates mapped to GNSS positioning (longitude in X, latitude in Z, altitude in Y) More...
 
void setGnssReferencePosition (CscPoint3d *gnssPoint)
 Sets the reference GNSS position. This method updates the internal reference coordinates to a new GNSS position as specified by the gnssPoint parameter. The reference point represents the origin (0,0,0) in the Conscience coordinate system. More...
 
bool gnssReferencePositionIsSet ()
 true if the reference GNSS position have a value. More...
 
void computeGnssReferencePositionWithConsciencePosition (CscPoint3d *gnssPoint, CscPoint3d *consciencePosition, const string &projection)
 Sets the reference GNSS position. This method updates the internal reference coordinates to a new GNSS position as specified by the gnssPoint parameter. The reference point represents the position consciencePosition in the Conscience coordinate system. More...
 

Public Attributes

int currentFocusedObjectIndex
 

Constructor & Destructor Documentation

◆ CscEnvironmentSimulator()

CscEnvironmentSimulator::CscEnvironmentSimulator ( bool  autoIncrement)

◆ ~CscEnvironmentSimulator()

CscEnvironmentSimulator::~CscEnvironmentSimulator ( )
virtual

Member Function Documentation

◆ clear()

void CscEnvironmentSimulator::clear ( )

◆ clearEntities()

void CscEnvironmentSimulator::clearEntities ( )
virtual

◆ clearObjects()

void CscEnvironmentSimulator::clearObjects ( )
virtual

◆ clearOtherElements()

void CscEnvironmentSimulator::clearOtherElements ( )

◆ clearPlaces()

void CscEnvironmentSimulator::clearPlaces ( )
virtual

◆ computeConsciencePositionFromGnssPosition()

CscPoint3d * CscEnvironmentSimulator::computeConsciencePositionFromGnssPosition ( const CscPoint3d gnssPosition,
const string &  projection 
)

Converts a GNSS position to a Conscience coordinate system position. This method takes a CscPoint3d object representing a GNSS position (longitude in X, latitude in Z, altitude in Y) and returns a new CscPoint3d object with coordinates transformed to the Conscience coordinate system (centimeters).

◆ computeGnssPositionFromConsciencePosition()

CscPoint3d * CscEnvironmentSimulator::computeGnssPositionFromConsciencePosition ( const CscPoint3d consciencePosition,
const string &  projection 
)

Converts a Conscience system position to a GNSS position. This method accepts a CscPoint3d object representing a position in the Conscience coordinate system (centimeters) and returns a new CscPoint3d object with coordinates mapped to GNSS positioning (longitude in X, latitude in Z, altitude in Y)

◆ computeGnssPositionsFromConsciencePositions()

vector< CscPoint3d * > * CscEnvironmentSimulator::computeGnssPositionsFromConsciencePositions ( vector< CscPoint3d * > *  consciencePositions,
const string &  projection 
)

Converts a Conscience system positions to GNSS positions. This method accepts a list of CscPoint3d object representing positions in the Conscience coordinate system (centimeters) and returns a new list of CscPoint3d object with coordinates mapped to GNSS positioning (longitude in X, latitude in Z, altitude in Y)

◆ computeGnssReferencePositionWithConsciencePosition()

void CscEnvironmentSimulator::computeGnssReferencePositionWithConsciencePosition ( CscPoint3d gnssPoint,
CscPoint3d consciencePosition,
const string &  projection 
)

Sets the reference GNSS position. This method updates the internal reference coordinates to a new GNSS position as specified by the gnssPoint parameter. The reference point represents the position consciencePosition in the Conscience coordinate system.

◆ countObjects()

int CscEnvironmentSimulator::countObjects ( )

◆ doWithEntities()

void CscEnvironmentSimulator::doWithEntities ( function< void(const map< CscWorldElementId, const CscWorldEntity * > &entities)>  action)

Executes given action in a critical section preventing modifications on environment's entities while action is processing.

Note
Therefore, action should remain as quick as possible

◆ doWithObjects()

void CscEnvironmentSimulator::doWithObjects ( function< void(const vector< CscWorldObject * > &objects)>  action)

Executes given action in a critical section preventing modifications on environment's objects while action is processing.

Note
Therefore, action should remain as quick as possible

◆ dump()

void CscEnvironmentSimulator::dump ( fs::path  outPath = fs::path(string(CSC_DEFAULT_OUT_DIR) + "/envSim_" + to_string(nowMillis()) + ".png")) const

write an overview of this environment simulator to disk

◆ focusVisionIntoPosition()

void CscEnvironmentSimulator::focusVisionIntoPosition ( float  posX,
float  posY,
float  posZ 
)

◆ forceMemberValues()

void CscEnvironmentSimulator::forceMemberValues ( const CscWorldElementId entityId,
const CscMemberInputStatus inputsValues,
const bool  applyPosition[3],
const bool  applyEuler[3],
const bool  applyAcceleration[3],
optional< int >  nbMaxIteration = {},
optional< int >  maxLoopDurationMillis = {} 
)
Parameters
nbMaxIterationmaximum number of iteration for forceMemberValuesAndVerifyState loop which can take a long time before convergence
maxLoopDurationMillismaximum duration for forceMemberValuesAndVerifyState loop which can take a long time before convergence

◆ forceState()

void CscEnvironmentSimulator::forceState ( const CscWorldElementId entityId,
CscState aState,
int  memberIdForInputs,
const bool  applyPos[3],
const bool  applyRot[3],
const bool  applyAcc[3],
optional< int >  nbMaxIteration = {},
optional< int >  maxLoopDurationMillis = {} 
)
Parameters
nbMaxIterationmaximum number of iteration for forceMemberValuesAndVerifyState loop which can take a long time before convergence
maxLoopDurationMillismaximum duration for forceMemberValuesAndVerifyState loop which can take a long time before convergence

◆ getConscienceSimulationWorldStatus()

float * CscEnvironmentSimulator::getConscienceSimulationWorldStatus ( bool  rotationsAsEuler = false)
Parameters
rotationsAsEulerif true, rotations will be encoded as 3 floats: pitch,yaw,roll - otherwise, rotations will be encoded as quaternions, 4 floats: w,x,y,z

◆ getElementByName()

CscWorldElement * CscEnvironmentSimulator::getElementByName ( const string &  nameIn)

◆ getEntities()

vector< CscWorldEntity * > CscEnvironmentSimulator::getEntities ( const function< bool(const CscWorldEntity *)>  filter = [](const CscWorldEntity *) { return true; })
virtual

◆ getEntity()

const CscWorldEntity * CscEnvironmentSimulator::getEntity ( const CscWorldElementId entityId) const

◆ getEntityAcceleration()

CscPoint3d CscEnvironmentSimulator::getEntityAcceleration ( const CscWorldElementId entityId) const
Returns
get entity's acceleration in simulator
Note
CscEntityPositionManager stores real entity last acceleration value

◆ getEntityMemberState()

const MemberState * CscEnvironmentSimulator::getEntityMemberState ( const CscWorldElementId entityId,
const CscMember member 
) const

◆ getEntityMemberStateById()

const MemberState * CscEnvironmentSimulator::getEntityMemberStateById ( const CscWorldElementId entityId,
int  id 
) const

◆ getEntityMemberStateByName()

const MemberState * CscEnvironmentSimulator::getEntityMemberStateByName ( const CscWorldElementId entityId,
const string &  memberName 
) const

◆ getEntityModel()

const CscEntityModel * CscEnvironmentSimulator::getEntityModel ( const CscWorldElementId entityId) const

◆ getEntityPosition()

const CscPoint3d * CscEnvironmentSimulator::getEntityPosition ( const CscWorldElementId entityId) const

◆ getEntityPositionAndRotation()

CscPoint3dOriented CscEnvironmentSimulator::getEntityPositionAndRotation ( const CscWorldElementId entityId) const

◆ getEntityPositionAndRotationQuaternion()

pair< CscPoint3d, CscQuaternion > CscEnvironmentSimulator::getEntityPositionAndRotationQuaternion ( const CscWorldElementId entityId) const

◆ getEntitySerialNumbers()

vector< string > CscEnvironmentSimulator::getEntitySerialNumbers ( const function< bool(const CscWorldEntity *)>  filter = [](const CscWorldEntity *) { return true; })
virtual

◆ getEntityState()

CscState * CscEnvironmentSimulator::getEntityState ( const CscWorldElementId entityId) const

return requested entity's current state WARNING: a new state is returned, which means pointer needs to be deleted after usage

◆ getFocusedObjectCurrent()

CscWorldObject * CscEnvironmentSimulator::getFocusedObjectCurrent ( ) const

◆ getJointHingeAngle()

float CscEnvironmentSimulator::getJointHingeAngle ( const CscWorldElementId entityId,
int  jointIdIn 
) const

◆ getObjectById()

CscWorldObject * CscEnvironmentSimulator::getObjectById ( const CscWorldElementId  objectId) const

◆ getObjectByModelId()

CscWorldObject * CscEnvironmentSimulator::getObjectByModelId ( int  objectModelId)

◆ getObjectByName()

CscWorldObject * CscEnvironmentSimulator::getObjectByName ( const string &  name)

◆ getObjectByPosition()

CscWorldObject * CscEnvironmentSimulator::getObjectByPosition ( CscPoint3d position,
float  radius 
)

◆ getObjectPositionInSimulator()

const CscPoint3d * CscEnvironmentSimulator::getObjectPositionInSimulator ( const string &  serialNumber) const
Returns
null si objet non trouvé / pointer à supprimer

◆ getObjects()

vector< CscWorldObject * > CscEnvironmentSimulator::getObjects ( const function< bool(const CscWorldObject *)>  filter = [](const CscWorldObject *) { return true; }) const
virtual

◆ getObjectsByModelId()

vector< CscWorldObject * > CscEnvironmentSimulator::getObjectsByModelId ( int  objectModelId)
virtual

◆ getPatchFromStrategy()

vector< CscPoint3d * > * CscEnvironmentSimulator::getPatchFromStrategy ( CscWorldElementId  entityId,
int  strategy 
)

◆ getPhysicSimulator()

CscPhysicsSimulator * CscEnvironmentSimulator::getPhysicSimulator ( ) const

◆ getPlace()

CscWorldPlace * CscEnvironmentSimulator::getPlace ( )

return first place

See also
getPlaces()

◆ getPlaceById()

CscWorldPlace * CscEnvironmentSimulator::getPlaceById ( const CscWorldElementId placeId)

◆ getPlaces()

const vector< CscWorldPlace * > CscEnvironmentSimulator::getPlaces ( function< bool(const CscWorldPlace *)>  filter = [](const CscWorldPlace *) { return true; })

◆ getSceneFloor()

CscGrid * CscEnvironmentSimulator::getSceneFloor ( ) const

◆ getVertexFromStrategy()

vector< CscPoint3d * > * CscEnvironmentSimulator::getVertexFromStrategy ( CscWorldElementId  entityId,
int  strategy 
)

◆ gnssReferencePositionIsSet()

bool CscEnvironmentSimulator::gnssReferencePositionIsSet ( )

true if the reference GNSS position have a value.

See also
setGnssReferencePosition

◆ hasEntity()

bool CscEnvironmentSimulator::hasEntity ( const CscWorldElementId entityId)

◆ hasObjectWithModelId()

bool CscEnvironmentSimulator::hasObjectWithModelId ( int  objectModelId)

◆ importEntity()

void CscEnvironmentSimulator::importEntity ( const CscWorldEntity entity,
bool  requiresExternalInit = false,
const optional< function< void()>> &  onRemoved = {} 
)

◆ importImage()

void CscEnvironmentSimulator::importImage ( CscWorldImage sceneImage)

◆ importLine()

void CscEnvironmentSimulator::importLine ( CscWorldLine line)

◆ importObject()

void CscEnvironmentSimulator::importObject ( CscWorldObject object)

◆ importObjects()

void CscEnvironmentSimulator::importObjects ( vector< CscWorldObject * > *  objects)

◆ importPlace()

void CscEnvironmentSimulator::importPlace ( CscWorldPlace place,
bool  removeOthers = true 
)

◆ importPointsAsObjects()

void CscEnvironmentSimulator::importPointsAsObjects ( vector< CscPoint3d * > *  points)

For debug purpose, mainly. It will import each point as a tiny cube

◆ loadDefaultPlaceFloor()

void CscEnvironmentSimulator::loadDefaultPlaceFloor ( )

◆ moveMemberToStateFromMember()

int CscEnvironmentSimulator::moveMemberToStateFromMember ( const CscWorldElementId entityId,
const CscMemberInputStatus inputsValues,
const bool  applyPosition[3],
const bool  applyEuler[3],
const bool  applyAcceleration[3],
int  nbMaxIteration = 40,
int  tryNumber = 0 
)

◆ moveObjectToPosition()

void CscEnvironmentSimulator::moveObjectToPosition ( CscWorldElement object,
const CscPoint3d targetPosition 
)

◆ moveObjectToPositionAndRotation()

void CscEnvironmentSimulator::moveObjectToPositionAndRotation ( CscWorldElement object,
const CscPoint3d targetPosition,
const CscPoint3d targetRotation 
)

◆ moveObjectToRotation()

void CscEnvironmentSimulator::moveObjectToRotation ( CscWorldElement object,
const CscPoint3d targetRotation 
)

◆ playSequence()

void CscEnvironmentSimulator::playSequence ( const CscWorldElementId entityId,
CscState init,
CscSequence sequence,
const map< int, CscPivotMovementType > &  pivotMovementByPivotId,
bool  geneticAi = false,
bool  extrapolationRealTime = false 
)

◆ playState()

void CscEnvironmentSimulator::playState ( const CscWorldElementId entityId,
CscState state,
int  duration,
int  delay,
bool  relativeValues 
)

◆ removeEntity()

bool CscEnvironmentSimulator::removeEntity ( const CscWorldElementId entityId)

◆ removeObjectById()

void CscEnvironmentSimulator::removeObjectById ( CscWorldElementId  objectId)
virtual

◆ removeObjectByName()

void CscEnvironmentSimulator::removeObjectByName ( const string &  name)

◆ removeObjectsByModelId()

void CscEnvironmentSimulator::removeObjectsByModelId ( int  objectModelId)

◆ removeObjectsByTag()

void CscEnvironmentSimulator::removeObjectsByTag ( const string &  searchedTag)

◆ removeOtherElementByName()

void CscEnvironmentSimulator::removeOtherElementByName ( const string &  name)

◆ removePlaceById()

bool CscEnvironmentSimulator::removePlaceById ( const string &  placeId)

◆ setAllPivotsToRelaxedMode()

void CscEnvironmentSimulator::setAllPivotsToRelaxedMode ( const CscWorldElementId entityId)

◆ setFocusedObjectByIndex()

void CscEnvironmentSimulator::setFocusedObjectByIndex ( int  objectIndex)

◆ setGnssReferencePosition()

void CscEnvironmentSimulator::setGnssReferencePosition ( CscPoint3d gnssPoint)

Sets the reference GNSS position. This method updates the internal reference coordinates to a new GNSS position as specified by the gnssPoint parameter. The reference point represents the origin (0,0,0) in the Conscience coordinate system.

◆ updateMemberEulers()

void CscEnvironmentSimulator::updateMemberEulers ( const CscWorldElementId entityId,
int  memberId,
double  eulerX,
double  eulerY,
double  eulerZ 
)

◆ updateMemberPosition()

void CscEnvironmentSimulator::updateMemberPosition ( const CscWorldElementId entityId,
int  memberId,
float  posX,
float  posY,
float  posZ 
)

Member Data Documentation

◆ currentFocusedObjectIndex

int CscEnvironmentSimulator::currentFocusedObjectIndex

The documentation for this class was generated from the following files: