QT的下载与安装参照这篇文章:https://blog.csdn.net/qq_34911636/article/details/113185626?spm=1001.2014.3001.5501
安装完QT软件之后设置QT软件的快捷打开方式和安装QT-ROS插件相关依赖,具体步骤如下:
在usr/bin/路径下面创建qtcreator文件
sudo gedit /usr/bin/qtcreator
在qtcreator文件里面添加以下内容:
export QT_HOME=/xxxxx/xxxxx/QTxxx/Tools/QtCreator/bin
$QT_HOME/qtcreator $*
其中/xxxxx/xxxxx/为具体的安装路径,比如我们上面举例的安装路径为/opt/,那么就把/xxxxx/xxxxx/替换为/opt/
更改qtcreator文件的可执行权限
sudo chmod 777 /usr/bin/qtcreator
然后在终端中输入qtcreator命令即可打开QT
安装依赖:
sudo apt-get install ros-melodic-qt-create
sudo apt-get install ros-melodic-qt-build
(1) 创建ROS-QT功能包
创建ROS功能包
cd /root
mkdir -p catkin_demo/src
catkin_init_workspace
cd ..
catkin_make
创建ROS-QT功能包
//catkin_create_qt_pkg命令用于创建带UI界面的QT-ROS功能包,依赖库根据需求填写如:catkin_create_qt_pkg qtros rviz std_msgs rospy roscpp
cd ~/catkin_demo/src
catkin_create_qt_pkg qtros rviz std_msgs rospy roscpp
cd ..
catkin_make
执行catkin_make命令之后会出现如下错误:
出错的原因是没有找到对应的QT4版本,因为我们的功能包默认使用的是QT4版本,而我们安装的版本是QT5所以需要更改CMakeList.txt文件
1 CMakeList.txt文件中设置包含当前目录并添加C++11标准,向CMakeList.txt文件添加以下两个设置
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
2 CMakeList.txt文件中添加QT库
find_package(Qt5 REQUIRED Core Widgets)
set(QT_LIBRARIES Qt5::Widgets)
3 把CMakeList.txt文件中的rosbuild_prepare_qt4(QtCore QtGui)注释掉
4 把CMakeList.txt文件QT4......全部改成QT5
QT4_ADD_RESOURCES(QT_RESOURCES_CPP ${QT_RESOURCES})
QT4_WRAP_UI(QT_FORMS_HPP ${QT_FORMS})
QT4_WRAP_CPP(QT_MOC_HPP ${QT_MOC})
改成如下:
QT5_ADD_RESOURCES(QT_RESOURCES_CPP ${QT_RESOURCES})
QT5_WRAP_UI(QT_FORMS_HPP ${QT_FORMS})
QT5_WRAP_CPP(QT_MOC_HPP ${QT_MOC})
5 把ROS-QT功能包中main_window.hpp头文件中的#include <QtGui/QMainWindow> 改成#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMainWindow>
基础ROS-QT功能包CMakeList.txt文件的设置参考如下:
##############################################################################
# CMake
##############################################################################
cmake_minimum_required(VERSION 2.8.0)
project(qtros)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
##############################################################################
# Catkin
##############################################################################
# qt_build provides the qt cmake glue, roscpp the comms for a default talker
find_package(catkin REQUIRED COMPONENTS rviz qt_build roscpp)
find_package(Qt5 REQUIRED Core Widgets)
set(QT_LIBRARIES Qt5::Widgets)
include_directories(${catkin_INCLUDE_DIRS})
# Use this to define what the package will export (e.g. libs, headers).
# Since the default here is to produce only a binary, we don't worry about
# exporting anything.
catkin_package()
##############################################################################
# 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
##############################################################################
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/qtros/*.hpp)
QT5_ADD_RESOURCES(QT_RESOURCES_CPP ${QT_RESOURCES})
QT5_WRAP_UI(QT_FORMS_HPP ${QT_FORMS})
QT5_WRAP_CPP(QT_MOC_HPP ${QT_MOC})
##############################################################################
# Sources
##############################################################################
file(GLOB_RECURSE QT_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS src/*.cpp)
##############################################################################
# Binaries
##############################################################################
add_executable(qtros ${QT_SOURCES} ${QT_RESOURCES_CPP} ${QT_FORMS_HPP} ${QT_MOC_HPP})
target_link_libraries(qtros ${QT_LIBRARIES} ${catkin_LIBRARIES})
install(TARGETS qtros RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
改完之后在cd ~/catkin_demo目录下执行catkin_make命令,执行catkin_make命令之后设置一下环境变量source devel/setup.bash
然后在终端中输入:
即可成功运行程序:
(2) 在终端中输入:qtcreator,打开QT软件
(3)点击“文件”->“打开文件或项目”出现如下对话框,找到工作空间catkin_ws/src目录的CMakeList.txt,选择”CMakeList.txt“并点击”打开“
(3)打开”CMakeList.txt“文件之后出现如下界面,在该界面中主要关注Imported Kit-temporary里的Build选项,Build选项的路径一定要选择在当前编译工作空间下的Build目录,设置完路径之后点击右下方的“Configure Project ”编译项目
项目成功编译之后在左边的Project会出现完整当前的工作空间如下所示:
(5)((5)-(8)这4个步骤不是必须的,如果第(4)步项目编译成功则直接跳到第(9)步,如果项目没有成功展开则需要设置(5)-(8)步骤)如果Project没有出现上图所示完整的项目文件,则说明工程没有正常的建立,需要继续进行下一步执行相应的设置。
(6)点击左边的”Project“,出现如下的界面,然后点击左上角"Manage Kits"
(7) 在"Manage Kits"设置里面创建新的Kit如下所示,点击"Add"创建新的Kit然后修改一下''Name'',新的Kit命名为"demo"(名字可以任意取),设置完成之后点击"OK"
(8)创建完新的Kit,在Project目录下可以看到新建的Kit,然后我们选择demo->Build,查看Build directory中的路径是否是当前工作空间目录下的build,如果不是需要把路径设置为当前工作空间下的build,......./catkin_xxx/build
(9)完成上述的设置之后在“Edit”目录的Project里可以看到完整的功能包如下所示:qtros就是在工作空间catkin_demo下所建立的QT-ROS功能包,/root目录下显示的文件夹就是工作空间catkin_demo,然后点击左下角"绿色三角型"进行项目编译