# Материалы дистанционных Учебно-Тренировочных сборов 2019/20. Задание 1 Робот, собранный по дифференциальной схеме оснащен тремя инфракрасными датчиками расстояния. Один из датчиков расстояния установлен так, что показывает расстояние до препятствий прямо по курсу робота.  Второй датчик расстояния направлен влево. Третий датчик расстояния направлен вправо. Необходимо в заранее неизвестном лабиринте размером $8 \times 8$ секторов переместиться в сектор финиша. Сектор --- квадрат шириной $700$ мм. Координаты сектора финиша передаются в виде двух изображений ArTag маркеров через входной файл. Началом координат служит верхний левый сектор лабиринта. Положительным направлением оси $X$ считается направление по горизонтали вправо. Положительным направлением оси $Y$ считается направление по вертикали вниз. Расположение осей координат представлено на рисунке ниже. Гарантируется что при старте робот направлен в сторону положительного направления оси $X$.   ![](https://i.imgur.com/eFoUQFE.png =500x500) Расположение осей координат Изображение поверхности с ArTag маркером приходит в управляющую программу в виде набора $160 \times 120$ точек, где каждая точка закодирована в RGB-формате. ![](https://i.imgur.com/KET9GHQ.png =500x500) Нумерация битов в маркера Элементы ARTag  маркера, расположенные по его границе --- всегда черные. Четыре элемента, находящиеся в углах внутреннего $3\times 3$ квадрата определяют ориентацию маркера таким образом, что только элемент в нижнем правом углу квадрата --- белый. Центральный элемент квадрата используется для проверки четности (parity check): если количество единичных бит в двоичной записи закодированного в маркере числа нечетное, то он черный. Оставшиеся $4$ элемента маркера кодируют число по следующему правилу: если элемент черный, то  он обозначает $1$, если белый, то $0$ при этом самый первый элемент --- старший бит закодированного числа. Элементы пронумерованы сверху вниз, слева направо (см. рисунке выше. В случае если число меньше $8$, то данные маркер кодирует координату по оси $X$. В противном случае следует вычесть $8$ из полученного значения и получим координату по оси $Y$. Например, на маркере с рисунке ниже закодировано число $0011_2$, что эквивалентно $3_{10}$. Следовательно, это $X$ составляющая равная $3$.   ![](https://i.imgur.com/Pdm5lZA.png =500x500) Маркер с закодированным значением - $0011_2$ Поскольку изображение было получено в процесе движения, то изображения ArTag маркера, получаемые с камеры, получаются в виде неправильного выпуклого четырехугольника, а непостоянные условия освещенности изменяют фокус и тон на изображении. Ориентация маркеров также заранее неизвестна, но его изображение таково, что оно по каждой из осей $X, Y, Z$ относительно оптической оси камеры не превышает $25$ градусов. ### Формат входных данных Входной файл содержит $2$ строки, на каждой расположено изображение размером $160 \times 120$ в виде шестнадцатеричных чисел слева направо сверху вниз. Данные числа имеют следующий вид: $RRGGBB$, где $RR$ - 16тиричное число $R$ составляющей данного элемента матрицы, $GG$ и $BB$ --- это 16ти-ричные числа $G$ и $B$ составляющих соответственно. Все числа являются целыми. ### Формат выходных данных Доехать до сектора финиш и вывести на экран слово "finish". ### Конфигурация робота Подключение моторов: * Правый мотор — порт M3 * Левый мотор — порт M4 Подключение датчиков: * Датчик расстояния, направленный вперед - порт A1 * Датчик расстояния, направленный вправо - порт A2 * Датчик расстояния, направленный влево - порт A3 ### Комментарии Считать что стены в лабиринте тонкие и реальная физика в задаче отключена. Необходимо загружать js файл с программой, написанной в [TRIK Studio 2020.1](https://trikset.com/downloads). Название файла `task1.js`. Примеры входных полигонов представлены по [ссылке](https://drive.google.com/drive/folders/1c283OAxMqlqmTtpy5s-UjoDlN8HgztzS?usp=sharing). ### Полезные материалы по git * https://git-scm.com/book/ru/v2 * https://stepik.org/course/3145/promo * https://habr.com/ru/post/437000/