ロボットは、安定したイーサネットから不安定な携帯電話や衛星接続まで、さまざまなネットワーク条件のさまざまな場所で動作します。ロボットやその他のスマート マシンがより確実に通信できるように、gRPC と WebRTC を使用する方法を学びます。
ロボットの制御に 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 などの代替トランスポートをサポートします。これにより、特にストリーミングにおいて、基盤となるトランスポート テクノロジの柔軟性と一貫性のあるインターフェイスが提供されます。
Viam APIのコンポーネントとサービスは、言語に依存しないプロトコル バッファー (protobuf) サービスとして表され、gRPC は protobuf メソッドを呼び出すときに protobuf メッセージの転送と通信を担当します。
具体的には、Viam は gRPC を使用して機械部品と SDK ベースのアプリケーション間の高レベルのやり取りを行い、構造化された低遅延のデータ交換と制御コマンドを実現します。これは、カメラからのポイント クラウドの取得、オブジェクトのセグメンテーションのためのデータの分析、計算されたポーズに基づいてロボット アームにタスクを実行するよう指示するなど、実行する作業を効率的に調整する方法です。
Protobuf は送信されるデータのサイズを最小限に抑え、送信中のネットワーク帯域幅を節約します。
ロボット工学における WebRTC の使用の利点
ロボット工学でWebRTCを使用する理由は、セキュリティやクロスプラットフォームの互換性など、数多くあります。しかし、最も説得力のある理由は、直接接続を使用することです。
ピアツーピア通信
- 直接: WebRTC はデバイス間の直接接続を容易にし、中央サーバーへの依存を減らし、データの通過ルートを最小限に抑えます。
- ネットワーク適応性: ビデオストリーミングなどのスムーズなパフォーマンスを実現するために、ネットワーク状況に基づいてメディア品質を調整します。
Viam はピアツーピア通信に WebRTC を利用しており、マシン部品と Viam SDK 間の直接ビデオおよびデータ ストリームを可能にします。つまり、最初の接続が確立されると、データは別のマシンと通信するために中央サーバーを通過する長い道のりをたどる必要がありません。この設定により、特に複雑なマシン構成でリアルタイムの応答性と運用効率が最適化されます。
WebRTC は、遅延や障害点を引き起こす可能性のある中間サーバーを回避し、直接的なピアツーピア通信を可能にします。
Viam が gRPC と WebRTC を使用してピアツーピアのロボット通信を実現する方法
カメラとアームの 2 つの機械部品で構成されたアーケード クレーン ゲームの例で、これがどのように機能するかを見てみましょう。
Viam アプリ (app.viam.com) は接続要求をリッスンし、接続の詳細を送信して、2 つのピアが直接通信できるようにします。最初の接続は gRPC を介して行われます。
接続されると、マシンの各パーツは WebRTC 経由で通信し、SDK とマシン間のすべてのやり取りが gRPC メソッド呼び出しを使用して WebRTC 経由で行われるようになります。つまり、gRPC スキーマはデータの外観とパッケージ化方法を決定し、WebRTC はデータをある場所から別の場所へ実際に配信する処理を行います。
Viamを使ってロボット工学を始めましょう
同様のインフラストラクチャを独自に構築することもできますが、Viam は既製のロボット ソフトウェアでこの機能を提供します。マシン上の機能はオープンソースで、無料で操作できます。最終的にフリートの管理を開始する場合は、クラウド サービスとデータ ストレージの料金が使用量に基づいて請求されます。
Viam Web アプリとSDK は、マシンの操作を支援するために設計されています。ただし、舞台裏で何が起こっているかを調べたい場合は、Postman のViam API パブリック ワークスペースで、基盤となる Viam gRPC API の操作に関する手順を確認してください。手順には次の内容が含まれます。
gRPC API 呼び出しの承認
ハードウェアコンポーネントを制御するメソッドの呼び出し
ソフトウェアサービスを管理するためのメソッドの呼び出し
ロボットアームを所有していない場合でも、 Yahboom や SCUTTLEなどのローバーなど、より手頃な機械で試してみることができます。Viam は、人々がロボットについて学べるように、オープンソースのローバーも設計しました。
gRPCとWebRTCを使用してローバーを操作する
開始するには、下の「Postman で実行」ボタンをクリックして、Spin a Viam ローバーサンプル コレクションを自分のワークスペースにフォークします。
以下のリソースも参考にしてください:
- ステップバイステップのコードラボ: Viam の gRPC API の Postman チュートリアル
- 各リクエストの詳細については、 コレクションのドキュメントを参照してください。
- ビデオを見る: Viam gRPC API でローバーを回転させる
技術レビュー: Nick Hehr