1.3 Задачи управления
Перед роботом ставится три последовательно выполняемых задачи:
- достижение заданной точки с координатами (0,0) и остановка в этой точке с абсолютным значением остаточной скорости не более 0,01 м/с. Точность остановки – половина радиуса робота;
- следование по маршруту, заданному ломаной линией с координатами вершин {(0,0), (0.7,0), (0,0.7), (-0.3,0), (-0.7,0), (0.7,0), (0,-0.8)} с отклонением от линий маршрута не более чем на 0.1 метра и остановкой в конечной точке маршрута с абсолютным значением остаточной скорости не более 0,01 м/с. Точность остановки в конечной точке маршрута и прохождений промежуточных точек маршрута – половина радиуса робота. Если робот достигает конечной точки маршрута с указанной точностью, но со слишком большой остаточной скоростью, то точка засчитывается, но выполнение не переходит к очередной задаче, пока не будет погашена скорость;
- преследование перемещающегося по среде тела с известным радиусом RT и координатами (TX, TY) до касания его телом робота. Траектория и скорость перемещения преследуемого тела неизвестны.
1.4 Интерфейс взаимодействия
Для взаимодействия со средой и управления роботом используется сетевой интерфейс с использованием протокола TCP/IP. Сервер моделирования находится по адресу 10.10.36.203. Программы моделирования работает в режиме сервера TCP/IP. Для подключения используется порт 9999. Обмен с сервером выполняется в асинхронном режиме по каналам передачи и приема данных. Обмен данными производится по текстовому протоколу с помощью сообщений. Каждое сообщение представляет собой независимую строку, ограниченную символами «{» в начале и «}» в конце. Внутри сообщения может находиться несколько не дублирующихся параметров. Параметр представляет собой ограниченную символами «(» в начале и «)» в конце и разделенную символом «=» пару «имя параметра» и «значение параметра».
После подключения системы управления к серверу моделирования начинается собственно процесс моделирования среды и перемещений робота. С интервалом в 0.05 секунды сервер отправляет клиенту следующий перечень параметров:
Имя параметра |
Возможные значения |
Тип |
Описание |
T |
>= 0 |
С плавающей запятой |
Время моделирования в секундах |
R |
0.01 – 0.07 |
С плавающей запятой |
Радиус робота |
M |
0.01 – 100 |
С плавающей запятой |
Текущая масса робота |
RX |
-1 – 1 |
С плавающей запятой |
Координата X центра робота |
RY |
-1 – 1 |
С плавающей запятой |
Координата Y центра робота |
VRX |
-100 – 100 |
С плавающей запятой |
Координата X вектора скорости робота |
VRY |
-100 – 100 |
С плавающей запятой |
Координата Y вектора скорости робота |
TR |
0.1 – 0.2 |
С плавающей запятой |
Радиус цели для третьей задачи управления (при TASK=3) |
TX |
-1 – 1 |
С плавающей запятой |
Координата X центра цели для третьей задачи управления (при TASK=3) |
TY |
-1 – 1 |
С плавающей запятой |
Координата Y центра цели для третьей задачи управления (при TASK=3) |
TASK |
1, 2, 3 |
Целое |
Номер текущей задачи управления (1 – идти на точку, 2 – идти по маршруту, 3 – преследовать цель) |
POINT |
0, 1, 2, 3, 4, 5, 6 |
Целое |
Номер текущей засчитанной точки маршрута для задачи управления 2 – идти по маршруту |
FAIL |
0, 1 |
Целое |
Состояние процесса управления 0 – норма, 1 – нарушены условия или ограничения на текущую решаемую задачу управления |
CRASH |
0, 1 |
Целое |
Состояние робота. 0 – норма. 1 –робот разрушен при касании стенки |
FUEL |
>= 0 |
С плавающей запятой |
Запас топлива (отбрасываемой массы) килограммах. Если = 0 – топливо кончилось. |
DONE |
0, 1 |
Целое |
Статус моделирования. 0 – работаем. 1 – все три задачи управления выполнены, моделирование завершено. |
ERROR |
>= 0 |
Целое |
Счетчик управляющих сообщений в неверном формате |
IGNORED |
>= 0 |
Целое |
Счетчик игнорированных управляющих сообщений (по формату или по времени) |
На основании полученных от сервера параметров система управления вычисляет требуемое управляющее воздействие и отправляет его на сервер в виде следующего перечня параметров:
Имя параметра |
Возможные значения |
Тип |
Описание |
FRX |
-100 – 100 |
С плавающей запятой |
Координата X задаваемого вектора тяги робота |
FRY |
-100 – 100 |
С плавающей запятой |
Координата Y задаваемого вектора тяги робота |
Сервер принимает управляющие воздействия от клиента с частотой не более 10 раз в секунду. При приходе от клиента управляющего сообщения с интервалом менее 0.1 секунды от предыдущего принятого к исполнению управляющего сообщения, новое управляющее сообщение сервером игнорируется. При получении сервером сообщений в неверном формате или неизвестных параметров управляющее сообщение игнорируется.
Процессы отправки и приема сообщений сервером полностью асинхронны.
Ограничения сервера управления:
- общее реальное время моделирования для одного клиента: не более 5 минут;
- получаемый от клиента объем данных: не более 100 Кб/сек;
- частота подключений к серверу: не более 1 раза в минуту;
- передача данных, не соответствующих описанному формату: запрещена.
Невыполнение ограничений сервера управления вызывает принудительное закрытие сетевого соединения с клиентом. При обнаружении попыток свалить сервер следует бан клиента с занесением в черный список и (опционально) соответствующей записи в зачетку.
Для сброса процесса моделирования следует закрыть сетевое соединение с сервером и открыть его заново.
Предложения по совершенствованию системы моделирования и сообщения об обнаруженных ошибках принимаются лично по расписанию занятий.
Пример потока сообщений от сервера (без переводов строк и пробелов!):
{(T=15.55)(R=10)(M=52.4)(RX=0.51)(RY=0.3124)(VRX=0.4623)(VRY=5.8)(TR=0)(TX=0)(TY=0)(TASK=1)(POINT=0)(FAIL=0)(CRASH=0)(FUEL=30.137)(DONE=0)(ERROR=0)(IGNORED=5)}{(T=15.6)(R=10)(M=52.32)(RX=-0.49)(RY=0.3)(VRX=0.4623)(VRY=5)(TR=0)(TX
=0)(TY=0)(TASK=1)(FAIL=0)(CRASH=0)(FUEL=30)(DONE=0)(ERROR=0)(IGNORED=5)}
Пример потока сообщений от клиента (без переводов строк и пробелов!):
{(FRX=0.1)(FRY= 1.004)}{(FRX=0)(FRY= 1)}
