ROS基础——Qt配置

环境:Ubuntu16.04+ROS Kinetic

2018.8更新:经测试在安装ros_qtc_plugin时,会同时安装Qt5.9,因此可以直接安装ros_qtc_plugin,然后进行第一步的(5)进行配置,而不需要额外安装Qt。

2018.9更新:修改ros工作空间的导入方式

目录

一、安装Qt5.10.1

二、配置ros_qtc_plugin

三、安装配置ros-kinetic-qt-ros

四、配置qt5版本


一、安装Qt5.10.1

下载链接:http://download.qt.io/archive/qt/

ROS基础——Qt配置_第1张图片

(1)选择qt-opensource-linux-x64-5.10.1.run下载。

(2)前期准备,安装GNU开发工具集和OpenGL开发库。

sudo apt-get install build-essential libgl1-mesa-dev  libevent-pthreads-2.0.5 doxygen xorg-dev

(3)打开终端,cd到qt-opensource-linux-x64-5.10.1.run的路径下,并输入下面命令安装,可根据版本不同修改命令:

chmod+x qt-opensource-linux-x64-5.10.1.run
sudo ./qt-opensource-linux-x64-5.10.1.run

(4)按提示安装,选上需求项。

(5)修改系统配置文件,选择新版Qt Creator

sudo gedit /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf

 修改内容如下,根据自己安装的qt路径进行修改,如果文件空白,可以直接添加。

/opt/Qt5.10.1/5.10/gcc_64/bin
/opt/Qt5.10.1/5.10/gcc_64/lib

(6)修改Qt启动器

找到qtcreater的快捷方式并找到其路径,打开终端,cd到该路径下并用gedit打开快捷方式,在绝对路径前增加内容:bash -i -c。这步必须完成,否则无法编译ROS工程。

图标路径(通常)

/usr/share/applications

 修改前

Exec=/opt/qt59/bin/qtcreator %F

 修改后

Exec=bash -i -c /opt/qt59/bin/qtcreator %F

 

二、配置ros_qtc_plugin

(1)下载安装ros_qtc_plugin

sudo add-apt-repository ppa:levi-armstrong/qt-libraries-xenial
sudo add-apt-repository ppa:levi-armstrong/ppa
sudo apt-get update && sudo apt-get install qt57creator-plugin-ros

安装成功后,在新建项目的其他项目中可以看到ROS Workspace(注意Qt的版本要求最低为Qt 5.5.0)

ROS基础——Qt配置_第2张图片

修改构建套件,新建套件并配置为自己的套件,同时删除CMake Configuration里的 CMAKE_PREFIX_PATH,防止覆盖系统中与其同名的值,完成设置后需将新建的套件设置为默认套件。

删除内容:

CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}

(2)新建工程

注意:不建议直接采用qt creator创建工作空间,容易产生无法导入所有文件的情况

1、qt creator中选择其他项目中的ROS Workspace来新建工作空间。

2、新建工作空间为空,可以在src目录下选择新建文件,创建包(注意:需要在Catkin里填写依赖包)。

3、在新建功能包中可以通过添加新文件创建节点。

(3)导入工程

手段二为常用导入手段,较手段一简单,但经验证无法导入所有文件,造成在程序编写中出现问题。因此建议采用手段一。

手段一(推荐)

1、qt creator中选择其他项目中的ROS Workspace来新建工作空间。

2、工作空间的名字与需要导入的工作空间同名,然后选择需要导入工作空间的路径。

ROS基础——Qt配置_第3张图片

3、进入 Projects,修改Build设置,删除默认Build Steps和Clean Steps,然后新建自定义steps,填写内容参考如下。选择bulid文件目标下该功能包的目录。

ROS基础——Qt配置_第4张图片

4、修改Run设置,新建自定义Executable,选择执行目录和执行文件,根据需要执行的节点选择对应执行文件。 

ROS基础——Qt配置_第5张图片

手段二(不推荐)

打开终端,cd到工作空间的src目录下,运行下面命令,修改CMakeList.txt状态。

