paint-brush
네트워크 상태가 좋지 않으신가요? 문제 없습니다! 로봇을 위한 gRPC와 WebRTC가 도와드릴 수 있습니다.~에 의해@joycelin
287 판독값

네트워크 상태가 좋지 않으신가요? 문제 없습니다! 로봇을 위한 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 의 구성 요소와 서비스는 언어와 독립적인 Protocol Buffer(protobuf) 서비스로 표현되며, gRPC는 protobuf 메서드를 호출할 때 protobuf 메시지의 전송과 통신을 담당합니다.


구체적으로, Viam은 기계 부품과 SDK 기반 애플리케이션 간의 고수준 상호작용에 gRPC를 사용하여 구조화된 저지연 데이터 교환 및 제어 명령을 가능하게 합니다. 이는 카메라에서 포인트 클라우드를 검색하고, 객체 분할을 위한 데이터를 분석하고, 로봇 팔에 계산된 포즈에 따라 작업을 수행하도록 지시하는 것과 같이 수행해야 할 작업을 조정하는 효율적인 방법입니다.


Protobuf는 전송되는 데이터의 크기를 최소화하여 전송 중 네트워크 대역폭을 절약합니다.

로봇공학에서 WebRTC를 사용하는 이점

로봇공학에서 WebRTC를 사용하는 데에는 보안 및 크로스 플랫폼 호환성 등 여러 가지 이유가 있습니다. 그러나 가장 설득력 있는 이유는 직접 연결을 사용한다는 것입니다.

피어투피어 커뮤니케이션

  • 직접 : WebRTC는 장치 간의 직접 연결을 촉진하여 중앙 서버에 대한 의존도를 줄이고 데이터 이동 경로를 최소화합니다.
  • 네트워크 적응성 : 비디오 스트리밍 등의 원활한 성능을 위해 네트워크 상황에 따라 미디어 품질을 조정합니다.


Viam은 피어 투 피어 통신을 위해 WebRTC를 사용하여 머신 파트와 Viam SDK 간에 직접 비디오 및 데이터 스트림을 허용합니다. 즉, 초기 연결이 설정되면 데이터가 다른 머신과 통신하기 위해 중앙 서버를 거쳐 먼 길을 갈 필요가 없습니다. 이 설정은 특히 복잡한 머신 구성에서 실시간 응답성과 운영 효율성을 최적화합니다.


WebRTC를 사용하면 지연이나 장애 지점을 유발할 수 있는 중간 서버를 거치지 않고도 피어투피어(Peer-to-Peer) 간의 직접적인 통신이 가능합니다.

Viam이 gRPC와 WebRTC를 사용하여 피어투피어 로봇 통신을 활성화하는 방법

두 가지 기계 부품(카메라와 팔)으로 구성된 아케이드 클로 게임을 예로 들어 이것이 어떻게 작동하는지 살펴보겠습니다.


Viam은 아케이드 클로 게임에서 로봇의 구성 요소를 제어합니다.


Viam 앱(app.viam.com)은 연결 요청을 수신하고, 연결 세부 정보를 보낸 다음 두 피어가 직접 통신하도록 합니다. 초기 연결은 gRPC를 통해 촉진됩니다.


Viam은 이 로봇 클로 게임에서 연결을 초기화하기 위해 gRPC를 사용하고 피어투피어 통신을 위해 WebRTC를 사용합니다.


연결되면 머신 파트는 WebRTC를 통해 통신하여 SDK와 머신 간의 모든 상호 작용이 gRPC 메서드 호출을 사용하여 WebRTC를 통해 이루어질 수 있습니다. 즉, gRPC 스키마는 데이터가 어떻게 보이고 어떻게 패키징되는지 결정하는 반면 WebRTC는 해당 데이터를 한 곳에서 다른 곳으로 실제로 전달하는 것을 처리합니다.

Viam을 사용하여 로봇공학을 시작하세요

비슷한 인프라를 직접 구축할 수도 있지만, Viam은 기성형 로봇 소프트웨어로 이 기능을 제공합니다. 온머신 기능은 오픈 소스이며 무료로 운영할 수 있습니다. 결국 함대 관리를 시작하면 클라우드 서비스와 데이터 스토리지에 대한 사용 기반 청구입니다.


Viam 웹 앱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