Choreonoid  1.5
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Friends | List of all members
cnoid::SimulatorItem Class Referenceabstract

#include <SimulatorItem.h>

Inheritance diagram for cnoid::SimulatorItem:
cnoid::Item cnoid::Referenced cnoid::AISTSimulatorItem cnoid::BulletSimulatorItem cnoid::ODESimulatorItem

Public Types

enum  RecordingMode { REC_FULL, REC_TAIL, REC_NONE, N_RECORDING_MODES }
 
enum  TimeRangeMode {
  TR_UNLIMITED, TR_ACTIVE_CONTROL, TR_SPECIFIED, TR_TIMEBAR,
  N_TIME_RANGE_MODES
}
 
- Public Types inherited from cnoid::Item
enum  Attribute { SUB_ITEM, TEMPORAL, LOAD_ONLY, NUM_ATTRIBUTES }
 

Public Member Functions

 SimulatorItem ()
 
virtual ~SimulatorItem ()
 
virtual double worldTimeStep ()
 
virtual bool startSimulation (bool doReset=true)
 
virtual void stopSimulation ()
 
virtual void pauseSimulation ()
 
virtual void restartSimulation ()
 
bool isRunning () const
 
bool isPausing () const
 
bool isActive () const
 isRunning() && !isPausing() More...
 
int currentFrame () const
 This can only be called from the simulation thread. More...
 
double currentTime () const
 This can only be called from the simulation thread. More...
 
int simulationFrame () const
 This can be called from non simulation threads. More...
 
double simulationTime () const
 This can be called from non simulation threads. More...
 
SignalProxy< void()> sigSimulationStarted ()
 
SignalProxy< void()> sigSimulationFinished ()
 
void setRecordingMode (int selection)
 
Selection recordingMode () const
 
void setTimeRangeMode (int selection)
 
void setRealtimeSyncMode (bool on)
 
void setDeviceStateOutputEnabled (bool on)
 
bool isRecordingEnabled () const
 
bool isDeviceStateOutputEnabled () const
 
bool isAllLinkPositionOutputMode ()
 
virtual void setAllLinkPositionOutputMode (bool on)
 
const std::vector< SimulationBody * > & simulationBodies ()
 
SimulationBodyfindSimulationBody (BodyItem *bodyItem)
 
SimulationBodyfindSimulationBody (const std::string &name)
 
int addPreDynamicsFunction (boost::function< void()> func)
 
int addMidDynamicsFunction (boost::function< void()> func)
 
int addPostDynamicsFunction (boost::function< void()> func)
 
void removePreDynamicsFunction (int id)
 
void removeMidDynamicsFunction (int id)
 
void removePostDynamicsFunction (int id)
 
SgCloneMapsgCloneMap ()
 
SignalProxy< void(const std::vector< SimulationBodyPtr > &simulationBodies)> sigSimulationBodyListUpdated ()
 
virtual void setExternalForce (BodyItem *bodyItem, Link *link, const Vector3 &point, const Vector3 &f, double time=0.0)
 
virtual void clearExternalForces ()
 
virtual void setVirtualElasticString (BodyItem *bodyItem, Link *link, const Vector3 &attachmentPoint, const Vector3 &endPoint)
 
virtual void clearVirtualElasticStrings ()
 
virtual void setForcedPosition (BodyItem *bodyItem, const Position &T)
 
virtual bool isForcedPositionActiveFor (BodyItem *bodyItem) const
 
virtual void clearForcedPositions ()
 
- Public Member Functions inherited from cnoid::Item
virtual ~Item ()
 
const std::string & name () const
 
virtual void setName (const std::string &name)
 
bool hasAttribute (Attribute attribute) const
 
ItemchildItem () const
 
ItemprevItem () const
 
ItemnextItem () const
 
ItemparentItem () const
 
bool addChildItem (Item *item, bool isManualOperation=false)
 
bool addSubItem (Item *item)
 
bool isSubItem () const
 
void detachFromParentItem ()
 
