ROS GUI程序开发——配置QT环境

本文最后更新于:2022年5月29日 上午

Step 1: ROS安装配置

  1. 点击查看ROS安装参考教程

  2. 安装ros对qt pkg的支持

    1
    2
    sudo apt-get install ros-kinetic-qt-create
    sudo apt-get install ros-kinetic-qt-build
  3. 安装完成即可通过catkin_create_qt_pkg来创建ros gui包

    1
    2
    3
    mkdir -p ~/catkin_qt/src
    cd catkin_qt/src/
    catkin_create_qt_pkg qt_ros

Step 2: 安装qtcreator

首先去ros-qtc官网下载自己系统对应版本的qtcreator。

我这里下载的为kinetic离线安装版本:ros-qtc-pluging-kinetic,下载完成后赋予权限再进行安装。

1
2
chmod +x qtcreator-ros-xenial-latest-offline-installer.run 
sudo ./qtcreator-ros-xenial-latest-offline-installer.run

Step 3: 配置项目

打开终端,输入qtcreator-ros启动QT。

新建工作空间

  1. 直接点击“New Project”,选择”Other Project→ROS Workspace→Choose”

    s0tFZ8.png

  2. Workspace Path点击“Browse”,选中自己已有的工作空间目录(注意工作空间需要提前执行catkin_make);

  3. Name和工作空间名称同名即可;

  4. Build system选中CatkinMake,如下图。

    s0tPqf.png

  5. 最后点击Next,选择”Finish“即可。

配置Cmakelist.txt

完成上面的配置,项目已经在qt中打开,点击左侧的小锤子进行编译,发现会有错误提示:error: Unknown CMake command "QT4_ADD_RESOURCES".

s0tsFe.png

这是版本不匹配的错误(因为创建的为qt4的版本,这里用的是qt5),解决方法如下:

  1. 修改功能包的cmakelist.txt
    更改为如下,注意将qt_ros更改为自己的功能包名。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    ##############################################################################
    # CMake
    ##############################################################################

    cmake_minimum_required(VERSION 2.8.0)
    project(qt_ros)
    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 rviz 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/qt_ros/*.hpp *.h)

    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 ${QT_SOURCES} ${QT_RESOURCES_CPP} ${QT_FORMS_HPP} ${QT_MOC_HPP})
    target_link_libraries(qt_ros ${QT_LIBRARIES} ${catkin_LIBRARIES})
    install(TARGETS qt_ros RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})

  2. 修改功能包的package.xml
    注意将qt_ros更改为自己的功能包名

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <?xml version="1.0"?>
    <package>
    <name>qt_ros</name>
    <version>0.1.0</version>
    <description>

    qt_ros

    </description>
    <maintainer email="TODO@gmail.com">TODO</maintainer>
    <author>TODO</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-->
    <!--run_depend>qt_build</run_depend-->
    <run_depend>roscpp</run_depend>
    <!--run_depend>libqt4-dev</run_depend-->
    <build_depend>roscpp</build_depend>
    <run_depend>roscpp</run_depend>
    <build_depend>rospy</build_depend>
    <run_depend>rospy</run_depend>

    <build_depend>rviz</build_depend>
    <run_depend>rviz</run_depend>
    <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>

修改main_window.hpp

在功能包下找到main_window.hpp,点击打开:

s003o6.png

1
#include <QtGui/QMainWindow>

改为

1
#include <QMainWindow>

修改完成后,再次进行编译即可成功。

Step 4: 运行可执行文件

  1. 修改运行配置,添加ROS Run StepROS Attach to Node,点击左侧栏的Projects -> Run Settings -> Add -> ROS Run Configuration -> Add Run Step-> ROS Run Step ,下拉找到功能包和节点可执行文件,如下图。
    s0aTYD.png

    s0aoFO.png
    s0a7fe.png

  2. 启动节点管理器

    1
    roscore
  3. 最后点击左下角“绿色三角”Run,即可运行程序。

    • 勾选Use environment variables
    • 点击Connect按钮

s0wxJS.png

参考链接

【1】https://blog.csdn.net/qq_38441692/article/details/105158790

【2】https://www.ncnynl.com/archives/201903/2864.html


ROS GUI程序开发——配置QT环境
https://kevinloongc.github.io/posts/c44ead4c.html
作者
Kevin Loongc
发布于
2021年1月15日
许可协议