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

相关推荐
爱吃大芒果10 小时前
Flutter for OpenHarmony 实战:mango_shop 路由系统的配置与页面跳转逻辑
开发语言·javascript·flutter
学***542310 小时前
如何轻松避免网络负载过大
开发语言·网络·php
RANCE_atttackkk10 小时前
Springboot+langchain4j的RAG检索增强生成
java·开发语言·spring boot·后端·spring·ai·ai编程
zmjjdank1ng10 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.11 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
梵刹古音11 小时前
【C语言】 格式控制符与输入输出函数
c语言·开发语言·嵌入式
Acrelhuang11 小时前
工商业用电成本高?安科瑞液冷储能一体机一站式解供能难题-安科瑞黄安南
大数据·开发语言·人工智能·物联网·安全
hello 早上好11 小时前
03_JVM(Java Virtual Machine)的生命周期
java·开发语言·jvm
沐雪架构师11 小时前
LangChain 1.0 Agent开发实战指南
开发语言·javascript·langchain
tod11311 小时前
力扣高频 SQL 50 题阶段总结(四)
开发语言·数据库·sql·算法·leetcode