void emitSigDetachedFromRootForSubTree ()
 
bool insertChildItem (Item *item, Item *nextItem, bool isManualOperation=false)
 
bool insertSubItem (Item *item, Item *nextItem)
 
bool isTemporal () const
 
void setTemporal (bool on=true)
 
RootItemfindRootItem () const
 
ItemfindItem (const std::string &path) const
 
template<class ItemType >
ItemType * findItem (const std::string &path) const
 
template<class ItemType >
ItemType * find (const std::string &path)
 
ItemfindChildItem (const std::string &path) const
 
template<class ItemType >
ItemType * findChildItem (const std::string &path) const
 
ItemfindSubItem (const std::string &path) const
 
template<class ItemType >
ItemType * findSubItem (const std::string &path) const
 
ItemheadItem () const
 
template<class ItemType >
ItemType * findOwnerItem (bool includeSelf=false)
 
bool isOwnedBy (Item *item) const
 
bool traverse (boost::function< bool(Item *)> function)
 
template<class ItemType >
bool traverse (boost::function< bool(ItemType *item)> function)
 
Itemduplicate () const
 
ItemduplicateAll () const
 
void assign (Item *srcItem)
 
bool load (const std::string &filename, const std::string &format=std::string())
 
bool load (const std::string &filename, Item *parent, const std::string &format=std::string())
 
bool save (const std::string &filename, const std::string &format=std::string())
 
bool overwrite (bool forceOverwrite=false, const std::string &format=std::string())
 
const std::string & filePath () const
 
const std::string & fileFormat () const
 
std::time_t fileModificationTime () const
 
bool isConsistentWithFile () const
 
void clearFileInformation ()
 
void suggestFileUpdate ()
 
void putProperties (PutPropertyFunction &putProperty)
 
virtual void notifyUpdate ()
 
SignalProxy< void(const std::string &oldName)> sigNameChanged ()
 
SignalProxy< void()> sigUpdated ()
 
SignalProxy< void()> sigPositionChanged ()
 
SignalProxy< void()> sigDetachedFromRoot ()
 
SignalProxy< void()> sigDisconnectedFromRoot ()
 
SignalProxy< void()> sigSubTreeChanged ()
 
ReferencedcustomData (int id)
 
const ReferencedcustomData (int id) const
 
void setCustomData (int id, ReferencedPtr data)
 
void clearCustomData (int id)
 
- Public Member Functions inherited from cnoid::Referenced
virtual ~Referenced ()
 
void addRef ()
 
void releaseRef ()
 

Static Public Member Functions

static void initializeClass (ExtensionManager *ext)
 
static SimulatorItemfindActiveSimulatorItemFor (Item *item)
 
- Static Public Member Functions inherited from cnoid::Item
static Itemfind (const std::string &path)
 
static SignalProxy< void(const char *type_info_name)> sigClassUnregistered ()
 

Protected Member Functions

 SimulatorItem (const SimulatorItem &org)
 
virtual void onDisconnectedFromRoot ()
 
virtual SimulationBodycreateSimulationBody (Body *orgBody)=0
 
CollisionDetectorPtr collisionDetector ()
 
virtual bool initializeSimulation (const std::vector< SimulationBody * > &simBodies)=0
 
virtual void initializeSimulationThread ()
 
virtual void finalizeSimulationThread ()
 
virtual bool stepSimulation (const std::vector< SimulationBody * > &activeSimBodies)=0
 
virtual void finalizeSimulation ()
 
virtual CollisionLinkPairListPtr getCollisions ()
 
void doPutProperties (PutPropertyFunction &putProperty)
 
bool store (Archive &archive)
 
bool restore (const Archive &archive)
 
- Protected Member Functions inherited from cnoid::Item
 Item ()
 
 Item (const Item &item)
 
virtual void onConnectedToRoot ()
 
virtual void onPositionChanged ()
 
virtual bool onChildItemAboutToBeAdded (Item *childItem, bool isManualOperation)
 
