From c5173a2dda89c1bbe23632710b149775d52cf392 Mon Sep 17 00:00:00 2001
From: Fabian Reister <fabian.reister@kit.edu>
Date: Wed, 11 Dec 2024 16:44:40 +0100
Subject: [PATCH] familiar object visu: label visu

---
 .../server/familiar_object_instance/Visu.cpp     | 16 ++++++++++++++++
 .../server/familiar_object_instance/Visu.h       |  1 +
 2 files changed, 17 insertions(+)

diff --git a/source/RobotAPI/libraries/armem_objects/server/familiar_object_instance/Visu.cpp b/source/RobotAPI/libraries/armem_objects/server/familiar_object_instance/Visu.cpp
index ea051b094..84d9e402e 100644
--- a/source/RobotAPI/libraries/armem_objects/server/familiar_object_instance/Visu.cpp
+++ b/source/RobotAPI/libraries/armem_objects/server/familiar_object_instance/Visu.cpp
@@ -42,6 +42,7 @@ namespace armarx::armem::server::obj::familiar_object_instance
         defs->optional(visualizePointCloud, prefix + "visualizePointCloud", "");
         defs->optional(visualizePose, prefix + "visualizePose", "");
         defs->optional(visualizeBoundingBox, prefix + "visualizeBoundingBox", "");
+        defs->optional(visualizeLabels, prefix + "visualizeLabels", "");
 
         defs->optional(objectFrames, prefix + "objectFrames", "Enable showing object frames.");
         defs->optional(
@@ -73,6 +74,7 @@ namespace armarx::armem::server::obj::familiar_object_instance
         {
             auto layerPose = arviz.layer("familiar_objects/pose/" + providerName);
             auto layerPointCloud = arviz.layer("familiar_objects/points/" + providerName);
+            auto layerLabels = arviz.layer("familiar_objects/labels/" + providerName);
             auto layerBox = arviz.layer("familiar_objects/box/" + providerName);
 
             auto confidenceCmap = simox::color::cmaps::viridis();
@@ -108,6 +110,19 @@ namespace armarx::armem::server::obj::familiar_object_instance
                         layerPointCloud.add(points);
                     }
 
+                    if (visualizeLabels)
+                    {
+                        Eigen::Isometry3f pose{familiarObject.poseGlobal->pose};
+
+                        // gently above object
+                        // FIXME derive from bounding box
+                        pose.translation().z() += 200;
+
+                        const std::string name = familiarObject.objectID.className + "/" + familiarObject.objectID.instanceName;
+
+                        layerLabels.add(viz::Text(name).pose(pose).scale(20));
+                    }
+
                     if (visualizeBoundingBox)
                     {
 
@@ -138,6 +153,7 @@ namespace armarx::armem::server::obj::familiar_object_instance
 
             layers.push_back(layerPose);
             layers.push_back(layerPointCloud);
+            layers.push_back(layerLabels);
             layers.push_back(layerBox);
         }
 
diff --git a/source/RobotAPI/libraries/armem_objects/server/familiar_object_instance/Visu.h b/source/RobotAPI/libraries/armem_objects/server/familiar_object_instance/Visu.h
index c5b08d065..d92017ae1 100644
--- a/source/RobotAPI/libraries/armem_objects/server/familiar_object_instance/Visu.h
+++ b/source/RobotAPI/libraries/armem_objects/server/familiar_object_instance/Visu.h
@@ -53,6 +53,7 @@ namespace armarx::armem::server::obj::familiar_object_instance
         bool visualizePointCloud = true;
         bool visualizeBoundingBox = true;
         bool visualizePose = true;
+        bool visualizeLabels = true;
 
         bool objectFrames = false;
         float objectFramesScale = 1.0;
-- 
GitLab