Project ScratchDuinoRobotKit blackline
From scratchduino
(Difference between revisions)
Line 2: | Line 2: | ||
[[User:Elena Vostrikova]] | [[User:Elena Vostrikova]] | ||
− | ==Description of the | + | ==Description of the ROBBO Scratch project == |
{| class="standard" border=1 | {| class="standard" border=1 | ||
Line 8: | Line 8: | ||
|-- | |-- | ||
− | ! | + | !Trip time ||Sketch||Power supply||ROBBO Scratch||Trip time|| Arduino IDE |
|-- | |-- | ||
|- | |- | ||
− | |colspan=6| <center>'''<font color="red"> | + | |colspan=6| <center>'''<font color="red">Algorithm 1. </font>''' Робот использует '''ОДНО''' числовое значение датчика линии - СРЕДНЕЕ арифметическое между <br> двумя крайними значениями, полученными при положении датчика над белым полем и черной линией. <br> Если датчик показывает значение больше этого числа, то робот 0.1 сек. <br> поворачивается налево и 0.1 сек. едет прямо. <br> Если датчик показывает значение меньше среднего арифметического, <br> то робот 0.1 сек. поворачивается направо и 0.1 сек. едет прямо. <br> Траектория движения робота напоминает движение по зигзагу <br> [[File:Zigzag.png]] <br></center> |
|- | |- | ||
− | |38 | + | |38 seconds. |
||[[File:Black line analog1 code1.png]] | ||[[File:Black line analog1 code1.png]] | ||
||USB | ||USB | ||
||[https://youtu.be/Mvm1UxDkF-A Видео ROBBO Scratch] <br> [http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Project_Black_line_analog1_code1.sb2 Cсылка на скачивание скетча] | ||[https://youtu.be/Mvm1UxDkF-A Видео ROBBO Scratch] <br> [http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Project_Black_line_analog1_code1.sb2 Cсылка на скачивание скетча] | ||
− | ||30 | + | ||30 seconds. |
− | ||Для включения и выключения робота <br> используются два датчика касания: analogRead(A3) <br> | + | ||Для включения и выключения робота <br> используются два датчика касания: analogRead(A3) <br> – задний правый — включение, analogRead(A1) — <br> задний левый — выключение, <br> [http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Black_line_analog1_zigzag.ino Cсылка на скачивание скетча] |
|-- | |-- | ||
− | |13 | + | |13 seconds. |
||На скорости возникает большое количество ошибок. <br>На высокой скорости <br>робот в половине случаев <br>проскакивает поворот. | ||На скорости возникает большое количество ошибок. <br>На высокой скорости <br>робот в половине случаев <br>проскакивает поворот. | ||
||Батарейка 7,4 В | ||Батарейка 7,4 В | ||
||[https://youtu.be/0X8lQPaMAsU Видео ROBBO Scratch] <br>[http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Project_Black_line_analog1_code1.sb2 Cсылка на скачивание скетча] | ||[https://youtu.be/0X8lQPaMAsU Видео ROBBO Scratch] <br>[http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Project_Black_line_analog1_code1.sb2 Cсылка на скачивание скетча] | ||
− | ||11 | + | ||11 seconds. |
||[https://youtu.be/1VJxK9uEw7A Видео Arduino IDE] <br> [http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Black_line_analog1_zigzag.ino Cсылка на скачивание скетча] | ||[https://youtu.be/1VJxK9uEw7A Видео Arduino IDE] <br> [http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Black_line_analog1_zigzag.ino Cсылка на скачивание скетча] | ||
|- | |- | ||
− | |colspan=6| <center>'''<font color="red"> | + | |colspan=6| <center>'''<font color="red">Algorithm 2 </font>''' Робот использует '''СЕМЬ (ПЯТЬ для USB)''' числовых значений датчика линии - промежуточные значения между <br> двумя крайними значениями, полученными при положении датчика над белым полем и черной линией. <br> Если датчик показывает значение: <br> '''0''', то это означает положение над белым полем. Оба мотора включены на полную мощность (255), левый мотор крутится вперед, а правый -назад. Робот поворачивается на месте 0,1 секунды <br> '''1''', то это означает положение над белым полем, ближе к чёрной линии. Левый мотор включен на полную мощность (255) и крутится вперед, а правый мотор стоит. Робот поворачивается в движении 0,1 секунды <br> '''2''', то это означает положение на границе белого и черного полей, еще ближе к чёрной линии. Левый мотор включен на полную мощность (255) и крутится вперед, а правый включен на половине мощности (120) и тоже крутится вперед. Робот едет прямо и немного поворачивается в движении в течение 0,1 секунды <br> '''3''', то это означает положение на границе белого и черного полей, уже на чёрной линии. Левый и правые моторы включены на полную мощность (255) и оба крутятся вперед. Робот едет прямо в течение 0,1 секунды <br> Остальные значения (4,5 и 6) являются зеркальными по отношению к 0,1 и 2. <br> Траектория движения робота напоминает плавную линию с длинными прямыми участками, на всём протяжении которой робот едет, не притормаживая <br> [[File:Line.png]]<br></center> |
|- | |- | ||
− | | | + | |25–26 seconds |
||небольшое | ||небольшое | ||
||USB. ROBBO Scratch хуже, чем ArduiniIDE <br> обрабатывает время движения, поэтому <br> количество диапазонов мы сократили до 5 <br> и упростили движение моторов.<br> Они все время двигаются вперед с<br> разной мощностью | ||USB. ROBBO Scratch хуже, чем ArduiniIDE <br> обрабатывает время движения, поэтому <br> количество диапазонов мы сократили до 5 <br> и упростили движение моторов.<br> Они все время двигаются вперед с<br> разной мощностью | ||
||[http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Black-Line-USB-analog1-RSalgoritm2.sb2 Cсылка на скачивание скетча] | ||[http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Black-Line-USB-analog1-RSalgoritm2.sb2 Cсылка на скачивание скетча] | ||
− | || 18 | + | || 18 seconds. |
||[https://youtu.be/yjE4zHcG3h4 Видео Arduino IDE] <br> [http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Black_line_analog1_Speed.ino |Cсылка на скачивание скетча] | ||[https://youtu.be/yjE4zHcG3h4 Видео Arduino IDE] <br> [http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Black_line_analog1_Speed.ino |Cсылка на скачивание скетча] | ||
|-- | |-- | ||
− | |12 | + | |12 seconds |
||большое. <br>На высокой скорости <br>робот в 4 из 5 случаев <br>проскакивает поворот. | ||большое. <br>На высокой скорости <br>робот в 4 из 5 случаев <br>проскакивает поворот. | ||
− | ||Батарейка 7 | + | ||Батарейка 7.4 V |
− | ||В | + | ||В Sketch, разработанный для USB, необходимо <br>внести изменения, т.к. на большой <br>скорости промежуточные значения датчика <br>не обрабатываются. Объединяем все<br> промежуточные значения <br> [http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Black-Line-USB-analog1-RSalgoritm2.sb2 Cсылка на скачивание скетча] |
− | ||9 | + | ||9.5 seconds. |
− | || | + | ||Sketch, написанный для питания 5В (USB) <br> сразу важно изменить. Заменить <br>время движения робота в поворотах со 100 до <br>10 milliseconds. А время движения прямо<br> увеличить до 200 milliseconds. <br> Эти изменения необходимы, т.к. на большой<br> скорости робот слишком быстро проезжает <br>участок, где изменяются значения датчиков<br> |
|- | |- | ||
− | |colspan=6| <center>'''<font color="red"> | + | |colspan=6| <center>'''<font color="red">Algorithm 3 </font>''' Робот использует '''ВОСЕМЬ''' числовых значений датчика линии - промежуточные значения между <br> двумя крайними значениями, полученными при положении датчика над белым полем и черной линией. <br> Траектория движения робота напоминает прямую линию с длинными прямыми участками, на всём протяжении которой робот едет, не притормаживая <br> [[File:Line-line.png]]<br></center> |
|- | |- | ||
− | | | + | |XX seconds |
|| | || | ||
|| | || | ||
Line 53: | Line 53: | ||
|| | || | ||
|-- | |-- | ||
− | | | + | |XX seconds |
|| | || | ||
|| | || | ||
|| | || | ||
− | || <font color="red">8.5 | + | || <font color="red">8.5 seconds (рекорд трассы!)</font> |
|| [https://youtu.be/GO4fXPLDF1k Видео Arduino IDE] <br> [http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Black_line_analog1_Speed-7-4-var2.ino Cсылка на скачивание скетча] | || [https://youtu.be/GO4fXPLDF1k Видео Arduino IDE] <br> [http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Black_line_analog1_Speed-7-4-var2.ino Cсылка на скачивание скетча] | ||
|} | |} | ||
Line 70: | Line 70: | ||
|-- | |-- | ||
− | ! | + | !Trip time ||Sketch||Power supply||ROBBO Scratch||Trip time || Arduino IDE |
|-- | |-- | ||
|- | |- | ||
− | |colspan=6| <center>'''<font color="red"> | + | |colspan=6| <center>'''<font color="red">Algorithm 4. - Релейный регулятор </font>''' Задача этого алгоритма - удерживать робота в положении "Оба датчика робота находятся над белой линией", т.е. слева и справа от чёрной линии. Если оба датчика попадают на черную линию, то робот останавливается <br> [[File:2line.png]] </center> |
|- | |- | ||
− | | | + | |XX seconds. |
||[[File:Eng-relay-controller-RS.png]] | ||[[File:Eng-relay-controller-RS.png]] | ||
||USB | ||USB | ||
||При питании от USB робот <br>останавливается на повороте, <br>т.к. оба датчика оказываются<br> на черной линии [http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Black-Line-USB-analog2_and_analog5-RS.sb2 Cсылка на скачивание скетча] | ||При питании от USB робот <br>останавливается на повороте, <br>т.к. оба датчика оказываются<br> на черной линии [http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Black-Line-USB-analog2_and_analog5-RS.sb2 Cсылка на скачивание скетча] | ||
− | || | + | ||XX seconds. |
|| | || | ||
<blockquote> | <blockquote> | ||
Line 104: | Line 104: | ||
</blockquote> | </blockquote> | ||
|-- | |-- | ||
− | |'''10 | + | |'''10 seconds.''' |
|| | || | ||
− | ||7 | + | ||7.4 V |
|| При дополнительном питании <br>от батарейки робот <br>проезжает крутой поворот, <br>т.к. на скорости оба <br>датчика не оказываются <br>одновременно на черной линии [https://youtu.be/9rBbZvaQ1FE Видео ROBBO Scratch] <br>[http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Black-Line-USB-analog2_and_analog5-RS.sb2 Cсылка на скачивание скетча] | || При дополнительном питании <br>от батарейки робот <br>проезжает крутой поворот, <br>т.к. на скорости оба <br>датчика не оказываются <br>одновременно на черной линии [https://youtu.be/9rBbZvaQ1FE Видео ROBBO Scratch] <br>[http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Black-Line-USB-analog2_and_analog5-RS.sb2 Cсылка на скачивание скетча] | ||
− | || | + | ||XX seconds. |
||[https://youtu.be/Dv97KMJkuF0 Видео на Arduino IDE]. Если батарейка садится, робот встает на повороте. <br>[http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Test_analog0-analog4.ino Cсылка на скачивание скетча - показания датчиков] <br> [http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Relay-controller-2-5.ino сылка на скачивание скетча - простой релейный регулятор + вкл/выкл датчиками касания] | ||[https://youtu.be/Dv97KMJkuF0 Видео на Arduino IDE]. Если батарейка садится, робот встает на повороте. <br>[http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Test_analog0-analog4.ino Cсылка на скачивание скетча - показания датчиков] <br> [http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Relay-controller-2-5.ino сылка на скачивание скетча - простой релейный регулятор + вкл/выкл датчиками касания] | ||
|- | |- | ||
− | |colspan=6| <center>'''<font color="red"> | + | |colspan=6| <center>'''<font color="red">Algorithm 5 Пропорциональный регулятор </font>''' Пропорциональный̆ регулятор — это устройство, оказывающее управляющее воздействие на объект ''пропорционально'' его отклонению от заданного состояния. Принцип действия П-регулятора основывается на том, что мы находим значение отклонения от заданного состояния, которое назовем '''ошибкой''' и обозначим буквой E. Ошибка – это разница между показаниями датчиков линии: |
E = S1 – S2. Умножаем это значение на выбранный нами пропорциональный коэффициент kp и получаем значение управляющего воздействия U: U = kp⋅E. Управляющее значение – это значение мощности, которое нам необходимо '''прибавить''' к мощности одного мотора и '''отнять''' от мощности другого. Таким образом, робот будет '''сам регулировать''' свое положение – то есть совершить поворот или подруливание в нужную сторону. | E = S1 – S2. Умножаем это значение на выбранный нами пропорциональный коэффициент kp и получаем значение управляющего воздействия U: U = kp⋅E. Управляющее значение – это значение мощности, которое нам необходимо '''прибавить''' к мощности одного мотора и '''отнять''' от мощности другого. Таким образом, робот будет '''сам регулировать''' свое положение – то есть совершить поворот или подруливание в нужную сторону. | ||
Line 117: | Line 117: | ||
</center> | </center> | ||
|- | |- | ||
− | | | + | |XX seconds. |
|| | || | ||
||USB | ||USB | ||
− | ||Видео ROBBO Scratch <br> | + | ||Видео ROBBO Scratch Video <br> |
− | || | + | ||XX seconds. |
||[http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Relay_scratchduino.ino Cсылка на скачивание скетча] | ||[http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Relay_scratchduino.ino Cсылка на скачивание скетча] | ||
|- | |- | ||
− | + | XX seconds. | |
|| | || | ||
− | ||7 | + | ||7.4 V |
− | ||Видео ROBBO Scratch <br>Cсылка на скачивание скетча | + | ||Видео ROBBO Scratch Video <br>Cсылка на скачивание скетча |
||хх секунд. | ||хх секунд. | ||
− | || | + | ||Видео Arduino IDE Video <br>Cсылка на скачивание скетча |
|- | |- | ||
− | |colspan=6| <center>'''<font color="red"> | + | |colspan=6| <center>'''<font color="red">Algorithm 6 Пропорционально-дифференциальный регулятор</font>''' </center> |
|- | |- | ||
− | + | XX seconds | |
|| | || | ||
||USB | ||USB | ||
Line 140: | Line 140: | ||
|| | || | ||
|-- | |-- | ||
− | + | XX seconds. | |
|| | || | ||
− | ||7 | + | ||7.4 V |
− | || | + | ||ROBBO Scratch Video <br>Cсылка на скачивание скетча |
− | | | + | |XX seconds. |
− | || | + | ||Arduino IDE Video <br>Cсылка на скачивание скетча |
|- | |- | ||
|colspan=6| <center>'''<font color="red">Алгоритм № 7 ПИД-регулятор</font>''' </center> | |colspan=6| <center>'''<font color="red">Алгоритм № 7 ПИД-регулятор</font>''' </center> | ||
|- | |- | ||
− | | | + | |XX seconds |
|| | || | ||
||USB | ||USB | ||
Line 156: | Line 156: | ||
|| | || | ||
|-- | |-- | ||
− | | | + | |XX seconds. |
|| | || | ||
||7,4 V | ||7,4 V | ||
− | ||Видео ROBBO Scratch <br>Cсылка на скачивание скетча | + | ||Видео ROBBO Scratch Video <br>Cсылка на скачивание скетча |
− | || | + | ||XX seconds. |
− | || | + | ||Видео Arduino IDE Video <br>Cсылка на скачивание скетча |
|} | |} | ||
Revision as of 11:28, 25 June 2018
Name of author (s)
Description of the ROBBO Scratch project
Trip time | Sketch | Power supply | ROBBO Scratch | Trip time | Arduino IDE |
---|---|---|---|---|---|
двумя крайними значениями, полученными при положении датчика над белым полем и черной линией. Если датчик показывает значение больше этого числа, то робот 0.1 сек. поворачивается налево и 0.1 сек. едет прямо. Если датчик показывает значение меньше среднего арифметического, то робот 0.1 сек. поворачивается направо и 0.1 сек. едет прямо. Траектория движения робота напоминает движение по зигзагу | |||||
38 seconds. | USB | Видео ROBBO Scratch Cсылка на скачивание скетча |
30 seconds. | Для включения и выключения робота используются два датчика касания: analogRead(A3) – задний правый — включение, analogRead(A1) — задний левый — выключение, Cсылка на скачивание скетча | |
13 seconds. | На скорости возникает большое количество ошибок. На высокой скорости робот в половине случаев проскакивает поворот. |
Батарейка 7,4 В | Видео ROBBO Scratch Cсылка на скачивание скетча |
11 seconds. | Видео Arduino IDE Cсылка на скачивание скетча |
двумя крайними значениями, полученными при положении датчика над белым полем и черной линией. Если датчик показывает значение: 0, то это означает положение над белым полем. Оба мотора включены на полную мощность (255), левый мотор крутится вперед, а правый -назад. Робот поворачивается на месте 0,1 секунды 1, то это означает положение над белым полем, ближе к чёрной линии. Левый мотор включен на полную мощность (255) и крутится вперед, а правый мотор стоит. Робот поворачивается в движении 0,1 секунды 2, то это означает положение на границе белого и черного полей, еще ближе к чёрной линии. Левый мотор включен на полную мощность (255) и крутится вперед, а правый включен на половине мощности (120) и тоже крутится вперед. Робот едет прямо и немного поворачивается в движении в течение 0,1 секунды 3, то это означает положение на границе белого и черного полей, уже на чёрной линии. Левый и правые моторы включены на полную мощность (255) и оба крутятся вперед. Робот едет прямо в течение 0,1 секунды Остальные значения (4,5 и 6) являются зеркальными по отношению к 0,1 и 2. Траектория движения робота напоминает плавную линию с длинными прямыми участками, на всём протяжении которой робот едет, не притормаживая | |||||
25–26 seconds | небольшое | USB. ROBBO Scratch хуже, чем ArduiniIDE обрабатывает время движения, поэтому количество диапазонов мы сократили до 5 и упростили движение моторов. Они все время двигаются вперед с разной мощностью |
Cсылка на скачивание скетча | 18 seconds. | Видео Arduino IDE |Cсылка на скачивание скетча |
12 seconds | большое. На высокой скорости робот в 4 из 5 случаев проскакивает поворот. |
Батарейка 7.4 V | В Sketch, разработанный для USB, необходимо внести изменения, т.к. на большой скорости промежуточные значения датчика не обрабатываются. Объединяем все промежуточные значения Cсылка на скачивание скетча |
9.5 seconds. | Sketch, написанный для питания 5В (USB) сразу важно изменить. Заменить время движения робота в поворотах со 100 до 10 milliseconds. А время движения прямо увеличить до 200 milliseconds. Эти изменения необходимы, т.к. на большой скорости робот слишком быстро проезжает участок, где изменяются значения датчиков |
двумя крайними значениями, полученными при положении датчика над белым полем и черной линией. Траектория движения робота напоминает прямую линию с длинными прямыми участками, на всём протяжении которой робот едет, не притормаживая | |||||
XX seconds | |||||
XX seconds | 8.5 seconds (рекорд трассы!) | Видео Arduino IDE Cсылка на скачивание скетча |
Описание проезда по чёрной линии с ДВУМЯ датчиками
Сложную трассу с перекрестками, ответвлениями, "зебрами" и инверсными участками с одним датчиком проехать невозможно. При подключении двух датчиков требуется использовани специальных алгоритмов, которые автоматизируют движение робота.
Trip time | Sketch | Power supply | ROBBO Scratch | Trip time | Arduino IDE |
---|---|---|---|---|---|
| |||||
XX seconds. | USB | При питании от USB робот останавливается на повороте, т.к. оба датчика оказываются на черной линии Cсылка на скачивание скетча |
XX seconds. |
analog0 = analogRead(A0); // Got a value from the sensor analog1 | |
10 seconds. | 7.4 V | При дополнительном питании от батарейки робот проезжает крутой поворот, т.к. на скорости оба датчика не оказываются одновременно на черной линии Видео ROBBO Scratch Cсылка на скачивание скетча |
XX seconds. | Видео на Arduino IDE. Если батарейка садится, робот встает на повороте. Cсылка на скачивание скетча - показания датчиков сылка на скачивание скетча - простой релейный регулятор + вкл/выкл датчиками касания | |
E = S1 – S2. Умножаем это значение на выбранный нами пропорциональный коэффициент kp и получаем значение управляющего воздействия U: U = kp⋅E. Управляющее значение – это значение мощности, которое нам необходимо прибавить к мощности одного мотора и отнять от мощности другого. Таким образом, робот будет сам регулировать свое положение – то есть совершить поворот или подруливание в нужную сторону.
| |||||
XX seconds. | USB | Видео ROBBO Scratch Video |
XX seconds. | Cсылка на скачивание скетча | |
7.4 V | Видео ROBBO Scratch Video Cсылка на скачивание скетча |
хх секунд. | Видео Arduino IDE Video Cсылка на скачивание скетча | ||
| |||||
USB | |||||
7.4 V | ROBBO Scratch Video Cсылка на скачивание скетча |
XX seconds. | Arduino IDE Video Cсылка на скачивание скетча | ||
| |||||
XX seconds | USB | ||||
XX seconds. | 7,4 V | Видео ROBBO Scratch Video Cсылка на скачивание скетча |
XX seconds. | Видео Arduino IDE Video Cсылка на скачивание скетча |