ubuntu20配置 Qt5+ROS+VTK 开发环境

2 篇文章 0 订阅
2 篇文章 0 订阅

背景

项目中需要开发与ROS生态和点云可视化相关的图形界面程序(例如开发一个实时接收雷达ros点云话题并显示的例程),经过调研发现在ubuntu上使用Qt是一个比较好的选择。这里对开发环境的配置过程进行记录,供大家参考。
环境:ubuntu20.04,ROS noetic

搭建流程

1.安装ROS noetic

在ubuntu20系统中安装完整版的桌面ros noetic,具体可参考我的另一篇博客
https://blog.csdn.net/weixin_41727580/article/details/124210965
ROS的安装会附带很多我们本次环境搭建中需要的包,例如cmake、qt5、pcl、vtk,因此直接安装ros是一个方便的选择,就不需要再单独下载这些东西了。

2.安装带ros插件的Qt5版本

ros-qt-plugin是一个可以将ros开发逻辑导入到Qt中的Qt插件,有了这个插件,使用Qt进行ros开发会方便很多。Qt官方的版本是不能向里面添加插件的,这里需要下载能添加插件的Qt5版本。首先到其github进行下载:
https://github.com/ros-industrial/ros_qtc_plugin/releases
这里我下载的版本为0.4.3,因为从0.5开始使用的就是Qt6,而经测试Qt6不支持QVTK控件的导入。如下图所示,下载ROSProjectManager-0.4.1-Linux-x86_64.zipSource code(tar.gz)两个文件。其中Source code(tar.gz)是Qt软件安装包,ROSProjectManager-0.4.1-Linux-x86_64.zip是Qt的ros插件。
在这里插入图片描述
下载完毕后解压,打开Source code(tar.gz)解压后的目录,在终端输入下述指令,进行安装。首先在根目录下建立Qt-ros文件夹作为安装路径,然后开始安装:

mkdir ~/Qt-ros
python3 setup.py --install_path ~/Qt-ros

安装完毕后,打开刚安装好的Qt:

cd ~/Qt-ros/Tools/QtCreator/bin
./qtcreator

点击菜单栏的帮助->About Qt Creator,可以看到我们安装了Qt5.15版本:
在这里插入图片描述
然后安装ros插件。点击帮助->关于插件,在弹出的窗口中选择“Install Plugin…”,如下图所示:

在这里插入图片描述
指定插件的路径为刚才下载的ROSProjectManager-0.4.1-Linux-x86_64.zip文件的路径,下一步,进行确认。

在这里插入图片描述
安装位置可以选择Qt Creator的安装路径,便于对不同的Qt版本进行管理:

在这里插入图片描述
完成后重启Qt,进入关于插件,搜索ROS检查插件的开启情况:

在这里插入图片描述
这里看到插件已经成功安装(这里若安装失败可见文末的解决办法),点击菜单->文件->新建文件或项目,在“其他项目”中就可以找到ROS Workspace的选项,点击choose:

在这里插入图片描述
这里参考了官方的教程https://ros-qtc-plugin.readthedocs.io/en/latest/_source/How-to-Install-Users.html,新建一个ros工作空间,输入name,构建系统选择为CatkinMake,指定工作空间路径,我的指定为根目录下新建的catkin_csdn文件夹:

在这里插入图片描述
完成后建立了一个空的工作空间:

在这里插入图片描述
这时需要我们手动建立该工作空间的文件结构:

cd ~/catkin_csdn
mkdir src
catkin_make

完成后重新打开Qt(如果系统中有多个Qt的版本,注意要打开本次安装的Qt),可以在Projects文字的下方打开刚才的ros项目(我的是catkin_csdn):

在这里插入图片描述
可以看到这时候文件的结构发生了变化:

在这里插入图片描述

右键点击src,选择Add New,选择Package添加一个ros包:

在这里插入图片描述
输入包名,依赖中的Catkin中填入roscpp,导入基本的roscpp代码包:

在这里插入图片描述
到这里就使用Qt成功创建了一个ros包,可以在Qt中直接进行工作空间的编译了。此时的文件结构:

在这里插入图片描述

3.向Qt Designer中加入QVTK控件

