ROS基础——Qt配置

本文详细介绍在Ubuntu16.04+ROS Kinetic环境下,安装Qt5.10.1及配置ros_qtc_plugin的方法,包括QtCreator的设置、ROS工作空间的建立与导入流程,并介绍如何安装配置ros-kinetic-qt-ros,最后给出如何调整为Qt5版本的步骤。

环境:Ubuntu16.04+ROS Kinetic

2018.8更新:经测试在安装ros_qtc_plugin时,会同时安装Qt5.9,因此可以直接安装ros_qtc_plugin,然后进行第一步的(5)进行配置,而不需要额外安装Qt。

2018.9更新:修改ros工作空间的导入方式

目录

一、安装Qt5.10.1

二、配置ros_qtc_plugin

三、安装配置ros-kinetic-qt-ros

四、配置qt5版本


一、安装Qt5.10.1

下载链接:http://download.qt.io/archive/qt/

(1)选择qt-opensource-linux-x64-5.10.1.run下载。

(2)前期准备,安装GNU开发工具集和OpenGL开发库。

sudo apt-get install build-essential libgl1-mesa-dev  libevent-pthreads-2.0.5 doxygen xorg-dev

(3)打开终端,cd到qt-opensource-linux-x64-5.10.1.run的路径下,并输入下面命令安装,可根据版本不同修改命令:

chmod+x qt-opensource-linux-x64-5.10.1.run
sudo ./qt-opensource-linux-x64-5.10.1.run

(4)按提示安装,选上需求项。

(5)修改系统配置文件,选择新版Qt Creator

sudo gedit /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf

 修改内容如下,根据自己安装的qt路径进行修改,如果文件空白,可以直接添加。

/opt/Qt5.10.1/5.10/gcc_64/bin
/opt/Qt5.10.1/5.10/gcc_64/lib

(6)修改Qt启动器

找到qtcreater的快捷方式并找到其路径,打开终端,cd到该路径下并用gedit打开快捷方式,在绝对路径前增加内容:bash -i -c。这步必须完成,否则无法编译ROS工程。

图标路径(通常)

/usr/share/applications

 修改前

Exec=/opt/qt59/bin/qtcreator %F

 修改后

Exec=bash -i -c /opt/qt59/bin/qtcreator %F

 

二、配置ros_qtc_plugin

(1)下载安装ros_qtc_plugin

sudo add-apt-repository ppa:levi-armstrong/qt-libraries-xenial
sudo add-apt-repository ppa:levi-armstrong/ppa
sudo apt-get update && sudo apt-get install qt57creator-plugin-ros

安装成功后,在新建项目的其他项目中可以看到ROS Workspace(注意Qt的版本要求最低为Qt 5.5.0)

修改构建套件,新建套件并配置为自己的套件,同时删除CMake Configuration里的 CMAKE_PREFIX_PATH,防止覆盖系统中与其同名的值,完成设置后需将新建的套件设置为默认套件。

删除内容:

CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}

(2)新建工程

注意:不建议直接采用qt creator创建工作空间,容易产生无法导入所有文件的情况

1、qt creator中选择其他项目中的ROS Workspace来新建工作空间。

2、新建工作空间为空,可以在src目录下选择新建文件,创建包(注意:需要在Catkin里填写依赖包)。

3、在新建功能包中可以通过添加新文件创建节点。

(3)导入工程

手段二为常用导入手段,较手段一简单,但经验证无法导入所有文件,造成在程序编写中出现问题。因此建议采用手段一。

手段一(推荐)

1、qt creator中选择其他项目中的ROS Workspace来新建工作空间。

2、工作空间的名字与需要导入的工作空间同名,然后选择需要导入工作空间的路径。

3、进入 Projects,修改Build设置,删除默认Build Steps和Clean Steps,然后新建自定义steps,填写内容参考如下。选择bulid文件目标下该功能包的目录。

4、修改Run设置,新建自定义Executable,选择执行目录和执行文件,根据需要执行的节点选择对应执行文件。 

手段二(不推荐)

打开终端,cd到工作空间的src目录下,运行下面命令,修改CMakeList.txt状态。

cd ~/catkin_ws/src
ls -l  # Take note of the actual symlink target
sed -i '' CMakeLists.txt
ls -l # The symlink should have gone away

qt creator中选择打开文件,选择CMakeList.txt即可导入。

 

三、安装配置ros-kinetic-qt-ros

ROS自带功能包可以直接创建带有Qt界面的package,方法为通过catkin_create_qt_pkg命令创建,然后导入Qt中进一步修改为适合自己的GUI节点。

安装命令: 

sudo apt-get install ros-kinetic-qt-ros

功能包创建命令:

cd qt_gui_ws/src/
catkin_create_qt_pkg gui_node

