Project ScratchDuinoRobotKit blackline

From scratchduino
(Difference between revisions)
Jump to: navigation, search
Line 17: Line 17:
 
||[[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 Sketch download link]  
 
||30  seconds.
 
||30  seconds.
||Для включения и выключения робота  <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сылка на скачивание скетча]
+
||Для включения и выключения робота  <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 Sketch download link]
 
|--  
 
|--  
 
|13 seconds.  
 
|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 Sketch download link]
 
||11 seconds.
 
||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  Sketch download link]
 
|-
 
|-
 
|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>
 
|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>
Line 33: Line 33:
 
||небольшое
 
||небольшое
 
||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 Sketch download link]
|| 18 seconds.
+
|| 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сылка на скачивание скетча]
 
|--
 
|--
Line 41: Line 41:
 
||Батарейка 7.4 V
 
||Батарейка 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сылка на скачивание скетча]
 
||В 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.5 seconds.
+
||9.5 seconds
 
||Sketch, написанный для питания 5В (USB) <br> сразу важно изменить. Заменить <br>время движения робота в поворотах со 100 до <br>10 milliseconds. А время движения прямо<br> увеличить до  200 milliseconds. <br> Эти изменения необходимы, т.к. на большой<br> скорости робот слишком быстро проезжает <br>участок, где изменяются значения датчиков<br>
 
||Sketch, написанный для питания 5В (USB) <br> сразу важно изменить. Заменить <br>время движения робота в поворотах со 100 до <br>10 milliseconds. А время движения прямо<br> увеличить до  200 milliseconds. <br> Эти изменения необходимы, т.к. на большой<br> скорости робот слишком быстро проезжает <br>участок, где изменяются значения датчиков<br>
 
|-
 
|-
Line 76: Line 76:
 
|colspan=6| <center>'''<font color="red">Algorithm 4. - Релейный регулятор  </font>''' Задача этого алгоритма - удерживать робота в положении "Оба датчика робота находятся над белой линией", т.е. слева и справа от чёрной линии. Если оба датчика попадают на черную линию, то робот останавливается  <br> [[File:2line.png]] </center>
 
|colspan=6| <center>'''<font color="red">Algorithm 4. - Релейный регулятор  </font>''' Задача этого алгоритма - удерживать робота в положении "Оба датчика робота находятся над белой линией", т.е. слева и справа от чёрной линии. Если оба датчика попадают на черную линию, то робот останавливается  <br> [[File:2line.png]] </center>
 
|-
 
|-
|XX seconds.
+
|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.
+
||XX seconds  
 
||
 
||
 
<blockquote>
 
<blockquote>
Line 104: Line 104:
 
</blockquote>
 
</blockquote>
 
|--  
 
|--  
|'''10 seconds.'''  
+
|'''10 seconds'''  
 
||
 
||
 
||7.4 V
 
||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 Sketch download link]  
 
||XX seconds.  
 
||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 сылка на скачивание скетча - простой релейный регулятор + вкл/выкл датчиками касания]  
Line 121: Line 121:
 
||USB
 
||USB
 
||Видео ROBBO Scratch Video <br>
 
||Видео ROBBO Scratch Video <br>
||XX seconds.
+
||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 Sketch download link]
 
|-
 
|-
XX seconds.
+
XX seconds  
 
||
 
||
 
||7.4 V
 
||7.4 V
||Видео ROBBO Scratch Video <br>Cсылка на скачивание скетча
+
||ROBBO Scratch Video <br>Sketch download link
||хх секунд.
+
||XX seconds
||Видео Arduino IDE Video <br>Cсылка на скачивание скетча
+
||Arduino IDE Video <br>Sketch download link
 
|-
 
|-
 
|colspan=6| <center>'''<font color="red">Algorithm 6 Пропорционально-дифференциальный регулятор</font>''' </center>
 
|colspan=6| <center>'''<font color="red">Algorithm 6 Пропорционально-дифференциальный регулятор</font>''' </center>
Line 140: Line 140:
 
||
 
||
 
|--
 
|--
XX seconds.
+
XX seconds
 
||
 
||
 
||7.4 V
 
||7.4 V
||ROBBO Scratch Video <br>Cсылка на скачивание скетча
+
||ROBBO Scratch Video <br>Sketch download link
|XX seconds.
+
|XX seconds  
||Arduino IDE Video <br>Cсылка на скачивание скетча
+
||Arduino IDE Video <br>Sketch download link
 
|-
 
|-
|colspan=6| <center>'''<font color="red">Алгоритм № 7 ПИД-регулятор</font>''' </center>
+
|colspan=6| <center>'''<font color="red">Algorithm 7 ПИД-регулятор</font>''' </center>
 
|-
 
|-
 
|XX seconds  
 
|XX seconds  
Line 156: Line 156:
 
||
 
||
 
|--
 
|--
|XX seconds.
+
|XX seconds  
 
||
 
||
 
||7,4 V
 
