ROS Qt5 librviz人机交互界面开发一(配置QT环境)

644
5
2020年4月13日 12时32分

一,首先安装ros对qt pkg的支持

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

 

这样就能通过:catkin_create_qt_pkg命令创建ros gui包了:

在src目录下创建包:

 

catkin_create_qt_pkg qt_ros_test

 

在这里插入图片描述

 

二,安装qtcreator

sudo apt-get install qtcreator

 

当然你也可以使用官方deb安装包安装,但是安装后必须将要使用的qtcreator放到环境变量中,即通过命令qtcreator可以打开当前版本的qt,否则不能使用ros相关的环境变量,而导致编译失败

 

三,配置qtcreator

1,打开qtcreator:

qtcreator

 

文件->打开项目->选择工作空间下的cmakelist.txt(注意并非功能包下的):

 

在这里插入图片描述

 

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

 

在这里插入图片描述

 

在这里插入图片描述

 

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

 

Found unsuitable Qt version "" from NOTFOUND
CMake Error at ros_qt_tests/CMakeLists.txt:36 (QT4_ADD_RESOURCES):
Unknown CMake command "QT4_ADD_RESOURCES".

 

则继续往下看2,3步,如果没有直接跳过下面两步:

 

2,将功能包的cmakelist.txt进行更改:

 

更改为如下,注意将cy_robot_monitor更改为自己的功能包名

 

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

cmake_minimum_required(VERSION 2.8.0)
project(cyrobot_monitor)
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/cyrobot_monitor/*.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(cyrobot_monitor ${QT_SOURCES} ${QT_RESOURCES_CPP} ${QT_FORMS_HPP} ${QT_MOC_HPP})
target_link_libraries(cyrobot_monitor ${QT_LIBRARIES} ${catkin_LIBRARIES})
install(TARGETS cyrobot_monitor RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})

3,功能包的package.xml更改:

 

注意将cy_robot_monitor更改为自己的功能包名

<?xml version="1.0"?>
<package>
<name>cyrobot_monitor</name>
<version>0.1.0</version>
<description>

cyrobot_monitor

</description>
<maintainer email="chengyangkj@gmail.com">chengyangkj</maintainer>
<author>chengyangkj</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>rosc

pend>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>

pp</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>

 

4,保存再次执行cmake:

成功:

 

在这里插入图片描述

 

四,运行可执行文件

 

在项目->run->运行配置 更改要运行的可执行文件名称,并点击绿色三角形运行即可:

 

在这里插入图片描述

发表评论

后才能评论

评论列表(5条)

  • 冷韵 2020年5月19日 下午6:32

    这一步没讲呀,课里也没有

    必须将要使用的qtcreator放到环境变量中,即通过命令qtcreator可以打开当前版本的qt,否则不能使用ros相关的环境变量,而导致编译失败

  • Willzoe 2020年5月7日 下午5:18

    您好,我在打开工程的时候遇到了一个问题:
    当我点击Open Project之后,按照CMake Wizard的引导,在第一步Build Location中设置了build目录;但是在第二步Run CMake中提示我,当前build目录中没有包含cbp文件,需要填写参数(Arguments)来初始化CMake调用。在这里我应该填写什么参数呢?

    • Willzoe 回复 Willzoe 2020年5月7日 下午7:46

      通过安装新版本的qtcreator解决了问题

  • Willzoe 2020年4月15日 上午3:18

    您好 请问Qt在ROS中可以起到什么作用呢?

    代码调试部署还是topic内容显示?

    • 蒋程扬 回复 Willzoe 2020年4月17日 上午10:26

      提供图形化界面,像rviz就是用qt写的