ROS+Qt5界面开发—— 配置环境和创建工作空间

配置环境和创建工作空间

  1. 安装Qt5.x.x,本人安装Qt5.14.2,这个安装教程挺多的,这里不赘述。
  2. 安装ROS,本人使用的Ubuntu16.04,因此安装kinetic ,此处不赘述。
  3. ××此处很关键×× 安装ros-qt插件
sudo add-apt-repository ppa:levi-armstrong/qt-libraries-trusty
sudo add-apt-repository ppa:levi-armstrong/ppa  
sudo apt-get update 
sudo apt-get install qt59creator-plugin-ros(这里也可以是qt57creator-plugin-ros)

安装完成在Dash home出现Qt 5.9.1 Creator, 点击即可启动带插件的QtCreator
ROS+Qt5界面开发—— 配置环境和创建工作空间_第1张图片

  1. 此时打开Qt 5.9.1 Creator可以创建ROS工作空间了,但是若想将ROS和Qt界面联合开发,还需要安装ros的qt包,ROS自带功能包可以直接创建带有Qt界面的package,方法为通过catkin_create_qt_pkg命令创建,然后导入Qt中进一步修改为适合自己的GUI节点。
    创建命令:
sudo apt-get install ros-kinetic-qt-ros
  1. 创建第一个ROS+Qt工作空间
    (1)首先创建一个ros_ws工作空间,即创建一个文件夹,用以创建ros和qt功能包
    (2)打开Qt 5.9.1 Creator,创建ROS工作空间
    ROS+Qt5界面开发—— 配置环境和创建工作空间_第2张图片工作空间的名字和路径,跟刚才创建的ros_ws一致。
    ROS+Qt5界面开发—— 配置环境和创建工作空间_第3张图片(3)关闭qt creator,打开刚才创建的ros_ws文件夹目录,可以看到如下:
    ROS+Qt5界面开发—— 配置环境和创建工作空间_第4张图片
    (4)此时,打开src文件夹,创建qt功能包
    命令如下:
catkin_create_qt_pkg GUI

(5)此时,打开Qt 5.9.1 Creator,导入刚才创建的工作空间,如下所示:
ROS+Qt5界面开发—— 配置环境和创建工作空间_第5张图片(6)点开软件左侧project,进入配置运行属性。
选择add run step:
ROS+Qt5界面开发—— 配置环境和创建工作空间_第6张图片
在下拉列表里选择ros run step即可,再将我们刚才创建gui功能包的名字输入。
ROS+Qt5界面开发—— 配置环境和创建工作空间_第7张图片
(7)ctrl+alt+t 打开终端,启动roscore管理器后,点击Qt 5.9.1 Creator中左下角的小三角运行。
ROS+Qt5界面开发—— 配置环境和创建工作空间_第8张图片
(8)运行成功,第一个工作空间创建完成,第一个ros-qt 界面软件也成功创建。
ROS+Qt5界面开发—— 配置环境和创建工作空间_第9张图片成功运行出来的GUI界面的内容是 ros功能包自动创建的,我们在这个基础上开发也很简单了,自此开启我们的编程之旅吧!
内容补充:
后续自己编程实现可能会出现编译时Qt的错误,用ros-qt创建的功能包中默认使用qt4,此时应修改为QT5,在功能包CMakelists.txt文件中,修改如下:

##############################################################################
# CMake
##############################################################################

cmake_minimum_required(VERSION 2.8.0)
project(GUI)

##############################################################################
# Catkin
##############################################################################
set(CMAKE_INCLUDE_CURRENT_DIR ON)
#添加c++11的支持
set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")

# qt_build provides the qt cmake glue, roscpp the comms for a default talker
find_package(catkin REQUIRED COMPONENTS qt_build roscpp std_msgs)
include_directories(${catkin_INCLUDE_DIRS})
####用QT5环境###
find_package(Qt5 REQUIRED Core Widgets Multimedia)
set(QT_LIBRARIES Qt5::Widgets Qt5::Multimedia)

# 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/GUI/*.hpp)
##用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(GUI ${QT_SOURCES} ${QT_RESOURCES_CPP} ${QT_FORMS_HPP} ${QT_MOC_HPP})
target_link_libraries(GUI ${QT_LIBRARIES} ${catkin_LIBRARIES})
install(TARGETS GUI RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})


修改之后编译会报main_window.hpp中QGui的错误,改为

#include 

你可能感兴趣的:(ros,qt)