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