亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial Internet of Things >> 物联网技术

使用 Python 介绍用于 Connext DDS 的 RTI 实验室和连接器

自从这件事发生以来,发生了很多事情帖子最初发布。您是否知道现在可以使用 Python 或 Javascript 访问 DDS?您可以感谢我们的 RTI Labs 计划的 beta 测试人员提高了其作为 Connext ® 的 RTI 连接器的需求 DDS 现在作为 Connext 产品套件的一部分提供。

本周我们很高兴地宣布 RTI Labs,这是一项免费计划,可为我们的客户提供我们为工业物联网开发的新技术的早期访问权限。我们称它们为实验项目。利用 RTI Labs 的客户有机会利用下一代技术并通过提供有关实验功能的反馈来影响我们的产品路线图。这是一个双赢的局面!

我们正在启动包含三个新实验项目的计划,第一个是用于 Connext DDS 的 RTI (R) 连接器。如果您已经下载了 RTI Connext 5.3.0 并启动了 RTI Launcher,您将在“实验室”选项卡中看到一些新图标。这些图标之一是连接器。

单击连接器图标会将您带到社区门户上的 RTI 连接器页面。 Connector 由 RTI 的研究团队开发,用于帮助创建演示和快速测试。连接器从 RTI Prototyper 的 Lua 接口开始,然后我们被带走并添加了对脚本语言的支持,如 Python 和 JavaScript/node.js。

但是什么是 RTI 连接器?

适用于 Connext DDS 的 RTI 连接器是一种从各种不同的脚本语言(包括 JavaScript、Python 和 Lua)访问 RTI Connext DDS 的强大功能和功能的快捷方式。它建立在 Connext DDS 的几个强大功能之上,包括 XML 应用创建和动态数据。

这篇博文侧重于 RTI 连接器的 Python 接口,但大多数概念同样适用于 JavaScript/node.js 和 lua/prototyper。

用例

RTI 连接器有很多用例。早期采用者的一些用例包括:

  • 测试 通常当你开发一个复杂的分布式系统时,一些组件可能还没有准备好;在这种情况下,连接器用于模拟稍后或由其他组完成的 DDS 组件的行为。 这允许您单独测试组件——这在您在分布式团队中工作时或当您不想等到每个组件都构建好后再进行测试时非常有价值。
  • 原型设计: 在软件开发中,通常需要在所有细节可用之前验证想法。使用像 Python 这样的脚本语言和简化的 DDS API,可以非常简单快捷地开发演示或概念证明 - 使用的代码数量减少了一个数量级!
  • 用户界面: 开发简单的用户界面(使用按钮和简单的触发器可视化或发送 DDS 数据)变得非常容易 当 RTI Connector 与适用于 Python 的 UI 技术(例如 Python QT)配对时。
  • 集成: Python 和其他脚本语言具有庞大的生态系统。在撰写此博客时,PyPl 有 112,439 个包。如果您正在尝试集成某些东西,很有可能有一个 Python 包可以帮助您,现在您可以使用 Connector 来讨论 DDS!
  • 您的用例: 如果您在我们的论坛上以不同的方式使用 RTI Connector,请告诉我们!

开始使用RTI

在这篇博文中,我们假设您对 Python 有一定的了解。 RTI 连接器适用于 python 3 和 <3。它在所有主要的企业系统以及像树莓派这样的板上都受支持。您可以在此处查看可用平台列表。如果您需要其他方面的支持,请不要犹豫,在论坛上提问。要在 python 中为 Connext DDS 安装 RTI 连接器,您可以使用 PyPI 上提供的包:

 pip install rticonnextdds_connector

另一种方法是克隆存储库:

 git clone https://github.com/rticommunity/rticonnextdds-connector.git

在存储库中,您还可以找到一些示例来帮助您入门:

  • simple/writer.js:展示如何创建编写器、设置实例和发布示例。
  • simple/reader.js:演示如何获取阅读器、获取示例并访问其中的内容。
  • simple/read_and_write.py:展示了如何为反转两个字段后收到的每个样本编写一个样本。
  • mixed/:这些示例会定期更新,并包含有关如何访问序列长度、如何使用 wait() 等的不同示例。

