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

ROS知识篇---ROS的编译配置文件


文章目录

  • 前言
  • 1. CMakeLists.txt
    • 1.1 基本结构
    • 1.2 各条目含义
    • 1.3 增加节点后的修改
      • 添加可执行文件
      • 链接库
  • 2. package.xml
    • 2.1 基本结构
    • 2.2 各条目含义
      • <name>
      • <version>
      • <description>
      • <maintainer>
      • <license>
      • <buildtool_depend>
      • <build_depend>
      • <build_export_depend>
      • <exec_depend>
    • 2.3 增加节点后的修改
  • 3.总结
    • 3.1CMakeLixt.txt
    • 3.2package.xml


前言

ROS(Robot Operating System)中的编译配置文件主要包括 CMakeLists.txt 和 package.xml。这两个文件用于定义包的依赖关系、编译规则、安装规则等。下面详细介绍这两个文件的结构和各条目的含义,并说明在增加一个节点后需要修改的内容


1. CMakeLists.txt

CMakeLists.txt 是 CMake 的配置文件,用于定义如何编译 ROS 包中的代码。它包含了编译可执行文件、库、依赖项等信息。

1.1 基本结构

cmake_minimum_required(VERSION 3.0.2)
project(my_package)

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
)

catkin_package(
  CATKIN_DEPENDS roscpp rospy std_msgs
)

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)

add_executable(my_node src/my_node.cpp)
target_link_libraries(my_node ${catkin_LIBRARIES})

add_executable(another_node src/another_node.cpp)
target_link_libraries(another_node ${catkin_LIBRARIES})

1.2 各条目含义

cmake_minimum_required(VERSION 3.0.2): 指定 CMake 的最低版本要求

project(my_package): 定义项目名称,通常与包名一致

find_package(catkin REQUIRED COMPONENTS …): 查找并加载 ROS 的 catkin 构建系统,并指定依赖的其他 ROS 包(如 roscpp, rospy, std_msgs 等)。

catkin_package(): 定义包的 CMake 配置,通常用于指定包的依赖项

include_directories(): 指定头文件的搜索路径,通常包括 include 目录和 catkin 提供的头文件路径

add_executable(my_node src/my_node.cpp): 定义一个可执行文件 my_node,并指定其源文件 src/my_node.cpp

target_link_libraries(my_node ${catkin_LIBRARIES}): 将可执行文件 my_node 与所需的库链接,通常是 catkin 提供的库。

1.3 增加节点后的修改

增加一个新节点时,通常需要做以下修改:

添加可执行文件

添加新的可执行文件:在 CMakeLists.txt 中添加一个新的 add_executable 条目,指定新节点的源文件

add_executable(new_node src/new_node.cpp)

链接库

链接库:为新节点添加 target_link_libraries 条目,确保它链接到所需的库

target_link_libraries(new_node ${catkin_LIBRARIES})

2. package.xml

package.xml 是 ROS 包的元数据文件,用于定义包的依赖关系作者信息、许可证等信息

2.1 基本结构

<?xml version="1.0"?>
<package format="2">
  <name>my_package</name>
  <version>0.0.0</version>
  <description>The my_package package</description>

  <maintainer email="user@todo.todo">user</maintainer>
  <license>TODO</license>

  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>rospy</build_depend>
  <build_depend>std_msgs</build_depend>
  <build_export_depend>roscpp</build_export_depend>
  <build_export_depend>rospy</build_export_depend>
  <build_export_depend>std_msgs</build_export_depend>
  <exec_depend>roscpp</exec_depend>
  <exec_depend>rospy</exec_depend>
  <exec_depend>std_msgs</exec_depend>
</package>

2.2 各条目含义

: 包的名称,必须与 CMakeLists.txt 中的 project 名称一致

: 包的版本号

: 包的简要描述

: 包的维护者信息

: 包的许可证信息

<buildtool_depend>

<buildtool_depend>: 指定构建工具依赖,通常是 catkin

<build_depend>

<build_depend>: 指定编译时依赖的包

<build_export_depend>

<build_export_depend>: 指定导出时依赖的包

<exec_depend>

<exec_depend>: 指定运行时依赖的包

2.3 增加节点后的修改

增加一个新节点后,通常不需要修改 package.xml,除非新节点引入了新的依赖项如果新节点依赖了新的 ROS 包,需要在 package.xml 中添加相应的依赖项。

例如,如果新节点依赖 sensor_msgs,则需要添加:

<build_depend>sensor_msgs</build_depend>
<build_export_depend>sensor_msgs</build_export_depend>
<exec_depend>sensor_msgs</exec_depend>

3.总结

3.1CMakeLixt.txt

CMakeLists.txt: 主要用于定义如何编译代码,增加新节点时需要添加新的
add_executabletarget_link_libraries 条目。

3.2package.xml

package.xml: 主要用于定义包的元数据和依赖关系,增加新节点时通常不需要修改,除非引入了新的依赖项。

通过正确配置这两个文件,可以确保 ROS 包能够正确编译和运行


相关文章:

  • 云创智城YunCharge 新能源二轮、四轮充电解决方案(云快充、万马爱充、中电联、OCPP1.6J等多个私有单车、汽车充电协议)之云快充协议模拟器使用手册
  • Java 面试题
  • 常见的三种锁
  • shiro550-cve-2016-4437复现
  • Java数据结构第二十期:解构排序算法的艺术与科学(二)
  • 2025 - GDB 盲调笔记--调试 “无调试符号“ “无调试信息“ 的三方程序
  • MyBatis-Plus分页控件使用及使用过程发现的一个坑
  • 从0开始的操作系统手搓教程31:完成硬盘驱动程序
  • 恋爱循环2025年3月9日
  • 基于RNN+微信小程序+Flask的古诗词生成应用
  • C语言学习day25:WinAPI编程进阶07-游戏辅助时钟周期事件、定时器消息
  • 带宽计算公式
  • clickhouse源码分析
  • 顺序栈和链式栈的使用
  • 内存管理——页表、页表项、页目录、多级页表
  • 【大模型知识点】位置编码——绝对位置编码,相对位置编码,旋转位置编码RoPE
  • 【CXX】6.2 Rust::Str 公共 API
  • MySQL中的`JSON_EXTRACT`函数
  • Anthropic 平台升级,解锁 Claude3.7Sonnet 与 prompt 创作新玩法
  • SPI驱动(六) -- SPI_OLED上机实验(使用spidev)
  • 看手表网站/品牌营销战略
  • 网站优化软件推荐/网络免费推广平台
  • 网站建设服务器百度云/苏州seo服务
  • 凡科网站免费注册/广告传媒公司经营范围
  • 建设部网站首页督办案件/郑州seo培训
  • 宠物网站建设规划书/企业网站的类型