欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > ROS知识篇---ROS的编译配置文件

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

2025/3/10 6:34:21 来源:https://blog.csdn.net/2301_79556402/article/details/146134877  浏览:    关键词: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 COMPONENTSroscpprospystd_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 包能够正确编译和运行


版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词