【Qt-ROS】使用 Qt Creator 构建和编译含 ROS 库的项目
网上大多数办法是在 Qt creator中安装 ros_qtc_plugin 插件,项目以 ROS1 工作空间的形式构建,还是使用 catkin 来构建整个项目。但是这种方式局限很大,导入 Qt 的组件反而变得很麻烦,使用 Qt Creator 的本意就是更方便开发界面,而且 ros_qtc_plugin 貌似只能适配低版本 Qt Creator(经过尝试,插件11.0版本可以对应Qt Creator 10)。此方法 ×
实际中,更多的使用场景是,在Qt 界面的主线程实例化一个ROS节点,如果还需要开启 ROS 的事件处理循环(使用订阅者和定时器回调才需要,只是发布者不需要)可以放在 QThread 启动的其他线程中。整个项目依旧以 Qt 的风格和规范来构建,只需要在 Qt Creator 中告诉构建工具(假设是 cmake,qmake是什么不知道)ROS 相关库的位置即可。ROS 编程不一定非要 catkin_make …
如果是 ROS-Noetic 版本,默认安装的路径在/opt/ros/noetic
。其他版本类似。
明确了安装路径,接下来是告诉 Qt Creator(实际上是 cmake)。
找到CMAKE_PREFIX_PATH
环境变量,在 gcc安装路径后面补充 ;/opt/ros/noetic
。分号用来间隔,也就是%{Qt:QT_INSTALL_PREFIX};/opt/ros/noetic
。之后就可以正常编译项目了。如果不补充 ROS 路径,运行到 CMakeList 中 find_package(catkin …
会报错。
另外需要解决一个隐患,在 Qt Creator 中使用 QProcess 执行 ros 相关命令时,可能无法找到该命令,即使我们已经将
source /opt/ros/noetic/setup.bash
加入了.bashrc
文件。这是因为通过快捷图标启动的 Qt Creator 的终端并不是交互式终端,因此不会自动 source ~/.bashrc
,当然也就不会执行 source /opt/ros/noetic/setup.bash
。
可以修改桌面图标文件
sudo gedit ~/.local/share/applications/org.qt-project.qtcreator.desktop
在下面Exec这行中添加bash -i -c
,添加完成效果如下,注意后面的命令改为自己的安装路径。
[Desktop Entry]
Type=Application
Exec=bash -i -c "/home/XXX/Qt/Tools/QtCreator/bin/qtcreator" %F
Name=Qt Creator
GenericName=The IDE of choice for Qt development.
Icon=QtProject-qtcreator
StartupWMClass=qtcreator
Terminal=false
Categories=Development;IDE;Qt;
MimeType=text/x-c++src;text/x-c++hdr;text/x-xsrc;application/x-designer;application/vnd.qt.qmakeprofile;application/vnd.qt.xml.resource;text/x-qml;text/x-qt.qml;text/x-qt.qbs;