目录
系统:Ubunut 20.04
QT:6.2.4
qtcreator:12.0.0
ROS: noetic + foxy
ros_qtc_plugin
首先感谢N位大佬的博客(试验了N多)以及蒋程扬大佬关于QT下 Noetic 和 Foxy 版本的两个开源demo(后续的使用的一些麻烦都是在该大佬的demo上进行了借鉴解决):
Github----->>>Qt_ros_noetic_demo:GitHub - chengyangkj/ros_qt_demo
Github----->>>Qt_ros2_foxy_demo:GitHub - chengyangkj/ros2_qt_demo
一、搭建QT环境
在此之前我们默认你已经安装好了 ROS1-noetic 与 ROS2-foxy 版本在Ubuntu 20.04 上面,并且实现了共存。
如果有未安装的可以参考由鱼香ROS大佬所提供的一站式安装工具进行安装:
wget http://fishros.com/install -O fishros && . fishros
原声的 QT 并不支持ROS的项目开发。Description — ROS-Industrial 中提供了一个QT的plugin (ros_qtc_plugin)来进行,但是此插件仅仅用于noetic开发,foxy是不需要的,后续会提到。
当然也提供了内含ros_qtc_plugin插件的 qtcreator-ros (之前使用这种方式,后来摈弃的原因是其在双ROS开发时兼容性不太好,经常出一些小bug),所以本教程并不使用。
1.1 QT安装
在QT的官方网站中提供了不同的QT版本,其中我们可以查看到每个版本所支持的平台,由于使用Ubuntu20.04,就不多赘述(Supported Platforms | Qt 6.4),各位大佬可以自行探索。
在下载链接中下滑找到此界面,点击下方的Dowunload the Qt Online Installer。
进入下载页面,点击Qt Online Installer for Linux(64-bit)即可开始下载:
下载顺利会有一个 ./run 的执行文件在你UBuntu系统的Downloads文件夹中(下载不顺利的请移步网上大神的科学上网,如有需要可私信提供),接下来对该 ./run 文件进行赋权:
sudo chmod a+x ./qt-unified-linux-x64-4.6.0-online.run
然后运行该安装文件,为了加快其中在线安装的下载,后续指定其下载源,出现安装对话框:
./qt-unified-linux-x64-4.6.0-online.run --mirror http://mirrors.ustc.edu.cn/qtproject
这里的QT账户如果没有就自己注册一个就好了,我使用的是QQ邮箱,google也可以,其它大家自己尝试,但是163邮箱不支持!!!
然后很快哈!一路勾选下一步!直接上图,每步保持一致即可:
注意此处!!!下方图中的组件可以按需添加,但勾选为Qt 6.2.4中,相对而言我不需要Android与Sources(QT源码)。Qt Creator为 11.0.0(Qt Creator这个默认就是,提醒一下)
最近重新安装后,Qt Creator 的版本为12.0,图我就不换了
整个过程取决于网速和稳定性,有时候会弹出下载失败的样子,但是可以选择 Retry 就行了,大概10-15分钟的样子,最后也是一统下一步即可,一直到完成,因为笔者是安装完才写的这个博客,所以部分截图缺失,请见谅。
最后安装完成后会谈出 Qt Creator,即安装完成。
1.2 QT管理
上方我们在安装 Qt 时有一个安装目录,默认在你的 /home/username/Qt下,其中MaintenanceTool为管理工具。
1.3 QT启动(重点)
因为我们要在ROS共存的两个版本中使用QT,对于每个ROS所Source的环境都不同,所以QT并不能直接向uBuntu中的软件一样之间点开进行使用,需要在终端启动,如果每次在不同的 ROS 终端中开启还必须 cd 到Qt的目录是一件很让人ugly的事情,所以设置快捷命令启动:
sudo ln -sn ~/Qt/Tools/QtCreator/bin/qtcreator /usr/local/bin/qtcreator
后面的 qtcreator 命名就仁者见仁,智者见智了,自己顺手用的就好,而且一般打 qt 之间 Tab 出来的也就它(无其它链接情况下)
此时直接在新开的终端,选择ROS环境,再输入qtcreatorsix即可启动。
二、ROS-noecit+QT开发
2.1 环境搭建
上面我们已经安装好了 QT ,接下来我们对 ROS-noetic 进行环境搭建。此处我们需要用到的是 第一章中提到过的 ros_qtc_plugin :
- Github 仓库地址:GitHub - ros-industrial/ros_qtc_plugin: ROS Qt Creator Plug-in (https://ros-qtc-plugin.readthedocs.io)
- 维基:Welcome to the ROS Qt Creator Plug-in wiki — ROS Qt Creator Plug-in documentation
在 Github 仓库中选择自己对应的 Qt Creator 版本,之前提到过使用的版本为 12.0.0 :
https://github.com/ros-industrial/ros_qtc_plugin/releases
选择Releases中的 12.0 下载 ROSProjectManager-12.0-Linux-x86_64.zip
(图我就不换了)
下载完成后放入,Qt目录下,即安装目录:
然后在打开终端,双ROS下,选择noetic版本,然后输入 qtcreator 打开 qt。在上方帮助中打开关于插件:
然后点击 install Plugin,选择下载好的 ROSProjectManager-12.0-Linux-x86_64.zip ,然后一路下一步,最后Restart Now就环境配置完成。
2.2 开发指南
在开头我们提到过蒋程扬大佬的开源demo,以此为例,开始进行开发(当然自定义也可以,一样的流程)
Github----->>>Qt_ros_noetic_demo:GitHub - chengyangkj/ros_qt_demo
将该demo下载至一个 workspace 的 src 中,文件结构如下:
先使用正常编译命令编译此工作空间,生成build、devel:
catkin_mane
然后打开终端,选择noetic环境(选择就是为了source /opt/ros/noetic/setup.bash),打开QT(qtcreator)
选择打开项目,选择 src 下的 CMakeList.txt,然后出现此界面,其中构建中应该显示为该工作空间下的 build 目录:
点击Configure Project,即可开始构建,等待右下角构建完成,即可点击启动,接下来就可以自己进行demo修改与开发了!!!
三、ROS-foxy+QT开发
3.1环境搭建+开发指南
这个标题中我们就直接忽略了环境搭建这一布,因为原生的QT使用Cmake即可构建,这也是好处之一,但是对于有些时候转化为 ros2 launch 会有启动失败的问题(目前遇到过但是并不重要)
同样下载蒋程扬大佬的开源demo:
Github----->>>Qt_ros2_foxy_demo:GitHub - chengyangkj/ros2_qt_demo
结构目录与编译跟的ROS2结构目录编译一样,即
colcon build
跟第二章中一样,我们直接省略了环境搭建这一步。新建终端,选择ros2 foxy,即 source /opt/ros/foxy/setup.bash,打开qt(qtcreator)
打开项目,此时需要注意,请先使用Colcon build 命令进行编译,然后选择的package下的CMakeList.txt,即ros2_qt_demo下的:
出现以下界面,在我涂抹的地方导入colcon build 生成的 build文件,选中当前功能包,导入即可
此时最上方的Desktop QT显示的内容应为:
这个样子导入的就是colcon build 的编译指令,而不是QT采用的cmake配置。
之后等待右下角编译完成即可,直接点击绿色小三角 Run 起来!!! No problem!!!
四、总结
实际上 QT 只是 IDE ,对于 ROS noetic 而言,主要是构建使用Catkin再加上一些库的问题,对于ROS2 foxy 而言,则是配置编译指令,也就是环境配置的问题。经常用1,2进行切换开发所以比较麻烦,此时双ROS一站式QT开发就完成了!从此开发So easy!!!
不积跬步无以至千里,不积小流无以成江河 ------------------------19:28