cd ~/catkin_ws/src
ls -l  # Take note of the actual symlink target
sed -i '' CMakeLists.txt
ls -l # The symlink should have gone away

qt creator中选择打开文件,选择CMakeList.txt即可导入。

ROS基础——Qt配置_第6张图片

ROS基础——Qt配置_第7张图片

ROS基础——Qt配置_第8张图片

ROS基础——Qt配置_第9张图片

 

三、安装配置ros-kinetic-qt-ros

ROS自带功能包可以直接创建带有Qt界面的package,方法为通过catkin_create_qt_pkg命令创建,然后导入Qt中进一步修改为适合自己的GUI节点。

安装命令: 

sudo apt-get install ros-kinetic-qt-ros

功能包创建命令:

cd qt_gui_ws/src/
catkin_create_qt_pkg gui_node

 

补充:修复qtcreator无法输入中文问题

安装fcitx

sudo apt-get install fcitx-libs-qt fcitx-libs-qt5

获取libfcitxplatforminputcontextplugin.so并移动到qt目录下platforminputcontexts中

#获取
sudo find / -name "libfcitxplatforminputcontextplugin.so"
cp -a  ~/                 
chmod +x ~/libfcitxplatforminputcontextplugin.so

#移动
cp libfcitxplatforminputcontextplugin.so /opt/qt59/plugins/platforminputcontexts

 

四、配置qt5版本

通过catkin_create_qt_pkg命令创建的功能包默认采用qt4版本,但后续开发需要改用qt5的话,或者需要整合rviz(kinetic版本之后的rviz基于qt5版本),只需要修改CMakeList.txt文件即可。

(1)删除qt4配置信息

##############################################################################
# Qt Environment
##############################################################################

# this comes from qt_build's qt-ros.cmake which is automatically 
# included via the dependency call in package.xml
rosbuild_prepare_qt4(QtCore QtGui) # Add the appropriate components to the component list here

##############################################################################
# Sections
##############################################################################
# ${CMAKE_CURRENT_SOURCE_DIR}:/home/robot/ros_workspace/robot_ws/src/robot_gui
file(GLOB QT_FORMS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ui/*.ui)
file(GLOB QT_RESOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} resources/*.qrc)
file(GLOB_RECURSE QT_MOC RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS include/robot_gui/*.hpp)

QT4_ADD_RESOURCES(QT_RESOURCES_CPP ${QT_RESOURCES})
QT4_WRAP_UI(QT_FORMS_HPP ${QT_FORMS})
QT4_WRAP_CPP(QT_MOC_HPP ${QT_MOC})

(2)添加qt5配置信息,并修改kit为Qt5版本

##############################################################################
# Qt Environment
##############################################################################
## This setting causes Qt's "MOC" generation to happen automatically.
## CMAKE_AUTOMOC: pre build
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)

# this comes from qt_build's qt-ros.cmake which is automatically 
# included via the dependency call in package.xml
find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED)
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS})

##############################################################################
# Sections
##############################################################################
file(GLOB QT_FORMS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ui/*.ui)
file(GLOB QT_RESOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} resources/*.qrc)
file(GLOB_RECURSE QT_MOC RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS include/robot_gui/*.hpp)

QT5_WRAP_UI(QT_FORMS_HPP ${QT_FORMS})
QT5_ADD_RESOURCES(QT_RESOURCES_CPP ${QT_RESOURCES})
QT5_WRAP_CPP(QT_MOC_HPP ${QT_MOC})

(3)给执行文件添加依赖

target_link_libraries(node ${QT_LIBRARIES} ${catkin_LIBRARIES} Qt5::Widgets)

(4)修改kit为qt5

 

参考:

https://github.com/Levi-Armstrong/ros_qtc_plugins/wiki/Setup-Qt-Creator-for-ROS#section1.6(最为详细)

https://www.ncnynl.com/archives/201701/1277.html

https://blog.csdn.net/u013453604/article/details/52186375

https://ros-industrial.github.io/ros_qtc_plugin/_source/How-to-Install-Users.html

https://blog.csdn.net/wyy626562203/article/details/79300593

你可能感兴趣的:(ROS,Qt)