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 <MujocoX/libraries/MJCF/Document.h>
32 #include <MujocoX/libraries/Simulation/MujocoSim.h>
33 #include <MujocoX/libraries/Simulation/SimCallbackListener.h>
34 #include <MujocoX/libraries/Simulation/SimEntity.h>
35 
36 #include "SimulatedWorld.h"
37 
38 #include "mujoco/SimMjcf.h"
39 #include "mujoco/SimObject.h"
40 #include "mujoco/SimRobot.h"
41 #include "mujoco/LengthScaling.h"
42 
43 
44 namespace armarx
45 {
46  /**
47  * @brief The MujocoPhysicsWorld class encapsulates the whole physics
48  * simulation and the corresponding data.
49  */
50  class MujocoPhysicsWorld : public SimulatedWorld, mujoco::SimCallbackListener
51  {
52  public:
53 
55  virtual ~MujocoPhysicsWorld() override = default;
56 
57 
58  public:
59 
60  /**
61  * @brief Initialize `*this`. To be called after construction.
62  *
63  * Sets up simulation model document and requests a reload.
64  *
65  * @param stepTimeMs The step time in ms.
66  * @param floorEnabled Whether to add a floor.
67  * @param floorTexture The floor texture file.
68  */
69  void initialize(int stepTimeMs, bool floorEnabled, const std::string& floorTexture);
70 
71 
72  // SimulatedWorld interface
73 
74  virtual void stepPhysicsRealTime() override;
75  virtual void stepPhysicsFixedTimeStep() override;
76  virtual int getFixedTimeStepMS() override;
77 
78  virtual std::vector<std::string> getObstacleNames() override;
79  virtual std::vector<std::string> getRobotNames() override;
80 
81 
82 
83  virtual void actuateRobotJoints(const std::string& robotName,
84  const std::map<std::string, float>& angles,
85  const std::map<std::string, float>& velocities) override;
86  virtual void actuateRobotJointsPos(const std::string& robotName,
87  const std::map<std::string, float>& angles) override;
88  virtual void actuateRobotJointsVel(const std::string& robotName,
89  const std::map<std::string, float>& velocities) override;
90  virtual void actuateRobotJointsTorque(const std::string& robotName,
91  const std::map<std::string, float>& torques) override;
92 
93  virtual void applyForceRobotNode(const std::string& robotName, const std::string& robotNodeName,
94  const Eigen::Vector3f& force) override;
95  virtual void applyTorqueRobotNode(const std::string& robotName, const std::string& robotNodeName,
96  const Eigen::Vector3f& torque) override;
97 
98  virtual void applyForceObject(const std::string& objectName, const Eigen::Vector3f& force) override;
99  virtual void applyTorqueObject(const std::string& objectName, const Eigen::Vector3f& torque) override;
100 
101  virtual std::map<std::string, float> getRobotJointAngles(const std::string& robotName) override;
102  virtual float getRobotJointAngle(const std::string& robotName, const std::string& nodeName) override;
103 
104  virtual std::map<std::string, float> getRobotJointVelocities(const std::string& robotName) override;
105  virtual float getRobotJointVelocity(const std::string& robotName, const std::string& nodeName) override;
106 
107  virtual std::map<std::string, float> getRobotJointTorques(const std::string& robotName) override;
108  virtual ForceTorqueDataSeq getRobotForceTorqueSensors(const std::string& robotName) override;
109 
110 
111  virtual Eigen::Matrix4f getObjectPose(const std::string& objectName) override;
112  virtual void setObjectPose(const std::string& objectName, const Eigen::Matrix4f& globalPose) override;
113 
114  virtual Eigen::Matrix4f getRobotPose(const std::string& robotName) override;
115  virtual void setRobotPose(const std::string& robotName, const Eigen::Matrix4f& globalPose) override;
116 
117  virtual Eigen::Matrix4f getRobotNodePose(const std::string& robotName, const std::string& robotNodeName) override;
118  virtual Eigen::Vector3f getRobotLinearVelocity(const std::string& robotName, const std::string& nodeName) override;
119  virtual Eigen::Vector3f getRobotAngularVelocity(const std::string& robotName, const std::string& nodeName) override;
120 
121  virtual void setRobotLinearVelocity(const std::string& robotName, const std::string& robotNodeName,
122  const Eigen::Vector3f& vel) override;
123  virtual void setRobotAngularVelocity(const std::string& robotName, const std::string& robotNodeName,
124  const Eigen::Vector3f& vel) override;
125 
126  virtual void setRobotLinearVelocityRobotRootFrame(const std::string& robotName, const std::string& robotNodeName,
127  const Eigen::Vector3f& vel) override;
128  virtual void setRobotAngularVelocityRobotRootFrame(const std::string& robotName, const std::string& robotNodeName,
129  const Eigen::Vector3f& vel) override;
130 
131  virtual bool hasObject(const std::string& instanceName) override;
132 
133  virtual bool hasRobot(const std::string& robotName) override;
134  virtual bool hasRobotNode(const std::string& robotName, const std::string& robotNodeName) override;
135 
136  virtual std::vector<VirtualRobot::SceneObjectPtr> getObjects() override;
137 
138  virtual VirtualRobot::RobotPtr getRobot(const std::string& robotName) override;
139  virtual std::map<std::string, VirtualRobot::RobotPtr> getRobots() override;
140 
141  virtual float getRobotJointLimitLo(const std::string& robotName, const std::string& nodeName) override;
142  virtual float getRobotJointLimitHi(const std::string& robotName, const std::string& nodeName) override;
143 
144  virtual float getRobotMaxTorque(const std::string& robotName, const std::string& nodeName) override;
145  virtual void setRobotMaxTorque(const std::string& robotName, const std::string& nodeName, float maxTorque) override;
146 
147  virtual float getRobotMass(const std::string& robotName) override;
148 
149  virtual DistanceInfo getRobotNodeDistance(const std::string& robotName, const std::string& robotNodeName1,
150  const std::string& robotNodeName2) override;
151  virtual DistanceInfo getDistance(const std::string& robotName, const std::string& robotNodeName,
152  const std::string& worldObjectName) override;
153 
154  virtual std::vector<SimDynamics::DynamicsEngine::DynamicsContactInfo> copyContacts() override;
155 
156  virtual FramedPosePtr toFramedPose(const Eigen::Matrix4f& globalPose, const std::string& robotName,
157  const std::string& frameName) override;
158 
159  virtual void setObjectSimType(const std::string& objectName,
160  VirtualRobot::SceneObject::Physics::SimulationType simType) override;
161 
162  virtual void setRobotNodeSimType(const std::string& robotName, const std::string& robotNodeName,
163  VirtualRobot::SceneObject::Physics::SimulationType simType) override;
164 
165 
166 
167 
168 
169 
170  protected:
171 
172  // SimulatedWorld interface
173 
175  VirtualRobot::SceneObject::Physics::SimulationType simType) override;
176  virtual bool removeObstacleEngine(const std::string& name) override;
177 
178  virtual bool addRobotEngine(VirtualRobot::RobotPtr robot,
179  double pid_p, double pid_i, double pid_d,
180  const std::string& filename, bool staticRobot, bool selfCollisions) override;
181  virtual bool removeRobotEngine(const std::string& robotName) override;
182 
183  virtual bool objectGraspedEngine(const std::string& robotName, const std::string& robotNodeName,
184  const std::string& objectName, Eigen::Matrix4f& storeLocalTransform) override;
185  virtual bool objectReleasedEngine(const std::string& robotName, const std::string& robotNodeName,
186  const std::string& objectName) override;
187 
188  // floor
189  virtual VirtualRobot::SceneObjectPtr getFloor() override;
190  virtual void setupFloorEngine(bool enable, const std::string& floorTexture) override;
191 
192  /// According to other SimulatedWorlds, this method's only job is to update contacts.
193  virtual bool synchronizeSimulationDataEngine() override;
194  virtual int getContactCount() override;
195 
196  virtual bool synchronizeObjects() override;
197  virtual bool synchronizeSceneObjectPoses(VirtualRobot::SceneObjectPtr currentObjEngine,
198  std::map<std::string, PoseBasePtr>& objMap) override;
199 
200  virtual bool synchronizeRobotNodePoses(const std::string& robotName,
201  std::map<std::string, PoseBasePtr>& objMap) override;
202 
203  virtual bool getRobotStatus(const std::string& robotName, NameValueMap& jointAngles,
205  Eigen::Vector3f& linearVelocity, Eigen::Vector3f& angularVelocity) override;
206 
207  virtual bool updateForceTorqueSensor(ForceTorqueInfo& ftInfo) override;
208 
209 
210 
211  protected:
212 
213  // mujoco::SimCallbackListener
214  /// Sets time step and fetches entity IDs.
215  virtual void onLoadModel(mujoco::Model& model) override;
216  virtual void onMakeData(mujoco::Model& model, mujoco::Data& data) override;
217 
218 
219  private:
220 
221  /// Name of base file included by model.
222  static const std::filesystem::path BASE_MJCF_FILENAME;
223  /// Temporary directory to store models.
224  static const std::filesystem::path TEMP_DIR;
225  /// File where model is stored for loading.
226  static const std::filesystem::path TEMP_MODEL_FILE;
227  /// Directory where object meshes are placed (relative to TEMP_DIR).
228  static const std::filesystem::path TEMP_MESH_DIR_REL;
229  /// Directory where object meshes are placed.
230  static const std::filesystem::path TEMP_MESH_DIR;
231 
232  /// Name of floor entities and class.
233  static const std::string FLOOR_NAME;
234  /// Name of object defaults class.
235  static const std::string OBJECT_CLASS_NAME;
236 
237 
238  private:
239 
240  VirtualRobot::ObstaclePtr makeFloorObject(
241  mujoco::Model& model, const mujoco::SimGeom& floorGeom) const;
242 
243  /// Make a MJCF model for the given robot and return its absolute path.
244  VirtualRobot::mujoco::RobotMjcf makeRobotMjcfModel(const VirtualRobot::RobotPtr& robot) const;
245 
246 
247  /// Save the MJCF document and request a reload.
248  void reloadModel(bool request = true);
249 
250 
251  // MJCF
252 
253  /// Length scaling manager.
254  LengthScaling lengthScaling;
255 
256  /// The model document.
257  mjcf::Document mjcfDocument;
258 
259  /// The model document helper.
260  SimMJCF simMjcf { mjcfDocument, lengthScaling, "MujocoPhysicsWorld" };
261 
262 
263  /// The simulation.
264  mujoco::MujocoSim sim;
265 
266  /// The fixed time step.
267  std::chrono::milliseconds fixedTimeStep;
268 
269 
270  // Entities & Objects
271 
272  /// The floor object.
273  mujoco::SimObject floor { FLOOR_NAME };
274  /// The floor texture file.
275  std::filesystem::path floorTextureFile;
276 
277 
278  /// The simulation obstacles.
279  std::map<std::string, mujoco::SimObject> obstacles;
280 
281  /// The simulation objects.
282  std::map<std::string, mujoco::SimObject> objects;
283 
284  /// The robots (key is name).
285  std::map<std::string, mujoco::SimRobot> robots;
286 
287 
288  // Simulation data
289 
290  /// Contacts.
291  std::vector<mjContact> contacts;
292 
293 
294  };
295 
296  using MujocoPhysicsWorldPtr = std::shared_ptr<MujocoPhysicsWorld>;
297 }
298 
299 
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
armarx::MujocoPhysicsWorld
The MujocoPhysicsWorld class encapsulates the whole physics simulation and the corresponding data.
Definition: MujocoPhysicsWorld.h:50
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:48
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:128
armarx::MujocoPhysicsWorld::onLoadModel
virtual void onLoadModel(mujoco::Model &model) override
Sets time step and fetches entity IDs.
armarx::navigation::platform_controller::platform_global_trajectory::NameValueMap
std::map< std::string, float > NameValueMap
Definition: PlatformGlobalTrajectoryController.h:93
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:296
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:84
mujoco::SimObject
Definition: SimObject.h:12
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::channels::KinematicUnitObserver::jointAngles
const KinematicUnitDatafieldCreator jointAngles("jointAngles")
armarx::SimMJCF
Definition: SimMjcf.h:19
armarx::MujocoPhysicsWorld::getContactCount
virtual int getContactCount() override
GfxTL::Matrix4f
MatrixXX< 4, 4, float > Matrix4f
Definition: MatrixXX.h:601
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:28
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:18
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