diff --git a/source/RobotAPI/libraries/armem_robot_state/server/common/Visu.cpp b/source/RobotAPI/libraries/armem_robot_state/server/common/Visu.cpp index c5f3fe36a067f6969e2c09b238ac1ed473422c2b..526d92d04927849420925e4345c3a28eaf983911 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/common/Visu.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/server/common/Visu.cpp @@ -53,6 +53,9 @@ namespace armarx::armem::server::robot_state defs->optional(p.forceTorque.forceScale, prefix + "forceTorque.forceScale", "Scaling of force arrows."); + defs->optional(p.collisionModelEnabled, + prefix + "collisionModelEnabled", + "Enable visualization of collision model."); } void @@ -81,7 +84,7 @@ namespace armarx::armem::server::robot_state } void - Visu::visualizeRobots(viz::Layer& layer, const robot::Robots& robots) + Visu::visualizeRobots(viz::Layer& layer, const robot::Robots& robots, bool useColModel) { for (const robot::Robot& robot : robots) { @@ -93,7 +96,14 @@ namespace armarx::armem::server::robot_state .joints(robot.config.jointMap) .pose(robot.config.globalPose); - robotVisu.useFullModel(); + if (not useColModel) + { + robotVisu.useFullModel(); + } + else + { + robotVisu.useCollisionModel(); + } // clang-format on layer.add(robotVisu); @@ -233,7 +243,13 @@ namespace armarx::armem::server::robot_state { viz::Layer& layer = layers.emplace_back(arviz.layer("Robots")); - visualizeRobots(layer, robots); + visualizeRobots(layer, robots, false); + } + + if (p.collisionModelEnabled) + { + viz::Layer& layer = layers.emplace_back(arviz.layer("RobotsCol")); + visualizeRobots(layer, robots, true); } ARMARX_DEBUG << "Visualize frames ..."; diff --git a/source/RobotAPI/libraries/armem_robot_state/server/common/Visu.h b/source/RobotAPI/libraries/armem_robot_state/server/common/Visu.h index 2afa9a27f3396939c625050a942925db79129d64..ede55c7a3f1cedb5aaba163d58bba4df46a465df 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/common/Visu.h +++ b/source/RobotAPI/libraries/armem_robot_state/server/common/Visu.h @@ -58,7 +58,7 @@ namespace armarx::armem::server::robot_state void visualizeOnce(const Time& timestamp); - static void visualizeRobots(viz::Layer& layer, const robot::Robots& robots); + static void visualizeRobots(viz::Layer& layer, const robot::Robots& robots, bool useColModel = false); static void visualizeFrames( viz::Layer& layerFrames, @@ -97,6 +97,7 @@ namespace armarx::armem::server::robot_state float frequencyHz = 25.f; bool framesEnabled = false; + bool collisionModelEnabled = false; struct ForceTorque {