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

embedded/2024/11/14 22:27:57/

【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.ppmy.cn/embedded/137605.html

相关文章

机器情绪及抑郁症算法

🏡作者主页:点击! 🤖编程探索专栏:点击! ⏰️创作时间:2024年11月12日17点02分 点击开启你的论文编程之旅https://www.aspiringcode.com/content?id17230869054974 计算机来理解你的情绪&a…

python+pptx:(三)添加统计图、删除指定页

目录 统计图 删除PPT页 from pptx import Presentation from pptx.util import Cm, Inches, Mm, Pt from pptx.dml.color import RGBColor from pptx.chart.data import ChartData from pptx.enum.chart import XL_CHART_TYPE, XL_LABEL_POSITION, XL_DATA_LABEL_POSITIONfil…

软硬互联——革新机器人非标产线智能制造

在智能制造的浪潮中,每一条生产线都承载着企业向智能化、高效化转型的梦想。特别是对于机器人非标产线而言,如何在复杂多变的生产任务中保持高效、灵活与智能化,成为了众多制造企业关注的焦点。今天,就让我们一同探索IO模块、网关…

【国产MCU系列】-GD32F4内存映射

了解GD32F4内存映射 文章目录 了解GD32F4内存映射1、基于ARM的处理器介绍2、Cortex和基于Cortex-M的处理器3、Cortex-M的核心寄存器4、Cortex-M的内存映射5、GD32F4xx的内存映射1、基于ARM的处理器介绍 ARM处理器是指由多家硅制造商生产的CPU的基本构建块(因此称为核心)的多…

DDE(深度桌面环境) Qt 6.8 适配说明

内容来源:deepin Plant Qt 6.8 发布已经有一段时间了,各个发行版尝试移植 DDE 时发现包括 dde-shell 在内的几个组件存在比较明显的问题,DDE 小组进行了相关的紧急修复。由于 DDE 部分项目也在分叉维护的状态,为了方便各位移植人…

Three.js中文教程

⬇️ 整理了一些 Three.js 的笔记,有兴趣的工友可以看看 ⬇️ 《Three.js中文教程》

Go 语言已立足主流,编程语言排行榜24 年 11 月

Go语言概述 Go语言,简称Golang,是由Google的Robert Griesemer、Rob Pike和Ken Thompson在2007年设计,并于2009年11月正式宣布推出的静态类型、编译型开源编程语言。Go语言以其提高编程效率、软件构建速度和运行时性能的设计目标,…

zookeeper之节点基本操作

ZooKeeper是一个分布式协调服务,它的节点操作包括创建、查询、更新、删除等,以下是ZooKeeper节点的基本操作介绍: 1. 创建节点 持久节点(Persistent Node) 含义:持久节点是ZooKeeper中最基本的节点类型。创建后,除非显式删除,否则它将一直存在于ZooKeeper树中,即使创…