php网站里放asp,一级消防工程师考试,图片展示网站织梦源码,广州网站建设培训班内部 ROS 接口是公共 C API #xff0c;供创建客户端库或添加新的底层中间件的开发人员使用#xff0c;但不适合典型 ROS 用户使用。 ROS客户端库提供大多数 ROS 用户熟悉的面向用户的API#xff0c;并且可能采用多种编程语言。 内部API架构概述
内部接口主要有两个#x… 内部 ROS 接口是公共 C API 供创建客户端库或添加新的底层中间件的开发人员使用但不适合典型 ROS 用户使用。 ROS客户端库提供大多数 ROS 用户熟悉的面向用户的API并且可能采用多种编程语言。 内部API架构概述
内部接口主要有两个 ROS中间件接口rmw API ROS客户端库接口rcl API
API rmw 是ROS 2 软件堆栈和底层中间件实现之间的接口。 ROS 2 使用的底层中间件是 DDS 或 RTPS 实现负责发现、发布和订阅机制、服务的请求-回复机制以及消息类型的序列化。
该rcl API是一个稍高级别的API用于实现客户端库不直接接触中间件实现而是通过 ROS 中间件接口 ( rmw API ) 抽象来实现。 如图所示这些API是堆叠在一起的因此典型的 ROS 用户将使用客户端库 API例如rclcpp来实现他们的代码可执行文件或库。客户端库的实现例如rclcpp使用rcl提供对 ROS 图和图事件的访问的接口。该rcl实现又使用rmw API来访问 ROS 图。实现的目的是为各种客户端库rcl可以使用的更复杂的 ROS 概念和实用程序提供通用实现同时保持对所使用的底层中间件的不可知性。该接口的目的是捕获支持 ROS 客户端库所需的绝对最小中间件功能。最后 API的实现由中间件实现特定包提供。
在上图中还有一个标记为 的框ros_to_dds该框的目的是表示一类可能的包这些包允许用户使用 ROS 等效项访问 DDS 供应商特定的对象和设置。该抽象接口的目标之一是将ROS用户空间代码与正在使用的中间件完全隔离以便用户代码 对 DDS服务或者中间件的改动影响降到最小。
特定类型接口
通俗来讲下面主要的表达就是注入用户自定义的类对象到ros 系统让ros 也认识你定义的这些类
在一些特定的业务场景下有些 API的某些部分必然特定于正在交换的消息类型例如发布消息或订阅主题因此需要为每种消息类型生成代码。下图布局了从用户定义的rosidl文件例如.msg文件到用户和系统用于执行类型特定功能的类型特定代码的路径 图“静态”类型支持生成的流程图从rosidl文件到面向用户的代码
该图的右侧显示了如何.msg将文件直接传递到特定于语言的代码生成器例如rosidl_generator_cpp或rosidl_generator_py。这些生成器负责创建用户将包含或导入的代码并将其用作文件中定义的消息的内存中表示形式.msg。例如考虑消息std_msgs/String用户可能会在 C 中使用此文件以及语句或者他们可能会在 Python 中使用该语句。这些语句之所以有效是因为这些文件是由这些特定于语言的但与中间件无关的生成器包生成的。 #include std_msgs/msg/string.hppfrom std_msgs.msg import String rosidl API
该rosidl存储库位于GitHub上的ros2/rosidl定义了消息 IDL 语法即.msg文件、.srv文件等的语法并包含用于解析文件、提供 CMake 基础设施以从消息生成代码、生成与实现无关的包。代码头文件和源文件以及用于建立默认的生成器集。该存储库包含这些包 rosidl_cmake提供CMake函数和模块用于从rosidl文件例如.msg文件、.srv文件等生成代码。 rosidl_default_generators定义默认生成器列表确保它们作为依赖项安装但也可以使用其他注入的生成器。 rosidl_generator_c提供为文件生成C头文件.h的工具rosidl。 rosidl_generator_cpp提供为文件生成C头文件.hpp的工具rosidl。 rosidl_generator_py提供为文件生成Python模块的工具rosidl。 rosidl_parser提供Python API用于解析rosidl文件。
当然ros还有更多的api 内部接口有兴趣的小伙伴可以去ros 官网看看