SimulatedObjectAsRobot.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * ArmarX is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * ArmarX is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * @package armarx::simulation::scene_generation
17  * @author Patrick Hegemann ( patrick dot hegemann at kit dot edu )
18  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
19  * GNU General Public License
20  */
21 
22 #include "SimulatedObjectAsRobot.h"
23 
25 
27 
28 #include <VirtualRobot/XML/RobotIO.h>
29 
30 #include <Eigen/src/Core/Matrix.h>
31 
32 #include <memory>
33 
35 {
36  SimulatedObjectAsRobot::SimulatedObjectAsRobot(const std::string& instanceName, const ObjectSource& objectSource) :
37  SimulatedObject(instanceName, objectSource),
38  localCopy_(VirtualRobot::RobotIO::loadRobot(objectSource.path.toSystemPath()))
39  {
40  localCopy_->setName(instanceName);
41  }
42 
43  void SimulatedObjectAsRobot::addToSimulator(armarx::SimulatorInterfacePrx& simulator)
44  {
45  const std::string& newName = simulator->addRobot(getObjectSource().path.toSystemPath());
46  setInstanceName(newName);
47  }
48 
49  void SimulatedObjectAsRobot::updatePoseFromSimulator(armarx::SimulatorInterfacePrx& simulator)
50  {
51  const PoseBasePtr& poseBase = simulator->getRobotPose(getInstanceName());
52  Pose p(poseBase->position, poseBase->orientation);
53  localCopy_->setGlobalPose(p.toEigen());
54  }
55 
56  void SimulatedObjectAsRobot::updatePoseToSimulator(armarx::SimulatorInterfacePrx& simulator)
57  {
58  PosePtr pose(new Pose(localCopy_->getGlobalPose()));
59  simulator->setRobotPose(getInstanceName(), pose);
60  }
61 
62  bool SimulatedObjectAsRobot::checkCollision(const VirtualRobot::CollisionCheckerPtr& col,
63  const VirtualRobot::SceneObjectSetPtr& objectSet)
64  {
65  bool collision = false;
66  for (const auto& colModel : localCopy_->getCollisionModels())
67  {
68  collision |= col->checkCollision(colModel, objectSet);
69  }
70  return collision;
71  }
72 
73  std::unique_ptr<Pose> SimulatedObjectAsRobot::getLocalPose()
74  {
75  return std::make_unique<Pose>(localCopy_->getGlobalPose());
76  }
77 
79  {
80  localCopy_->setGlobalPose(pose->toEigen());
81  }
82 } // namespace armarx::simulation::scene_generation
armarx::simulation::scene_generation::ObjectSource
Definition: SimulatedObject.h:44
armarx::simulation::scene_generation::SimulatedObject::getObjectSource
const ObjectSource & getObjectSource()
Definition: SimulatedObject.h:88
armarx::navigation::core::Pose
Eigen::Isometry3f Pose
Definition: basic_types.h:31
VirtualRobot
Definition: FramedPose.h:43
Pose.h
armarx::simulation::scene_generation
Definition: ClutteredSceneGenerator.cpp:48
armarx::simulation::scene_generation::SimulatedObject::setInstanceName
void setInstanceName(const std::string &newName)
Definition: SimulatedObject.h:83
armarx::simulation::scene_generation::SimulatedObjectAsRobot::setLocalPose
void setLocalPose(const armarx::PosePtr &pose) override
Definition: SimulatedObjectAsRobot.cpp:78
SimulatedObjectAsRobot.h
armarx::simulation::scene_generation::SimulatedObjectAsRobot::getLocalPose
std::unique_ptr< Pose > getLocalPose() override
Definition: SimulatedObjectAsRobot.cpp:73
IceInternal::Handle< Pose >
armarx::simulation::scene_generation::SimulatedObject::getInstanceName
const std::string & getInstanceName()
Definition: SimulatedObject.h:78
armarx::Pose::toEigen
virtual Eigen::Matrix4f toEigen() const
Definition: Pose.cpp:334
armarx::simulation::scene_generation::SimulatedObjectAsRobot::updatePoseToSimulator
void updatePoseToSimulator(armarx::SimulatorInterfacePrx &simulator) override
Definition: SimulatedObjectAsRobot.cpp:56
SimulatedObject.h
armarx::simulation::scene_generation::SimulatedObjectAsRobot::updatePoseFromSimulator
void updatePoseFromSimulator(armarx::SimulatorInterfacePrx &simulator) override
Definition: SimulatedObjectAsRobot.cpp:49
armarx::Pose
The Pose class.
Definition: Pose.h:242
armarx::simulation::scene_generation::SimulatedObjectAsRobot::addToSimulator
void addToSimulator(armarx::SimulatorInterfacePrx &simulator) override
Definition: SimulatedObjectAsRobot.cpp:43
armarx::simulation::scene_generation::SimulatedObjectAsRobot::checkCollision
bool checkCollision(const VirtualRobot::CollisionCheckerPtr &col, const VirtualRobot::SceneObjectSetPtr &objectSet) override
Definition: SimulatedObjectAsRobot.cpp:62
armarx::simulation::scene_generation::SimulatedObject
Definition: SimulatedObject.h:57
armarx::simulation::scene_generation::SimulatedObjectAsRobot::SimulatedObjectAsRobot
SimulatedObjectAsRobot(const std::string &instanceName, const ObjectSource &source)
Definition: SimulatedObjectAsRobot.cpp:36