# Материалы дистанционных Учебно-Тренировочных сборов 2020/21. Задание 1 ## Перемещение в лабиринте Робот, собранный по дифференциальной схеме оснещен камерой и лазерным дальномером. Дальномер позволяет получить массив данных который содержит $683$ показаний, полученных в диапазоне $(-120^\circ; 120^\circ)$. Показания распределены равномерно в пределах указанного диапазона. Камера установленна так, что направленна в направлении движении робота. Необходимо в заранее неизвестном полигоне размером $8 \times 8$ секторов найти наименьшее расстояние между **ближайшей** тумбой к границе полигона и этой границей. Сектор --- квадрат шириной $600$ мм. Тумба занимает весь сектор и располагается так, что занимает либо весь сектор, либо со смещением в пол сектора. На полигоне может располагается $N=4$ тумбы. ![](https://i.imgur.com/IiCtktH.png) Пример расположения тумб на полигоне ### Функции робота Робот, расположенный на полигоне, управляется при помощи Python-скриптов.Для обеспечения работы робототехническое устройство использует библиотеку "robot", имеющей следующие команды: 1. **sleep(_sec_)** - пауза в sec секунд, возможно использование дробных чисел. 2. **getDirection()** - возвращает направление робота в радианах. 3. **getEncoders()** - возвращает показания экнодеров в радианах в формате dict. 4. **getLaser()** - возвращает показания лазера, включая время кадра, угол лазера, изменение угла между соседними показаниями и сами показания в формате dict. 5. **setVelosities(_linear, angular_)** - подасть заданные угловые и линейные скорости на робота. 6. **getImage()** - возвращает изображение с камеры робота в формате OpenCV image. Для демострации работы с робототехническим устройством в `scripts\` расположены примеры Python-скриптов. ### Формат выходных данных Определить расстояние между границей полигона и ближайшей тумбой. Необходимо вывести это значение в консоль в метрах. ### Примеры В вашем репозитории расположенно три тестовых примера, имеющие следующие правильные ответы: 0. тест $0.3$ м 1. тест $0.3$ м 2. тест $0.6$ м ### Инструкция по загрузке и запуску внутри VM 1. Установить Oracle VM VirtualBox 2. Скачать образ системы по данной [ссылке](https://mega.nz/file/YbZCBTpR#KLYlG1wHFBXlpuEo1bYt2u0twFB_ME5huRiesZxFALk) 3. Запустить его. 4. Скачать ваш репозиторий в любую дирректорию: ```git clone https://gitlab.com/onti-irs/onti-2021-irs/<<номер вашей группы>>/move-in-maze``` Где <<ваш номер группы>> номер группы, присвоенный вам после передачи информации про ваши гитлаб аккаунты. Он имеет вид: ```irs202100```. 2. ``cd move-in-maze`` 3. Для запуска тестов используется следующая команда: ```./sh/run_simulation.sh N``` Где вместо N указан номер теста. 4. Для сброса состояния мира в Gazebo можно воспользоваться следующей командой: ```./sh/reset.sh``` 5. Весь код, необходимо сохранять в данном репозитории. Название основного файла: `main.py`. 6. Для вашего удобства в образе уже установлен PyCharm. ### Полезные материалы по git * https://git-scm.com/book/ru/v2 * https://stepik.org/course/3145/promo * https://habr.com/ru/post/437000/