Роботы работают в самых разных местах с различными сетевыми условиями, от стабильного Ethernet до нестабильных сотовых или спутниковых соединений. Узнайте, как можно использовать gRPC и WebRTC для роботов и других умных машин, чтобы обеспечить более надежную связь.
Недавно я устроился на новую работу в Viam и мне было любопытно узнать больше об архитектуре их системы. Многие робототехнические системы состоят из маломощных и малопропускных устройств или работают в плохих сетевых условиях. Viam — это платформа программного обеспечения для робототехники с открытым исходным кодом, которая была разработана специально для того, чтобы помочь роботам и другим умным машинам общаться более надежно.
Он использует gRPC для быстрой, структурированной клиент-серверной связи и WebRTC для прямой одноранговой связи между машинами. Давайте рассмотрим преимущества использования gRPC и WebRTC более подробно.
Есть ряд причин использовать gRPC для робототехники, например, для повышения производительности и удобства разработчиков. Однако наиболее весомой причиной является оптимизация скорости, возможно, до 7–10 раз быстрее, чем REST API через HTTP, с легким обменом сообщениями Protobuf.
Компоненты и службы в API Viam представлены как независимые от языка службы Protocol Buffer (protobuf), а gRPC отвечает за транспортировку и передачу сообщений protobuf при вызове методов protobuf.
В частности, Viam использует gRPC для высокоуровневых взаимодействий между деталями машин и приложениями на основе SDK, обеспечивая структурированный обмен данными и команды управления с низкой задержкой. Это эффективный способ координации выполняемых работ, таких как получение облаков точек с камер, анализ данных для сегментации объектов и указание роботизированным рукам выполнять задачи на основе вычисленных поз.
Protobuf минимизирует размер передаваемых данных, экономя пропускную способность сети во время передачи.
Существует ряд причин использовать WebRTC в робототехнике, например, для безопасности и кроссплатформенной совместимости. Однако наиболее весомой причиной является то, что он использует прямое соединение.
Viam использует WebRTC для одноранговой связи, что позволяет осуществлять прямые потоки видео и данных между частями машины и Viam SDK. Это означает, что после установки начального соединения вашим данным не нужно проходить долгий путь через центральный сервер, чтобы связаться с другой машиной. Такая настройка оптимизирует отклик в реальном времени и эффективность работы, особенно при сложных конфигурациях машин.
WebRTC обеспечивает прямую одноранговую связь, избегая промежуточных серверов, которые могут вызывать задержки или точки сбоя.
Давайте рассмотрим, как это работает, на примере аркадной игры-когтя, состоящей из двух частей машины: камеры и руки.
Приложение Viam (app.viam.com) прослушивает запросы на подключение, отправляет данные о подключении, а затем позволяет двум пирам общаться напрямую. Первоначальные подключения осуществляются через gRPC.
После подключения части машины взаимодействуют через WebRTC, позволяя всем взаимодействиям между SDK и машинами происходить через WebRTC с использованием вызовов методов gRPC. Другими словами, схема gRPC решает, как выглядят данные и как они упаковываются, в то время как WebRTC обрабатывает фактическую доставку этих данных из одного места в другое.
Хотя вы можете построить подобную инфраструктуру самостоятельно, Viam предоставляет эту возможность с помощью готового программного обеспечения для робототехники. Функциональность на машине имеет открытый исходный код и бесплатна для использования. Если вы в конечном итоге начнете управлять парком, это будет основанная на использовании тарификация для облачных сервисов и хранения данных.
Веб-приложение Viam и SDK были разработаны, чтобы помочь вам работать с вашими машинами. Однако, если вы хотите изучить, что происходит за кулисами, ознакомьтесь с общедоступным рабочим пространством API Viam в Postman для пошаговых инструкций по работе с базовыми API Viam gRPC, включая:
Авторизация вызовов API gRPC
Вызов методов управления аппаратными компонентами
Вызов методов управления программными службами
Возможно, у вас нет роботизированной руки, но вы можете попробовать это с более доступной машиной, например, марсоходом, например, Yahboom или SCUTTLE . Viam также разработал марсоход с открытым исходным кодом , чтобы помочь людям узнать о робототехнике.
Используйте gRPC и WebRTC для управления марсоходом
Чтобы начать, скопируйте коллекцию образцов марсохода Spin a Viam в свою рабочую область, нажав кнопку «Запустить в Postman» ниже.
И следуйте этим ресурсам:
Технический обзор: Ник Хехр