From 83dafea6658e08e0aaf6d2dda4782378646482de Mon Sep 17 00:00:00 2001 From: Justus Braun Date: Wed, 6 Aug 2025 09:59:07 +0200 Subject: [PATCH 1/3] Fix typo in ThreadSafeQueue file name --- .../include/rviz_mesh_tools_plugins/MeshDisplay.hpp | 2 +- .../{ThreadSaveQueue.hpp => ThreadSafeQueue.hpp} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename rviz_mesh_tools_plugins/include/rviz_mesh_tools_plugins/{ThreadSaveQueue.hpp => ThreadSafeQueue.hpp} (100%) diff --git a/rviz_mesh_tools_plugins/include/rviz_mesh_tools_plugins/MeshDisplay.hpp b/rviz_mesh_tools_plugins/include/rviz_mesh_tools_plugins/MeshDisplay.hpp index b4e6c92..e3c4baf 100644 --- a/rviz_mesh_tools_plugins/include/rviz_mesh_tools_plugins/MeshDisplay.hpp +++ b/rviz_mesh_tools_plugins/include/rviz_mesh_tools_plugins/MeshDisplay.hpp @@ -85,7 +85,7 @@ #include #include -#include +#include #include diff --git a/rviz_mesh_tools_plugins/include/rviz_mesh_tools_plugins/ThreadSaveQueue.hpp b/rviz_mesh_tools_plugins/include/rviz_mesh_tools_plugins/ThreadSafeQueue.hpp similarity index 100% rename from rviz_mesh_tools_plugins/include/rviz_mesh_tools_plugins/ThreadSaveQueue.hpp rename to rviz_mesh_tools_plugins/include/rviz_mesh_tools_plugins/ThreadSafeQueue.hpp From 2c3a9c50054c060caddc4d475f66875590a8930e Mon Sep 17 00:00:00 2001 From: Justus Braun Date: Sat, 9 Aug 2025 15:26:08 +0200 Subject: [PATCH 2/3] Fix missing initialization of cost update topic property --- rviz_mesh_tools_plugins/src/MeshDisplay.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/rviz_mesh_tools_plugins/src/MeshDisplay.cpp b/rviz_mesh_tools_plugins/src/MeshDisplay.cpp index 1ca30dd..f71b76e 100644 --- a/rviz_mesh_tools_plugins/src/MeshDisplay.cpp +++ b/rviz_mesh_tools_plugins/src/MeshDisplay.cpp @@ -284,6 +284,7 @@ void MeshDisplay::onInitialize() m_meshTopic->initialize(context_->getRosNodeAbstraction()); m_vertexColorsTopic->initialize(context_->getRosNodeAbstraction()); m_vertexCostsTopic->initialize(context_->getRosNodeAbstraction()); + m_vertexCostUpdateTopic->initialize(context_->getRosNodeAbstraction()); m_meshTopicQos->initialize( [this](rclcpp::QoS profile) { @@ -303,6 +304,12 @@ void MeshDisplay::onInitialize() updateVertexCostsSubscription(); }); + m_vertexCostUpdateTopicQos->initialize( + [this](rclcpp::QoS profile) { + m_vertexCostUpdateQos = profile; + updateVertexCostsUpdateSubscription(); + }); + // Initialize service clients //m_vertexColorClient = node->create_client(m_vertexColorServiceName->getStdString()); //m_materialsClient = node->create_client(m_materialServiceName->getStdString()); From 852f36ede1869ca84a151dfe38780e3bdf8eb74d Mon Sep 17 00:00:00 2001 From: Justus Braun Date: Sun, 10 Aug 2025 14:41:23 +0200 Subject: [PATCH 3/3] Enable use of new display by topic for MeshGeometryStamped messages --- .../rviz_mesh_tools_plugins/MeshDisplay.hpp | 7 ++++++- rviz_mesh_tools_plugins/plugins_description.xml | 1 + rviz_mesh_tools_plugins/src/MeshDisplay.cpp | 17 +++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/rviz_mesh_tools_plugins/include/rviz_mesh_tools_plugins/MeshDisplay.hpp b/rviz_mesh_tools_plugins/include/rviz_mesh_tools_plugins/MeshDisplay.hpp index e3c4baf..564b936 100644 --- a/rviz_mesh_tools_plugins/include/rviz_mesh_tools_plugins/MeshDisplay.hpp +++ b/rviz_mesh_tools_plugins/include/rviz_mesh_tools_plugins/MeshDisplay.hpp @@ -143,7 +143,7 @@ class MeshDisplay : public rviz_common::Display Q_OBJECT public: - /**#include "rviz_common/ros_integration/ros_node_abstraction_iface.hpp" + /** * @brief Constructor */ MeshDisplay(); @@ -177,6 +177,11 @@ class MeshDisplay : public rviz_common::Display void fixedFrameChanged() override; + /** + * @brief Used by RViz's "New display by topic" window + */ + void setTopic(const QString& topic, const QString& datatype) override; + /** * @brief Update all subscriptions. Individual subscription update function will check whether they are active. (e.g. vertex colors can also be inactive when the UI element is set to a fixed color). */ diff --git a/rviz_mesh_tools_plugins/plugins_description.xml b/rviz_mesh_tools_plugins/plugins_description.xml index a35eee5..36ccf48 100644 --- a/rviz_mesh_tools_plugins/plugins_description.xml +++ b/rviz_mesh_tools_plugins/plugins_description.xml @@ -33,6 +33,7 @@ Displays a mesh. + mesh_msgs/msg/MeshGeometryStamped transformMesh(); } +void MeshDisplay::setTopic(const QString& topic, const QString& datatype) +{ + (void) datatype; + RCLCPP_DEBUG( + rclcpp::get_logger("rviz_mesh_tools_plugins"), + // The char array returned by QString.data() may not be '\0' terminated! -> topic.toStdString().c_str() + "MeshDisplay::setTopic() - called with topic='%s'", topic.toStdString().c_str() + ); + if (m_meshTopic) + { + // This also triggers the updateMeshGeometrySubscription() slot + m_meshTopic->setString(topic); + } +} + void MeshDisplay::reset() { Display::reset(); @@ -467,6 +482,7 @@ void MeshDisplay::updateAllSubscriptions() updateMeshGeometrySubscription(); updateVertexColorsSubscription(); updateVertexCostsSubscription(); + updateVertexCostsUpdateSubscription(); // TODO // initialServiceCall(); @@ -477,6 +493,7 @@ void MeshDisplay::unsubscribe() m_meshSubscriber.unsubscribe(); m_vertexColorsSubscriber.unsubscribe(); m_vertexCostsSubscriber.unsubscribe(); + m_vertexCostUpdateSubscriber.unsubscribe(); m_tfMeshFilter.reset(); m_colorsMsgCache.reset();