API 概览

让我们看看 API 长什么样。如果您想了解更多详细信息,可以在我们的 GitHub 存储库中查看自述文件。

首先要做的是导入RTI连接器库:

 导入 rticonnextdds_connector 作为 rti 

在您拥有对 RTI Connector 的引用后,您可以调用 API 来创建新的 Connector:

 connector =rti.Connector("MyParticipantLibrary::Zero","./ShapeExample.xml"); 

第一个字符串是您要使用的配置的名称,而第二个字符串是包含 XML-Base App Creation 配置的 XML 文件。您可以在此处查看该文件的示例。

创建连接器后,您可以使用 getOutput API 访问所有数据写入器:

 output =connector.getOutput("MyPublisher::MySquareWriter") 

或者你可以用同样的方式访问数据读取器:

 input =connector.getInput("MySubscriber::MySquareReader"); 

两个 API 都获取一个字符串作为参数,代表实体的名称,正如它在 XML 文件中定义的那样。

一旦您有了对数据编写器的引用(在我们的示例中为输出),您就可以设置关联实例的字段。你可以通过字典来做到这一点:

 output.instance.setDictionary(sample); 

或者单独设置每个字段:

 output.instance.setNumber("y", 2);

在Data Reader端(本例中输入),可以调用read或take:

 input.read();

 input.take();

然后,您可以遍历收到的样本:

 numOfSamples =input.samples.getLength(); 

对于范围内的 j (1, numOfSamples+1):
如果 input.infos.isValid(j):
x =input.samples.getNumber(j, "x");
y =input.samples.getNumber(j, "y");
....

可以通过两种方式访问​​示例。作为字典:

 样本 =input.samples.getDictionary(j);

或逐个字段:

 y =input.samples.getNumber(j, "y"); 
size =input.samples.getNumber(j, "shapesize");

如果您使用多线程库,请记住保护对连接器的访问。您可以在此处找到有关如何执行此操作的示例。

所有这些力量都有边界

RTI Connector 很棒,它可以解决很多挑战!但是,作为一切,它并不适合一切。它具有一组有限的 API:您可以使用 Connext DDS Pro 执行的某些操作无法使用 RTI 连接器完成。它仅适用于动态数据,不适用于编译类型。为了使其易于使用和移植,我们在考虑特定用例的情况下做了一些假设,它可能无法解决您的特定用例,或者它可能不是解决它的最有效方法,但我们可能有其他工具或服务用于您的具体问题:请咨询我们!

多少钱?

您可能想知道这项技术的成本是多少……它是免费的!!你可以得到它并尝试它。我们只要求您向我们提供反馈和建议。在我们优先考虑要包含在我们未来产品版本中的更新和功能时,我们会考虑这些反馈——因此您可以帮助影响我们的路线图!

结论

这篇博客只是对我们的 RTI Connector for python 的介绍。如果您有兴趣,最好的学习方法就是尝试一下。如果您对 RTI 社区论坛有任何疑问或问题,请告诉我们,我们将很乐意为您提供帮助!如果您喜欢它并有改进的建议或想法,请随时与我们联系;我们正在寻找反馈,同时决定下一步......


物联网技术

  1. 开放式 DDS 与 RTI DDS 软件
  2. Connext DDS 的 Telegraf 插件:使用 DDS 和 InfluxDB 构建时间序列监控系统
  3. Connext 6:现在可用!
  4. Connext DDS 和工业物联网:需要了解的前 5 件事
  5. 宣布针对 Connext DDS 的最新 RTI Perftest
  6. 这就是为什么每个人都将 RTI Connext DDS 用于自动驾驶汽车的原因
  7. 我们为 IIoT 开发人员提供的 2017 年 7 大资源
  8. 如何使用 DDS 和 LabVIEW 2017 设计工业物联网系统
  9. 请开始使用 Connext DDS - ELI5。
  10. 2016 年对 Connext DDS 开发人员和工程师最有价值的内容
  11. 使用 Raspberry Pi 和 Python 构建机器人
  12. Python 中的 type() 和 isinstance() 示例