ROS2 RVIZ开发,自动订阅Octomap八叉树数据,CPU占用非常高,内存泄露
-
预期在自己开发的QWidget中,嵌入RVIZ的渲染窗口。自定义一个widget, 继承自QWidget和WindowManagerInterface,对象initializeRVIZ的过程如下:
render_penel_ = std::make_shared<rviz_common::RenderPanel>(this);
qApp->processEvents();
render_panel_->getREnderWindow()->initialize();
manager_ = std::make_shared<rviz_common::VisualizationManager>(render_panel_.get(), rviz_ros_node_, this, clock);
render_panel_->initialize(manager_.get());
manager_->initialize();
manager_->startUpdate();
qApp->processEvents();
此时,哪怕不添加任何渲染插件,都会有90%左右的CPU占用率。
再添加一个八叉树数据的自动订阅和渲染。
occupancy_grid_(manager_->createDisplay("octomap_rviz_plugins/OccupancyGrid", "Occupancy Grid", true))';
occupancy_grid_->subProp("Topic")->setValue(“octomap/local”);
自动订阅octomap/local话题,并自动渲染八叉树,此时CPU将到180%,并且有内存泄漏。请问有什么方法可以解决CPU占用高问题和内存泄漏问题
-
CPU的问题,可以通过调整VisualizationManager的自动渲染周期解决。默认自动渲染周期为30Hz,可调成合适的10或者5Hz,可以降低一半CPU占用。
但是内存泄漏一直存在。
并且发现,使用rviz2的原生界面,订阅八叉树进行渲染,也会有内存泄漏