You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在现有Qt Creator GUI项目中实现ROS订阅器并合并到catkin工作空间

已有Qt Creator GUI项目与Catkin工作空间合并操作方案

1. 初始化Catkin工作空间(未创建时执行)

  • 执行以下命令创建标准catkin目录结构并完成首次编译:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ~/catkin_ws
catkin_make
  • 打开~/.bashrc文件,在末尾添加工作空间环境变量声明,确保系统和Qt可识别ROS环境:
source ~/catkin_ws/devel/setup.bash
  • 保存后执行source ~/.bashrc让配置生效

2. 迁移Qt项目到Catkin工作空间

  • 将你已有的Qt GUI项目整个文件夹移动到~/catkin_ws/src/路径下

3. 修改项目配置适配Catkin构建规则

3.1 新增package.xml文件

在项目根目录创建package.xml文件,填写ROS包基础信息,示例内容如下,替换占位内容为你的实际信息即可:

<?xml version="1.0"?>
<package format="2">
  <name>你的项目包名</name>
  <version>0.0.1</version>
  <description>Qt GUI ROS功能包</description>
  <maintainer email="你的邮箱地址">你的名称</maintainer>
  <license>BSD</license>

  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>qtbase5-dev</build_depend>
  <exec_depend>roscpp</exec_depend>
  <exec_depend>libqt5-core</exec_depend>
</package>

3.2 修改CMakeLists.txt

如果你的Qt项目原本使用.pro的qmake构建,需先转为CMake构建,再修改CMakeLists.txt整合catkin规则,核心修改点如下:

  • 添加catkin依赖查找配置:
find_package(catkin REQUIRED COMPONENTS
  roscpp
)
  • 声明catkin包信息:
catkin_package(
  INCLUDE_DIRS include
  CATKIN_DEPENDS roscpp
)
  • 在头文件包含配置中添加catkin头文件路径:
include_directories(
  include
  ${catkin_INCLUDE_DIRS}
  ${Qt5Core_INCLUDE_DIRS}
  ${Qt5Widgets_INCLUDE_DIRS}
  # 保留原有项目的其他头文件路径
)
  • 在目标链接库配置中添加ROS相关库:
target_link_libraries(你的项目生成的可执行文件名
  ${catkin_LIBRARIES}
  ${Qt5Core_LIBRARIES}
  ${Qt5Widgets_LIBRARIES}
  # 保留原有项目的其他链接库
)

4. 验证配置

  • 回到catkin工作空间根目录,执行catkin_make,确认无编译报错
  • 重启Qt Creator,通过文件 > 打开文件或项目选择~/catkin_ws/src/你的项目/CMakeLists.txt打开项目
  • 执行构建,此时#include "ros/ros.h"的报错会自动消失
    注意:每次打开Qt Creator前需确保当前终端已source过catkin工作空间的setup.bash,否则可能出现ROS头文件识别失败的问题

内容的提问来源于stack exchange,提问作者Nietzsche2meetyou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:24:01