当前位置: 首页 > article >正文

【Qt-ROS开发】使用 Qt Creator 构建和编译含 ROS 库的 Qt 项目

【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;

http://www.kler.cn/a/391971.html

相关文章:

  • ❤React-React 组件基础(类组件)
  • 【OceanBase 诊断调优】—— ocp上针对OB租户CPU消耗计算逻辑
  • 【初阶数据结构与算法】链表刷题之移除链表元素、反转链表、找中间节点、合并有序链表、链表的回文结构
  • 机器学习——贝叶斯
  • Chrome使用IE内核
  • SciPy:Python 科学计算工具包的全面教程
  • 选择IP-guard还是Ping32?了解两款数据防泄漏软件的优势和应用
  • 矩阵函数及计算
  • 《Javascript 网页设计案例分享》
  • LeetCode【0006】Z字形变换
  • Linux服务器虚拟化
  • ChatGPT进阶:提示工程~读书笔记
  • 后端:Aop 面向切面编程
  • 拷贝和浅拷贝的区别,以及对于循环引用如何处理深拷贝
  • web端手机录音
  • 信息化运维方案,实施方案,开发方案,信息中心安全运维资料(软件资料word)
  • [2024最新] macOS 发起 Bilibili 直播(不使用 OBS)
  • 进程信息和定时任务
  • 数学建模学习(136):使用Python基于Fuzzy WSM、Fuzzy WPM、Fuzzy WASPAS的多准则决策分析
  • Elasticsearch 和 Kibana 8.16:Kibana 获得上下文和 BBQ 速度并节省开支!
  • 使用Spring AI中的RAG技术,实现私有业务领域的大模型系统
  • SpringBoot自定义Starter指南
  • MyBatisPlus(Spring Boot版)的基本使用
  • gpu-V100显卡相关知识
  • 使用多种机器学习调参模型进行二分类建模的全流程,代做分析辅导
  • OceanStor Pacific系列 8.1.0 功能架构