DeprecatedNJointTaskSpaceImpedanceDMPController.h
Go to the documentation of this file.
1 
2 #pragma once
3 
4 #include <VirtualRobot/VirtualRobot.h>
5 
8 
10 
12 #include <armarx/control/deprecated_njoint_mp_controller/task_space/ControllerInterface.h>
13 
14 #include <dmp/representation/dmp/umidmp.h>
15 
16 namespace armarx
17 {
18  class SensorValue1DoFActuatorTorque;
19  class SensorValue1DoFActuatorVelocity;
20  class SensorValue1DoFActuatorPosition;
21  class ControlTarget1DoFActuatorTorque;
22  class SensorValueForceTorque;
23 } // namespace armarx
24 
26 {
28 
29  TYPEDEF_PTRS_HANDLE(DeprecatedNJointTaskSpaceImpedanceDMPController);
30  TYPEDEF_PTRS_HANDLE(DeprecatedNJointTaskSpaceImpedanceDMPControllerControlData);
31 
33  {
34  public:
35  Eigen::VectorXf targetVel;
37  Eigen::VectorXf desiredNullSpaceJointValues;
38  double canVal;
39  double mpcFactor;
40  };
41 
42  /**
43  * @brief The DeprecatedNJointTaskSpaceImpedanceDMPController class
44  * @ingroup Library-RobotUnit-NJointControllers
45  */
48  DeprecatedNJointTaskSpaceImpedanceDMPControllerControlData>,
50  {
51  public:
52  using ConfigPtrT = DeprecatedNJointTaskSpaceImpedanceDMPControllerConfigPtr;
54  const NJointControllerConfigPtr& config,
55  const VirtualRobot::RobotPtr&);
56 
57  // NJointControllerInterface interface
58  std::string getClassName(const Ice::Current&) const override;
59 
60  // NJointController interface
61 
62  void rtRun(const IceUtil::Time& sensorValuesTimestamp,
63  const IceUtil::Time& timeSinceLastIteration) override;
64 
65  // DeprecatedNJointTaskSpaceImpedanceDMPControllerInterface interface
66  void learnDMPFromFiles(const Ice::StringSeq& fileNames, const Ice::Current&) override;
67 
68  bool
69  isFinished(const Ice::Current&) override
70  {
71  return finished;
72  }
73 
74  bool
75  isDMPRunning(const Ice::Current&) override
76  {
77  return started;
78  }
79 
80  void
81  setViaPoints(Ice::Double u, const Ice::DoubleSeq& viapoint, const Ice::Current&) override;
82  void setGoals(const Ice::DoubleSeq& goals, const Ice::Current&) override;
83 
84  void learnJointDMPFromFiles(const std::string& fileName,
85  const Ice::FloatSeq& currentJVS,
86  const Ice::Current&) override;
87  void runDMP(const Ice::DoubleSeq& goals,
88  const Ice::Current& iceCurrent = Ice::emptyCurrent) override;
89  void runDMPWithTime(const Ice::DoubleSeq& goals,
90  Ice::Double timeDuration,
91  const Ice::Current&) override;
92 
94  getVirtualTime(const Ice::Current&) override
95  {
96  return dmpCtrl->canVal;
97  }
98 
99  void stopDMP(const Ice::Current&) override;
100  void resumeDMP(const Ice::Current&) override;
101  void resetDMP(const Ice::Current&) override;
102 
103  void setMPWeights(const DoubleSeqSeq& weights, const Ice::Current&) override;
104  DoubleSeqSeq getMPWeights(const Ice::Current&) override;
105 
106  void removeAllViaPoints(const Ice::Current&) override;
107 
108  void setLinearVelocityKd(const Eigen::Vector3f& kd, const Ice::Current&) override;
109  void setLinearVelocityKp(const Eigen::Vector3f& kp, const Ice::Current&) override;
110  void setAngularVelocityKd(const Eigen::Vector3f& kd, const Ice::Current&) override;
111  void setAngularVelocityKp(const Eigen::Vector3f& kp, const Ice::Current&) override;
112  void setNullspaceVelocityKd(const Eigen::VectorXf& kd, const Ice::Current&) override;
113  void setNullspaceVelocityKp(const Eigen::VectorXf& kp, const Ice::Current&) override;
114  void setUseNullSpaceJointDMP(bool enable, const Ice::Current&) override;
115  void setDefaultNullSpaceJointValues(const Eigen::VectorXf& jointValues,
116  const Ice::Current&) override;
117 
118  void
119  enableForceStop(const Ice::Current&) override
120  {
121  useForceStop = true;
122  }
123 
124  void
125  disableForceStop(const Ice::Current&) override
126  {
127  useForceStop = false;
128  }
129 
130  void
131  setForceThreshold(const Eigen::Vector3f& f, const Ice::Current& current) override
132  {
133  forceThreshold.getWriteBuffer() = f;
134  forceThreshold.commitWrite();
135  }
136 
137  std::string getDMPAsString(const Ice::Current&) override;
138  Ice::DoubleSeq createDMPFromString(const std::string&, const Ice::Current&) override;
139  Ice::Double getCanVal(const Ice::Current&);
140 
141  protected:
142  virtual void onPublish(const SensorAndControl&,
144  const DebugObserverInterfacePrx&) override;
145 
146  void onInitNJointController() override;
147  void onDisconnectNJointController() override;
148  void controllerRun();
149 
150  private:
151  struct DebugBufferData
152  {
153  double currentCanVal;
154  double mpcfactor;
155  float targetPose_x;
156  float targetPose_y;
157  float targetPose_z;
158  float targetPose_qw;
159  float targetPose_qx;
160  float targetPose_qy;
161  float targetPose_qz;
162 
163  float currentPose_x;
164  float currentPose_y;
165  float currentPose_z;
166  float currentPose_qw;
167  float currentPose_qx;
168  float currentPose_qy;
169  float currentPose_qz;
170 
171  float currentKpos_x;
172  float currentKpos_y;
173  float currentKpos_z;
174  float currentKori_x;
175  float currentKori_y;
176  float currentKori_z;
177  float currentKnull_x;
178  float currentKnull_y;
179  float currentKnull_z;
180 
181  float currentDpos_x;
182  float currentDpos_y;
183  float currentDpos_z;
184  float currentDori_x;
185  float currentDori_y;
186  float currentDori_z;
187  float currentDnull_x;
188  float currentDnull_y;
189  float currentDnull_z;
190 
191  StringFloatDictionary desired_torques;
192  StringFloatDictionary desired_nullspaceJoint;
193  float forceDesired_x;
194  float forceDesired_y;
195  float forceDesired_z;
196  float forceDesired_rx;
197  float forceDesired_ry;
198  float forceDesired_rz;
199 
200  Eigen::Vector3f filteredForceInRoot;
201 
202  float deltaT;
203  };
204 
206 
207  struct DeprecatedNJointTaskSpaceImpedanceDMPControllerSensorData
208  {
209  double currentTime;
210  double deltaT;
211  Eigen::Matrix4f currentPose;
212  Eigen::VectorXf currentTwist;
213  };
214 
216  controllerSensorData;
217 
218  struct DeprecatedNJointTaskSpaceImpedanceDMPControllerInterfaceData
219  {
220  Eigen::Matrix4f currentTcpPose;
221  };
222 
224  interfaceData;
225 
226  struct CtrlParams
227  {
228  Eigen::Vector3f kpos;
229  Eigen::Vector3f dpos;
230  Eigen::Vector3f kori;
231  Eigen::Vector3f dori;
232  Eigen::VectorXf knull;
233  Eigen::VectorXf dnull;
234  };
235 
236  WriteBufferedTripleBuffer<CtrlParams> ctrlParams;
237 
238 
239  DMP::Vec<DMP::DMPState> currentJointState;
240  DMP::UMIDMPPtr nullSpaceJointDMPPtr;
241 
243 
244  std::vector<const SensorValue1DoFActuatorTorque*> torqueSensors;
245  std::vector<const SensorValue1DoFActuatorVelocity*> velocitySensors;
246  std::vector<const SensorValue1DoFActuatorPosition*> positionSensors;
247  std::vector<ControlTarget1DoFActuatorTorque*> targets;
248 
249  // velocity ik controller parameters
250  // dmp parameters
251  double timeDuration;
252  bool finished;
253  VirtualRobot::RobotNodeSetPtr rns;
254 
255  // phaseStop parameters
256  double phaseL;
257  double phaseK;
258  double phaseDist0;
259  double phaseDist1;
260  double posToOriRatio;
261 
262 
263  DeprecatedNJointTaskSpaceImpedanceDMPControllerConfigPtr cfg;
264  VirtualRobot::DifferentialIKPtr ik;
265  VirtualRobot::RobotNodePtr tcp;
266 
267  float torqueLimit;
268 
269  // Eigen::Vector3f kpos;
270  // Eigen::Vector3f kori;
271  // Eigen::Vector3f dpos;
272  // Eigen::Vector3f dori;
273  // Eigen::VectorXf knull;
274  // Eigen::VectorXf dnull;
275  int numOfJoints;
276 
277  std::atomic_bool useNullSpaceJointDMP;
278  bool isNullSpaceJointDMPLearned;
279 
280 
281  WriteBufferedTripleBuffer<Eigen::VectorXf> defaultNullSpaceJointValues;
282  std::vector<std::string> jointNames;
283  mutable MutexType controllerMutex;
285  bool firstRun;
286  bool started = false;
287  bool stopped = false;
288 
289  Eigen::Matrix4f stopPose;
290 
291  Eigen::Vector3f filteredForce;
292  Eigen::Vector3f forceOffset;
293  Eigen::Vector3f filteredForceInRoot;
294  WriteBufferedTripleBuffer<Eigen::Vector3f> forceThreshold;
295  std::atomic<bool> useForceStop;
296  std::atomic<float> timeForCalibration;
297  const SensorValueForceTorque* forceSensor;
298 
299  // Eigen::Matrix4f oldPose;
300  // NJointController interface
301  protected:
303  };
304 
305 } // namespace armarx::control::deprecated_njoint_mp_controller::task_space
armarx::DeprecatedNJointTaskSpaceImpedanceDMPControllerInterface::stopDMP
void stopDMP()
armarx::DeprecatedNJointTaskSpaceImpedanceDMPControllerInterface::getCanVal
double getCanVal()
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPControllerControlData::desiredNullSpaceJointValues
Eigen::VectorXf desiredNullSpaceJointValues
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.h:37
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::setGoals
void setGoals(const Ice::DoubleSeq &goals, const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:529
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::DeprecatedNJointTaskSpaceImpedanceDMPController
DeprecatedNJointTaskSpaceImpedanceDMPController(const RobotUnitPtr &robotUnit, const NJointControllerConfigPtr &config, const VirtualRobot::RobotPtr &)
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:29
NJointControllerWithTripleBuffer.h
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::setMPWeights
void setMPWeights(const DoubleSeqSeq &weights, const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:817
boost::shared_ptr< class UMIDMP >
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::createDMPFromString
Ice::DoubleSeq createDMPFromString(const std::string &, const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:598
armarx::NJointControllerWithTripleBuffer
Definition: NJointControllerWithTripleBuffer.h:10
armarx::DeprecatedNJointTaskSpaceImpedanceDMPControllerInterface::resumeDMP
void resumeDMP()
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::runDMP
void runDMP(const Ice::DoubleSeq &goals, const Ice::Current &iceCurrent=Ice::emptyCurrent) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:637
armarx::WriteBufferedTripleBuffer::commitWrite
void commitWrite()
Definition: TripleBuffer.h:383
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::runDMPWithTime
void runDMPWithTime(const Ice::DoubleSeq &goals, Ice::Double timeDuration, const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:626
GfxTL::Matrix4f
MatrixXX< 4, 4, float > Matrix4f
Definition: MatrixXX.h:650
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::rtPreActivateController
void rtPreActivateController()
This function is called before the controller is activated.
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:166
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::getVirtualTime
Ice::Double getVirtualTime(const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.h:94
armarx::control::deprecated_njoint_mp_controller::task_space
Definition: DeprecatedNJointPeriodicTSDMPCompliantController.cpp:20
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::isDMPRunning
bool isDMPRunning(const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.h:75
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::setViaPoints
void setViaPoints(Ice::Double u, const Ice::DoubleSeq &viapoint, const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:519
armarx::DeprecatedNJointTaskSpaceImpedanceDMPControllerInterface
Definition: ControllerInterface.ice:424
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::setUseNullSpaceJointDMP
void setUseNullSpaceJointDMP(bool enable, const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:619
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPControllerControlData::targetVel
Eigen::VectorXf targetVel
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.h:35
PeriodicTask.h
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::setNullspaceVelocityKp
void setNullspaceVelocityKp(const Eigen::VectorXf &kp, const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:906
armarx::NJointControllerBase::ConfigPtrT
NJointControllerConfigPtr ConfigPtrT
Definition: NJointControllerBase.h:587
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::onDisconnectNJointController
void onDisconnectNJointController() override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:811
armarx::PeriodicTask::pointer_type
IceUtil::Handle< PeriodicTask< T > > pointer_type
Shared pointer type for convenience.
Definition: PeriodicTask.h:68
armarx::DeprecatedNJointTaskSpaceImpedanceDMPControllerInterface::resetDMP
void resetDMP()
armarx::detail::ControlThreadOutputBufferEntry
Definition: ControlThreadOutputBuffer.h:182
armarx::VariantType::Double
const VariantTypeId Double
Definition: Variant.h:920
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::setAngularVelocityKd
void setAngularVelocityKd(const Eigen::Vector3f &kd, const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:872
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::setLinearVelocityKp
void setLinearVelocityKp(const Eigen::Vector3f &kp, const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:861
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::isFinished
bool isFinished(const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.h:69
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPControllerControlData::mpcFactor
double mpcFactor
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.h:39
armarx::DeprecatedNJointTaskSpaceImpedanceDMPControllerInterface::getMPWeights
DoubleSeqSeq getMPWeights()
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::disableForceStop
void disableForceStop(const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.h:125
armarx::DeprecatedNJointTaskSpaceImpedanceDMPControllerInterface::removeAllViaPoints
void removeAllViaPoints()
armarx::WriteBufferedTripleBuffer::getWriteBuffer
T & getWriteBuffer()
Definition: TripleBuffer.h:325
armarx::control::deprecated_njoint_mp_controller::tsvmp
Definition: NJointTaskSpaceImpedanceDMPController.h:27
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::rtRun
void rtRun(const IceUtil::Time &sensorValuesTimestamp, const IceUtil::Time &timeSinceLastIteration) override
TODO make protected and use attorneys.
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:276
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::learnJointDMPFromFiles
void learnJointDMPFromFiles(const std::string &fileName, const Ice::FloatSeq &currentJVS, const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:536
armarx::armem::Time
armarx::core::time::DateTime Time
Definition: forward_declarations.h:13
TaskSpaceVMP.h
CycleUtil.h
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::setForceThreshold
void setForceThreshold(const Eigen::Vector3f &f, const Ice::Current &current) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.h:131
armarx::control::deprecated_njoint_mp_controller::tsvmp::TaskSpaceDMPControllerPtr
std::shared_ptr< TaskSpaceDMPController > TaskSpaceDMPControllerPtr
Definition: NJointTaskSpaceImpedanceDMPController.h:31
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::onPublish
virtual void onPublish(const SensorAndControl &, const DebugDrawerInterfacePrx &, const DebugObserverInterfacePrx &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:675
armarx::NJointControllerWithTripleBuffer< DeprecatedNJointTaskSpaceImpedanceDMPControllerControlData >::MutexType
std::recursive_mutex MutexType
Definition: NJointControllerWithTripleBuffer.h:13
IceUtil::Handle< class RobotUnit >
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::setLinearVelocityKd
void setLinearVelocityKd(const Eigen::Vector3f &kd, const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:850
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::onInitNJointController
void onInitNJointController() override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:790
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController
The DeprecatedNJointTaskSpaceImpedanceDMPController class.
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.h:46
IceInternal::ProxyHandle<::IceProxy::armarx::DebugDrawerInterface >
armarx::control::deprecated_njoint_mp_controller::task_space::TYPEDEF_PTRS_HANDLE
TYPEDEF_PTRS_HANDLE(DeprecatedNJointPeriodicTSDMPCompliantController)
armarx::WriteBufferedTripleBuffer< DebugBufferData >
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::setDefaultNullSpaceJointValues
void setDefaultNullSpaceJointValues(const Eigen::VectorXf &jointValues, const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:918
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::learnDMPFromFiles
void learnDMPFromFiles(const Ice::StringSeq &fileNames, const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:510
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::controllerRun
void controllerRun()
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:178
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPControllerControlData::targetPose
Eigen::Matrix4f targetPose
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.h:36
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::setAngularVelocityKp
void setAngularVelocityKp(const Eigen::Vector3f &kp, const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:883
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPControllerControlData
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.h:32
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::enableForceStop
void enableForceStop(const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.h:119
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::setNullspaceVelocityKd
void setNullspaceVelocityKd(const Eigen::VectorXf &kd, const Ice::Current &) override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:894
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPControllerControlData::canVal
double canVal
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.h:38
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
armarx::DeprecatedNJointTaskSpaceImpedanceDMPControllerInterface::getDMPAsString
string getDMPAsString()
armarx::control::deprecated_njoint_mp_controller::task_space::DeprecatedNJointTaskSpaceImpedanceDMPController::getClassName
std::string getClassName(const Ice::Current &) const override
Definition: DeprecatedNJointTaskSpaceImpedanceDMPController.cpp:160
VirtualRobot::RobotPtr
std::shared_ptr< class Robot > RobotPtr
Definition: Bus.h:19