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,具体选择取决于你的项目语言和需求。

相关推荐
带刺的坐椅20 小时前
Solon AI 开发学习5 - chat - 支持哪些模型?及方言定制
java·ai·openai·solon
小离a_a20 小时前
flex垂直布局,容器间距相等
开发语言·javascript·ecmascript
悟空码字21 小时前
单点登录:一次登录,全网通行
java·后端
傻啦嘿哟21 小时前
物流爬虫实战:某丰快递信息实时追踪技术全解析
java·开发语言·数据库
倚肆21 小时前
Spring Boot Security 全面详解与实战指南
java·spring boot·后端
码力码力我爱你21 小时前
Harmony OS C++实战
开发语言·c++
茄子凉心21 小时前
android 开机启动App
android·java·开发语言
optimistic_chen21 小时前
【Redis 系列】Redis详解
linux·数据库·redis·缓存·xsheel
8***f39521 小时前
工作中常用springboot启动后执行的方法
java·spring boot·后端
低客的黑调21 小时前
了解JVM 结构和运行机制,从小白编程Java 大佬
java·linux·开发语言