补充:修复qtcreator无法输入中文问题

安装fcitx

sudo apt-get install fcitx-libs-qt fcitx-libs-qt5

获取libfcitxplatforminputcontextplugin.so并移动到qt目录下platforminputcontexts中

#获取
sudo find / -name "libfcitxplatforminputcontextplugin.so"
cp -a <file address> ~/                 
chmod +x ~/libfcitxplatforminputcontextplugin.so

#移动
cp libfcitxplatforminputcontextplugin.so /opt/qt59/plugins/platforminputcontexts

 

四、配置qt5版本

通过catkin_create_qt_pkg命令创建的功能包默认采用qt4版本,但后续开发需要改用qt5的话,或者需要整合rviz(kinetic版本之后的rviz基于qt5版本),只需要修改CMakeList.txt文件即可。

(1)删除qt4配置信息

##############################################################################
# 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
##############################################################################
# ${CMAKE_CURRENT_SOURCE_DIR}:/home/robot/ros_workspace/robot_ws/src/robot_gui
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/robot_gui/*.hpp)

QT4_ADD_RESOURCES(QT_RESOURCES_CPP ${QT_RESOURCES})
QT4_WRAP_UI(QT_FORMS_HPP ${QT_FORMS})
QT4_WRAP_CPP(QT_MOC_HPP ${QT_MOC})

(2)添加qt5配置信息,并修改kit为Qt5版本

##############################################################################
# Qt Environment
##############################################################################
## This setting causes Qt's "MOC" generation to happen automatically.
## CMAKE_AUTOMOC: pre build
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)

# this comes from qt_build's qt-ros.cmake which is automatically 
# included via the dependency call in package.xml
find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED)
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS})

##############################################################################
# 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/robot_gui/*.hpp)

QT5_WRAP_UI(QT_FORMS_HPP ${QT_FORMS})
QT5_ADD_RESOURCES(QT_RESOURCES_CPP ${QT_RESOURCES})
QT5_WRAP_CPP(QT_MOC_HPP ${QT_MOC})

(3)给执行文件添加依赖

target_link_libraries(node ${QT_LIBRARIES} ${catkin_LIBRARIES} Qt5::Widgets)

(4)修改kit为qt5

 

参考

Setup Qt Creator for ROS

ros_qtc_plugin

ROS与C++入门教程-搭建开发环境(QT+ros_qtc_plugin)

如何使用Qt插件在Qt中进行ROS开发

 

QT配置ROS的详细方法如下: - **安装ros_qtc_plugin插件**:由于原生的Qt框架无法方便快捷地开发ROS项目,因此需要安装ROS industrial提供的基于Qt Creator的ROS集成开发环境插件 —— ros_qtc_plugin,以帮助在Qt Creator中更轻松地编写、调试和测试ROS程序。在Linux系统下,可通过以下命令安装: ```bash sudo add-apt-repository ppa:levi-armstrong/qt-libraries-xenial sudo add-apt-repository ppa:levi-armstrong/ppa sudo apt update && sudo apt install qt57creator sudo apt install qt57creator-plugin-ros ``` 注:前两条命令是添加key,执行成功后会提示“OK”,如果多次不成功,则需要配置“软件和更新”。完成上述步骤后,ros_qtc_plugin插件应该就安装好了 [^1][^3]。 - **设置环境变量**:在Qt的系统环境中添加编译环境变量和运行环境变量,对于ROS1可直接在CMakeList.txt中添加Ros环境变量,而ROS2则需手动添加。运行时,还需配置ROS的变量`ROS_MASTER_URI`,具体位置在qt的Build Environment,设置为`ROS_MASTER_URI = http://localhost:11311` [^2][^3]。 在CMakeList.txt中添加Ros环境变量示例: ```cmake # 查找ROS相关的依赖包 find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs ) # 设置catkin工作空间 catkin_package( CATKIN_DEPENDS roscpp rospy std_msgs ) # 包含ROS的头文件路径 include_directories( ${catkin_INCLUDE_DIRS} ) ``` - **创建ROS工作空间与软件包**:在Qt Creator中,可使用ROS插件创建和管理ROS软件包。在Qt Creator的“Welcome”界面,点击“New Project”按钮,在“New Project”对话框中,选择“ROS Workspace”下的“ROS Package”模板,点击“Choose”,在“Create ROS Package”对话框中,输入软件包的名称、依赖关系等信息,并指定软件包的路径,然后点击“Create”,Qt Creator将自动生成ROS软件包的基本结构和配置文件 [^1][^4]。 也可以不使用QT自带的包创建工具,而是使用原本的ROS创建包工具在工作空间的src目录下创建,例如使用ROS2的创建包命令: ```bash ros2 pkg create village_wang --build-type ament_cmake --dependencies rclcpp ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值