ROS Qt5 librviz人机交互界面开发一(配置QT环境)
一,首先安装ros对qt pkg的支持sudo apt-get install ros-melodic-qt-createsudo apt-get install ros-melodic-qt-build这样就能通过:catkin_create_qt_pkg命令创建ros gui包了:在src目录下创建包:catkin_create_qt_pkg qt_ros_test二,安装......
本系列教程文章专栏:
本系列课程已上线古月学院,欢迎感兴趣的小伙伴订阅:
开发交流QQ群: 797497206
完整项目代码:
github
文章目录
一,首先安装ros对qt pkg的支持
我这里的ros版本为melodic,需要改为自己对应的版本号(目前notice之上的版本不存在qt-create)
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
因为notice之上的ros版本不存在qt-create,因此不能使用catkin_create_qt_pkg进行创建qt模板包,可以下载我更改好的qt模板包,此模板包可以直接编译运行:github
二,编译功能包
1,编译
创建完功能包后需要到工作空间根目录下进行功能包编译:
2,更改功能包的Cmakelist.txt
如果编译发现报版本不匹配的错误(因为创建的为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".
需对功能包的cmakelist.txt做更改(具体更改原因这里不做解释,详细在课程中有解释):
注意ros_qt_demo
需更改为自己的功能包名
##############################################################################
# CMake
##############################################################################
cmake_minimum_required(VERSION 2.8.0)
project(ros_qt_demo)
#add
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 roscpp)
include_directories(${catkin_INCLUDE_DIRS})
#add
find_package(Qt5 REQUIRED Core Widgets)
set(QT_LIBRARIES Qt5::Widgets)
# 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
#remove
#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/ros_qt_demo/*.hpp *.h)
#change
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(ros_qt_demo ${QT_SOURCES} ${QT_RESOURCES_CPP} ${QT_FORMS_HPP} ${QT_MOC_HPP})
target_link_libraries(ros_qt_demo ${QT_LIBRARIES} ${catkin_LIBRARIES})
install(TARGETS ros_qt_demo RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
3,功能包的package.xml更改:
注意将ros_qt_demo
更改为自己的功能包名
<?xml version="1.0"?>
<package>
<name>ros_qt_demo</name>
<version>0.1.0</version>
<description>
ros_qt_demo
</description>
<maintainer email="chengyangkj@qq.com">chengyangkj</maintainer>
<author>chengyangkj</author>
<license>BSD</license>
<!-- <url type="bugtracker">https://github.com/chengyangkj/ros_qt_demo/issues</url> -->
<!-- <url type="repository">https://github.com/chengyangkj/ros_qt_demo</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>rviz</build_depend>
<run_depend>rviz</run_depend>
</package>
4,更改功能包main_window.hpp
如编译遇到main_window.hpp文件报错需要做如下更改:
由于Q4t中包含QMainWindow在QtGui中,在Qt5中更改为QtWidgets类中,所以需要作更改:
./include/功能包名/main_window.hpp
#include <QtGui/QMainWindow>
改为
#include <QtWidgets/QMainWindow>
三,安装qtcreator并打开ROS项目
这里提供两种方法,melodic和kinetic版本建议安装ros qtc pluging版本,安装原生qtcreator版本 在打开项目时可能会失败
(1)安装原生Qtcreator
1,方法一:
sudo apt-get install qtcreator
安装后直接在命令行执行命令:
qtcretor
即可运行
但是这样安装的qt版本比较老,而且我使用的过程中会越用越卡,不推荐这种方式安装
2,方法二:
2.1,通过官方的安装包安装:
官网下载地址
这里我下载的是:
Qt 5.9.9 linux
2.2,更改安装包的可执行权限
这里替换为自己的安装包名
chmod a+x qt-opensource-linux-x64-xxxx.run
2.3,双击安装包名安装
安装时需要注册下qt账户,并在安装界面登陆
安装组件选择上Desktop gcc 64-bit
2.4,添加qtcreator到环境变量
sudo nano /usr/bin/qtcreator
添加如下内容:
QT_HOME更改为自己qt安装路径的bin目录
#!/bin/sh
export QT_HOME=/home/xxxx/Qtxxx/Tools/QtCreator/bin
$QT_HOME/qtcreator $*
2.5,更改可执行权限
sudo chmod a+x /usr/bin/qtcreator
2.6,终端运行
终端输入:
qtcreator
即可运行qt
3,原生qtcreator打开ROS项目
终端输入:
qtcreator
运行qtcreator
文件->打开项目->选择工作空间下的cmakelist.txt(注意并非功能包下的)
打开后点击项目:
将build的构建目录改为当前工作空间的build文件夹:
然后右键项目->执行cmake:
2,保存再次执行cmake:
成功:
4,运行可执行文件
在项目->run->运行配置 更改要运行的可执行文件名称,并点击绿色三角形运行即可:
(2)安装ROS qtc pluging版本qtcreator
如果你是ros melodic版本,上面两个方法可以正常展开项目,但是ros kinetic版本可能不能正常展开。在课程中我也提出你解决方法(新建kit),但是还是可能出现项目不能正常展开的问题,这里可以使用ros-qtc-pluging解决,针对于kinetic版本和melodic版本均适用:
1,下载安装包并安装
首先去ros-qtc官网下载自己系统对应版本的软件(qtcreator):
ros-qtc-pluging
我这里下载的为kinetic离线安装版本:ros-qtc-pluging-kinetic
下载后安装:
安装后会自动在桌面生成图标,点击即可打开
2,创建工作空间
此版本的qtcreator并不能像原生qtcreator打开项目,需要先创建工作空间:
文件->new file or project:
选中ros workspace:
然后workspace path选中自己已有的工作空间目录(注意工作空间需要提前执行catkin_make),name和工作空间名称同名即可,build system选中catkin_make:
点击下一步即可自动展开:
同时也会在工作空间目录下自动生成.workspace后缀的文件,打开工作空间即也通过这个文件打开(file->open file or project )
同理也需要配置run路径(选中devel/lib目录下的可执行程序),即可实现点击绿色三角形按钮同时构建并运行:
创作不易,如果本教程对你有帮助,关注或点个赞再走呗~~
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)