ROS QtCreator GUI开发环境搭建
目录
前言
- 操作系统:Ubuntu18.04LTS
- ROS版本:melodic
安装pkg
$ sudo apt-get install ros-melodic-qt-create
$ sudo apt-get install ros-melodic-qt-build
安装 ROS Qt Creator Plug-in
参考:https://ros-qtc-plugin.readthedocs.io/en/latest/_source/How-to-Install-Users.html#qt-installer-procedure
使用命令行启动 QtCreator
$ qtcreator-ros
如果启动失败,可能的原因是安装过其它版本的Qt。打开 QtCreator ROS 插件的安装目录,在lib目录下可以看到这个插件依赖的是Qt5.12.4,因此需要安装该版本的Qt.
安装Qt5
下载离线安装包 qt-opensource-linux-x64-5.12.4.run,进行安装。
配置环境变量
- 在用户目录下编辑 .bashrc 文件
$ vim ~/.bashrc
- 在末尾添加以下四行
# 配置QT
export QTDIR=/home/cs/programs/Qt5.12.4/5.12.4/gcc_64
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QT_SELECT=Qt5.12.4
- 更新配置
$ source ~/.bashrc
使用 qtchooser 制定Qt版本
$ qtchooser -install Qt5.12.4 /path/to/Qt5.12.4/qmake/file
查看当前qmake版本
$ qmake -v
如果显示qmake的版本是5.12.4,则可运行 qtcreator-ros 启动QtCreator。
建立QtCreator工作区
- 启动 QtCreator ,打开【文件】/【新建文件或项目】,选择【其他项目】/【ROS Workspace】,点击【Choose】。
- 输入名称,比如 catkin_qt ,工作目录选中 catkin 的工作目录。名称要与工作目录的名称一致。
- 退出 QtCreator 。
测试
- 创建一个带GUI的包
$ cd ~/catkin_qt/src
$ sudo ros_create_qt_pkg qt_ros_test
这样创建的包,默认采用的 Qt4 作为图形界面的库,需要在下一步中修改为 Qt5 。
2. 重新打开 QtCreator 工作区,编辑 qt_ros_test/CMakeList.txt 文件。
##############################################################################
# CMake
##############################################################################
cmake_minimum_required(VERSION 2.8.0)
project(qt_ros_test)
# 添加下面一行,避免找不到 ui_main_window.hpp 头文件错误。
SET(CMAKE_INCLUDE_CURRENT_DIR ON)
##############################################################################
# Catkin
##############################################################################
# qt_build provides the qt cmake glue, roscpp the comms for a default talker
find_package(catkin REQUIRED COMPONENTS roscpp) # 删除 qt_build
# 添加下面两行
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
# 注释下面一行,禁用 Qt4 。
#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/qt_ros_test/*.hpp)
# 注释下面三行,禁用 Qt4 。
#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 。
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(qt_ros_test ${QT_SOURCES} ${QT_RESOURCES_CPP} ${QT_FORMS_HPP} ${QT_MOC_HPP})
target_link_libraries(qt_ros_test ${QT_LIBRARIES} ${catkin_LIBRARIES})
install(TARGETS qt_ros_test RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
- 编辑 qt_ros_test/package.xml 文件。
<?xml version="1.0"?>
<package>
<name>qt_ros_test</name>
<version>0.1.0</version>
<description>
qt_ros_test
</description>
<maintainer email="cs@gmail.com">cs</maintainer>
<author>cs</author>
<license>BSD</license>
<!-- <url type="bugtracker">https://github.com/stonier/qt_ros/issues</url> -->
<!-- <url type="repository">https://github.com/stonier/qt_ros</url> -->
<buildtool_depend>catkin</buildtool_depend>
<!--<build_depend>qt_build</build_depend>--> <!--注释此行-->
<build_depend>roscpp</build_depend>
<!-- <build_depend>libqt4-dev</build_depend>--><!--注释此行,禁用 qt4-->
<!-- <run_depend>qt_build</run_depend>--><!--注释此行-->
<run_depend>roscpp</run_depend>
<!-- <run_depend>libqt4-dev</run_depend>--><!--注释此行,禁用 qt4-->
<!-- 添加下面四行,启用 qt5 -->
<build_depend>qtbase5-dev</build_depend>
<run_depend>libqt5-core</run_depend>
<run_depend>libqt5-gui</run_depend>
<run_depend>libqt5-widgets</run_depend>
</package>
- 右键项目目录 catkin_qt ,点击【构建/build】
- 在 QtCreator 中打开 ROS Terminals 窗口,运行 roscore 。
- 在 QtCreator 中按【Ctrl+5】切换到项目模式,选择【Build&Run】/【Run】,在运行栏中指定可执行文件和工作目录,分别为 ~/catkin_qt/devel/lib/qt_ros_test/qt_ros_test 和 ~/catkin_qt/devel/lib/qt_ros_test 。
- 运行测试包
执行【Ctrl+R】或点击 QtCreator 左下角三角形。