如何在现有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
相关产品推荐
相关产品推荐

