ROS2 pkg 创建功能包

ROS2 pkg 创建功能包

指令:

复制代码
ros2 pkg create <package-name>  --build-type  {cmake,ament_cmake,ament_python}  --dependencies <依赖名字>

在 ROS 2 中,ros2 pkg create 命令用于创建一个新的 ROS 2 包。其中的 --build-type 参数指定了包的构建系统类型。cmakeament_cmakeament_python 是三种不同的构建类型,它们分别用于不同的开发场景和语言支持。

1. ament_cmake

  • 描述

    • ament_cmake 是 ROS 2 中用于构建 C++ 代码的默认构建系统。

    • 它基于 CMake,结合了 Ament 的工具链,用于管理依赖关系、构建目标(如可执行文件和库)以及安装目标。

    • 这是 ROS 2 推荐的构建系统,适用于大多数需要编译的项目(如 C++ 项目)。

  • 适用场景

    • 当你开发的 ROS 2 包包含 C++ 代码时,应该使用 ament_cmake

    • 它支持复杂的构建逻辑,例如编译多个可执行文件、库,以及处理头文件和资源文件。

  • 示例

复制代码
  ros2 pkg create my_cpp_package --build-type ament_cmake --dependencies rclcpp std_msgs

2. ament_python

  • 描述

    • ament_python 是用于构建 Python 代码的构建系统。

    • 它基于 Python 的 setup.py 文件,结合了 Ament 的工具链,用于管理 Python 包的安装和依赖关系。

    • 这种构建类型不需要 CMake,而是直接使用 Python 的 setuptools 来处理包的构建和安装。

  • 适用场景

    • 当你的 ROS 2 包主要包含 Python 代码时,应该使用 ament_python

    • 它适用于纯 Python 项目,简化了构建过程,避免了 CMake 的复杂性。

  • 示例

复制代码
  ros2 pkg create my_python_package --build-type ament_python --dependencies rclpy std_msgs

3. cmake

  • 描述

    • cmake 是一个通用的构建系统,用于构建 C++ 项目。

    • 它是 ROS 2 中较早的构建系统,但在 ROS 2 中已经逐渐被 ament_cmake 替代。

    • 使用 cmake 构建的包不会直接利用 Ament 的工具链,因此在依赖管理和包安装方面可能不如 ament_cmake 方便。

  • 适用场景

    • 如果你需要构建一个不依赖于 Ament 的纯 C++ 项目,或者需要与现有的 CMake 项目集成,可以使用 cmake

    • 但在大多数情况下,推荐使用 ament_cmake,因为它提供了更好的 ROS 2 生态系统支持。

  • 示例

复制代码
  ros2 pkg create my_cmake_package --build-type cmake --dependencies rclcpp std_msgs

总结

  • ament_cmake:适用于 C++ 项目,是 ROS 2 推荐的构建系统,支持复杂的构建逻辑和依赖管理。

  • ament_python :适用于 Python 项目,简化了构建过程,使用 Python 的 setuptools

  • cmake :适用于不依赖 Ament 的纯 C++ 项目,但在 ROS 2 中逐渐被 ament_cmake 替代。

在实际开发中,大多数 ROS 2 包推荐使用 ament_cmakeament_python,具体选择取决于你的项目语言和需求。

相关推荐
猎人everest5 分钟前
Django的HelloWorld程序
开发语言·python·django
木棉软糖35 分钟前
【记录坑点问题】IDEA运行:maven-resources-production:XX: OOM: Java heap space
java·maven·intellij-idea
嵌入式@秋刀鱼39 分钟前
《第四章-筋骨淬炼》 C++修炼生涯笔记(基础篇)数组与函数
开发语言·数据结构·c++·笔记·算法·链表·visual studio code
嵌入式@秋刀鱼43 分钟前
《第五章-心法进阶》 C++修炼生涯笔记(基础篇)指针与结构体⭐⭐⭐⭐⭐
c语言·开发语言·数据结构·c++·笔记·算法·visual studio code
别勉.1 小时前
Python Day50
开发语言·python
泽02021 小时前
C++之list的自我实现
开发语言·数据结构·c++·算法·list
斗转星移31 小时前
c++默认类模板参数
开发语言·c++
肥肥呀呀呀1 小时前
flutter 的lottie执行一次动画后关闭
开发语言·flutter
福理原乡大王1 小时前
Linux信号详解
linux·运维·服务器·c++·ubuntu·信号处理
Java知识库2 小时前
2025秋招后端突围:JVM核心面试题与高频考点深度解析
java·jvm·程序员·java面试·后端开发