로봇은 안정적인 이더넷에서 일관되지 않은 셀룰러 또는 위성 연결에 이르기까지 다양한 네트워크 조건을 갖춘 모든 종류의 장소에서 작업합니다. 로봇 및 기타 스마트 머신이 보다 안정적으로 통신할 수 있도록 gRPC 및 WebRTC를 사용하는 방법을 알아보세요.
저는 최근 Viam에서 새 직장을 시작했고, 그들의 시스템 아키텍처에 대해 더 알고 싶었습니다. 많은 로봇 시스템은 저전력, 저대역폭 장치로 구성되거나, 열악한 네트워크 조건에서 작동합니다. Viam은 로봇과 다른 스마트 머신이 보다 안정적으로 통신할 수 있도록 특별히 설계된 오픈소스 로봇 소프트웨어 플랫폼입니다.
빠르고 구조화된 클라이언트-서버 통신에는 gRPC를 사용하고, 머신 간의 직접적인 피어투피어 통신에는 WebRTC를 사용합니다. gRPC와 WebRTC를 사용하는 것의 이점을 더 자세히 살펴보겠습니다.
로봇공학에 gRPC를 사용하는 데에는 개발자 생산성과 개발자 경험을 개선하는 등 여러 가지 이유가 있습니다. 그러나 가장 설득력 있는 이유는 속도를 최적화했기 때문입니다. 아마도 HTTP를 통한 REST API보다 최대 7~10배 더 빠르고 가벼운 Protobuf 메시징을 사용했기 때문입니다.
Viam API 의 구성 요소와 서비스는 언어와 독립적인 Protocol Buffer(protobuf) 서비스로 표현되며, gRPC는 protobuf 메서드를 호출할 때 protobuf 메시지의 전송과 통신을 담당합니다.
구체적으로, Viam은 기계 부품과 SDK 기반 애플리케이션 간의 고수준 상호작용에 gRPC를 사용하여 구조화된 저지연 데이터 교환 및 제어 명령을 가능하게 합니다. 이는 카메라에서 포인트 클라우드를 검색하고, 객체 분할을 위한 데이터를 분석하고, 로봇 팔에 계산된 포즈에 따라 작업을 수행하도록 지시하는 것과 같이 수행해야 할 작업을 조정하는 효율적인 방법입니다.
Protobuf는 전송되는 데이터의 크기를 최소화하여 전송 중 네트워크 대역폭을 절약합니다.
로봇공학에서 WebRTC를 사용하는 데에는 보안 및 크로스 플랫폼 호환성 등 여러 가지 이유가 있습니다. 그러나 가장 설득력 있는 이유는 직접 연결을 사용한다는 것입니다.
Viam은 피어 투 피어 통신을 위해 WebRTC를 사용하여 머신 파트와 Viam SDK 간에 직접 비디오 및 데이터 스트림을 허용합니다. 즉, 초기 연결이 설정되면 데이터가 다른 머신과 통신하기 위해 중앙 서버를 거쳐 먼 길을 갈 필요가 없습니다. 이 설정은 특히 복잡한 머신 구성에서 실시간 응답성과 운영 효율성을 최적화합니다.
WebRTC를 사용하면 지연이나 장애 지점을 유발할 수 있는 중간 서버를 거치지 않고도 피어투피어(Peer-to-Peer) 간의 직접적인 통신이 가능합니다.
두 가지 기계 부품(카메라와 팔)으로 구성된 아케이드 클로 게임을 예로 들어 이것이 어떻게 작동하는지 살펴보겠습니다.
Viam 앱(app.viam.com)은 연결 요청을 수신하고, 연결 세부 정보를 보낸 다음 두 피어가 직접 통신하도록 합니다. 초기 연결은 gRPC를 통해 촉진됩니다.
연결되면 머신 파트는 WebRTC를 통해 통신하여 SDK와 머신 간의 모든 상호 작용이 gRPC 메서드 호출을 사용하여 WebRTC를 통해 이루어질 수 있습니다. 즉, gRPC 스키마는 데이터가 어떻게 보이고 어떻게 패키징되는지 결정하는 반면 WebRTC는 해당 데이터를 한 곳에서 다른 곳으로 실제로 전달하는 것을 처리합니다.
비슷한 인프라를 직접 구축할 수도 있지만, Viam은 기성형 로봇 소프트웨어로 이 기능을 제공합니다. 온머신 기능은 오픈 소스이며 무료로 운영할 수 있습니다. 결국 함대 관리를 시작하면 클라우드 서비스와 데이터 스토리지에 대한 사용 기반 청구입니다.
Viam 웹 앱 과 SDK는 머신에서 작업하는 데 도움이 되도록 설계되었습니다. 그러나 백그라운드에서 무슨 일이 일어나고 있는지 알아보려면 Postman의 Viam API 공개 작업 공간 에서 기본 Viam gRPC API를 사용하는 방법에 대한 단계별 지침을 확인하세요. 여기에는 다음이 포함됩니다.
gRPC API 호출 승인
하드웨어 구성 요소를 제어하는 방법 호출
소프트웨어 서비스를 관리하는 방법 호출
로봇 팔을 사용할 수 없을 수도 있지만, Yahboom이나 SCUTTLE 과 같은 로버와 같은 더 저렴한 기계로 이것을 시도해 볼 수 있습니다. Viam은 또한 사람들이 로봇 공학에 대해 배우는 데 도움이 되는 오픈 소스 로버를 설계했습니다.
gRPC와 WebRTC를 사용하여 로버 작동
시작하려면 아래의 'Postman에서 실행' 버튼을 클릭하여 Spin a Viam 로버 샘플 컬렉션을 자신의 작업 공간으로 포크하세요.
다음 리소스를 따라해 보세요.
기술 검토: Nick Hehr