||7,4 V
||Видео ROBBO Scratch Video <br>Cсылка на скачивание скетча
+
||ROBBO Scratch Video <br>Sketch download link
||XX seconds.
+
||XX seconds  
||Видео Arduino IDE Video <br>Cсылка на скачивание скетча
+
||Arduino IDE Video <br>Sketch download link
 
|}
 
|}
  

Revision as of 11:44, 25 June 2018

Name of author (s)

User:Elena Vostrikova

Description of the ROBBO Scratch project

Trip time Sketch Power supply ROBBO Scratch Trip time Arduino IDE
Algorithm 1. The robot uses ONE numerical value of the line sensor - average between
two крайними values, полученными при положении датчика над белым полем и черной линией.
Если датчик показывает значение больше этого числа, то робот 0.1 second
поворачивается налево и 0.1 сек. едет прямо.
Если датчик показывает значение меньше среднего арифметического,
то робот 0.1 сек. поворачивается направо и 0.1 сек. едет прямо.
Траектория движения робота напоминает движение по зигзагу
Zigzag.png
38 seconds. Black line analog1 code1.png USB Видео ROBBO Scratch
Sketch download link
30 seconds. Для включения и выключения робота
используются два датчика касания: analogRead(A3)
– задний правый — включение, analogRead(A1) —
задний левый — выключение,
Sketch download link
13 seconds. На скорости возникает большое количество ошибок.
На высокой скорости
робот в половине случаев
проскакивает поворот.
Батарейка 7,4 В Видео ROBBO Scratch
Sketch download link
11 seconds. Видео Arduino IDE
Sketch download link
Algorithm 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.
Траектория движения робота напоминает плавную линию с длинными прямыми участками, на всём протяжении которой робот едет, не притормаживая
Line.png
25–26 seconds небольшое USB. ROBBO Scratch хуже, чем ArduiniIDE
обрабатывает время движения, поэтому
количество диапазонов мы сократили до 5
и упростили движение моторов.
Они все время двигаются вперед с
разной мощностью
Sketch download link 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.
Эти изменения необходимы, т.к. на большой
скорости робот слишком быстро проезжает
участок, где изменяются значения датчиков
Algorithm 3 Робот использует ВОСЕМЬ числовых значений датчика линии - промежуточные значения между
двумя крайними значениями, полученными при положении датчика над белым полем и черной линией.
Траектория движения робота напоминает прямую линию с длинными прямыми участками, на всём протяжении которой робот едет, не притормаживая
Line-line.png
XX seconds
XX seconds 8.5 seconds (рекорд трассы!) Видео Arduino IDE
Cсылка на скачивание скетча

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

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


XX seconds XX seconds XX seconds
Trip time Sketch Power supply ROBBO Scratch Trip time Arduino IDE
Algorithm 4. - Релейный регулятор Задача этого алгоритма - удерживать робота в положении "Оба датчика робота находятся над белой линией", т.е. слева и справа от чёрной линии. Если оба датчика попадают на черную линию, то робот останавливается
2line.png
XX seconds Eng-relay-controller-RS.png USB При питании от USB робот
останавливается на повороте,
т.к. оба датчика оказываются
на черной линии Cсылка на скачивание скетча
XX seconds
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 seconds 7.4 V При дополнительном питании
от батарейки робот
проезжает крутой поворот,
т.к. на скорости оба
датчика не оказываются
одновременно на черной линии Видео ROBBO Scratch
Sketch download link
XX seconds. Видео на Arduino IDE. Если батарейка садится, робот встает на повороте.
Cсылка на скачивание скетча - показания датчиков
сылка на скачивание скетча - простой релейный регулятор + вкл/выкл датчиками касания
Algorithm 5 Пропорциональный регулятор Пропорциональный̆ регулятор — это устройство, оказывающее управляющее воздействие на объект пропорционально его отклонению от заданного состояния. Принцип действия П-регулятора основывается на том, что мы находим значение отклонения от заданного состояния, которое назовем ошибкой и обозначим буквой E. Ошибка – это разница между показаниями датчиков линии:

E = S1 – S2. Умножаем это значение на выбранный нами пропорциональный коэффициент kp и получаем значение управляющего воздействия U: U = kp⋅E. Управляющее значение – это значение мощности, которое нам необходимо прибавить к мощности одного мотора и отнять от мощности другого. Таким образом, робот будет сам регулировать свое положение – то есть совершить поворот или подруливание в нужную сторону.


XX seconds. USB Видео ROBBO Scratch Video
XX seconds Sketch download link
7.4 V ROBBO Scratch Video
Sketch download link
XX seconds Arduino IDE Video
Sketch download link
Algorithm 6 Пропорционально-дифференциальный регулятор
USB
7.4 V ROBBO Scratch Video
Sketch download link
XX seconds Arduino IDE Video
Sketch download link
Algorithm 7 ПИД-регулятор
XX seconds USB
XX seconds 7,4 V ROBBO Scratch Video
Sketch download link
XX seconds Arduino IDE Video
Sketch download link
Personal tools
Namespaces

Variants
Actions
Navigation
Tools
Print/export