Project ScratchDuinoRobotKit blackline
From scratchduino
(Difference between revisions)
Line 12: | Line 12: | ||
|-- | |-- | ||
|- | |- | ||
− | |colspan=6| <center>'''<font color="red">Algorithm 1. </font>''' The robot uses '''ONE''' numerical value of the line sensor — the AVERAGE of <br>two extreme values, obtained when the sensor is positioned above the white area and above the black line. <br> If the sensor shows a value greater than the average, then the robot turns to the left during 0.1 second <br> and goes forward during 0.1 second. <br> If the sensor shows a value less than the average, <br> then the robot turns to the right during 0.1 second and goes forward during 0.1 second. <br> The trajectory the robot follows is a zigzag. <br><br>[[File:Zigzag.png]] <br></center> | + | |colspan=6| <center>'''<font color="red">Algorithm 1.</font>''' The robot uses '''ONE''' numerical value of the line sensor — the AVERAGE of <br>two extreme values, obtained when the sensor is positioned above the white area and above the black line. <br> If the sensor shows a value greater than the average, then the robot turns to the left during 0.1 second <br> and goes forward during 0.1 second. <br> If the sensor shows a value less than the average, <br> then the robot turns to the right during 0.1 second and goes forward during 0.1 second. <br> The trajectory the robot follows is a zigzag. <br><br>[[File:Zigzag.png]] <br></center> |
|- | |- | ||
|38 seconds | |38 seconds | ||
Line 28: | Line 28: | ||
||[https://youtu.be/1VJxK9uEw7A Arduino IDE Video] <br>[http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Black_line_analog1_zigzag.ino Download the sketch] | ||[https://youtu.be/1VJxK9uEw7A Arduino IDE Video] <br>[http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Black_line_analog1_zigzag.ino Download the sketch] | ||
|- | |- | ||
− | |colspan=6| <center>'''<font color="red">Algorithm 2 </font>''' The robot uses '''SEVEN (FIVE, in case of USB)''' numerical values of the line sensor — these are values between <br> two extreme values, obtained when the sensor is positioned above the white area and above the black line. <br><br>The readings of the sensor are as follows: </center>'''» 0''' means the position above the white area. Both motors are on and in full swing (255), the left-hand motor is rotating forward, the right-hand motor is rotating backward. The robot turns in place during 0.1 second. <br>'''» 1''' means the position above the white area, closer to the black line. The left-hand motor is on and in full swing (255), rotating forward, while the right-hand motor is off. The robot turns on the fly during 0.1 second. <br>'''» 2''' means the position at the border of the white and black areas, even more closer to the black line. The left-hand motor is on and in full swing (255), rotating forward, while the right-hand motor is at its half power (120), rotating forward, too. The robot goes ahead and turns a bit, on the fly, during 0.1 second. <br>'''» 3''' means the position at the border of the white and black areas, already above the black line. The left-hand and the right-hand motors are on and in full swing (255), both rotating forward. The robot goes ahead during 0.1 second. <br>'''»''' The rest of the values ('''4''', '''5''', and '''6''') are mirroring the '''0''', '''1''', and '''2''' options, respectively. <center><br> The trajectory the robot follows is a smooth curve with long tangent sections, so the robot can travel all along without slowing down.<br><br> [[File:Line.png]]<br></center> | + | |colspan=6| <center>'''<font color="red">Algorithm 2.</font>''' The robot uses '''SEVEN (FIVE, in case of USB)''' numerical values of the line sensor — these are values between <br> two extreme values, obtained when the sensor is positioned above the white area and above the black line. <br><br>The readings of the sensor are as follows: </center>'''» 0''' means the position above the white area. Both motors are on and in full swing (255), the left-hand motor is rotating forward, the right-hand motor is rotating backward. The robot turns in place during 0.1 second. <br>'''» 1''' means the position above the white area, closer to the black line. The left-hand motor is on and in full swing (255), rotating forward, while the right-hand motor is off. The robot turns on the fly during 0.1 second. <br>'''» 2''' means the position at the border of the white and black areas, even more closer to the black line. The left-hand motor is on and in full swing (255), rotating forward, while the right-hand motor is at its half power (120), rotating forward, too. The robot goes ahead and turns a bit, on the fly, during 0.1 second. <br>'''» 3''' means the position at the border of the white and black areas, already above the black line. The left-hand and the right-hand motors are on and in full swing (255), both rotating forward. The robot goes ahead during 0.1 second. <br>'''»''' The rest of the values ('''4''', '''5''', and '''6''') are mirroring the '''0''', '''1''', and '''2''' options, respectively. <center><br> The trajectory the robot follows is a smooth curve with long tangent sections, so the robot can travel all along without slowing down.<br><br> [[File:Line.png]]<br></center> |
|- | |- | ||
|25–26 seconds | |25–26 seconds | ||
Line 40: | Line 40: | ||
||<br>At a high speed, the robot misses the turn in 4 of 5 cases. | ||<br>At a high speed, the robot misses the turn in 4 of 5 cases. | ||
||Battery 7.4V | ||Battery 7.4V | ||
− | ||It is important to modify the sketch coded for USB, because at a high speed, the intermediate values of the sensor cannot be handled. <br>We join all the intermediate values <br> [http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Black-Line-USB-analog1-RSalgoritm2.sb2 Download the sketch] | + | ||It is important to modify the sketch coded for USB, because at a high speed, the intermediate values of the sensor cannot be handled. <br>We join all the intermediate values. <br> [http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Black-Line-USB-analog1-RSalgoritm2.sb2 Download the sketch] |
||9.5 seconds | ||9.5 seconds | ||
− | ||It is important to immediately modify the sketch, coded for a 5V power supply (USB). <br>Replace the time of 0.1 seconds | + | ||It is important to immediately modify the sketch, coded for a 5V power supply (USB). <br>Replace the robot's turning time of 0.1 seconds by 0.01 seconds. And increase the time of going ahead up to 0.2 seconds. <br>It is necessary because at a high speed, the robot rushes too fast along the path section where the values of the sensors are changing.<br> |
|- | |- | ||
− | |colspan=6| <center>'''<font color="red">Algorithm 3 </font>''' The robot uses '''EIGHT''' numerical values of the line sensor — these are values between | + | |colspan=6| <center>'''<font color="red">Algorithm 3.</font>''' The robot uses '''EIGHT''' numerical values of the line sensor — these are values between |
− | two extreme values, obtained when the sensor <br>is positioned above the white area and above the black line. <br> The trajectory the robot follows is a line with long straight sections, and the robot can travel all along without slowing down.<br><br> [[File:Line-line.png]]<br></center> | + | two extreme values, obtained when the sensor <br>is positioned above the white area and above the black line. <br>The trajectory the robot follows is a line with long straight sections, and the robot can travel all along without slowing down.<br><br> [[File:Line-line.png]]<br></center> |
|- | |- | ||
|XX seconds | |XX seconds | ||
Line 63: | Line 63: | ||
==Description of travelling along the black line with TWO sensors== | ==Description of travelling along the black line with TWO sensors== | ||
− | It is impossible to travel along a complicated track with crossings, forks, "zebras", and inverted sections using only one sensor. When two sensors are | + | It is impossible to travel along a complicated track with crossings, forks, "zebras", and inverted sections using only one sensor. When two sensors are used, special algorithms are needed to automate the robot's motion. |
− | {| class="standard" border=1 | + | {| class="standard" border=1 |
|-- | |-- | ||
Line 75: | Line 75: | ||
|-- | |-- | ||
|- | |- | ||
− | |colspan=6| <center>'''<font color="red">Algorithm 4 </font> Relay controller.''' Задача этого алгоритма to keep the robot in the position "Both sensors of the robot are above the white line", that is, to the left and to the right from the black line. If both sensors are above the black line, the robot stops.<br> [[File:2line.png]] </center> | + | |colspan=6| <center>'''<font color="red">Algorithm 4.</font> Relay controller.''' Задача этого алгоритма to keep the robot in the position "Both sensors of the robot are above the white line", that is, to the left and to the right from the black line. If both sensors are above the black line, the robot stops.<br> [[File:2line.png]] </center> |
|- | |- | ||
|XX seconds | |XX seconds | ||
Line 108: | Line 108: | ||
|| | || | ||
||7.4 V | ||7.4 V | ||
− | || When extra powered | + | || When extra powered from the battery, the robot misses the sharp turns, because at a speed, the sensors cannot be above the black line both at the same time. [https://youtu.be/9rBbZvaQ1FE ROBBO Scratch Video] <br>[http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Black-Line-USB-analog2_and_analog5-RS.sb2 Download the sketch] |
||XX seconds | ||XX seconds | ||
− | ||[https://youtu.be/Dv97KMJkuF0 Arduino IDE Video]. If the battery is run down, the robot stops at the turn. <br>[http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Test_analog0-analog4.ino Download the sketch - sensor readings] <br> [http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Relay-controller-2-5.ino Download the sketch - | + | ||[https://youtu.be/Dv97KMJkuF0 Arduino IDE Video]. If the battery is run down, the robot stops at the turn. <br>[http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Test_analog0-analog4.ino Download the sketch - sensor readings] <br> [http://wiki.robbo.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Relay-controller-2-5.ino Download the sketch - relay controller + ON/OFF by touch sensors] |
|- | |- | ||
− | |colspan=6| <center>'''<font color="red">Algorithm 5</font> Proportional controller | + | |colspan=6| <center>'''<font color="red">Algorithm 5.</font> Proportional controller.''' Proportional controller is a device whose controlling action depends on the его отклонению от заданного состояния. Принцип действия П-controller основывается на том, что мы находим значение отклонения от заданного состояния, которое назовем '''error''' и обозначим буквой E. Ошибка – это разница между показаниями датчиков линии: |
E = S1 – S2. To obtain the value of controlling action '''U''', we multiply this value by a chosen ratio '''kp''': U = kp⋅E. U is the momentum that we have to '''add''' to one motor and '''extract''' from other motor. Thus, the robot will control its position '''itself''' — that is, for turning or taxing to the required direction. | E = S1 – S2. To obtain the value of controlling action '''U''', we multiply this value by a chosen ratio '''kp''': U = kp⋅E. U is the momentum that we have to '''add''' to one motor and '''extract''' from other motor. Thus, the robot will control its position '''itself''' — that is, for turning or taxing to the required direction. | ||
Line 130: | Line 130: | ||
||Arduino IDE Video <br>Download the sketch | ||Arduino IDE Video <br>Download the sketch | ||
|- | |- | ||
− | |colspan=6| <center>'''<font color="red">Algorithm 6</font> Пропорционально-дифференциальный | + | |colspan=6| <center>'''<font color="red">Algorithm 6</font> Пропорционально-дифференциальный controller''' </center> |
|- | |- | ||
XX seconds | XX seconds | ||
Line 146: | Line 146: | ||
||Arduino IDE Video <br>Download the sketch | ||Arduino IDE Video <br>Download the sketch | ||
|- | |- | ||
− | |colspan=6| <center>'''<font color="red">Algorithm 7 ПИД- | + | |colspan=6| <center>'''<font color="red">Algorithm 7 ПИД-controller</font>''' </center> |
|- | |- | ||
|XX seconds | |XX seconds |
Revision as of 16:29, 25 June 2018
Name of author (s)
Description of the ROBBO Scratch project
Trip time | Sketch | Power supply | ROBBO Scratch | Trip time | Arduino IDE |
---|---|---|---|---|---|
two extreme values, obtained when the sensor is positioned above the white area and above the black line. If the sensor shows a value greater than the average, then the robot turns to the left during 0.1 second and goes forward during 0.1 second. If the sensor shows a value less than the average, then the robot turns to the right during 0.1 second and goes forward during 0.1 second. The trajectory the robot follows is a zigzag. | |||||
38 seconds | USB | ROBBO Scratch Video Download the sketch |
30 seconds | To turn the robot on and off, two touch sensors are used: analogRead(A3) – right-hand rear sensor — ON, analogRead(A1) — left-hand rear sensor — OFF Download the sketch | |
13 seconds | The high speed causes numerous errors. At a high speed, the robot misses the turns in half the cases. |
Battery 7.4V | ROBBO Scratch Video Download the sketch |
11 seconds | Arduino IDE Video Download the sketch |
two extreme values, obtained when the sensor is positioned above the white area and above the black line. The readings of the sensor are as follows: » 1 means the position above the white area, closer to the black line. The left-hand motor is on and in full swing (255), rotating forward, while the right-hand motor is off. The robot turns on the fly during 0.1 second. » 2 means the position at the border of the white and black areas, even more closer to the black line. The left-hand motor is on and in full swing (255), rotating forward, while the right-hand motor is at its half power (120), rotating forward, too. The robot goes ahead and turns a bit, on the fly, during 0.1 second. » 3 means the position at the border of the white and black areas, already above the black line. The left-hand and the right-hand motors are on and in full swing (255), both rotating forward. The robot goes ahead during 0.1 second. » The rest of the values (4, 5, and 6) are mirroring the 0, 1, and 2 options, respectively. The trajectory the robot follows is a smooth curve with long tangent sections, so the robot can travel all along without slowing down. | |||||
25–26 seconds | ROBBO Scratch handles the timing data worse than Arduino IDE, therefore we have reduced the number of the ranges to 5 and simplified the action of motors. The motors are rotating forward all the time, with varying power. |
USB | Download the sketch | 18 seconds | Arduino IDE Video Download the sketch |
12 seconds | At a high speed, the robot misses the turn in 4 of 5 cases. |
Battery 7.4V | It is important to modify the sketch coded for USB, because at a high speed, the intermediate values of the sensor cannot be handled. We join all the intermediate values. Download the sketch |
9.5 seconds | It is important to immediately modify the sketch, coded for a 5V power supply (USB). Replace the robot's turning time of 0.1 seconds by 0.01 seconds. And increase the time of going ahead up to 0.2 seconds. It is necessary because at a high speed, the robot rushes too fast along the path section where the values of the sensors are changing. |
is positioned above the white area and above the black line. The trajectory the robot follows is a line with long straight sections, and the robot can travel all along without slowing down. | |||||
XX seconds | |||||
XX seconds | 8.5 seconds (track record!) | Arduino IDE Video Download the sketch |
Description of travelling along the black line with TWO sensors
It is impossible to travel along a complicated track with crossings, forks, "zebras", and inverted sections using only one sensor. When two sensors are used, special algorithms are needed to automate the robot's motion.
Trip time | Sketch | Power supply | ROBBO Scratch | Trip time | Arduino IDE |
---|---|---|---|---|---|
| |||||
XX seconds | USB | When powered by USB, the robot stops at the turn, because both sensors get above the black line. Download the sketch | XX seconds |
analog0 = analogRead(A0); // Got a value from the sensor analog1 | |
10 seconds | 7.4 V | When extra powered from the battery, the robot misses the sharp turns, because at a speed, the sensors cannot be above the black line both at the same time. ROBBO Scratch Video Download the sketch |
XX seconds | Arduino IDE Video. If the battery is run down, the robot stops at the turn. Download the sketch - sensor readings Download the sketch - relay controller + ON/OFF by touch sensors | |
E = S1 – S2. To obtain the value of controlling action U, we multiply this value by a chosen ratio kp: U = kp⋅E. U is the momentum that we have to add to one motor and extract from other motor. Thus, the robot will control its position itself — that is, for turning or taxing to the required direction. | |||||
XX seconds. | USB | ROBBO Scratch Video |
XX seconds | Download the sketch | |
7.4 V | ROBBO Scratch Video Download the sketch |
XX seconds | Arduino IDE Video Download the sketch | ||
<center>Algorithm 6 Пропорционально-дифференциальный controller | |||||
USB | |||||
7.4 V | ROBBO Scratch Video Download the sketch |
XX seconds | Arduino IDE Video Download the sketch | ||
| |||||
XX seconds | USB | ||||
XX seconds | Battery 7.4 V | ROBBO Scratch Video Download the sketch |
XX seconds | Arduino IDE Video Download the sketch |