Проект ScratchDuinoРобоплатформа Чёрная линия

Материал из robbo


Имя автора (авторов) проекта

Захаров Леонид Сергеевич

Участник:Елена Александровна Вострикова

Описание проезда по чёрной линии с одним датчиком

Продемонстрировать движение ScratchDuino.Робоплатформы, которая обнаруживает с помощью датчика, установленного в центральное гнездо (analog 3) чёрную линию и проезжает вдоль неё. Поле проекта: для этого проекта было построено поле с использованием секций: «Прямая» и «Крутой поворот»

Соревнования в номинации "Траектория" с участием ScratchDuino.Робоплатформы можно выигрывать если использовать все возможности данного мобильного устройства

Время заезда Количество ошибок Источник питания ROBBO Scratch Время заезда Arduino IDE
Алгоритм 1. Робот использует ОДНО числовое значение датчика линии - СРЕДНЕЕ арифметическое между
двумя крайними значениями, полученными при положении датчика над белым полем и черной линией.
Это простой релейный регулятор
Если датчик показывает значение больше этого числа, то робот 0,1 сек.
поворачивается налево и 0.1 сек. едет прямо.
Если датчик показывает значение меньше среднего арифметического,
то робот 0,1 сек. поворачивается направо и 0.1 сек. едет прямо.
Траектория движения робота напоминает движение по зигзагу
Zigzag.png
38 секунд. небольшое USB Видео ROBBO Scratch
Файл:Project Black line analog1 code1.sb2
30 секунд. Для включения и выключения робота
используются два датчика касания: analogRead(A3)
- задний правый - включение, analogRead(A1)-
задний левый - выключение,
Файл:Black line analog1 zigzag.ino
13 секунд. большое.
На высокой скорости
робот в половине случаев
проскакивает поворот.
Батарейка 7,4 В Видео ROBBO Scratch
Файл:Project Black line analog1 code1.sb2
11 секунд. Видео Arduino IDE
Файл:Black line analog1 zigzag.ino
Алгоритм № 2 Робот использует СЕМЬ (ПЯТЬ для USB) числовых значений датчика линии - промежуточные значения между
двумя крайними значениями, полученными при положении датчика над белым полем и черной линией.
Если датчик показывает значение:
0, то это означает положение над белым полем. Оба мотора включены на полную мощность (255), левый мотор крутится вперед, а правый -назад. Робот поворачивается на месте 0,1 секунды
1, то это означает положение над белым полем, ближе к чёрной линии. Левый мотор включен на полную мощность (255) и крутится вперед, а правый мотор стоит. Робот поворачивается в движении 0,1 секунды
2, то это означает положение на границе белого и черного полей, еще ближе к чёрной линии. Левый мотор включен на полную мощность (255) и крутится вперед, а правый включен на половине мощности (120) и тоже крутится вперед. Робот едет прямо и немного поворачивается в движении в течение 0,1 секунды
3, то это означает положение на границе белого и черного полей, уже на чёрной линии. Левый и правые моторы включены на полную мощность (255) и оба крутятся вперед. Робот едет прямо в течение 0,1 секунды
Остальные значения (4,5 и 6) являются зеркальными по отношению к 0,1 и 2.
Траектория движения робота напоминает плавную линию с длинными прямыми участками, на всём протяжении которой робот едет, не притормаживая
Traektoria-Line.png
25-26 секунд небольшое USB. ROBBO Scratch хуже, чем ArduiniIDE
обрабатывает время движения, поэтому
количество диапазонов мы сократили до 5
и упростили движение моторов.
Они все время двигаются вперед с
разной мощностью
Файл:Black-Line-USB-analog1-RSalgoritm2.sb2 18 секунд. Видео Arduino IDE
Файл:Black line analog1 Speed.ino
12 секунд большое.
На высокой скорости
робот в 4 из 5 случаев
проскакивает поворот.
Батарейка 7,4 В В скетч, разработанный для USB, необходимо
внести изменения, т.к. на большой
скорости промежуточные значения датчика
не обрабатываются. Объединяем все
промежуточные значения
Файл:Black-Line-7-4-analog1-RSalgoritm2.sb2
9,5 секунд. Скетч, написанный для питания 5В (USB)
сразу важно изменить. Заменить
время движения робота в поворотах со 100 до
10 милисекунд. А время движения прямо
увеличить до 200 мили секунд.
Эти изменения необходимы, т.к. на большой
скорости робот слишком быстро проезжает
участок, где изменяются значения датчиков
Cсылка на скачивание скетча.
Алгоритм № 3 Робот использует ВОСЕМЬ числовых значений датчика линии - промежуточные значения между
двумя крайними значениями, полученными при положении датчика над белым полем и черной линией.
Траектория движения робота напоминает прямую линию с длинными прямыми участками, на всём протяжении которой робот едет, не притормаживая
Line-line.png
хх секунд
хх секунд 8.5 секунд (рекорд трассы!) Видео Arduino IDE
Файл:Black line analog1 Speed-7-4-var2.ino

