ROS 2客户端接口 (客户端库)
ROS客户端接口,又名|客户端库|,是面向用户的接口,提供高级功能,并建立在 rcl
和 rosidl
的 APIs 基础上。 [Alyssa@9656]
rclcpp
包 [Alyssa@9657]
针对C++ ( rclcpp
) 的ROS客户端库是面向用户的,符合C++ 语言特定的接口,它提供所有ROS客户端功能,如创建节点、发布者和订阅者。 rclcpp
建立在 rcl
和 rosidl
API 的基础上,它被设计为与 rosidl_generator_cpp
生成的C++ 消息一起使用。 [Alyssa@9658]
rclcpp
利用所有 C++ 和C++11 的特性使接口尽可能容易去使用,但是因为它复用了 rcl
的实施,它可以和其它使用 rcl
API 的客户端库保持一致的行为方式。 [Alyssa@9659]
rclcpp
仓库位于 GitHub 在`ros2/rclcpp <https://github.com/ros2/rclcpp>`_ ,并且包含 rclcpp
|包| 。生成的 API 文档如下: [Alyssa@9660]
rclpy
包
Python的ROS客户端库 ( rclpy
) 是与C++客户端库相对应的Python客户端库。像C++客户端库一样, rclpy
的实现也是在 rcl
C API的基础上构建的。该接口提供了一种惯用的Python体验,它使用地道的Python类型和模式,如列表和上下文对象,但是通过在实现中使用 rcl
API,它在功能和行为方面与其他客户端库保持一致。除了为每个消息提供围绕 rcl
API 和Python类的Python惯用绑定之外,Python客户端库还负责执行模型,使用 threading.Thread
或类似方法运行 rcl
API 中的函数。 [Alyssa@9663]
与C++ 一样,它为用户与之交互的每个ROS消息生成自定义Python代码,但与C++ 不同,它最终将Python自身的消息对象转换为C版本的消息。所有操作都发生在Python版本的消息上,直到它们需要传递到 rcl
层,此时,它们将转换为消息的纯C版本,以便可以将其传递到 rcl
C API。当发布者和订阅者在同一进程中进行通信,如果可能的话,可以避免这种情况,以减少消息转入和转出Python的过程。 [Alyssa@9664]
rclpy
仓库位于 GitHub 在 ros2/rclpy ,包含 rclpy
|包| 。生成的 API 文档如下: [Alyssa@9665]