paint-brush
网络条件差?没问题!机器人的 gRPC 和 WebRTC 可以提供帮助经过@joycelin
254 讀數

网络条件差?没问题!机器人的 gRPC 和 WebRTC 可以提供帮助

经过 Joyce Lin4m2024/08/09
Read on Terminal Reader

太長; 讀書

了解如何使用 gRPC 和 WebRTC 让机器人和其他智能机器更可靠地进行通信。许多机器人系统由低功耗和低带宽设备组成,或者在较差的网络条件下运行。GRPC 针对速度进行了优化,可能比 REST API 快 7-10 倍。
featured image - 网络条件差?没问题!机器人的 gRPC 和 WebRTC 可以提供帮助
Joyce Lin HackerNoon profile picture

机器人可以在各种地方工作,网络条件各异,从稳定的以太网到不稳定的蜂窝或卫星连接。了解如何使用 gRPC 和 WebRTC 让机器人和其他智能机器更可靠地进行通信。


使用 Postman 中的 Viam gRPC API 操作流动站

为什么使用 gRPC 和 WebRTC 来控制机器人?

我最近在 Viam 开始了一份新工作,很想了解更多有关其系统架构的信息。许多机器人系统由低功耗和低带宽设备组成,或者在较差的网络条件下运行。Viam 是一个开源机器人软件平台,专门用于帮助机器人和其他智能机器更可靠地通信。


它使用 gRPC 进行快速、结构化的客户端-服务器通信,使用 WebRTC 进行机器之间的直接点对点通信。让我们更详细地探讨使用 gRPC 和 WebRTC 的好处。

在机器人技术中使用 gRPC 和 Protobuf 的好处

gRPC用于机器人技术的原因有很多,例如提高开发人员的工作效率和开发人员的体验。然而,最令人信服的原因是它针对速度进行了优化,可能比 HTTP 上的 REST API 快 7-10 倍,并且具有轻量级的 Protobuf 消息传递功能。

性能和效率

  • 编码: Protobuf 提供高效的二进制编码,与JSON-RPC相比,非常适合功率、内存、计算或带宽限制较低的机器。
  • 传输:除了默认的 HTTP/2 传输之外,gRPC 还支持其他传输方式,例如带有 gRPC-Web 和 WebRTC 的 HTTP/1.1。这提供了一致的接口以及底层传输技术的灵活性,尤其是在流媒体方面。


Components and services in the Viam API represented as protobuf

Viam API中的组件和服务表示为与语言无关的协议缓冲区 (protobuf) 服务,gRPC 负责在调用 protobuf 方法时传输和通信 protobuf 消息。


具体来说,Viam 使用 gRPC 实现机器部件与基于 SDK 的应用程序之间的高级交互,从而实现结构化、低延迟的数据交换和控制命令。这是一种协调待完成工作的有效方法,例如从摄像头检索点云、分析数据以进行对象分割以及指示机械臂根据计算出的姿势执行任务。


Protobuf最小化了传输数据的大小,节省了传输过程中的网络带宽。

在机器人技术中使用 WebRTC 的好处

在机器人技术中使用WebRTC 的原因有很多,例如出于安全性和跨平台兼容性的考虑。不过,最令人信服的原因是它使用直接连接。

点对点通信

  • 直达:WebRTC 促进设备之间的直接连接,减少对中央服务器的依赖,并最大限度地减少数据的遍历路线。
  • 网络适应性:根据网络状况调整媒体质量,以实现流畅的性能,例如视频流。


Viam 依靠 WebRTC 进行点对点通信,允许机器部件和 Viam SDK 之间直接传输视频和数据流。这意味着一旦建立了初始连接,您的数据就无需经过中央服务器才能与另一台机器通信。这种设置可以优化实时响应能力和运营效率,尤其是在机器配置复杂的情况下。


WebRTC 支持直接的点对点通信,避免了可能引入延迟或故障点的中间服务器。

Viam 如何使用 gRPC 和 WebRTC 实现点对点机器人通信

让我们通过一个由两个机器部件(一个摄像头和一个手臂)组成的街机抓娃娃机的例子来看一下它的工作原理。


Viam 在街机抓娃娃游戏中控制机器人的各个组件


Viam 应用程序 (app.viam.com) 监听连接请求,发送连接详细信息,然后让两个对等体直接通信。初始连接通过 gRPC 实现。


在这个机器人抓爪游戏中,Viam 使用 gRPC 初始化连接并使用 WebRTC 进行点对点通信


连接后,机器部件通过 WebRTC 进行通信,从而允许 SDK 和机器之间的所有交互都使用 gRPC 方法调用通过 WebRTC 进行。换句话说,gRPC 架构决定数据的外观和打包方式,而 WebRTC 则负责将数据从一个地方实际传送到另一个地方。

使用 Viam 开始使用机器人技术

虽然您可以自行构建类似的基础设施,但 Viam 可通过现成的机器人软件提供此功能。机器上的功能是开源的,可免费使用。如果您最终开始管理车队,则将根据使用情况对云服务和数据存储进行计费。


Viam Web 应用程序SDK旨在帮助您使用机器。但是,如果您想探索幕后发生的事情,请查看 Postman 中的Viam API 公共工作区,获取有关使用底层 Viam gRPC API 的分步说明,包括:


  • 授权 gRPC API 调用

  • 调用方法来控制硬件组件

  • 调用方法来管理软件服务


    供参考的Viam gRPC API集合

你可能没有机械臂,但你可以用更便宜的机器来尝试,比如Yahboom 或 SCUTTLE等探测车。Viam 还设计了一款开源探测车,帮助人们了解机器人技术。


使用 gRPC 和 WebRTC 操作探测车


首先,点击下面的“在 Postman 中运行”按钮,将Spin a Viam 流动站样本集合分叉到您自己的工作区。


单击“在 Postman 中运行”按钮,将 gRPC 集合分叉到你自己的工作区

并关注以下资源:

技术审核: Nick Hehr