Qt窗体开发本身并不自带QVTK控件,需要向Qt的特定安装路径自行加入一个QVTK的库文件,这个文件需要在编译vtk的时候开启指定选项才能生成,而重新编译vtk时又需要Qt有对应的版本,比较棘手,为了免去麻烦,这里我把已经编译生成的库文件放在下面供大家下载:
链接: https://pan.baidu.com/s/1jTp3MWRRCeXBxC7xElPXhw
提取码:hno8
下载libQVTKWidgetPlugin.so文件,将其复制到~/Qt-ros/Tools/QtCreator/lib/Qt/plugins/designer目录下,完成后可以重新打开Qt,新建一个窗体工程,选择mainwindow.ui进入Qt Desinger界面:

在这里插入图片描述
可以看到控件列表最下方新增了一个QVTKWidget控件,就说明QVTK控件添加成功了。

在这里插入图片描述

4.创建Qt窗体工程并导入依赖

为了方便,需要使用cmake接管Qt窗体工程,并把Qt窗体工程的文件作为ros开发逻辑的一部分。这里仍然参照Qt官网的cmake教程进行操作:打开刚才安装的Qt,点击new project创建一个Qt Widgets Application(Qt窗体项目),使用默认选项,记住项目创建的路径。然后退出Qt,将刚才项目路径文件夹下自动生成的所有文件拷贝到刚才我们创建的ros包的src文件夹下,因为要使用cmake管理项目,故可删除无用的csdn.pro和csdn.pro.user文件。也就是拷贝下面四个文件到src下:

在这里插入图片描述

此时catkin_csdn工作空间的目录结构如下所示:

在这里插入图片描述

更改与src同级的包CMakeLists.txt文件为:

cmake_minimum_required(VERSION 3.0.2)
project(test)

## Compile as C++11, supported in ROS Kinetic and newer
# add_compile_options(-std=c++11)

## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS
  roscpp
)

catkin_package()

#some qt5-camke setting
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

#load Qt5 include and lib path variables
find_package(Qt5 COMPONENTS Widgets REQUIRED)

#load PCL and VTK include and lib path variables
find_package(PCL REQUIRED)
find_package(VTK REQUIRED)

#note: <pcl> has included the <vtk>, so we just need to set the <pcl>'s include and lib path for project
include_directories(${PCL_INCLUDE_DIRS}) #set the .h search path for <pcl> and <vtk>
link_directories(${PCL_LIBRARY_DIRS}) #set the lib search path for <pcl> and <vtk>
add_definitions(${PCL_DEFINITIONS})

add_executable(test1
    src/mainwindow.ui
    src/mainwindow.cpp
    src/main.cpp
)

target_link_libraries(test1 Qt5::Widgets ${VTK_LIBRARIES} ${PCL_LIBRARIES})

其中,set(CMAKE_AUTOMOC ON)set(CMAKE_AUTORCC ON)set(CMAKE_AUTOUIC ON)指定了cmake接管Qt窗体工程的窗体构建逻辑,find_package(Qt5 COMPONENTS Widgets REQUIRED)引入了Qt5库,find_package(PCL REQUIRED)find_package(VTK REQUIRED)显式引入了PCL和VTK,由于在安装ROS时它们都会被附带安装,因此在这里均能被找到。
修改后点击锤子进行编译,编译成功后将会在~/catkin_csdn/devel/lib/test目录下生成test1可执行文件,运行:

cd ~/catkin_csdn/devel/lib/test
./test1

运行后若窗体正确弹出,说明至此环境配置成功,可以在此工程中调用ros库、pcl库和vtk库,并可使用QVTKWidget实现一些显示功能。

一些常见问题的解决方案

1.Qt安装ros插件时提示安装失败

我在安装插件的时候遇到了这样的问题,在安装完成后重启Qt,提示:

在这里插入图片描述
这是由于插件的安装缺少了一个叫做libqtermwidget5.so.1的库文件,这个库文件可到github进行下载并自行编译得到:
https://github.com/lxqt/qtermwidget
或者直接使用我编译好的:
链接: https://pan.baidu.com/s/1Fh47vjtxqYuWdLm5FS43BA
提取码:hpco
下载后将libqtermwidget5.so.1文件复制到与libROSProjectManager.so同级目录下即可。

  • 5
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值