基于Qt和Ros实现人机交互(一)——环境配置

Qt安装

1. 直接通过命令安装:sudo apt-get install qtcreator

    这种安装方式比较方便,比较快,但是使用过程中多多少少会出现一些问题。一般推荐第二种安装方式进行安装。

2. 下载QT安装包安装

Index of /archive/qthttps://download.qt.io/archive/qt/        推荐Qt5.0以上版本,本人自己下载的是Qt5.9版本,具体安装细节这里不进行详细阐述,根据需求安装即可。

创建Qt功能包

1. 安装依赖

        sudo apt-get install ros-melodic-qt-create
        sudo apt-get install ros-melodic-qt-build

        melodic是我的版本,请根据自己的版本安装。安装完成以后即可通过catkin_create_qt_pkg命令创建ros gui包

2. 创建功能包

① 实例:

        mkdir -p ~/catkin_ws/src

        cd ~/catkin_ws/

        catkin_make

        cd ~/catkin_ws/src/ 

        catkin_create_qt_pkg demo01 roscpp rviz

  ② 创建完成以后通过qtcreator打开QT,文件->打开项目->选择工作空间下的cmakelist.txt(==注意并非功能包下的==)

  ③ 打开后点击项目: 将build的构建目录改为当前工作空间的build文件夹

  ④ 然后右键项目->执行cmake: 如果发现报版本不匹配的错误(因为创建的为qt4的版本,这里用的是qt5)

3. 配置cmakelist.txt

        ① 增加内容
                set(CATKIN_INCLUDE_CURRENT_DIR ON)
                find_package(Qt5 REQUIRED Core Widgets)
                set(QT_LIBRARIES Qt5::Widgets)

        ② 删除内容
                注释调rosbuild_prepare_qt4(QtCore QtGui)

        ③ 修改内容        
                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})

配置完成以后再次执行cmake


4. 更改功能包main_window.hpp

         由于Q4t中包含QMainWindow在QtGui中,在Qt5中更改为QtWidgets类中,所以需要作更改: ./include/功能包名/main_window.hpp
        #include <QtGui/QMainWindow>改为#include <QtWidgets/QMainWindow>


5. 没有ui_main_window.h这个头文件

点击运行出现如下问题:

         ① 根据路径找到,并打开main_window.hpp,发现文件夹中只有qnode.hpp,缺少了ui_main_window.h文件,
        ② 找到ui文件夹,并在终端打开执行uic main_window.ui >ui_main_window.h以生成一个ui_main_window.h文件
        ③ 生成的ui_main_window.h头文件复制到main_window.hpp所在的include文件夹中,现在就可以成功编译了       参考地址:ROS Qt5 librviz人机交互界面开发一(配置QT环境) - 古月居

6. 安装qt5-default

        第五步运行后出现 could not find a Qt installation of '' "
        解决: sudo apt-get install qt5-default

7. UI界面无法更新

        修改ui界面完成后保存,对项目重新构建,然后到ui目录中运行下面的命令
        uic main_window.ui >ui_main_window.h && \cp -rf ui_main_window.h ~/catkin_qt/src/功能包名/include/功能包名/
        然后重新运行,在即可显示新更新的UI界面

        通过上述配置可以通过QT实现ros的人机交互,缺点就是此配置并不是一劳永逸的,每次创建新的功能包都需要重写配置,暂时还没有查阅到好的方法,大家可以在评论区给点建议进行优化。


版权声明:本文为weixin_64501326原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。