ROS Qt环境的搭建及基础知识介绍
文章目录
1. 开发环境搭建
1.1 qtcreator安装
Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(成为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。
特点:丰富的图像化界面,跨平台
-
通过apt安装
sudo apt-get install qtcreator
-
通过安装包安装:
-
安装包下载地址:http://download.qt.io/archive/qt/(我选择5.9.9)
-
安装包添加可执行权限:
chmod a+x qt-opensource-linux-x64-5.9.9.run
双击安装包图标进行安装:
-
-
添加qtcreator到环境变量:
sudo nano /usr/bin/qtcreator
添加如下内容:
#!/bin/sh export QT_HOME=/home/xxxx/Qtxxx/Tools/QtCreator/bin $QT_HOME/qtcreator $*
-
更改权限:
chmod a+x /usr/bin/qtcreator
-
终端运行Qt
qtcreator
1.2 catkin_create_qt_pkg环境配置
-
安装依赖(ros是melodic版本):
sudo apt-get install ros-melodic-qt-create
sudo apt-get install ros-melodic-qt-build
sudo apt-get install qtmultimedia5-dev
-
创建Qt功能包:
catkin_create_qt_pkg 功能包名 依赖1 依赖2
mkdir -p ~/catkin_qt/src cd ~/catkin_qt/src catkin_create_qt_pkg class1_ros_qt_demo roscpp rviz
cd ~/catkin_qt catkin_make #编译该空间,会发现报编译错误
编译报错:
Invoking "make" failed
1.3 配置功能包
-
配置功能包:更改功能包class1_ros_qt_demo下的CMakeLists.txt:
-
设置包含当前目录:
set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
添加qt库:
find_package(Qt5 REQUIRED Core Widgets) set(QT_LIBRARIES Qt5::Widgets)
-
删除:
rosbuild_prepare_qt4(QtCore QtGui)
-
更改
QT4_ADD_RESOURCES(QT_RESOURCES_CPP) ${QT_RESOURCES}) QT4_WRAP_UI(QT_FORMS_HPP ${QT_FORMS}) QT4_WRAP_CPP(QT_MOC_HPP ${QT_MOC})
改为:
QT5_ADD_RESOURCES(QT_RESOURCES_CPP) ${QT_RESOURCES}) QT5_WRAP_UI(QT_FORMS_HPP ${QT_FORMS}) QT5_WRAP_CPP(QT_MOC_HPP ${QT_MOC})
再次编译还会报错:
Invoking "make -j1 -l1" failed
-
再次更改
打开
~/catkin_qt/src/class1_ros_qt_demo/include/class1_ros_qt_demo/main_window.hpp
文件,将:#include <QtGui/QMainWindow>
改为:
#include <QtWidgets/QMainWindow>
再次编译,成功!
-
刷新终端,使工作空间中的环境变量生效:
source ~/catkin_qt/devel/setup.bash
-
打开Qt提供的基础框架
cd rosrun class1_ros_qt_demo class1_ros_qt_demo
打开主节点:
roscore
输入如下图中的ip,然后点击connect便可成功创建/chatter节点,进行通讯:
rostopic list #查看节点,上图中的节点为/chatter
rostopic echo chatter
-
2. Qt基础
-
常用控件:
Button, label, CheckBox, SliderBar, progressbar
-
信号与槽:
QObject::connect(const QObject *sender, const char *signal, const Qobject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection)
-
资源文件:
将图片,数据存储在二进制文件中,在程序中方便调用
-
布局管理:
所谓布局,就是界面上组件的排列方式,使用布局可以使组件有规则地分布,并且随着窗体大小变化自动地调整大小和相对位置。
3. Qt编译ROS工程
本教程中各种软件卸载方法
1. 卸载Qt有2种办法
-
进入qt的安装目录下卸载
一般ubuntu软件是安装在opt目录下,如果不在就需要找找了进入安装目录下
sudo ./MaintenanceTool
选择remove all 就可以完全删除qt了
2.命令行安装的卸载
sudo apt-get remove qt5-default qtcreator