virtual ItemdoDuplicate () const
 
virtual void doAssign (Item *srcItem)
 
void setAttribute (Attribute attribute)
 
void unsetAttribute (Attribute attribute)
 
- Protected Member Functions inherited from cnoid::Referenced
 Referenced ()
 
 Referenced (const Referenced &org)
 
int refCount () const
 

Friends

class SimulatorItemImpl
 
class SimulatedMotionEngineManager
 

Member Enumeration Documentation

Enumerator
REC_FULL 
REC_TAIL 
REC_NONE 
N_RECORDING_MODES 
Enumerator
TR_UNLIMITED 
TR_ACTIVE_CONTROL 
TR_SPECIFIED 
TR_TIMEBAR 
N_TIME_RANGE_MODES 

Constructor & Destructor Documentation

SimulatorItem::SimulatorItem ( )
SimulatorItem::~SimulatorItem ( )
virtual
SimulatorItem::SimulatorItem ( const SimulatorItem org)
protected

Member Function Documentation

int SimulatorItem::addMidDynamicsFunction ( boost::function< void()>  func)
int SimulatorItem::addPostDynamicsFunction ( boost::function< void()>  func)
int SimulatorItem::addPreDynamicsFunction ( boost::function< void()>  func)
Returns
The registration id of the function. The id can be used for removing the function.
void SimulatorItem::clearExternalForces ( )
virtual
void SimulatorItem::clearForcedPositions ( )
virtual

Reimplemented in cnoid::AISTSimulatorItem.

void SimulatorItem::clearVirtualElasticStrings ( )
virtual
CollisionDetectorPtr SimulatorItem::collisionDetector ( )
protected
virtual SimulationBody* cnoid::SimulatorItem::createSimulationBody ( Body orgBody)
protectedpure virtual
Note
orgBody should not owned by the SimulationBody instance. Instead of it, a clone instance which may be a sub Body class should be created and owned.

Implemented in cnoid::AISTSimulatorItem, cnoid::ODESimulatorItem, and cnoid::BulletSimulatorItem.

int SimulatorItem::currentFrame ( ) const

This can only be called from the simulation thread.

double SimulatorItem::currentTime ( void  ) const

This can only be called from the simulation thread.

void SimulatorItem::doPutProperties ( PutPropertyFunction putProperty)
protectedvirtual

Override this function to put properties of the item.

Note
Please call doPutProperties() of the parent class in this function. For example, when your class directly inherits the Item class, call Item::doPutProperties(putProperty).

Reimplemented from cnoid::Item.

Reimplemented in cnoid::ODESimulatorItem, and cnoid::BulletSimulatorItem.

void SimulatorItem::finalizeSimulation ( )
protectedvirtual
Note
This function is called from the main thread.

Reimplemented in cnoid::AISTSimulatorItem, and cnoid::ODESimulatorItem.

void SimulatorItem::finalizeSimulationThread ( )
protectedvirtual
SimulatorItem * SimulatorItem::findActiveSimulatorItemFor ( Item item)
static
SimulationBody * SimulatorItem::findSimulationBody ( BodyItem bodyItem)
Todo:
make thread safe
SimulationBody * SimulatorItem::findSimulationBody ( const std::string &  name)
Todo:
make thread safe
virtual CollisionLinkPairListPtr cnoid::SimulatorItem::getCollisions ( )
inlineprotectedvirtual

Reimplemented in cnoid::AISTSimulatorItem.

void SimulatorItem::initializeClass ( ExtensionManager ext)
static
virtual bool cnoid::SimulatorItem::initializeSimulation ( const std::vector< SimulationBody * > &  simBodies)
protectedpure virtual
Parameters
simBodiesSimulatorBody objects which have a valid body
Note
This function is called from the main thread.

Implemented in cnoid::AISTSimulatorItem, cnoid::ODESimulatorItem, and cnoid::BulletSimulatorItem.

void SimulatorItem::initializeSimulationThread ( )
protectedvirtual
bool SimulatorItem::isActive ( ) const

