Передача запроса на ровер
Для общения с ровером требуется воспользоваться socket.io библиотекой, позволяющей обмениваться данными в реальном времени, реализованной на любом из доступных языков.
В данном документе будет использована версия на языке Python.
Информация необходимая для понимания
Что такое Asyncio?
Asyncio — это библиотека для написания конкурентного кода с использованием синтаксических конструкций async/await.
В частности, этот модуль поддерживает неблокирующую обработку ввода/вывода с использованием подпроцессов (для выполнения команд) и с использованием потоков (для программирования TCP-сокетов).
Что такое корутина/сопрограмма?
Корутина — это функция, выполнение которой можно приостановить и возобновить.
Корутина: корутины — это более общая форма подпрограмм. Подпрограммы имеют одну точку входа и одну точку выхода. А корутины поддерживают множество точек входа, выхода и возобновления их выполнения.
Более подробно о корутинах можно почитать в разделе 2.1. Изменения, внесённые в Python для добавления в язык поддержки корутин.
Добавление пакета в проект
Создание экземпляра клиента
Подключение к серверу
Основные параметры при подключении:
url - ip или ссылка на сервер, к которому подключается пользователь для работы с техникой;
transports - протокол, по которому происходит общение между клиентом и техникой. В нашем случае мы используем
websocket
;namespaces - строка или массив строк с названиями "комнат", в которых происходит общение между клиентом и техникой;
auth - токен для подключения к серверу. Без него никакие запросы на технику выполнить не получится.
Отправка запросов на ровер
Основные параметры при создании запроса:
emit_name - название запроса, который пользователь отправляет. Список всех возможных запросов находится в другом разделе;
data - данные, которые передаются без параметра. Необязательный параметр;
namespace - строка с названиям "комнаты", в которой происходит общение между клиентом и техникой;
callback - функция, которая обработает возвращенную информацию.
Получение событий
Определение событий
Socket.io основан на событиях, поэтому когда сервер хочет связаться с клиентом, он отправляет событие, которое нужно прослушивать. У каждого события есть имя и список аргументов.
name - название события;
handler - обработчик вызванного события, в данном примере это
on_message
;namespace - строка с названиям "комнаты", в которой происходит общение между клиентом и техникой;
Пример команды command на движение
Команда, с громкоговорящим названием command
, является общей для большинства действий ровера. В данном блоке мы заставим технику сдвинуться с места и через 5 секунд остановиться.
Параметры данного запроса:
name - название события, строка
command
;data - данные, которые передаются на ровер:
id - идентификатор техники;
type - тип команды, в данном случае
move
;value - данные для команды
move
, которые используются для выполнения команды.
Для более подробной информации по value, читайте на вкладке о командах
namespace - строка с названиям "комнаты", в которой происходит общение между клиентом и техникой;
callback - функция, вызываемая при возвращении результатов выполненя команды.
Last updated