ROS GUI程序开发——配置QT环境
本文最后更新于:2022年5月29日 上午
Step 1: ROS安装配置
点击查看ROS安装参考教程。
安装ros对qt pkg的支持
1
2sudo apt-get install ros-kinetic-qt-create
sudo apt-get install ros-kinetic-qt-build安装完成即可通过catkin_create_qt_pkg来创建ros gui包
1
2
3mkdir -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 |
|
Step 3: 配置项目
打开终端,输入qtcreator-ros
启动QT。
新建工作空间
直接点击“New Project”,选择”Other Project→ROS Workspace→Choose”
Workspace Path点击“Browse”,选中自己已有的工作空间目录(注意工作空间需要提前执行catkin_make);
Name和工作空间名称同名即可;
Build system选中CatkinMake,如下图。
最后点击Next,选择”Finish“即可。
配置Cmakelist.txt
完成上面的配置,项目已经在qt中打开,点击左侧的小锤子进行编译,发现会有错误提示:error: Unknown CMake command "QT4_ADD_RESOURCES".
这是版本不匹配的错误(因为创建的为qt4的版本,这里用的是qt5),解决方法如下:
修改功能包的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})修改功能包的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,点击打开:
1 |
|
改为
1 |
|
修改完成后,再次进行编译即可成功。
Step 4: 运行可执行文件
修改运行配置,添加
ROS Run Step
和ROS Attach to Node
,点击左侧栏的Projects
->Run Settings
->Add
->ROS Run Configuration
->Add Run Step
->ROS Run Step
,下拉找到功能包和节点可执行文件,如下图。启动节点管理器
1
roscore
最后点击左下角
“绿色三角”Run
,即可运行程序。- 勾选
Use environment variables
- 点击Connect按钮
- 勾选
参考链接:
【1】https://blog.csdn.net/qq_38441692/article/details/105158790