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
参数指定了包的构建系统类型。cmake
、ament_cmake
和 ament_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_cmake
或 ament_python
,具体选择取决于你的项目语言和需求。