文章目录
- ROS(Robot Operating System)功能包
- 功能包名在 CMakeLists.txt 和 package.xml 中一定要完全相同
 
ROS(Robot Operating System)功能包
ROS(Robot Operating System)功能包是用于组织、构建和管理 ROS 软件项目的基本单元。功能包是 ROS 中最基本的软件组织单元,它可以包含节点、消息、服务、动作、参数配置文件、启动文件以及其他 ROS 资源。
以下是 ROS 功能包的一些基本原理:
-  组织结构: - ROS 功能包通常包含一个名为 src/的目录,其中存放着源代码。
- 可以包含 include/目录,其中存放头文件。
- 包含 launch/目录,其中存放启动文件。
- 包含 msg/、srv/、action/等目录,用于存放消息、服务、动作定义文件。
- 可以包含 config/目录,其中存放参数配置文件。
 
- ROS 功能包通常包含一个名为 
-  依赖管理: - 功能包可以指定其他 ROS 软件包作为依赖项,以确保所需的功能和资源可用。
- 依赖关系在 package.xml文件中定义。
 
-  编译系统: - ROS 使用 CMake 作为构建系统。每个功能包都有一个 CMakeLists.txt文件,其中定义了构建过程的规则和依赖关系。
- 使用 catkin_make或catkin build等工具来构建 ROS 功能包。
 
- ROS 使用 CMake 作为构建系统。每个功能包都有一个 
-  运行节点: - ROS 节点是 ROS 程序的执行单元,可以通过 ROS Master 进行通信。
- 使用 rosrun命令可以运行指定功能包中的节点。
 
-  发布和订阅消息: - ROS 节点通过发布和订阅消息进行通信。
- 使用 rostopic命令查看和发布主题消息。
 
-  提供和调用服务: - ROS 服务允许节点提供和调用一次性请求-响应服务。
- 使用 rosservice命令查看和调用服务。
 
-  参数服务器: - ROS 参数服务器是一个分布式参数存储系统,允许节点动态地设置和检索参数。
- 使用 rosparam命令可以管理参数服务器中的参数。
 
-  启动文件: - 启动文件允许同时启动多个节点,并设置它们之间的连接关系。
- 使用 roslaunch命令运行启动文件。
 
功能包名在 CMakeLists.txt 和 package.xml 中一定要完全相同
如果它们不匹配,就会导遇到错误:package name 'transform_listener' in '/path/to/package.xml' does not match current PROJECT_NAME。
在 CMakeLists.txt 和 package.xml 中,有一些内容是需要相互对应和保持一致的,以确保功能包的正确构建和依赖关系管理。下面是一些需要相同的内容:
-  功能包名称(Name):在 CMakeLists.txt中通过project()命令指定,而在package.xml中通过<name>标签指定。
-  版本号(Version):在 CMakeLists.txt中通过project()命令的VERSION参数指定,而在package.xml中通过<version>标签指定。
-  作者和维护者信息(Maintainer):在 CMakeLists.txt中通常不直接指定,而在package.xml中通过<maintainer>标签指定。
-  许可证信息(License):在 CMakeLists.txt中通常不直接指定,而在package.xml中通过<license>标签指定。
-  构建依赖项(Build Dependencies):在 CMakeLists.txt中通过find_package()或catkin_package()指令指定,而在package.xml中通过<build_depend>标签指定。
-  运行时依赖项(Run Dependencies):在 CMakeLists.txt中通过catkin_package()指令指定,而在package.xml中通过<exec_depend>标签指定。
-  导出的构建依赖项(Exported Build Dependencies):在 CMakeLists.txt中通过catkin_package()指令指定,而在package.xml中通过<build_export_depend>标签指定。
-  导出的运行时依赖项(Exported Run Dependencies):在 CMakeLists.txt中通过catkin_package()指令指定,而在package.xml中通过<exec_depend>标签指定。
确保这些内容在 CMakeLists.txt 和 package.xml 中保持一致,可以确保功能包的正确构建和依赖关系管理。
在 ROS 中,CMakeLists.txt 和 package.xml 是功能包(package)的两个关键文件,它们分别用于构建和描述功能包。
-  CMakeLists.txt: - 作用:CMakeLists.txt是用 CMake 语言编写的脚本文件,用于指导 ROS 编译系统构建你的功能包。它定义了构建过程中所需的依赖项、编译选项、安装规则以及生成的可执行文件、库或节点等信息。
- 工作原理:当你运行 catkin_make或catkin build等构建命令时,ROS 编译系统会查找每个功能包中的CMakeLists.txt文件,并根据其中的指令来进行编译。通常,这些指令包括定义项目名称、查找依赖项、配置编译选项、设置安装规则等。
 
- 作用:
-  package.xml: - 作用:package.xml是一个 XML 格式的文件,用于描述功能包的元数据信息,包括名称、版本、作者、依赖关系等。它还可以用于声明其他功能包需要的系统依赖项、资源文件等。
- 工作原理:ROS 工具链(如 rosdep、rospack等)使用package.xml文件来管理和解析功能包的元数据信息。当你运行catkin_make或rosdep install等命令时,ROS 工具链会根据package.xml文件中的信息来安装依赖项、解析功能包之间的依赖关系等。
 
- 作用: