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を使用する理由は、開発者の生産性や開発者エクスペリエンスの向上など、数多くあります。しかし、最も説得力のある理由は、軽量の Protobuf メッセージングにより、HTTP 経由のREST API よりも最大 7 ~ 10 倍高速になるなど、速度が最適化されていることです。

パフォーマンスと効率

  • エンコーディング: 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 を使用してピアツーピアのロボット通信を実現する方法

カメラとアームの 2 つの機械部品で構成されたアーケード クレーン ゲームの例で、これがどのように機能するかを見てみましょう。


Viam はアーケード クレーン ゲームでロボットのコンポーネントを制御します。


Viam アプリ (app.viam.com) は接続要求をリッスンし、接続の詳細を送信して、2 つのピアが直接通信できるようにします。最初の接続は 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