From 1dcc0d4ebf11127d35d63dbbdfa6f0486ec651f8 Mon Sep 17 00:00:00 2001
From: Mirko Waechter <mirko.waechter@kit.edu>
Date: Wed, 27 Aug 2014 12:28:56 +0200
Subject: [PATCH] Made some forward declarations for VirtualRobot in ArmarPose

---
 source/RobotAPI/core/RobotStatechartContext.h |  4 +-
 .../RobotAPI/motioncontrol/MotionControl.cpp  |  2 +
 source/RobotAPI/robotstate/CMakeLists.txt     |  2 +-
 .../RobotAPI/robotstate/remote/ArmarPose.cpp  | 54 +++++++++++++++-
 source/RobotAPI/robotstate/remote/ArmarPose.h | 61 +++++--------------
 .../RobotAPI/robotstate/remote/LinkedPose.cpp |  4 ++
 .../RobotAPI/robotstate/remote/LinkedPose.h   |  3 +-
 .../GraspingWithTorques.cpp                   |  1 +
 .../statecharts/OpenHand/OpenHand.cpp         |  1 +
 .../statecharts/PlaceObject/PlaceObject.cpp   |  2 +
 source/RobotAPI/units/HeadIKUnit.cpp          |  1 +
 11 files changed, 84 insertions(+), 51 deletions(-)

diff --git a/source/RobotAPI/core/RobotStatechartContext.h b/source/RobotAPI/core/RobotStatechartContext.h
index dfb89b417..40149fc06 100644
--- a/source/RobotAPI/core/RobotStatechartContext.h
+++ b/source/RobotAPI/core/RobotStatechartContext.h
@@ -28,7 +28,7 @@
 #include <Core/core/Component.h>
 #include <Core/core/system/ImportExportComponent.h>
 #include <Core/statechart/StatechartContext.h>
-#include <RobotAPI/robotstate/remote/RemoteRobot.h>
+#include <RobotAPI/robotstate/remote/ArmarPose.h>
 #include <RobotAPI/interface/units/KinematicUnitInterface.h>
 #include <RobotAPI/interface/units/HandUnitInterface.h>
 
@@ -36,7 +36,7 @@
 #include <RobotAPI/interface/units/HeadIKUnit.h>
 
 #include <RobotAPI/units/KinematicUnitObserver.h>
-//#include <VirtualRobot/VirtualRobot.h>
+
 #include <IceUtil/Time.h>
 
 namespace armarx
diff --git a/source/RobotAPI/motioncontrol/MotionControl.cpp b/source/RobotAPI/motioncontrol/MotionControl.cpp
index 1b2631c9f..01e4baf7d 100644
--- a/source/RobotAPI/motioncontrol/MotionControl.cpp
+++ b/source/RobotAPI/motioncontrol/MotionControl.cpp
@@ -13,6 +13,8 @@
 #include <VirtualRobot/Nodes/RobotNode.h>
 #include <VirtualRobot/MathTools.h>
 #include <VirtualRobot/XML/RobotIO.h>
+#include <VirtualRobot/LinkedCoordinate.h>
+
 
 #include <Eigen/src/Geometry/Quaternion.h>
 
diff --git a/source/RobotAPI/robotstate/CMakeLists.txt b/source/RobotAPI/robotstate/CMakeLists.txt
index fa5318d9c..1e588b1dc 100644
--- a/source/RobotAPI/robotstate/CMakeLists.txt
+++ b/source/RobotAPI/robotstate/CMakeLists.txt
@@ -14,7 +14,7 @@ set(LIB_VERSION    0.1.0)
 set(LIB_SOVERSION  0)
 
 set(LIBS ArmarXInterfaces RobotAPIRemoteRobot 
-    ArmarXCore ${Simox_LIBRARIES})
+    ArmarXCore)
 
 set(LIB_FILES
         RobotStateComponent.cpp
diff --git a/source/RobotAPI/robotstate/remote/ArmarPose.cpp b/source/RobotAPI/robotstate/remote/ArmarPose.cpp
index b348237bd..5aaa2f508 100644
--- a/source/RobotAPI/robotstate/remote/ArmarPose.cpp
+++ b/source/RobotAPI/robotstate/remote/ArmarPose.cpp
@@ -4,9 +4,12 @@
 #include <boost/property_tree/ptree.hpp>
 #include <boost/property_tree/xml_parser.hpp>
 
-#include <Eigen/Geometry>
+
 
 #include <VirtualRobot/Robot.h>
+#include <VirtualRobot/LinkedCoordinate.h>
+#include <VirtualRobot/LinkedCoordinate.h>
+#include <VirtualRobot/VirtualRobot.h>
 
 using namespace Eigen;
 using namespace std;
@@ -42,6 +45,13 @@ namespace armarx
         return v;
     }
 
