在入门教程中我们已经编写过一些ROS程序代码了,当时我们是用touch创建文件再用gedit或vim编辑文件,这样容易出错,而且有些常用的固定格式老是自己写会感觉很麻烦。Qt是一款类似于Visual Studio、MATLAB等的图形用户界面开发框架。借助Qt和ROS插件,你可以直接创建节点等文件,并且创建文件时固定的代码结构会自动生成,编写代码时会有提示,且使用QT可做将ros节点加入UI界面,做交互很方便。
温馨提示:本文多图!
1、安装Qt
在官网下载安装包,https://download.qt.io/archive/qt/。这里我下载5.12.9。点击文件qt-opensource-linux-x64-5.12.9.run下载。
下载完毕后,打开终端,修改此文件权限,输入:
sudo chomd 755 qt-opensource-linux-x64-5.12.9.run
然后安装,直接双击.run安装包(此安装包应该在你电脑的“下载”目录下)。
注册账号。
安装即可。安装完后不必打开,先要配置环境,终端输入:
sudo gedit /etc/profile
在文件末尾添加:(XXX表示你的用户名,下同)
export PATH="/home/XXX/Qt5.12.9/5.12.9/gcc_64/bin:$PATH"export LD_LIBRARY_PATH="/home/XXX/Qt5.12.9/5.12.9/gcc_64/lib:$LD_LIBRARY_PATH"
不必打开Qt,我们继续安装ROS Qt Creator Plug-in。
2、ROS Qt Creator Plug-in 在官网下载安装包,网站:
https://ros-qtc-plugin.readthedocs.io/en/latest/_source/How-to-Install-Users.html#installation-procedure-for-ubuntu-18-04
这里我下载Ubuntu 18.04的,点击Bionic Online Installer (Recommended)下载。
下载完毕后,同理打开终端,修改此文件权限,但这里我们介绍另一种方法,多了解些知识总是没错的~
找到此文件(应该在你的“下载”目录,名为qtcreator-ros-bionic-latest-online-installer.run),右键点击文件,把权限中的“允许作为程序执行文件”打勾。
然后双击运行此文件,开始安装,安装目录我仍然是用的默认的,在/home/XXX/QtCreator下,一直下一步即可。安装完成后不必打开,先要配置环境。终端输入:
sudo gedit /etc/profile
在文件末尾添加
export PATH="/home/XXX/QtCreator/latest/bin:$PATH"
然后source:
source /etc/profile
至此,一切就绪。
3、创建ROS工作空间和catkin包
终端输入:
qtcreator-ros
由于我是安装在home目录下,不必进入sudo模式。
此时应该已经启动了Qt界面。如果你报错了,有可能是需要重启。那我们就直接在软件栏打开Qt。在菜单处输入qt可进入,选第一个Qt Creator即可。
打开界面如下:
点击New Project,点击其他项目,选择ROS Workspace:
显示如下:
我想要在/home/XXX目录下创建一个工作空间。首先,用终端创建一个目录,输入:
mkdir /home/XXX/ws1
然后在Qt中创建工作空间。刚刚那张图的Name我们就叫ws1;Distribution是ROS的安装位置,不要动它;Build System我们选择CatkinMake,否则会报错;路径就选择我们刚才创建的文件夹,点击浏览,选择ws1。
设置好后,点击下一步,再点击完成即可。
现在,工作空间已经创建好了。点击项目旁边的漏斗按钮,把所有勾选的都取消。
这时项目下的结构应该是这样的:
右键点击ws1进行构建,或点击左下方锤子图案,或ctrl+b进行构建。构建即编译。构建完成,我们看下方的第四项编译输出,不应当有报错。最后两行应为:
17:16:08: 进程"/opt/ros/melodic/bin/catkin_make"正常退出。17:16:08: Elapsed time: 00:01.
编译完成后,右键点击ws1项目,选择关闭此项目:
再在空白处右键点击载入项目,选择ws1.workspace载入ws1项目。或者在最左侧的“欢迎”界面open project处载入ws1项目。
此时可以看到这样的目录:
下一步,我们建立catkin包。右键点击src,选择add new。
名字我们叫pkg1,作者、维护者等可不填写,依赖项目要按需填写。还记得我们在ROS入门二中创建catkin包的命令吗:
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
这里的名字和依赖项就相当于上面这行代码。我们按如下创建:
依赖项目可以在catkin包的CMakeLists.txt和package.xml中更改。
点击下一步,完成创建。然后按照上面相同的流程,关闭ws1再重新载入。现在可以看到:
这里的catkin包需要我们自己去创建目录和文件,回忆一下我们在入门教程中创建的beginner_tutorials的目录:
按照入门教程的内容,即可在这个项目中创建节点、消息、服务、launch等文件。我们以节点为例,在ws1项目里创建一个节点。按照惯例,源代码文件(节点文件)放在包的src文件夹里,而这里pkg1没有生成src包,我们先自己创建一个。终端输入:
mkdir /home/XXX/ws1/src/pkg1/src
可以看到项目的目录变成:
右键点击pkg1下面的src,选择add new,选择basic node:
名字叫node1。
创建完成后可以看到目录变成:
现在节点文件还是报错的,因为我们还没编译。先修改pkg1下面的编译文件:
末尾加入:
add_executable(node1 src/node1.cpp)target_link_libraries(node1 ${catkin_LIBRARIES} )
ctrl+s保存。现在构建项目,点击左下角锤子。编译通过,再点击node1文件,等文件自动检测完毕,就没有报错了。
还记得ROS入门一的环境配置内容吗,在运行节点之前,我们要把环境配置好。终端进入sudo模式,输入:
source /home/XXX/ws1/devel/setup.bash
然后就可以运行节点了。在进入sudo模式的终端运行roscore,再打开新的终端,sudo,输入:
rosrun pkg1 node1
显示输出:
[ INFO] [1598954350.298502222]: Hello world!
如果每次还是要打开终端,是不是感觉还是有点麻烦?其实在Qt中直接就可以运行终端命令。在Qt窗口最下面:
把所有项目都勾选,然后点击8 ROS Terminal,就可以使用终端了。
Qt终端与外部终端效果完全一样,比如,如果你在Qt终端运行了roscore,外部终端就无法运行roscore,也不必再运行roscore,可以直接使用ros命令。每个Qt终端也是只能运行一个进程,在红色方块的左边是打开新终端的按钮。
最后,如果你在文件系统中打开ws1,可以看到:
Qt中也可以直接使用文件系统,点击“日+”按钮,选择文件系统:
可以看到:
如果你想要文件系统中的build、devel、install等目录也显示在项目ws1下面,点击ws1.workspace文件,按照src的格式添加你想添加的文件夹,例如添加build文件夹:
ctrl+s保存,可以看到ws1下面目录多出了build:
同理可以添加其他文件夹。
以上就是今天的内容啦~
如果有疑问或建议,欢迎私信我,小出和你一起加油~
作者:小出
图源网络
成长路上,小出陪你
让我们一起,见证你的努力