From 833fed3065017a099c98c9c3fb8397f339bb8de3 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: Fri, 10 Feb 2023 13:34:08 +0100
Subject: [PATCH] SimpleVirtualRobot component: can now specify global pose

---
 .../armem/client/SimpleVirtualRobot/SimpleVirtualRobot.cpp | 7 ++++++-
 .../armem/client/SimpleVirtualRobot/SimpleVirtualRobot.h   | 4 ++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/source/RobotAPI/components/armem/client/SimpleVirtualRobot/SimpleVirtualRobot.cpp b/source/RobotAPI/components/armem/client/SimpleVirtualRobot/SimpleVirtualRobot.cpp
index 1cd517681..df79259c8 100644
--- a/source/RobotAPI/components/armem/client/SimpleVirtualRobot/SimpleVirtualRobot.cpp
+++ b/source/RobotAPI/components/armem/client/SimpleVirtualRobot/SimpleVirtualRobot.cpp
@@ -56,6 +56,10 @@ namespace armarx::simple_virtual_robot
 
         defs->optional(properties.robot.jointValues, "p.robot.jointValues", "Specify a certain joint configuration.");
 
+        defs->optional(properties.robot.globalPositionX, "p.robot.globalPositionX", "");
+        defs->optional(properties.robot.globalPositionY, "p.robot.globalPositionY", "");
+        defs->optional(properties.robot.globalPositionYaw, "p.robot.globalPositionYaw", "");
+
         return defs;
     }
 
@@ -125,7 +129,8 @@ namespace armarx::simple_virtual_robot
             robot->setJointValues(jointValues);
         }
 
-        
+        const Eigen::Isometry3f global_T_robot = Eigen::Translation3f{properties.robot.globalPositionX, properties.robot.globalPositionY, 0} * Eigen::AngleAxisf{properties.robot.globalPositionYaw, Eigen::Vector3f::UnitZ()};
+        robot->setGlobalPose(global_T_robot.matrix());
 
         if (not p.name.empty())
         {
diff --git a/source/RobotAPI/components/armem/client/SimpleVirtualRobot/SimpleVirtualRobot.h b/source/RobotAPI/components/armem/client/SimpleVirtualRobot/SimpleVirtualRobot.h
index 677f4e085..d960e0ff3 100644
--- a/source/RobotAPI/components/armem/client/SimpleVirtualRobot/SimpleVirtualRobot.h
+++ b/source/RobotAPI/components/armem/client/SimpleVirtualRobot/SimpleVirtualRobot.h
@@ -62,6 +62,10 @@ namespace armarx::simple_virtual_robot
                 std::string path;
 
                 std::string jointValues; // json-style map<std::string, float>
+
+                float globalPositionX = 0;
+                float globalPositionY = 0;
+                float globalPositionYaw = 0;
             };
             Robot robot;
         };
-- 
GitLab