32 #include "PhysicsFactory.h" 34 #include <Rcs_joint.h> 35 #include <Rcs_macros.h> 36 #include <Rcs_typedef.h> 37 #include <Rcs_timer.h> 46 const char* cfgFile) :
47 Rcs::HardwareComponent(),
49 currentGraph(graphCurr),
52 tStart(Timer_getSystemTime()),
59 this->
sim = Rcs::PhysicsFactory::create(engine, graphCurr, cfgFile);
65 setSynchronizationMode(Synchronize_Hard);
72 Rcs::HardwareComponent(),
77 tStart(Timer_getSystemTime()),
84 setSynchronizationMode(Synchronize_Hard);
101 this->
dt = 1.0/updateFreq;
102 this->
tStart = Timer_getSystemTime();
103 PeriodicCallback::start(updateFreq, prio);
119 if (this->
mtx != NULL) {
120 pthread_mutex_lock(this->
mtx);
129 if (this->
mtx != NULL) {
130 pthread_mutex_unlock(this->
mtx);
139 double tmp = Timer_getSystemTime();
143 if (this->
ffwd ==
true) {
144 sim->getLastPositionCommand(graph->q);
147 if (this->
dt > 0.0) {
148 sim->simulate(this->
dt, graph, NULL, NULL,
true);
154 this->
dtSim = Timer_getSystemTime() - tmp;
162 const MatNd* q_dot_des,
165 sim->setControlInput(q_des, q_dot_des, T_des);
180 sim->setEnablePPS(enable);
188 return "PhysicsSimulation";
212 callControlLayerCallbackIfConnected();
220 sim->getLastPositionCommand(q_des);
236 return snprintf(str, size,
"Simulation time: %.3f (%.3f)\nStep took %.1f msec\n",
258 start(getUpdateFrequency(), getThreadPriority());
virtual void setEnablePPS(bool enable)
virtual void start(double updateFreq=10.0, int prio=50)
virtual const char * getName() const
virtual ~PhysicsSimulationComponent()
virtual void setMutex(pthread_mutex_t *mtx)
virtual double getCallbackUpdatePeriod() const
virtual double getLastUpdateTime() const
virtual void getLastPositionCommand(MatNd *q_des) const
virtual void setCommand(const MatNd *q_des, const MatNd *qp_des, const MatNd *T_des)
virtual double getStartTime() const
virtual void setFeedForward(bool ffwd)
PhysicsSimulationComponent(RcsGraph *graph, const char *engine="Bullet", const char *physicsCfgFile=NULL)
virtual void updateGraph(RcsGraph *graph)
virtual PhysicsBase * getPhysicsSimulation() const
virtual int sprint(char *str, size_t size) const