MujocoPhysicsWorld.h
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * Copyright (C) 2013-2016, High Performance Humanoid Technologies (H2T), Karlsruhe Institute of Technology (KIT), all rights reserved.
5  *
6  * ArmarX is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  *
10  * ArmarX is distributed in the hope that it will be useful, but
11  * WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  *
18  * @package ArmarXSimulation::Simulator
19  * @author Rainer Kartmann ( rainer dot kartmann at student dot kit dot edu )
20  * @date 2019
21  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
22  * GNU General Public License
23  */
24 
25 #pragma once
26 
27 #include <filesystem>
28 
29 #include <VirtualRobot/XML/mujoco/RobotMjcf.h>
30 
31 #include "SimulatedWorld.h"
32 #include "mujoco/LengthScaling.h"
33 #include "mujoco/SimMjcf.h"
34 #include "mujoco/SimObject.h"
35 #include "mujoco/SimRobot.h"
36 #include <MujocoX/libraries/MJCF/Document.h>
37 #include <MujocoX/libraries/Simulation/MujocoSim.h>
38 #include <MujocoX/libraries/Simulation/SimCallbackListener.h>
39 #include <MujocoX/libraries/Simulation/SimEntity.h>
40 
41 namespace armarx
42 {
43  /**
44  * @brief The MujocoPhysicsWorld class encapsulates the whole physics
45  * simulation and the corresponding data.
46  */
47  class MujocoPhysicsWorld : public SimulatedWorld, mujoco::SimCallbackListener
48  {
49  public:
51  virtual ~MujocoPhysicsWorld() override = default;
52 
53 
54  public:
55  /**
56  * @brief Initialize `*this`. To be called after construction.
57  *
58  * Sets up simulation model document and requests a reload.
59  *
60  * @param stepTimeMs The step time in ms.
61  * @param floorEnabled Whether to add a floor.
62  * @param floorTexture The floor texture file.
63  */
64  void initialize(int stepTimeMs, bool floorEnabled, const std::string& floorTexture);
65 
66 
67  // SimulatedWorld interface
68 
69  virtual void stepPhysicsRealTime() override;
70  virtual void stepPhysicsFixedTimeStep() override;
71  virtual int getFixedTimeStepMS() override;
72 
73  virtual std::vector<std::string> getObstacleNames() override;
74  virtual std::vector<std::string> getRobotNames() override;
75 
76 
77  virtual void actuateRobotJoints(const std::string& robotName,
78  const std::map<std::string, float>& angles,
79  const std::map<std::string, float>& velocities) override;
80  virtual void actuateRobotJointsPos(const std::string& robotName,
81  const std::map<std::string, float>& angles) override;
82  virtual void actuateRobotJointsVel(const std::string& robotName,
83  const std::map<std::string, float>& velocities) override;
84  virtual void actuateRobotJointsTorque(const std::string& robotName,
85  const std::map<std::string, float>& torques) override;
86 
87  virtual void applyForceRobotNode(const std::string& robotName,
88  const std::string& robotNodeName,
89  const Eigen::Vector3f& force) override;
90  virtual void applyTorqueRobotNode(const std::string& robotName,
91  const std::string& robotNodeName,
92  const Eigen::Vector3f& torque) override;
93 
94  virtual void applyForceObject(const std::string& objectName,
95  const Eigen::Vector3f& force) override;
96  virtual void applyTorqueObject(const std::string& objectName,
97  const Eigen::Vector3f& torque) override;
98 
99  virtual std::map<std::string, float>
100  getRobotJointAngles(const std::string& robotName) override;
101  virtual float getRobotJointAngle(const std::string& robotName,
102  const std::string& nodeName) override;
103 
104  virtual std::map<std::string, float>
105  getRobotJointVelocities(const std::string& robotName) override;
106  virtual float getRobotJointVelocity(const std::string& robotName,
107  const std::string& nodeName) override;
108 
109  virtual std::map<std::string, float>
110  getRobotJointTorques(const std::string& robotName) override;
111  virtual ForceTorqueDataSeq
112  getRobotForceTorqueSensors(const std::string& robotName) override;
113 
114 
115  virtual Eigen::Matrix4f getObjectPose(const std::string& objectName) override;
116  virtual void setObjectPose(const std::string& objectName,
117  const Eigen::Matrix4f& globalPose) override;
118 
119  virtual Eigen::Matrix4f getRobotPose(const std::string& robotName) override;
120  virtual void setRobotPose(const std::string& robotName,
121  const Eigen::Matrix4f& globalPose) override;
122 
123  virtual Eigen::Matrix4f getRobotNodePose(const std::string& robotName,
124  const std::string& robotNodeName) override;
125  virtual Eigen::Vector3f getRobotLinearVelocity(const std::string& robotName,
126  const std::string& nodeName) override;
127  virtual Eigen::Vector3f getRobotAngularVelocity(const std::string& robotName,
128  const std::string& nodeName) override;
129 
130  virtual void setRobotLinearVelocity(const std::string& robotName,
131  const std::string& robotNodeName,
132  const Eigen::Vector3f& vel) override;
133  virtual void setRobotAngularVelocity(const std::string& robotName,
134  const std::string& robotNodeName,
135  const Eigen::Vector3f& vel) override;
136 
137  virtual void setRobotLinearVelocityRobotRootFrame(const std::string& robotName,
138  const std::string& robotNodeName,
139  const Eigen::Vector3f& vel) override;
140  virtual void setRobotAngularVelocityRobotRootFrame(const std::string& robotName,
141  const std::string& robotNodeName,
142  const Eigen::Vector3f& vel) override;
143 
144  virtual bool hasObject(const std::string& instanceName) override;
145 
146  virtual bool hasRobot(const std::string& robotName) override;
147  virtual bool hasRobotNode(const std::string& robotName,
148  const std::string& robotNodeName) override;
149 
150  virtual std::vector<VirtualRobot::SceneObjectPtr> getObjects() override;
151 
152  virtual VirtualRobot::RobotPtr getRobot(const std::string& robotName) override;
153  virtual std::map<std::string, VirtualRobot::RobotPtr> getRobots() override;
154 
155  virtual float getRobotJointLimitLo(const std::string& robotName,
156  const std::string& nodeName) override;
157  virtual float getRobotJointLimitHi(const std::string& robotName,
158  const std::string& nodeName) override;
159 
160  virtual float getRobotMaxTorque(const std::string& robotName,
161  const std::string& nodeName) override;
162  virtual void setRobotMaxTorque(const std::string& robotName,
163  const std::string& nodeName,
164  float maxTorque) override;
165 
166  virtual float getRobotMass(const std::string& robotName) override;
167 
168  virtual DistanceInfo getRobotNodeDistance(const std::string& robotName,
169  const std::string& robotNodeName1,
170  const std::string& robotNodeName2) override;
171  virtual DistanceInfo getDistance(const std::string& robotName,
172  const std::string& robotNodeName,
173  const std::string& worldObjectName) override;
174 
175  virtual std::vector<SimDynamics::DynamicsEngine::DynamicsContactInfo>
176  copyContacts() override;
177 
178  virtual FramedPosePtr toFramedPose(const Eigen::Matrix4f& globalPose,
179  const std::string& robotName,
180  const std::string& frameName) override;
181 
182  virtual void
183  setObjectSimType(const std::string& objectName,
184  VirtualRobot::SceneObject::Physics::SimulationType simType) override;
185 
186  virtual void
187  setRobotNodeSimType(const std::string& robotName,
188  const std::string& robotNodeName,
189  VirtualRobot::SceneObject::Physics::SimulationType simType) override;
190 
191 
192  protected:
193  // SimulatedWorld interface
194 
195  virtual bool
197  VirtualRobot::SceneObject::Physics::SimulationType simType) override;
198  virtual bool removeObstacleEngine(const std::string& name) override;
199 
200  virtual bool addRobotEngine(VirtualRobot::RobotPtr robot,
201  double pid_p,
202  double pid_i,
203  double pid_d,
204  const std::string& filename,
205  bool staticRobot,
206  bool selfCollisions) override;
207  virtual bool removeRobotEngine(const std::string& robotName) override;
208 
209  virtual bool objectGraspedEngine(const std::string& robotName,
210  const std::string& robotNodeName,
211  const std::string& objectName,
212  Eigen::Matrix4f& storeLocalTransform) override;
213  virtual bool objectReleasedEngine(const std::string& robotName,
214  const std::string& robotNodeName,
215  const std::string& objectName) override;
216 
217  // floor
218  virtual VirtualRobot::SceneObjectPtr getFloor() override;
219  virtual void setupFloorEngine(bool enable, const std::string& floorTexture) override;
220 
221  /// According to other SimulatedWorlds, this method's only job is to update contacts.
222  virtual bool synchronizeSimulationDataEngine() override;
223  virtual int getContactCount() override;
224 
225  virtual bool synchronizeObjects() override;
226  virtual bool
228  std::map<std::string, PoseBasePtr>& objMap) override;
229 
230  virtual bool synchronizeRobotNodePoses(const std::string& robotName,
231  std::map<std::string, PoseBasePtr>& objMap) override;
232 
233  virtual bool getRobotStatus(const std::string& robotName,
237  Eigen::Vector3f& linearVelocity,
238  Eigen::Vector3f& angularVelocity) override;
239 
240  virtual bool updateForceTorqueSensor(ForceTorqueInfo& ftInfo) override;
241 
242 
243  protected:
244  // mujoco::SimCallbackListener
245  /// Sets time step and fetches entity IDs.
246  virtual void onLoadModel(mujoco::Model& model) override;
247  virtual void onMakeData(mujoco::Model& model, mujoco::Data& data) override;
248 
249 
250  private:
251  /// Name of base file included by model.
252  static const std::filesystem::path BASE_MJCF_FILENAME;
253  /// Temporary directory to store models.
254  static const std::filesystem::path TEMP_DIR;
255  /// File where model is stored for loading.
256  static const std::filesystem::path TEMP_MODEL_FILE;
257  /// Directory where object meshes are placed (relative to TEMP_DIR).
258  static const std::filesystem::path TEMP_MESH_DIR_REL;
259  /// Directory where object meshes are placed.
260  static const std::filesystem::path TEMP_MESH_DIR;
261 
262  /// Name of floor entities and class.
263  static const std::string FLOOR_NAME;
264  /// Name of object defaults class.
265  static const std::string OBJECT_CLASS_NAME;
266 
267 
268  private:
269  VirtualRobot::ObstaclePtr makeFloorObject(mujoco::Model& model,
270  const mujoco::SimGeom& floorGeom) const;
271 
272  /// Make a MJCF model for the given robot and return its absolute path.
273  VirtualRobot::mujoco::RobotMjcf
274  makeRobotMjcfModel(const VirtualRobot::RobotPtr& robot) const;
275 
276 
277  /// Save the MJCF document and request a reload.
278  void reloadModel(bool request = true);
279 
280 
281  // MJCF
282 
283  /// Length scaling manager.
284  LengthScaling lengthScaling;
285 
286  /// The model document.
287  mjcf::Document mjcfDocument;
288 
289  /// The model document helper.
290  SimMJCF simMjcf{mjcfDocument, lengthScaling, "MujocoPhysicsWorld"};
291 
292 
293  /// The simulation.
294  mujoco::MujocoSim sim;
295 
296  /// The fixed time step.
297  std::chrono::milliseconds fixedTimeStep;
298 
299 
300  // Entities & Objects
301 
302  /// The floor object.
303  mujoco::SimObject floor{FLOOR_NAME};
304  /// The floor texture file.
305  std::filesystem::path floorTextureFile;
306 
307 
308  /// The simulation obstacles.
309  std::map<std::string, mujoco::SimObject> obstacles;
310 
311  /// The simulation objects.
312  std::map<std::string, mujoco::SimObject> objects;
313 
314  /// The robots (key is name).
315  std::map<std::string, mujoco::SimRobot> robots;
316 
317 
318  // Simulation data
319 
320  /// Contacts.
321  std::vector<mjContact> contacts;
322  };
323 
324  using MujocoPhysicsWorldPtr = std::shared_ptr<MujocoPhysicsWorld>;
325 } // namespace armarx
armarx::MujocoPhysicsWorld::addRobotEngine
virtual bool addRobotEngine(VirtualRobot::RobotPtr robot, double pid_p, double pid_i, double pid_d, const std::string &filename, bool staticRobot, bool selfCollisions) override
armarx::MujocoPhysicsWorld::toFramedPose
virtual FramedPosePtr toFramedPose(const Eigen::Matrix4f &globalPose, const std::string &robotName, const std::string &frameName) override
toFramedPose Constructs a framed pose
armarx::MujocoPhysicsWorld::stepPhysicsFixedTimeStep
virtual void stepPhysicsFixedTimeStep() override
Perform one simulation step.
armarx::MujocoPhysicsWorld::synchronizeRobotNodePoses
virtual bool synchronizeRobotNodePoses(const std::string &robotName, std::map< std::string, PoseBasePtr > &objMap) override
armarx::MujocoPhysicsWorld::hasRobot
virtual bool hasRobot(const std::string &robotName) override
armarx::MujocoPhysicsWorld::synchronizeSimulationDataEngine
virtual bool synchronizeSimulationDataEngine() override
According to other SimulatedWorlds, this method's only job is to update contacts.
armarx::MujocoPhysicsWorld::setRobotAngularVelocity
virtual void setRobotAngularVelocity(const std::string &robotName, const std::string &robotNodeName, const Eigen::Vector3f &vel) override
armarx::MujocoPhysicsWorld::getFloor
virtual VirtualRobot::SceneObjectPtr getFloor() override
armarx::MujocoPhysicsWorld::applyTorqueObject
virtual void applyTorqueObject(const std::string &objectName, const Eigen::Vector3f &torque) override
armarx::MujocoPhysicsWorld::setRobotNodeSimType
virtual void setRobotNodeSimType(const std::string &robotName, const std::string &robotNodeName, VirtualRobot::SceneObject::Physics::SimulationType simType) override
GfxTL::Matrix4f
MatrixXX< 4, 4, float > Matrix4f
Definition: MatrixXX.h:650
armarx::MujocoPhysicsWorld
The MujocoPhysicsWorld class encapsulates the whole physics simulation and the corresponding data.
Definition: MujocoPhysicsWorld.h:47
armarx::MujocoPhysicsWorld::getRobotJointLimitHi
virtual float getRobotJointLimitHi(const std::string &robotName, const std::string &nodeName) override
armarx::MujocoPhysicsWorld::getRobotMaxTorque
virtual float getRobotMaxTorque(const std::string &robotName, const std::string &nodeName) override
armarx::MujocoPhysicsWorld::synchronizeSceneObjectPoses
virtual bool synchronizeSceneObjectPoses(VirtualRobot::SceneObjectPtr currentObjEngine, std::map< std::string, PoseBasePtr > &objMap) override
armarx::ForceTorqueInfo
Definition: SimulatedWorld.h:47
armarx::MujocoPhysicsWorld::getRobotJointLimitLo
virtual float getRobotJointLimitLo(const std::string &robotName, const std::string &nodeName) override
armarx::MujocoPhysicsWorld::getRobotJointAngles
virtual std::map< std::string, float > getRobotJointAngles(const std::string &robotName) override
armarx::SimulatedWorld
The SimulatedWorld class encapsulates the whole physics simulation and the corresponding data.
Definition: SimulatedWorld.h:132
armarx::MujocoPhysicsWorld::onLoadModel
virtual void onLoadModel(mujoco::Model &model) override
Sets time step and fetches entity IDs.
armarx::MujocoPhysicsWorld::getRobotNodePose
virtual Eigen::Matrix4f getRobotNodePose(const std::string &robotName, const std::string &robotNodeName) override
SimMjcf.h
armarx::MujocoPhysicsWorld::getRobotLinearVelocity
virtual Eigen::Vector3f getRobotLinearVelocity(const std::string &robotName, const std::string &nodeName) override
armarx::MujocoPhysicsWorld::actuateRobotJointsPos
virtual void actuateRobotJointsPos(const std::string &robotName, const std::map< std::string, float > &angles) override
armarx::MujocoPhysicsWorld::objectGraspedEngine
virtual bool objectGraspedEngine(const std::string &robotName, const std::string &robotNodeName, const std::string &objectName, Eigen::Matrix4f &storeLocalTransform) override
create a joint
armarx::MujocoPhysicsWorld::getRobotNodeDistance
virtual DistanceInfo getRobotNodeDistance(const std::string &robotName, const std::string &robotNodeName1, const std::string &robotNodeName2) override
armarx::MujocoPhysicsWorld::applyForceRobotNode
virtual void applyForceRobotNode(const std::string &robotName, const std::string &robotNodeName, const Eigen::Vector3f &force) override
SimRobot.h
IceInternal::Handle< FramedPose >
SimObject.h
armarx::MujocoPhysicsWorld::applyForceObject
virtual void applyForceObject(const std::string &objectName, const Eigen::Vector3f &force) override
armarx::MujocoPhysicsWorld::getRobot
virtual VirtualRobot::RobotPtr getRobot(const std::string &robotName) override
armarx::MujocoPhysicsWorld::objectReleasedEngine
virtual bool objectReleasedEngine(const std::string &robotName, const std::string &robotNodeName, const std::string &objectName) override
remove a joint
armarx::MujocoPhysicsWorld::getRobotForceTorqueSensors
virtual ForceTorqueDataSeq getRobotForceTorqueSensors(const std::string &robotName) override
armarx::MujocoPhysicsWorld::hasObject
virtual bool hasObject(const std::string &instanceName) override
data
uint8_t data[1]
Definition: EtherCATFrame.h:68
armarx::MujocoPhysicsWorld::onMakeData
virtual void onMakeData(mujoco::Model &model, mujoco::Data &data) override
armarx::MujocoPhysicsWorld::setRobotPose
virtual void setRobotPose(const std::string &robotName, const Eigen::Matrix4f &globalPose) override
armarx::MujocoPhysicsWorld::actuateRobotJoints
virtual void actuateRobotJoints(const std::string &robotName, const std::map< std::string, float > &angles, const std::map< std::string, float > &velocities) override
armarx::MujocoPhysicsWorld::removeRobotEngine
virtual bool removeRobotEngine(const std::string &robotName) override
armarx::MujocoPhysicsWorld::removeObstacleEngine
virtual bool removeObstacleEngine(const std::string &name) override
armarx::MujocoPhysicsWorld::getRobotAngularVelocity
virtual Eigen::Vector3f getRobotAngularVelocity(const std::string &robotName, const std::string &nodeName) override
armarx::MujocoPhysicsWorldPtr
std::shared_ptr< MujocoPhysicsWorld > MujocoPhysicsWorldPtr
Definition: MujocoPhysicsWorld.h:324
armarx::MujocoPhysicsWorld::addObstacleEngine
virtual bool addObstacleEngine(VirtualRobot::SceneObjectPtr o, VirtualRobot::SceneObject::Physics::SimulationType simType) override
armarx::MujocoPhysicsWorld::setupFloorEngine
virtual void setupFloorEngine(bool enable, const std::string &floorTexture) override
filename
std::string filename
Definition: VisualizationRobot.cpp:86
mujoco::SimObject
Definition: SimObject.h:11
armarx::channels::KinematicUnitObserver::jointVelocities
const KinematicUnitDatafieldCreator jointVelocities("jointVelocities")
armarx::MujocoPhysicsWorld::setRobotLinearVelocity
virtual void setRobotLinearVelocity(const std::string &robotName, const std::string &robotNodeName, const Eigen::Vector3f &vel) override
armarx::MujocoPhysicsWorld::applyTorqueRobotNode
virtual void applyTorqueRobotNode(const std::string &robotName, const std::string &robotNodeName, const Eigen::Vector3f &torque) override
armarx::MujocoPhysicsWorld::~MujocoPhysicsWorld
virtual ~MujocoPhysicsWorld() override=default
armarx::MujocoPhysicsWorld::getRobotJointTorques
virtual std::map< std::string, float > getRobotJointTorques(const std::string &robotName) override
armarx::MujocoPhysicsWorld::getRobots
virtual std::map< std::string, VirtualRobot::RobotPtr > getRobots() override
armarx::MujocoPhysicsWorld::getObstacleNames
virtual std::vector< std::string > getObstacleNames() override
armarx::MujocoPhysicsWorld::initialize
void initialize(int stepTimeMs, bool floorEnabled, const std::string &floorTexture)
Initialize *this.
armarx::MujocoPhysicsWorld::actuateRobotJointsTorque
virtual void actuateRobotJointsTorque(const std::string &robotName, const std::map< std::string, float > &torques) override
armarx::MujocoPhysicsWorld::getObjects
virtual std::vector< VirtualRobot::SceneObjectPtr > getObjects() override
armarx::MujocoPhysicsWorld::getRobotNames
virtual std::vector< std::string > getRobotNames() override
armarx::MujocoPhysicsWorld::getRobotJointVelocities
virtual std::map< std::string, float > getRobotJointVelocities(const std::string &robotName) override
LengthScaling.h
armarx::control::njoint_controller::platform::platform_follower_controller::NameValueMap
std::map< std::string, float > NameValueMap
Definition: PlatformFollowerController.h:88
armarx::channels::KinematicUnitObserver::jointAngles
const KinematicUnitDatafieldCreator jointAngles("jointAngles")
armarx::SimMJCF
Definition: SimMjcf.h:18
armarx::MujocoPhysicsWorld::getContactCount
virtual int getContactCount() override
armarx::MujocoPhysicsWorld::getRobotStatus
virtual bool getRobotStatus(const std::string &robotName, NameValueMap &jointAngles, NameValueMap &jointVelocities, NameValueMap &jointTorques, Eigen::Vector3f &linearVelocity, Eigen::Vector3f &angularVelocity) override
armarx::MujocoPhysicsWorld::getRobotJointAngle
virtual float getRobotJointAngle(const std::string &robotName, const std::string &nodeName) override
armarx::MujocoPhysicsWorld::setObjectPose
virtual void setObjectPose(const std::string &objectName, const Eigen::Matrix4f &globalPose) override
armarx::MujocoPhysicsWorld::actuateRobotJointsVel
virtual void actuateRobotJointsVel(const std::string &robotName, const std::map< std::string, float > &velocities) override
scene3D::SceneObjectPtr
boost::intrusive_ptr< SceneObject > SceneObjectPtr
Definition: PointerDefinitions.h:40
armarx::MujocoPhysicsWorld::setObjectSimType
virtual void setObjectSimType(const std::string &objectName, VirtualRobot::SceneObject::Physics::SimulationType simType) override
armarx::MujocoPhysicsWorld::setRobotAngularVelocityRobotRootFrame
virtual void setRobotAngularVelocityRobotRootFrame(const std::string &robotName, const std::string &robotNodeName, const Eigen::Vector3f &vel) override
SimulatedWorld.h
armarx::MujocoPhysicsWorld::getRobotPose
virtual Eigen::Matrix4f getRobotPose(const std::string &robotName) override
armarx::MujocoPhysicsWorld::setRobotMaxTorque
virtual void setRobotMaxTorque(const std::string &robotName, const std::string &nodeName, float maxTorque) override
armarx::MujocoPhysicsWorld::getRobotJointVelocity
virtual float getRobotJointVelocity(const std::string &robotName, const std::string &nodeName) override
armarx::channels::KinematicUnitObserver::jointTorques
const KinematicUnitDatafieldCreator jointTorques("jointTorques")
armarx::MujocoPhysicsWorld::getFixedTimeStepMS
virtual int getFixedTimeStepMS() override
armarx::MujocoPhysicsWorld::updateForceTorqueSensor
virtual bool updateForceTorqueSensor(ForceTorqueInfo &ftInfo) override
armarx::MujocoPhysicsWorld::synchronizeObjects
virtual bool synchronizeObjects() override
armarx::MujocoPhysicsWorld::getDistance
virtual DistanceInfo getDistance(const std::string &robotName, const std::string &robotNodeName, const std::string &worldObjectName) override
armarx::LengthScaling
Definition: LengthScaling.h:6
armarx::MujocoPhysicsWorld::hasRobotNode
virtual bool hasRobotNode(const std::string &robotName, const std::string &robotNodeName) override
armarx::MujocoPhysicsWorld::MujocoPhysicsWorld
MujocoPhysicsWorld()
armarx::MujocoPhysicsWorld::getRobotMass
virtual float getRobotMass(const std::string &robotName) override
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
armarx::MujocoPhysicsWorld::copyContacts
virtual std::vector< SimDynamics::DynamicsEngine::DynamicsContactInfo > copyContacts() override
armarx::MujocoPhysicsWorld::stepPhysicsRealTime
virtual void stepPhysicsRealTime() override
Perform one simulation step.
VirtualRobot::RobotPtr
std::shared_ptr< class Robot > RobotPtr
Definition: Bus.h:19
armarx::MujocoPhysicsWorld::getObjectPose
virtual Eigen::Matrix4f getObjectPose(const std::string &objectName) override
armarx::MujocoPhysicsWorld::setRobotLinearVelocityRobotRootFrame
virtual void setRobotLinearVelocityRobotRootFrame(const std::string &robotName, const std::string &robotNodeName, const Eigen::Vector3f &vel) override