Go to the documentation of this file.
28 #include <Eigen/Geometry>
31 #include <ArmarXSimulation/interface/simulator/SimulatorInterface.h>
57 bool floorPlane =
false,
58 std::string floorTexture = std::string());
62 const std::map<std::string, float>& angles,
63 const std::map<std::string, float>& velocities)
override;
65 const std::map<std::string, float>& angles)
override;
67 const std::map<std::string, float>& velocities)
override;
69 const std::map<std::string, float>& torques)
override;
73 const std::string& robotNodeName,
74 const Eigen::Vector3f& force)
override;
76 const std::string& robotNodeName,
77 const Eigen::Vector3f& torque)
override;
79 void applyForceObject(
const std::string& objectName,
const Eigen::Vector3f& force)
override;
81 const Eigen::Vector3f& torque)
override;
83 bool hasObject(
const std::string& instanceName)
override;
87 bool hasRobot(
const std::string& robotName)
override;
88 bool hasRobotNode(
const std::string& robotName,
const std::string& robotNodeName)
override;
89 float getRobotMass(
const std::string& robotName)
override;
93 const std::string& nodeName)
override;
96 const std::string& nodeName)
override;
101 const std::string& nodeName)
override;
103 const std::string& nodeName)
override;
106 float getRobotMaxTorque(
const std::string& robotName,
const std::string& nodeName)
override;
108 const std::string& nodeName,
109 float maxTorque)
override;
112 const std::string& robotNodeName)
override;
115 const std::string& nodeName)
override;
117 const std::string& nodeName)
override;
121 const std::string& robotNodeName,
122 const Eigen::Vector3f& vel)
override;
124 const std::string& robotNodeName,
125 const Eigen::Vector3f& vel)
override;
127 const std::string& robotNodeName,
128 const Eigen::Vector3f& vel)
override;
130 const std::string& robotNodeName,
131 const Eigen::Vector3f& vel)
override;
136 std::map<std::string, VirtualRobot::RobotPtr>
getRobots()
override;
138 std::vector<VirtualRobot::SceneObjectPtr>
getObjects()
override;
140 std::vector<SimDynamics::DynamicsEngine::DynamicsContactInfo>
copyContacts()
override;
144 const std::string& robotName,
145 const std::string& frameName)
override;
166 void enableLogging(
const std::string& robotName,
const std::string& logFile)
override;
169 const std::string& robotNodeName1,
170 const std::string& robotNodeName2)
override;
171 armarx::DistanceInfo
getDistance(
const std::string& robotName,
172 const std::string& robotNodeName,
173 const std::string& worldObjectName)
override;
180 const std::string& robotNodeName,
181 VirtualRobot::SceneObject::Physics::SimulationType simType)
override;
183 VirtualRobot::SceneObject::Physics::SimulationType simType)
override;
187 VirtualRobot::SceneObject::Physics::SimulationType simType)
override;
195 bool selfCollisions)
override;
199 const std::string& robotNodeName,
200 const std::string& objectName,
205 const std::string& robotNodeName,
206 const std::string& objectName)
override;
211 void setupFloorEngine(
bool enable,
const std::string& floorTexture)
override;
219 Eigen::Vector3f& linearVelocity,
220 Eigen::Vector3f& angularVelocity)
override;
226 std::map<std::string, armarx::PoseBasePtr>& objMap)
override;
255 std::map<VirtualRobot::RobotNodePtr, std::pair<IceUtil::Time, float>>
257 std::map<VirtualRobot::RobotPtr, std::pair<IceUtil::Time, Eigen::Vector3f>>
259 std::map<VirtualRobot::RobotPtr, std::pair<IceUtil::Time, Eigen::Matrix4f>>
267 virtual void createFloorPlane(
const Eigen::Vector3f& pos,
const Eigen::Vector3f& up);
274 std::map<std::string, armarx::PoseBasePtr>& objMap)
override;
std::map< std::string, float > getRobotJointTorques(const std::string &) override
std::map< std::string, float > actualVelocities
~KinematicsWorld() override
float getRobotJointLimitLo(const std::string &robotName, const std::string &nodeName) override
virtual void initialize(int stepSizeMS, float maxRealTimeSimSpeed=1, bool floorPlane=false, std::string floorTexture=std::string())
std::map< std::string, VirtualRobot::RobotPtr > getRobots() override
virtual void createFloorPlane(const Eigen::Vector3f &pos, const Eigen::Vector3f &up)
void setRobotAngularVelocity(const std::string &robotName, const std::string &robotNodeName, const Eigen::Vector3f &vel) override
std::map< VirtualRobot::RobotNodePtr, std::pair< IceUtil::Time, float > > jointAngleDerivationFilters
std::vector< std::string > getObstacleNames() override
float getDeltaTimeMilli()
virtual VirtualRobot::SceneObjectPtr getObject(const std::string &objectName)
bool hasRobot(const std::string &robotName) override
VirtualRobot::SceneObjectPtr getFloor() override
void applyForceObject(const std::string &objectName, const Eigen::Vector3f &force) override
void setObjectPose(const std::string &objectName, const Eigen::Matrix4f &globalPose) override
std::shared_ptr< KinematicsWorld > KinematicsWorldPtr
std::vector< VirtualRobot::SceneObjectPtr > kinematicObjects
FramedPosePtr toFramedPose(const Eigen::Matrix4f &globalPose, const std::string &robotName, const std::string &frameName) override
toFramedPose Constructs a framed pose
void setObjectSimType(const std::string &objectName, VirtualRobot::SceneObject::Physics::SimulationType simType) override
void enableLogging(const std::string &robotName, const std::string &logFile) override
std::vector< std::string > getRobotNames() override
MatrixXX< 4, 4, float > Matrix4f
void setRobotLinearVelocityRobotRootFrame(const std::string &robotName, const std::string &robotNodeName, const Eigen::Vector3f &vel) override
std::map< std::string, float > getRobotJointVelocities(const std::string &robotName) override
float getRobotJointVelocity(const std::string &robotName, const std::string &nodeName) override
float maxRealTimeSimSpeed
void stepStaticRobots(double deltaInSeconds)
bool objectReleasedEngine(const std::string &robotName, const std::string &robotNodeName, const std::string &objectName) override
remove a joint
void applyTorqueRobotNode(const std::string &robotName, const std::string &robotNodeName, const Eigen::Vector3f &torque) override
bool hasObject(const std::string &instanceName) override
The SimulatedWorld class encapsulates the whole physics simulation and the corresponding data.
void stepPhysicsFixedTimeStep() override
Perform one simulation step.
Eigen::Vector3f velRotActual
float getRobotMaxTorque(const std::string &robotName, const std::string &nodeName) override
std::map< VirtualRobot::RobotPtr, std::pair< IceUtil::Time, Eigen::Matrix4f > > angularVelocityFilters
void actuateRobotJointsVel(const std::string &robotName, const std::map< std::string, float > &velocities) override
void applyForceRobotNode(const std::string &robotName, const std::string &robotNodeName, const Eigen::Vector3f &force) override
void actuateRobotJoints(const std::string &robotName, const std::map< std::string, float > &angles, const std::map< std::string, float > &velocities) override
ignoring velocity target
std::vector< SimDynamics::DynamicsEngine::DynamicsContactInfo > copyContacts() override
armarx::DistanceInfo getDistance(const std::string &robotName, const std::string &robotNodeName, const std::string &worldObjectName) override
bool objectGraspedEngine(const std::string &robotName, const std::string &robotNodeName, const std::string &objectName, Eigen::Matrix4f &storeLocalTransform) override
create a joint
bool removeObstacleEngine(const std::string &name) override
bool updateForceTorqueSensor(ForceTorqueInfo &ftInfo) override
bool synchronizeSimulationDataEngine() override
Eigen::Vector3f velTransActual
Eigen::Matrix4f getRobotNodePose(const std::string &robotName, const std::string &robotNodeName) override
Eigen::Matrix4f getObjectPose(const std::string &objectName) override
std::map< std::string, float > getRobotJointAngles(const std::string &robotName) override
armarx::DistanceInfo getRobotNodeDistance(const std::string &robotName, const std::string &robotNodeName1, const std::string &robotNodeName2) override
bool hasRobotNode(const std::string &robotName, const std::string &robotNodeName) override
bool addRobotEngine(VirtualRobot::RobotPtr robot, double pid_p, double pid_i, double pid_d, const std::string &filename, bool staticRobot, bool selfCollisions) override
Eigen::Vector3f velTransTarget
void calculateActualVelocities()
std::map< std::string, KinematicRobotInfo > kinematicRobots
const KinematicUnitDatafieldCreator jointVelocities("jointVelocities")
std::vector< VirtualRobot::SceneObjectPtr > getObjects() override
VirtualRobot::SceneObjectPtr floor
bool synchronizeRobotNodePoses(const std::string &robotName, std::map< std::string, armarx::PoseBasePtr > &objMap) override
ForceTorqueDataSeq getRobotForceTorqueSensors(const std::string &) override
VirtualRobot::ObstaclePtr groundObject
armarx::core::time::DateTime Time
Eigen::Vector3f velRotTarget
void stepStaticObjects(double deltaInSeconds)
const KinematicUnitDatafieldCreator jointAngles("jointAngles")
Eigen::Vector3f getRobotAngularVelocity(const std::string &robotName, const std::string &nodeName) override
void setupFloorEngine(bool enable, const std::string &floorTexture) override
void actuateRobotJointsTorque(const std::string &robotName, const std::map< std::string, float > &torques) override
VirtualRobot::RobotPtr getRobot(const std::string &robotName) override
The KinematicsWorld class encapsulates the kinemtics simulation and the corresponding data....
Eigen::Matrix4f getRobotPose(const std::string &robotName) override
float getRobotJointAngle(const std::string &robotName, const std::string &nodeName) override
void setRobotMaxTorque(const std::string &robotName, const std::string &nodeName, float maxTorque) override
void setRobotLinearVelocity(const std::string &robotName, const std::string &robotNodeName, const Eigen::Vector3f &vel) override
std::map< std::string, float > targetVelocities
boost::intrusive_ptr< SceneObject > SceneObjectPtr
int getFixedTimeStepMS() override
void setRobotAngularVelocityRobotRootFrame(const std::string &robotName, const std::string &robotNodeName, const Eigen::Vector3f &vel) override
void stepPhysicsRealTime() override
Perform one simulation step.
void setRobotNodeSimType(const std::string &robotName, const std::string &robotNodeName, VirtualRobot::SceneObject::Physics::SimulationType simType) override
float getRobotJointLimitHi(const std::string &robotName, const std::string &nodeName) override
std::map< VirtualRobot::RobotPtr, std::pair< IceUtil::Time, Eigen::Vector3f > > linearVelocityFilters
void applyTorqueObject(const std::string &objectName, const Eigen::Vector3f &torque) override
VirtualRobot::RobotPtr robot
const KinematicUnitDatafieldCreator jointTorques("jointTorques")
bool getRobotStatus(const std::string &robotName, NameValueMap &jointAngles, NameValueMap &jointVelocities, NameValueMap &jointTorques, Eigen::Vector3f &linearVelocity, Eigen::Vector3f &angularVelocity) override
bool synchronizeSceneObjectPoses(VirtualRobot::SceneObjectPtr currentObjEngine, std::map< std::string, armarx::PoseBasePtr > &objMap) override
Eigen::Vector3f getRobotLinearVelocity(const std::string &robotName, const std::string &nodeName) override
float getRobotMass(const std::string &robotName) override
This file offers overloads of toIce() and fromIce() functions for STL container types.
void setRobotPose(const std::string &robotName, const Eigen::Matrix4f &globalPose) override
bool synchronizeObjects() override
std::shared_ptr< class Robot > RobotPtr
bool removeRobotEngine(const std::string &robotName) override
void actuateRobotJointsPos(const std::string &robotName, const std::map< std::string, float > &angles) override
bool addObstacleEngine(VirtualRobot::SceneObjectPtr o, VirtualRobot::SceneObject::Physics::SimulationType simType) override