Движение робота по линии с поворотами
- Войдите на сайт для отправки комментариев
Втр, 09/02/2016 - 07:29
Подскажите как можно реализовать движение робота по определенной траектории то есть поворачивал на Т образных перекрестках куда нужно
Не где не смог найти такую тему если кто подскажет ссылку буду очень рад.
Есть 4 датчика линии.

Достаточно трех датчиков для определения перекрестков и не только Т-образных но и Х. Один датчик (№2) ставится на линию, а два сбоку (№1,3).
У меня ребенок сам "родил" примерно такой код:
повторять в loop(): 0. Если все три датчика видят линию - перекресток, пропуск (нам надо только прямо) 1. Если датчик №2 видит линию (черное), то: 1.1. Если датчик №1 (левый) видит белое (препятствие), то: левый движок поднимаем скорость на четверть , иначе: снижаем его скорость в 2 раза; 1.2. Если датчик №3 (правый) видит белое, то: поднимаем скрость правого движка на четверть , иначе: снижаем его скорость в 2 раза; , иначе (датчик №2 сошел с линии): 2.1 Если датчик №1 на линии, то: выключаем левый двигатель (разворот влево на одном движке) 2.2. Если датчик №3 на линии, то: выключаем правый двигатель (разворот вправо на одном движке)Собственно все. При том что опрос датчика и изменение скорости аппаратным ШИМ это 1-2 команды процессора, весь скетч крутится настолько часто, что машинка даже 1 мм не успевает проехать за цикл, при том что макс. скорость по прямой развивается до 2 метров в сек.
спасибо но робот при таком коде будет ехать только прямо в плане он на перекрестке на право и на лево повернуть не сможет
Ваш Т перекресток диагностируется когда крайний датчик вместе с центральным "на линии". Избежать анализа похожей ситуации от смещения поперек одной линии - легко, если несколько разнести крайние датчики так, чтобы на прямой они не попадали на линию вместе с центральным. в этом случае, удержание на линии надо делать по факту вылета центрального датчика и анализа какой из крайних попал на линию. Тут важен подбор ширины разнесения датчиков и ширина самой линии.
Далее, "всё просто": обнаруживаете Т перекресток парой датчиков и принимаете решение на поворот. Сам поворот потребует усложнения алгоритма, поскольку в процессе поворота робот легко может съехать с линии, но при этом он должен "помнить" про режим поворота. то есть надо завершить поворот, а только потом снова искать линию. Где искать - абсолютно понятно из конструкции и её маневренности и движения в поворотах.
Если есть энкодеры, то задача завершения поворота упрощается - считаем пройденное расстояние правыми и левыми колесами для завершения поворота. Если их нет, то сложнее: надо подбирать временные параметры соответствующие повороту и надеяться что они от просадки батареек не сильно поплывут.
Я бы в таком случае сам поворот выполнял методом разворота, когда одна сторона крутит "вперед", а другая "назад", чтобы уменьшить вылет за линию после поворота. Но тут тоже надо смотреть на конструкцию: как далеко вперед вынесены датчики, находятся ли они на одной линии (центральный можно вынести вперед/назад по отношению к крайним, какова маневренность тележки в целом и т.д.
В целом, без тренировочных экспериментов вам все равно не обойтись. Мы тоже, пока строили тележку напридумывали кучу сложных алгоритмов управления на линии, а оказалось все донельзя примитивно.
Спасибо буду пробовать