From 57d01dfce3ccb636d45c7c0e9546399d889031ba Mon Sep 17 00:00:00 2001
From: Markus Grotz <markus.grotz@kit.edu>
Date: Wed, 23 Sep 2020 10:38:51 +0200
Subject: [PATCH] update RobotToArViz

- add parameter for collision model
---
 .../components/RobotToArViz/RobotToArViz.cpp  | 26 +++++++++++++++++++
 .../components/RobotToArViz/RobotToArViz.h    |  5 ++++
 2 files changed, 31 insertions(+)

diff --git a/source/RobotAPI/components/RobotToArViz/RobotToArViz.cpp b/source/RobotAPI/components/RobotToArViz/RobotToArViz.cpp
index 63311003d..05ea12147 100644
--- a/source/RobotAPI/components/RobotToArViz/RobotToArViz.cpp
+++ b/source/RobotAPI/components/RobotToArViz/RobotToArViz.cpp
@@ -38,6 +38,8 @@ namespace armarx
 
         // defs->optional(updateFrequency, "updateFrequency", "Target number of updates per second.");
         defs->defineOptionalProperty("updateFrequency", updateFrequency, "Target number of updates per second.");
+        defs->optional(gui.useCollisionModel, "UseCollisionModel", "Use the collision model for visualization");
+
         defs->optional(gui.showRobotNodeFrames, "ShowRobotNodeFrames",
                        "If true, show frames of robot nodes (can be changed in RemoteGui).");
 
@@ -65,6 +67,11 @@ namespace armarx
         // Initialize robot visu element.
         this->robotViz = viz::Robot(robot->getName()).file("", robot->getFilename());
 
+        if (gui.useCollisionModel)
+        {
+            this->robotViz.useCollisionModel();
+        }
+
         createRemoteGuiTab();
         RemoteGui_startRunningTask();
 
@@ -98,6 +105,11 @@ namespace armarx
             root.add(Label("Show Robot Node Frames"), {row, 0});
             root.add(tab.showRobotNodeFrames, {row, 1});
             row += 1;
+
+            tab.useCollisionModel.setValue(gui.useCollisionModel);
+            root.add(Label("Use Collision Model"), {row, 0});
+            root.add(tab.useCollisionModel, {row, 1});
+            row += 1;
         }
         RemoteGui_createTab(getName(), root, &tab);
     }
@@ -109,6 +121,20 @@ namespace armarx
         {
             gui.showRobotNodeFrames = newShowRobotNodeFrames;
         }
+
+        bool newUseCollisionmodel = tab.useCollisionModel.getValue();
+        if (newUseCollisionmodel != gui.useCollisionModel)
+        {
+            gui.useCollisionModel = newUseCollisionmodel;
+            if (newUseCollisionmodel)
+            {
+                robotViz.useCollisionModel();
+            }
+            else
+            {
+                robotViz.useFullModel();
+            }
+        }
     }
 
 
diff --git a/source/RobotAPI/components/RobotToArViz/RobotToArViz.h b/source/RobotAPI/components/RobotToArViz/RobotToArViz.h
index c289de35f..ebf9ba011 100644
--- a/source/RobotAPI/components/RobotToArViz/RobotToArViz.h
+++ b/source/RobotAPI/components/RobotToArViz/RobotToArViz.h
@@ -116,6 +116,8 @@ namespace armarx
         struct Tab : RemoteGui::Client::Tab
         {
             RemoteGui::Client::CheckBox showRobotNodeFrames;
+
+            RemoteGui::Client::CheckBox useCollisionModel;
             // Todo: add spin box for scale
         };
         Tab tab;
@@ -123,6 +125,9 @@ namespace armarx
         struct Gui
         {
             bool showRobotNodeFrames = false;
+
+            bool useCollisionModel = false;
+
         };
         Gui gui;
 
-- 
GitLab