ROS2 与以太网/IP 的接口

问题描述 投票:0回答:1

我有一个 ABB 机器人,我已通过 abb_ros2 与 ROS2 连接。我有一个工业设备,我需要使用以太网/IP 读取和写入数据,并使用基于这些以太网/IP 值的一些逻辑来命令机器人。我还没有这个设备,所以我不知道会发生什么。然而,实现这一目标的正确方法是什么?

  1. 有没有办法可以将micro-ros支持的微控制器与以太网/IP连接起来,以便我可以在ros2中“本地”发布?
  2. 有没有办法可以“直接”将底层 DDS 与以太网/IP 连接?
  3. 我可以想当然地认为提供以太网/IP 接口的设备可能有一种使用库与其进行通信的方法吗?我见过 git 上的库,例如 pylogix,可通过以太网/IP 与特定 PLC 配合使用,或者是通用库,例如 EIPScanner。原则上我能够编写使用这些库的 ros2 节点。

我对现场总线和ros2都很陌生,所以请原谅我的无知。

protocols microcontroller plc ros2 data-distribution-service
1个回答
0
投票

有没有一种方法可以将 micro-ros 支持的微控制器与以太网/ip 连接起来,以便我可以在 ros2 中“本地”发布?

最有可能的是,查看链接的 micro-ros 控制器列表,您有一些选择

  • Arduino Portenta H7(WiFi)
  • Teensy 4.0/4.1(以太网UDP)
  • STM32L4 探索套件 IoT(以太网 UDP)
  • Olimex LTD STM32-E407(以太网 UDP - F、N)

列出的其他板都是 UART,并且有一种方法可以使用 UART 接口连接到以太网,例如使用此板:KUBII - UART 到以太网转换器(WV20655)

有没有办法可以“直接”将底层 DDS 与以太网/IP 连接?

我会通过使用 HTTP 方法来回答“是”。请参阅下文了解可能的实施方式。

我可以想当然地认为提供以太网/IP 接口的设备可能有一种使用库与其进行通信的方法吗?我见过 git 上的库(如 pylogix)可以通过以太网/ip 与特定 PLC 或通用库(如 EIPScanner)配合使用。原则上我能够编写使用这些库的 ros2 节点。

假设永远不安全,只能研究特定的硬件模块并看看它是否可以实现您想要的功能。看看

Arduino Portenta H7
。因为是Arduino,所以已经支持制作网络服务器了。请参阅Portenta H7 作为 Wi-Fi 接入点。对于这个特定的模块,有一种使用现有库进行通信的方法。

对于这个特定的模块,您可以编写一个连接到 ROS 网络并通过

Listener
监听机器人状态的函数。在同一个模块上,您可以编写一个能够与网络通信(例如通过 HTTP 方法或成为 Web 服务器)的 Arduino 端,然后使用其中的一些函数将您发送到该 Web 服务器的任何内容转换为您可以使用的指令。可以发布回 ROS 2 网络。我认为这可以使用服务方法来完成。

我在服务方面没有太多经验,但阅读相关内容后,它看起来对于您给定的应用程序很有希望。请参阅ROS 2 - 了解服务

这就是我如何使用 ROS 2 Talker/Listener 方法来实现您想要做的事情。

假设:

  • 您有一些可以与网络连接的板
  1. 构建一个 ROS 2 监听器,订阅任何与当前机器人状态保持同步的 ROS 2 节点
  2. 在 ROS 2 监听器中,配置您希望如何传达机器状态。我建议使用 JSON 结构,因为您可以在控制器计算机上(无论是在您的计算机上还是另一个端点上)配置您希望如何表示 JSON(例如解析它然后在 GUI 中显示它),然后 POST 到该结构端点,或回复 GET,这取决于您。这使您可以灵活地创建自己的应用程序来控制机器人,因为它只需要一个 JSON 对象即可了解您的机器人正在做什么、处于什么状态或您可能需要的任何其他信息。
  3. 然后,构建一个 ROS 2 Talker,它接受来自给定端点的 POST 消息,这就是您向 ROS 2 网络提交命令的方式。假设您将 JSON 消息发布到 ROS 2 Talker 节点,那么它可以将传入的 JSON 结构转换为可以通过控制您的机器可以理解的 ROS 2 网络进行通信的消息。

另请参阅:

编写一个简单的发布者和订阅者(C++)

编写一个简单的发布者和订阅者(Python)

了解有关 POST 和 GET 等 HTTP 方法的更多信息

© www.soinside.com 2019 - 2024. All rights reserved.