Учебная ситуация Движение роботизированного автомобиля в одной полосе с другим транспортом
Автор
Категория участника
- дополнительное образование (13-14 лет)
- средняя школа
Описание учебной ситуации
Данная учебная ситуация направлена на то, чтобы познакомить учащихся с принципами и элементами современных беспилотных автомобилей и другого подобного транспорта. Учащиеся соберут роботизированную платформу, автоматически перемещающуюся в потоке других транспортных средств, применяя плавное торможение и разгон. Им предлагается проанализировать влияние подобных технологий на безопасность на дорогах в нашей повседневной жизни.
Результат на видео
Работа от имени ученика
Вспоминаю основы работы с робоплатформой и инфракрасным датчиком расстояния. Датчик излучает ИК волны, которые отражаются от препятствия и возвращаются на приемник. В это время на аналоговом пине, к которому подключен датчик, возникает его цифровое представление в диапазоне от 0 до 1023.
Моторы управляются подачей высокого или низкого уровня на пины 4 и 7 и указании мощности из работы на пинах 5 и 6 в диапазоне от 0 до 255. Значит, нужно включить моторы на движение вперед, а скорость движения регулировать, изменяя их мощность.
Насколько я помню, значения с ИК датчика приходит в диапазоне 0-1023, а моторы управляются значениями 0-255. Преподаватель напомнил про функцию MAP. Она проделает всю работу по преобразованию одного в другое.
Для начала, попробую на практике вспомнить, какие цифры выдает ИК сенсор на небольшом расстоянии и какие на предельном. Напишу простую функцию, выдающую их в serial, и на практике все проверю.
Загружаю ее и в мониторе порта проверяю, какие цифры выдает датчик, если поднести к нему руку максимально близко
Так, а теперь, если отнести руку сантиметров на 40
Да, значит, на самом большом удалении, которое видит датчик цифры в районе 300, а на самом близком расстоянии, на которое робот может приблизиться, но все ещё не столкнуться, цифра равна почти 1000. Такие цифры мне не подходят, так как моторы управляются в диапазоне 0..255. Надо не забыть в функции MAP поменять местами нижний и верхний предел с 0..255 на 255..0, а то, если это не сделать, робот будет разгоняться при приближении к препятствию и тормозить при удалении. Удалю этот код и попробую проверить, как замедляются и ускоряются моторы, чтобы точно убедиться, что функция регулирования мощности мне подходит.
Да, все работает так, как надо, робот одну секунду едет быстро, а другую секунду сильно замедляется. Осталось в функцию управления мощностью завести значения с датчика приближения и подкорректировать их с помощью функции MAP.
Робот ведет себя полностью предсказуемо. В дополнительных калибровках не нуждается.
Итак, задание выполнено. Что бы я ещё мог придумать, для усовершенствования этой схемы? Ведь в реальной ситуации, помеха может создаваться не только спереди, по направлению движения. В мою полосу может попытаться перестроиться автомоибль, водитель которого, не заметил меня и выполняет такой опасный маневр.
Думаю, что в более сложных конструкциях датчики приближенрия должны охватывать чуть большую область, к примеру, часть правой и левой полосы. Причем, они должны быть так откалиброваны, чтобы не останавливать автомобиль при незначительных приближаениях. Значит, торможение должно начинаться при критическом приближении и оно должно быть более интенсивным, чтобы избежать столкновения.
Ссылки на скачивание
Скачать проект для ArduBlock можно здесь Скачать учебную ситуацию можно здесь




