项目实训(7)qt与pcl2:ui显示pcl点云

一、序言:

在加载前端界面之前,可以先参考rivz本身加载pcl的方法。

 if (ros::isStarted())
    {
        ros::shutdown();
        ros::waitForShutdown();
    }
    wait();

-----------------------
bool QNode::init()
{
    ros::init(init_argc_, init_argv_, "qt_slam_ui_node");
    if (!ros::master::check())
    {
        return false;
    }
    ros::start();
    ros::NodeHandle nh;
    start();
    return true;
}

从中截取的一部分代码,可以看出qt可以直接适配ros系统,与其相对于的rivz模块也可以直接显示出来。

二、配置

比较重要的是头文件的配置,按照参考博文导入头文件之后报错,所以还是得一个一个检查,用什么时再导入。

  //初始化PCL显示控件
    viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));
    viewer->setBackgroundColor(0,0.3,0.4);
    ui->qvtkWidget->SetRenderWindow(viewer->getRenderWindow());
    viewer->setupInteractor(ui->qvtkWidget->GetInteractor(), ui->qvtkWidget->GetRenderWindow());
    ui->qvtkWidget->update();

这个qvtkwidget控件我还以为是要自己写的,结果半天没搞成。最后在网上找到了解决方案:

2.4 VTK相关文件->Qt
原文件路径:VTK-install_release\plugins\designer\QVTKWidgetPlugin.dll
Copy目标文件路径:xxx\5.14.2\msvc2017_64\plugins\designer
如此,可以在Qt可执行程序Designer 5.14.2 (MSVC 2017 64-bit)发现VTK插件

首先安装QT5,之后编译VTK,生成libQVTKWidgetPlugin.so文件,将VTK-build-Qt5/lib目录下的libQVTKWidgetPlugin.so复制放到Qt5.12.0/Tools/QtCreator/lib/Qt/plugins/designer目录下.打开qt,就可以看到QVTKWidget插件已经在QTCreator中了.

项目实训(7)qt与pcl2:ui显示pcl点云_第1张图片

项目实训(7)qt与pcl2:ui显示pcl点云_第2张图片

大概编译了四十多分钟。

sudo find / -name libQVTKWidgetPlugin.so

找到此文件后放入qtcreator或qt中。

在这里插入图片描述

三、测试:

ui界面中加入新插入的vtk控件之后出现新问题。

项目实训(7)qt与pcl2:ui显示pcl点云_第3张图片

调整vtk版本,修改pro的路径后有新报错;

temp/obj/main.o:在函数‘__static_initialization_and_destruction_0(int, int)’中:

/usr/local/include/vtk-7.1/vtkObjectFactory.h:301:对‘vtkObjectFactoryRegistryCleanup::vtkObjectFactoryRegistryCleanup()’未定义的引用

在网上搜集了许多资料后发现了问题的所在。

一般pcl和vtk的版本是需要对应的,参考这里:

(1) pcl-1.7.2 vtk-5.10.1 / vtk-6.2.0

(2) pcl-1.8.1 vtk-7.1.1

(3) pcl-1.9.1 vtk-8.2.0

服务器上的时低版本的pcl不能对应高版本的vtk……

没办法,重新更换vtk版本为6.3。

但是又出错,vtk不能同cmake版本兼容………………

暂时选择升级pcl为1.8.1

四、最终结果

成功显示qtwidget控件
项目实训(7)qt与pcl2:ui显示pcl点云_第4张图片

五、参考资料

使用Qt界面加载ROS库嵌入Rviz,显示加载保存点云PCL | 码农家园 (codenong.com)

vs2019_Qt5.14.2_(vtk8.2+pcl1.11.1)UI界面显示点云_桃子酱紫君的博客-CSDN博客

《QT+PCL 第一章》:点云读取显示_小修勾的博客-CSDN博客_qt 点云显示

SLAM入门(3):QT加载QVTKWidget插件(QT+ROS尝试)_Eonekne的博客-CSDN博客

VTK-6.3.0编译(支持Qt编程)以及QVTKwidget插件安装_cfqcfqcfqcfqcfq的博客-CSDN博客_qvtkwidget安装

https://blog.csdn.net/qq_25244255/article/details/87182855

Ubuntu 16.04 编译VTK7.1_Linux教程_Linux公社-Linux系统门户网站 (linuxidc.com)

vtk编译问题踩坑-Ubuntu16.04编译切换pcl版本 - 知乎 (zhihu.com)

你可能感兴趣的:(项目实训,qt)