机器人可以在各种地方工作,网络条件各异,从稳定的以太网到不稳定的蜂窝或卫星连接。了解如何使用 gRPC 和 WebRTC 让机器人和其他智能机器更可靠地进行通信。
我最近在 Viam 开始了一份新工作,很想了解更多有关其系统架构的信息。许多机器人系统由低功耗和低带宽设备组成,或者在较差的网络条件下运行。Viam 是一个开源机器人软件平台,专门用于帮助机器人和其他智能机器更可靠地通信。
它使用 gRPC 进行快速、结构化的客户端-服务器通信,使用 WebRTC 进行机器之间的直接点对点通信。让我们更详细地探讨使用 gRPC 和 WebRTC 的好处。
将gRPC用于机器人技术的原因有很多,例如提高开发人员的工作效率和开发人员的体验。然而,最令人信服的原因是它针对速度进行了优化,可能比 HTTP 上的 REST API 快 7-10 倍,并且具有轻量级的 Protobuf 消息传递功能。
Viam API中的组件和服务表示为与语言无关的协议缓冲区 (protobuf) 服务,gRPC 负责在调用 protobuf 方法时传输和通信 protobuf 消息。
具体来说,Viam 使用 gRPC 实现机器部件与基于 SDK 的应用程序之间的高级交互,从而实现结构化、低延迟的数据交换和控制命令。这是一种协调待完成工作的有效方法,例如从摄像头检索点云、分析数据以进行对象分割以及指示机械臂根据计算出的姿势执行任务。
Protobuf最小化了传输数据的大小,节省了传输过程中的网络带宽。
在机器人技术中使用WebRTC 的原因有很多,例如出于安全性和跨平台兼容性的考虑。不过,最令人信服的原因是它使用直接连接。
Viam 依靠 WebRTC 进行点对点通信,允许机器部件和 Viam SDK 之间直接传输视频和数据流。这意味着一旦建立了初始连接,您的数据就无需经过中央服务器才能与另一台机器通信。这种设置可以优化实时响应能力和运营效率,尤其是在机器配置复杂的情况下。
WebRTC 支持直接的点对点通信,避免了可能引入延迟或故障点的中间服务器。
让我们通过一个由两个机器部件(一个摄像头和一个手臂)组成的街机抓娃娃机的例子来看一下它的工作原理。
Viam 应用程序 (app.viam.com) 监听连接请求,发送连接详细信息,然后让两个对等体直接通信。初始连接通过 gRPC 实现。
连接后,机器部件通过 WebRTC 进行通信,从而允许 SDK 和机器之间的所有交互都使用 gRPC 方法调用通过 WebRTC 进行。换句话说,gRPC 架构决定数据的外观和打包方式,而 WebRTC 则负责将数据从一个地方实际传送到另一个地方。
虽然您可以自行构建类似的基础设施,但 Viam 可通过现成的机器人软件提供此功能。机器上的功能是开源的,可免费使用。如果您最终开始管理车队,则将根据使用情况对云服务和数据存储进行计费。
Viam Web 应用程序和SDK旨在帮助您使用机器。但是,如果您想探索幕后发生的事情,请查看 Postman 中的Viam API 公共工作区,获取有关使用底层 Viam gRPC API 的分步说明,包括:
授权 gRPC API 调用
调用方法来控制硬件组件
调用方法来管理软件服务
你可能没有机械臂,但你可以用更便宜的机器来尝试,比如Yahboom 或 SCUTTLE等探测车。Viam 还设计了一款开源探测车,帮助人们了解机器人技术。
使用 gRPC 和 WebRTC 操作探测车
首先,点击下面的“在 Postman 中运行”按钮,将Spin a Viam 流动站样本集合分叉到您自己的工作区。
并关注以下资源:
技术审核: Nick Hehr