Полуавтомат (ОКД НТИ 20/21 :: ТБС)
Легенда
Команда программистов разрабатывает прототип автопилота, который должен управлять машиной на местности с препятствиями и обходить их с минимальными затратами. Автопилот работает на основе изображений с видеорегистратора. Получая оцифрованное изображение, модуль машинного зрения распознает преграды, обозначая их как единицы в строке данных, а места с возможностью проезда - как нули.
Для проверки автопилота на вход подали ряд отдельных тестовых изображений, которые в данной задаче уже обработаны машинным зрением и представлены как строки из нулей и единиц. Далее алгоритм для каждого из предложенных снимков должен сформировать управляющую команду, обеспечивающую оптимальный объезд препятствия, то есть с наименьшим отклонением от курса. Управляющая команда содержит дельту расстояния от оси машины до свободного пути, причём движение влево кодируется отрицательным числом, по модулю равным необходимому расстоянию. То есть положительное число кодирует движение вправо, а ноль — сохранение исходного курса.
Габариты машины относительно снимка равны трём ячейкам, то есть для объезда препятствий она должна попасть в центр окна из трёх нулей. При возможности одинаково оптимального объезде и справа, и слева, предпочтение отдаётся объезду слева.
Ваша задача - реализовать алгоритм объезда, формирующий необходимые управляющие команды. Гарантируется, что для каждого из снимков объезд возможен.
Принцип решения
- Реализация