Описание проезда по чёрной линии с ДВУМЯ датчиками

Сложную трассу с перекрестками, ответвлениями, "зебрами" и инверсными участками с одним датчиком проехать невозможно. Использование двух датчиков требует использования


Время заезда Скетч Источник питания ROBBO Scratch Время заезда Arduino IDE
Алгоритм 4. - Релейный регулятор Задача этого алгоритма - удерживать робота в положении "Оба датчика робота находятся над белой линией", т.е. слева и справа от чёрной линии.
2line.png
хх секунд. Ru-relay-controller-RS.png USB При питании от USB
робот останавливается на
повороте, т.к. оба
датчика оказываются
на черной линии
Cсылка на скачивание скетча
хх секунд.

analog0 = analogRead(A0); // Got a value from the sensor analog1
analog4 = analogRead(A4); // Got a value from the sensor analog4
limit = 50;
time1 = 200;
power = 255;

//if both sensors "see" white, the robot moves straight:
if (analog0 < limit && analog4 < limit) {
move_robbo (power, power, 0, 0, time1);
}
//if the left sensor "sees" black, the robot turns to the left:
if (analog0 > limit && analog4 < limit) {
move_robbo (0, power, 0, 0, time1);
}
//if the right sensor "sees" black, the robot turns to the right:
if (analog0 < limit && analog4 > limit) {
move_robbo (power, 0, 0, 0, time1);
}

10 секунд. 7,4 V При дополнительном питании
от батарейки робот
проезжает крутой поворот,
т.к. на скорости оба
датчика не оказываются
одновременно на черной линии
Видео ROBBO Scratch
Cсылка на скачивание скетча
хх секунд. Видео на Arduino IDE. Если батарейка садится, робот встает на повороте.
Cсылка на скачивание скетча - показания датчиков
сылка на скачивание скетча - простой релейный регулятор + вкл/выкл датчиками касания
Алгоритм № 5 Пропорциональный регулятор Пропорциональный̆ регулятор — это устройство, оказывающее управляющее воздействие на объект пропорционально его отклонению от заданного состояния. Принцип действия П-регулятора основывается на том, что мы находим значение отклонения от заданного состояния, которое назовем ошибкой и обозначим буквой E. Ошибка – это разница между показаниями датчиков линии: E = S1 – S2. Умножаем это значение на выбранный нами пропорциональный коэффициент kp и получаем значение управляющего воздействия U: U = kp⋅E. Управляющее значение – это значение мощности, которое нам необходимо прибавить к мощности одного мотора и отнять от мощности другого. Таким образом, робот будет сам регулировать свое положение – то есть совершить поворот или подруливание в нужную сторону.
хх секунд. USB Видео ROBBO Scratch
Cсылка на скачивание скетча
хх секунд. Видео Видео Arduino IDE
хх секунд. 7,4 V Видео ROBBO Scratch
Cсылка на скачивание скетча
хх секунд. Видео Видео Arduino IDE
Cсылка на скачивание скетча
Алгоритм № 6 Пропорционально-дифференциальный регулятор
хх секунд USB
хх секунд. 7,4 V Видео ROBBO Scratch
Cсылка на скачивание скетча
хх секунд. Видео Видео Arduino IDE
Cсылка на скачивание скетча
Алгоритм № 7 ПИД-регулятор
хх секунд USB
хх секунд. 7,4 V Видео ROBBO Scratch
Cсылка на скачивание скетча
хх секунд. Видео Видео Arduino IDE
Cсылка на скачивание скетча