千家信息网

ROS中的cmake指的是什么

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,ROS中的cmake指的是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。这一次讨论ROS中的cmake和ROS代码编译过程。1.
千家信息网最后更新 2026年10月31日ROS中的cmake指的是什么

ROS中的cmake指的是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

这一次讨论ROS中的cmake和ROS代码编译过程。

1. 基础准备

首先开始创建基础工作空间,新建一个ROS项目,名字为catkin_ws,并在里面建立 src 文件夹

$ mkdir ~/catkin_ws$ cd ~/catkin_ws$ mkdir src$ cd src

然后在src文件加下利用ROS包工具,catkin_create_pkg,新建一个包名为"test",依赖于"std_msgs, rospy, roscpp"

$ catkin_create_pkg test std_msgs rospy roscpp tf sensor_msgs image_transport cv_bridge

然后在test文件夹下的src里面新建test.cpp文件,这个文件是源代码的标准放置位置。此时的文件结构如下

.└── src    └── test        ├── CMakeLists.txt        ├── include        │   └── test        ├── package.xml        └── src            └── test.cpp

这种文件结构是一种标准的ROS项目和包的结构。如果需要增加新的node包,我们只需要在src下增加一个和test文件夹结构类似的文件夹,例如test2,文件结构变为如下。

.└── src    ├── test    │   ├── CMakeLists.txt    │   ├── include    │   │   └── test    │   ├── package.xml    │   ├── package.xml~    │   └── src    │       └── test.cpp    └── test2        ├── CMakeLists.txt        ├── include        │   └── test2        ├── package.xml        └── src            └── test2.cpp

2. 文件结构准备好后,需要配置CMakeLists.txt和package.xml

这里针对具体的例子来配置。这个例子是OpenCV的例子,纯C++代码,不涉及具体的ROS函数。例子的功能是读取摄像头的输入,并展示出来。(Ubuntu 14.04 上面测试通过,注意其中的OpenCV库的引用,请用自己的具体OpenCV库头文件路径包含,具体配置还需自行google)

#include #include #include #include //#include "ros/ros.h"//#include "std_msgs/String.h"using namespace cv;  using namespace std; int main(int argc, char** argv)  {           //ros::init(argc, argv, "test");        Mat image;          int cam_idx = 0;    if (argc == 2) {        cam_idx = atoi(argv[1]);    }    VideoCapture cap(cam_idx);    if (!cap.isOpened()) {        cerr << "Could not open camera." << endl;        exit(EXIT_FAILURE);    }    namedWindow("Display Image");             for(;;){          cap >> image;           imshow("Display Image", image);            waitKey(5);        }                 //ros::spin();    return 0;  }

首先配置CMakeLists.txt,添加这里的例子 test.cpp ,配置后的文件为,(更具体的参数解释可以参考 wiki)

cmake_policy(SET CMP0012 NEW)cmake_minimum_required(VERSION 2.8.3)project(test)#find_package(catkin REQUIRED COMPONENTS  cv_bridge  image_transport  roscpp  rospy  sensor_msgs  std_msgs  tf)find_package(OpenCV REQUIRED)include_directories(${OpenCV_INCLUDE_DIRS})include_directories(  ${catkin_INCLUDE_DIRS})#add our own node srcadd_executable(test_node src/test.cpp)target_link_libraries(test_node ${OpenCV_LIBS} ${catkin_LIBRARIES})

接着配置下package.xml(更具体的每项解释参考ROS,wiki )

  test  0.0.0  The test package  caoyuanfeng  TODO  catkin  cv_bridge  image_transport  roscpp  rospy  sensor_msgs  std_msgs  tf  opencv    cv_bridge  image_transport  roscpp  rospy  sensor_msgs  std_msgs  tf  opencv    

注意里面多加了OpenCV的以来和图像相关的依赖。

3.编译运行

在配置好两个文件以后,一般的新增ROS项目和node需要修改的都是这两个文件,或者只有CMakelists.txt一个文件,如果依赖相同的。

回到项目的根目录,也就是catkin_ws文件夹,然后用catkin_make编译

$ cd  ~/catkin_make$ ls src$ catkin_make

接着,运行得到的node

$ source devel/setup.bash$ rosrun test  test_node

将会看到打开摄像头,弹出来摄像头的画面。表示这个node编译运行成功。

回头看去,总结了下整个ROS项目的过程就是这样的

  • 新建固定的文件结构

  • copy标准的CMakeLists.txt和package.xml文件

  • 分析自己的项目依赖,配置上面的两个配置文件

  • 编写自己的src代码,在CMakeLists.txt里面添加源代码路径

  • 编译运行,出错返回3,成功则 good job。

整个项目的代码都在git@osc上面,可以查看这里。

关于ROS中的cmake指的是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

文件 配置 结构 项目 例子 文件夹 编译 代码 运行 两个 摄像头 标准 问题 摄像 成功 基础 更多 源代码 路径 过程 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技股互联网 友谊互联网络科技 佰商互联网科技有限公司 甘肃拓世互联网科技有限公司 银川新华互联网科技学校地址 现代科技和互联网有关系吗 宁夏众和广鑫互联网科技有限公司 全球顶尖互联网科技公司 成都铂石互联网科技做什么的 互联网软件和科技 深圳市优智互联网科技有限公司 亳州好赞互联网科技有限公司 互联网科技的全部知识 明优互联网科技有限公司 互联网科技公司营业执照怎么办理 互联网科技快讯热点 求路客互联网科技电话 恒生科技指数 中概互联网 青岛互联网科技园 广东猫王互联网科技有限公司电话 互联网金融科技 互联网 科技公司 汇久创客互联网科技 互联网科技产品 栖莱科技互联网股份有限公司 重庆互联网医院沙龙医盟信息科技 翼展科技 首家互联网医院 广州百诚互联网科技有限公司官网 东营紫格互联网科技 互联网科技新闻
0