Одним из базовых движений в легоконструировании является следование по черной линии.
Общая теория и конкретные примеры создания программы описаны на сайте wroboto.ru
Опишу, каким образом мы это реализуем в среде EV3, поскольку есть отличия.
Первое, что необходимо знать роботу – значение “идеальной точки”, расположенной на границе черного и белого.
Расположение красной точки на рисунке как раз соответствует этой позиции.
Идеальный вариант расчета – измерить значение черного и белого и взять среднее арифметическое.
Сделать это можно вручную. Но минусы видны сразу: в течении даже небольшого времени освещенность может поменяться, и высчитанное значение окажется неверным.
Значит, можно заставить это делать робота.
В ходе экспериментов мы выяснили, что измерять и черное, и белое необязательно. Можно измерить только белое. А значение идеальной точки рассчитывается как значение белого, деленное на 1,2 (1,15), в зависимости от ширины черной линии и скорости движения робота.
Рассчитанное значение нужно записать в переменную, чтобы потом обращаться к нему.

Следующий параметр, участвующий в движении – коэффициент поворота. Чем он больше, тем резче робот реагирует на изменение освещенности. Но слишком большое значение приведет к “вилянию” робота. Значение подбирается экспериментально индивидуально для каждой конструкции робота.
Последний параметр – базовая мощность моторов. Она влияет на скорость движения робота. Увеличение скорости движения приводит к увеличению времени реагирования робота на изменение освещенности, что может привести к вылету с траектории. Значение тоже подбирается экспериментально.
Для удобства, эти параметры тоже можно записать в переменные.

Логика движения по черной линии такова: измеряется отклонение от идеальной точки. Чем оно больше, тем сильнее робот должен стремиться вернуться к ней.
Для этого высчитываем два числа – значение мощности каждого из моторов В и С по отдельности.
В виде формул это выглядит так:

,где Isens – значение показаний датчика освещенности.
Наконец, реализация в EV3. Удобнее всего оформить в виде отдельного блока.

Именно такой алгоритм был реализован в роботе для средней категории WRO 2015
Добрый день, а целиковую программу можно где-то посмотреть или скачать?
Андрей очень интересно. Но не могли бы вы показать весь блок целиком. Суть понятна а вот исполнение к сожалению нет.
На последнем фото как раз все содержимое блока