+    string Vector3::output(const Ice::Current &c) const
+    {
+        std::stringstream s;
+        s << toEigen();
+        return s.str();
+    }
+
     int Vector3::readFromXML(const string &xmlData, const Ice::Current &c)
     {
         boost::property_tree::ptree pt = Variant::GetPropertyTree(xmlData);
@@ -145,6 +155,13 @@ namespace armarx
         return result;
     }
 
+    string Quaternion::output(const Ice::Current &c) const
+    {
+        std::stringstream s;
+        s << toEigen();
+        return s.str();
+    }
+
     int Quaternion::readFromXML(const string &xmlData, const Ice::Current &c)
     {
         boost::property_tree::ptree pt = Variant::GetPropertyTree(xmlData);
@@ -247,6 +264,13 @@ namespace armarx
         return m;
     }
 
+    string Pose::output(const Ice::Current &c) const
+    {
+        std::stringstream s;
+        s << toEigen();
+        return s.str();
+    }
+
     int Pose::readFromXML(const string &xmlData, const Ice::Current &c)
     {
         position->readFromXML(xmlData);
@@ -321,6 +345,13 @@ namespace armarx
         return result;
     }
 
+    string FramedVector3::output(const Ice::Current &c) const
+    {
+        std::stringstream s;
+        s << toEigen() << std::endl << "frame: " << getFrame();
+        return s.str();
+    }
+
     Eigen::Matrix4f FramedVector3::__GetRotationBetweenFrames(const std::string &oldFrame, const std::string &newFrame, VirtualRobot::RobotPtr robotState)
     {
         Eigen::Matrix4f toNewFrame = robotState->getRobotNode(oldFrame)->getTransformationTo(robotState->getRobotNode(newFrame));
@@ -395,6 +426,13 @@ namespace armarx
         return frame;
     }
 
+    string FramedPose::output(const Ice::Current &c) const
+    {
+        std::stringstream s;
+        s << toEigen() << std::endl << "frame: " << getFrame();
+        return s.str();
+    }
+
     int FramedPose::readFromXML(const string &xmlData, const Ice::Current &c){
         boost::property_tree::ptree pt = Variant::GetPropertyTree(xmlData);
 
@@ -463,6 +501,13 @@ namespace armarx
         return this->frame;
     }
 
+    string FramedPosition::output(const Ice::Current &c) const
+    {
+        std::stringstream s;
+        s << toEigen() << std::endl << "frame: " << getFrame();
+        return s.str();
+    }
+
     int FramedPosition::readFromXML(const string &xmlData, const Ice::Current &c){
         using namespace boost::property_tree;
         ptree pt;
@@ -533,6 +578,13 @@ namespace armarx
         return this->frame;
     }
 
