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]