isRunning() && !isPausing()

bool SimulatorItem::isAllLinkPositionOutputMode ( )
bool SimulatorItem::isDeviceStateOutputEnabled ( ) const
bool SimulatorItem::isForcedPositionActiveFor ( BodyItem bodyItem) const
virtual

Reimplemented in cnoid::AISTSimulatorItem.

bool SimulatorItem::isPausing ( ) const
bool SimulatorItem::isRecordingEnabled ( ) const
bool SimulatorItem::isRunning ( ) const
void SimulatorItem::onDisconnectedFromRoot ( )
protectedvirtual

Reimplemented from cnoid::Item.

void SimulatorItem::pauseSimulation ( )
virtual
Selection SimulatorItem::recordingMode ( ) const
void SimulatorItem::removeMidDynamicsFunction ( int  id)
void SimulatorItem::removePostDynamicsFunction ( int  id)
void SimulatorItem::removePreDynamicsFunction ( int  id)
void SimulatorItem::restartSimulation ( )
virtual
bool SimulatorItem::restore ( const Archive archive)
protectedvirtual

Reimplemented from cnoid::Item.

Reimplemented in cnoid::ODESimulatorItem, and cnoid::BulletSimulatorItem.

void SimulatorItem::setAllLinkPositionOutputMode ( bool  on)
virtual
void SimulatorItem::setDeviceStateOutputEnabled ( bool  on)
void SimulatorItem::setExternalForce ( BodyItem bodyItem,
Link link,
const Vector3 point,
const Vector3 f,
double  time = 0.0 
)
virtual
Parameters
pointlink local position to apply the force
flinear force to apply in global coordinate
void SimulatorItem::setForcedPosition ( BodyItem bodyItem,
const Position T 
)
virtual

Reimplemented in cnoid::AISTSimulatorItem.

void SimulatorItem::setRealtimeSyncMode ( bool  on)
void SimulatorItem::setRecordingMode ( int  selection)
void SimulatorItem::setTimeRangeMode ( int  selection)
void SimulatorItem::setVirtualElasticString ( BodyItem bodyItem,
Link link,
const Vector3 attachmentPoint,
const Vector3 endPoint 
)
virtual
Parameters
attachmentPointlink local position
goalglobal goal position
SgCloneMap & SimulatorItem::sgCloneMap ( )
SignalProxy<void(const std::vector<SimulationBodyPtr>& simulationBodies)> cnoid::SimulatorItem::sigSimulationBodyListUpdated ( )
Note
This signal is emitted in the simulation thread
SignalProxy< void()> SimulatorItem::sigSimulationFinished ( )
SignalProxy< void()> SimulatorItem::sigSimulationStarted ( )
const std::vector< SimulationBody * > & SimulatorItem::simulationBodies ( )

For sub simulators

int SimulatorItem::simulationFrame ( ) const

This can be called from non simulation threads.

double SimulatorItem::simulationTime ( ) const

This can be called from non simulation threads.

bool SimulatorItem::startSimulation ( bool  doReset = true)
virtual

Reimplemented in cnoid::AISTSimulatorItem.

virtual bool cnoid::SimulatorItem::stepSimulation ( const std::vector< SimulationBody * > &  activeSimBodies)
protectedpure virtual

This function is called from the simulation loop thread.

Parameters
activeSimBodiesSimulatorBody objects which are non-static ones.

Implemented in cnoid::AISTSimulatorItem, cnoid::ODESimulatorItem, and cnoid::BulletSimulatorItem.

void SimulatorItem::stopSimulation ( )
virtual
bool SimulatorItem::store ( Archive archive)
protectedvirtual

Reimplemented from cnoid::Item.

Reimplemented in cnoid::ODESimulatorItem, and cnoid::BulletSimulatorItem.

double SimulatorItem::worldTimeStep ( )
virtual

Friends And Related Function Documentation

friend class SimulatedMotionEngineManager
friend
friend class SimulatorItemImpl
friend

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