+    string FramedOrientation::output(const Ice::Current &c) const
+    {
+        std::stringstream s;
+        s << toEigen() << std::endl << "frame: " << getFrame();
+        return s.str();
+    }
+
     int FramedOrientation::readFromXML(const string &xmlData, const Ice::Current &c)
     {
         using namespace boost::property_tree;
diff --git a/source/RobotAPI/robotstate/remote/ArmarPose.h b/source/RobotAPI/robotstate/remote/ArmarPose.h
index 4b5e2378f..2bec17a53 100644
--- a/source/RobotAPI/robotstate/remote/ArmarPose.h
+++ b/source/RobotAPI/robotstate/remote/ArmarPose.h
@@ -27,14 +27,20 @@
 
 #include <Eigen/Core>
 #include <Eigen/Geometry>
+
 #include <RobotAPI/interface/robotstate/RobotState.h>
 #include <Core/observers/variant/Variant.h>
 #include <Core/observers/AbstractObjectSerializer.h>
-#include <VirtualRobot/LinkedCoordinate.h>
-#include <VirtualRobot/LinkedCoordinate.h>
-#include <VirtualRobot/VirtualRobot.h>
+
 #include <Core/core/exceptions/local/ExpressionException.h>
 
+namespace VirtualRobot
+{
+    class Robot;
+    typedef boost::shared_ptr<Robot> RobotPtr;
+    class LinkedCoordinate;
+}
+
 namespace armarx
 {
     namespace VariantType
@@ -74,12 +80,7 @@ namespace armarx
         {
             return new Vector3(*this);
         }
-        std::string output(const Ice::Current& c = ::Ice::Current()) const
-        {
-            std::stringstream s;
-            s << toEigen();
-            return s.str();
-        }
+        std::string output(const Ice::Current& c = ::Ice::Current()) const;
         VariantTypeId getType(const Ice::Current& c = ::Ice::Current()) const
         {
             return VariantType::Vector3;
@@ -146,12 +147,7 @@ namespace armarx
         {
             return new Quaternion(*this);
         }
-        std::string output(const Ice::Current& c = ::Ice::Current()) const
-        {
-            std::stringstream s;
-            s << toEigen();
-            return s.str();
-        }
+        std::string output(const Ice::Current& c = ::Ice::Current()) const;
         VariantTypeId getType(const Ice::Current& c = ::Ice::Current()) const
         {
             return VariantType::Quaternion;
@@ -229,12 +225,7 @@ namespace armarx
         {
             return new Pose(*this);
         }
-        std::string output(const Ice::Current& c = ::Ice::Current()) const
-        {
-            std::stringstream s;
-            s << toEigen();
-            return s.str();
-        }
+        std::string output(const Ice::Current& c = ::Ice::Current()) const;
         VariantTypeId getType(const Ice::Current& c = ::Ice::Current()) const
         {
             return VariantType::Pose;
@@ -312,12 +303,7 @@ namespace armarx
             return new FramedPose(*this);
         }
 
-        std::string output(const Ice::Current& c = ::Ice::Current()) const
-        {
-            std::stringstream s;
-            s << toEigen() << std::endl << "frame: " << getFrame();
-            return s.str();
-        }
+        std::string output(const Ice::Current& c = ::Ice::Current()) const;
 
         VariantTypeId getType(const Ice::Current& c = ::Ice::Current()) const
         {
@@ -396,12 +382,7 @@ namespace armarx
         {
             return new FramedVector3(*this);
         }
-        std::string output(const Ice::Current& c = ::Ice::Current()) const
-        {
-            std::stringstream s;
-            s << toEigen() << std::endl << "frame: " << getFrame();
-            return s.str();
-        }
+        std::string output(const Ice::Current& c = ::Ice::Current()) const;
         VariantTypeId getType(const Ice::Current& c = ::Ice::Current()) const
         {
             return VariantType::FramedVector3;
@@ -468,12 +449,7 @@ namespace armarx
         {
             return new FramedPosition(*this);
         }
-        std::string output(const Ice::Current& c = ::Ice::Current()) const
-        {
-            std::stringstream s;
-            s << toEigen() << std::endl << "frame: " << getFrame();
-            return s.str();
-        }
+        std::string output(const Ice::Current& c = ::Ice::Current()) const;
         VariantTypeId getType(const Ice::Current& c = ::Ice::Current()) const
         {
             return VariantType::FramedPosition;
@@ -539,12 +515,7 @@ namespace armarx
         {
             return new FramedOrientation(*this);
         }
-        std::string output(const Ice::Current& c = ::Ice::Current()) const
-        {
-            std::stringstream s;
-            s << toEigen() << std::endl << "frame: " << getFrame();
-            return s.str();
-        }
+        std::string output(const Ice::Current& c = ::Ice::Current()) const;
         VariantTypeId getType(const Ice::Current& c = ::Ice::Current()) const
         {
             return VariantType::FramedOrientation;
diff --git a/source/RobotAPI/robotstate/remote/LinkedPose.cpp b/source/RobotAPI/robotstate/remote/LinkedPose.cpp
index fb57250f6..408664cb0 100644
--- a/source/RobotAPI/robotstate/remote/LinkedPose.cpp
+++ b/source/RobotAPI/robotstate/remote/LinkedPose.cpp
@@ -9,6 +9,10 @@
 #include <boost/property_tree/xml_parser.hpp>
 
 #include <Eigen/Geometry>
+#include <Eigen/Core>
+
+#include <VirtualRobot/LinkedCoordinate.h>
+#include <VirtualRobot/VirtualRobot.h>
 
 
 namespace armarx {
diff --git a/source/RobotAPI/robotstate/remote/LinkedPose.h b/source/RobotAPI/robotstate/remote/LinkedPose.h
index 107617e9e..c93139944 100644
--- a/source/RobotAPI/robotstate/remote/LinkedPose.h
+++ b/source/RobotAPI/robotstate/remote/LinkedPose.h
@@ -35,8 +35,7 @@
 #include <Eigen/Core>
 #include <Eigen/Geometry>
 
-#include <VirtualRobot/LinkedCoordinate.h>
-#include <VirtualRobot/VirtualRobot.h>
+
 
 #include <sstream>
 
diff --git a/source/RobotAPI/statecharts/GraspingWithTorques/GraspingWithTorques.cpp b/source/RobotAPI/statecharts/GraspingWithTorques/GraspingWithTorques.cpp
index c6c8c29bd..207ef01cf 100644
--- a/source/RobotAPI/statecharts/GraspingWithTorques/GraspingWithTorques.cpp
+++ b/source/RobotAPI/statecharts/GraspingWithTorques/GraspingWithTorques.cpp
@@ -30,6 +30,7 @@
 #include <Core/observers/variant/SingleTypeVariantList.h>
 #include <RobotAPI/robotstate/remote/ArmarPose.h>
 #include <VirtualRobot/IK/DifferentialIK.h>
+#include <VirtualRobot/Robot.h>
 
 #include <RobotAPI/interface/units/KinematicUnitInterface.h>
 #include <RobotAPI/interface/units/HandUnitInterface.h>
diff --git a/source/RobotAPI/statecharts/OpenHand/OpenHand.cpp b/source/RobotAPI/statecharts/OpenHand/OpenHand.cpp
index 0d98395ae..b448a3874 100644
--- a/source/RobotAPI/statecharts/OpenHand/OpenHand.cpp
+++ b/source/RobotAPI/statecharts/OpenHand/OpenHand.cpp
@@ -30,6 +30,7 @@
 #include <Core/observers/variant/SingleTypeVariantList.h>
 #include <RobotAPI/robotstate/remote/ArmarPose.h>
 #include <VirtualRobot/IK/DifferentialIK.h>
+#include <VirtualRobot/Robot.h>
 
 #include <RobotAPI/interface/units/KinematicUnitInterface.h>
 
diff --git a/source/RobotAPI/statecharts/PlaceObject/PlaceObject.cpp b/source/RobotAPI/statecharts/PlaceObject/PlaceObject.cpp
index 76b8018ca..1c6913acb 100644
--- a/source/RobotAPI/statecharts/PlaceObject/PlaceObject.cpp
+++ b/source/RobotAPI/statecharts/PlaceObject/PlaceObject.cpp
@@ -28,7 +28,9 @@
 #include <Core/observers/variant/ChannelRef.h>
 #include <Core/observers/variant/SingleTypeVariantList.h>
 #include <RobotAPI/robotstate/remote/ArmarPose.h>
+#include <RobotAPI/robotstate/remote/RemoteRobot.h>
 #include <VirtualRobot/IK/DifferentialIK.h>
+#include <VirtualRobot/Robot.h>
 
 #include <RobotAPI/interface/units/KinematicUnitInterface.h>
 
diff --git a/source/RobotAPI/units/HeadIKUnit.cpp b/source/RobotAPI/units/HeadIKUnit.cpp
index 89f8975ae..7372bde96 100644
--- a/source/RobotAPI/units/HeadIKUnit.cpp
+++ b/source/RobotAPI/units/HeadIKUnit.cpp
@@ -5,6 +5,7 @@
 
 #include <VirtualRobot/XML/RobotIO.h>
 #include <VirtualRobot/IK/GazeIK.h>
+#include <VirtualRobot/LinkedCoordinate.h>
 
 
 namespace armarx
-- 
GitLab