Follow a line/fi: Difference between revisions

From wikiluntti
(Created page with "Valoanturi on välttämätön. Joissain harjoitustehtävissä hyödynnetään kahta valoanturia.")
(Created page with "=== Johdanto ===")
 
(21 intermediate revisions by the same user not shown)
Line 1: Line 1:
<languages/>
<languages/>


=== Introduction ===
=== Johdanto ===


Viivanseurantaan on hyvin paljon erilaisia tapoja eli algoritmeja. Tässä näytämme kaksi yksinkertaista menetelmää, jotka kummatkin voidaan koodata usealla eri tavalla. Menetelmät ovat nimeltään ''zig zag'' ja ''verrannollinen'' viivanseuranta.  
Viivanseurantaan on hyvin paljon erilaisia tapoja eli algoritmeja. Tässä näytämme kaksi yksinkertaista menetelmää, jotka kummatkin voidaan koodata usealla eri tavalla. Menetelmät ovat nimeltään ''zig zag'' ja ''verrannollinen'' viivanseuranta.  
Line 15: Line 15:
Valoanturi on välttämätön. Joissain harjoitustehtävissä hyödynnetään kahta valoanturia.
Valoanturi on välttämätön. Joissain harjoitustehtävissä hyödynnetään kahta valoanturia.


=== Example Videos ===
=== Esimerkkivideot ===


<youtube>DN2prlLoyPo</youtube>
<youtube>DN2prlLoyPo</youtube>
Line 21: Line 21:
<youtube>kVce9k_e6OI</youtube>
<youtube>kVce9k_e6OI</youtube>


=== Theory ===
=== Teoriaa ===


These algorithms follow the border of the line, not the line.  
Itse asiassa nämä algoritmit seuraavat viivan reunaa, eikä viivaa.  


==== Calibration ====
==== Kalibrointi ====


The color sensor should be calibrated, either in the program using black and light reflectances, or by calibrating the values from the sensor. See the linked page for more information.  
Värianturi pitäisi kalibroida, jotta algoritmi toimii hyvin. Se voidaan kalibroida erillisellä ohjelmalla tai mustan ja valkoisen valon heijastuskertoimet voidaan tallettaa algoritmin käyttöön.  


==== Zig Zag ====
==== Zig Zag ====


''Zig zag'' algorithm turns to right if sees white, and to left if the sensor is on the black. Or vice versa. The algorithm is easy to program using only one if block. The speed and turning value need to be considered and adjusted.
''Zig zag'' -algoritmi kääntyy oikealle, jos se näkee valkoista ja se kääntää robottia vasemmalle, jos anturi näkee mustaa. Tai päinvastoin. Algoritmi on helppo koodata yhdellä ehtolausekkeella. Robotin nopeutta ja kääntymismäärää pitänee säätää.


[[File:Zigzag.png|thumb|''The Zig Zag'' algorithm.]]
[[File:Zigzag.png|thumb|''The Zig Zag'' algoritmi.]]


==== Proportional ====
==== Verrannollinen ====


[[File:LinefollowerProp.png|thumb]]
[[File:LinefollowerProp.png|thumb]]


The proportional line follower steers according to the value read from the color sensor. The sensor is assumed to be calibrated, so that at value <math>c=50</math> the robot will go straight. Define a steering function
Verrannollinen viivanseuraaja kääntyy sen mukaan, mitä arvoja värianturista tulee. Tässä anturi oletetaan kalibroiduksi, eli arvolla <math>c=50</math> robotti kulkee suoraan. Määritellään ohjausfunktio


<math>s(c) = 2c - 100</math>.
<math>s(c) = 2c - 100</math>.


It is clearly seen, that
Selvästi nähdään, että jos
{| class="sortable"
{| class="sortable"
|-
|-
! <math>c</math> !! <math>s(c)</math> !! Does
! <math>c</math> !! <math>s(c)</math> !! Tekee
|-
|-
| 0 || -100|| Steer left
| 0 || -100|| Kääntyy vasemmalle
|-
|-
| 50 || 0|| Go straight
| 50 || 0|| Ajaa suoraan
|-
|-
| 100 || 100 || Steer right
| 100 || 100 || Kääntyy oikealle
|}
|}
   
   
The coefficient is <math>2</math> which makes the robot steer rapidly. You might wish to have smaller or larger steering effect depending on the path. The steering function can be generalized easily to
Verrannollisuuskerroin on <math>2</math>, jolloin robotti kääntyy nopeasti. Viivastasi riippuen saatat tarvita suuremman tai pienemmän kääntöarvon. Kääntöfunktio voidaan yleistää helposti funktioksi


<math>s(c) = k(c-50)</math>
<math>s(c) = k(c-50)</math>


which allows to test different steering coefficients <math>k</math>. This is easy to implement in Ev3-G programming language.
jolloin erilaisia verrannollisuuskertoimia <math>k</math> voidaan testata helpommin. Tämä on helppo ohjelmoida Ev3-G -ohjelmointikielellä.




=== Example Code ===
=== Esimerkkikoodi ===




==== Zig Zag ====
==== Zig Zag ====


Zig Zag never drives straight. Either it turns to left or right. However, it can be made very fast, and reliable---of course depending on the line. The turning part is coded into ''if else'' block which is in the loop.  
''Zig zag'' ei aja koskaan suoraan. Se kääntyy joko oikealle tai vasemmalle. Silti se voidaan tehdä hyvin nopeaksi ja luotettavaksi, tietenkin viivasta riippuen.  


[[File:Zigzag.png|thumb|Zigzag algorithm]]
[[File:Zigzag.png|thumb|Zigzag-algoritmi]]


==== Proportional ====
==== Verrannollinen ====


The proportional code reads the reflected light intensity, and if it exactly 50 the robot drives forward. Otherwise it turns to left or right. There is a proportional constant <math>c</math> to determine the speed of the turn.
Verrannollinen viivanseuraaja mittaa koko ajan heijastuneen valon intensiteettiä. Arvolla 50 robotti ajaa suoraan. Muuten se kääntyy oikealle tai vasemmalle. Verrannollisuuskerroin <math>c</math> määrittää kääntymisen voimakkuuden.


[[File:Proportional.png|thumb|The proportional Line Follower code. The code is much shorter and perhaps easier to understand, if the maths can be understood.]]
[[File:Proportional.png|thumb|Verrannollinen viivanseuraaja. Koodi on lyhyempi ja kenties helpompi ymmärtää kuin zig zag -algoritmin koodi -- ainakin jos matematiikka sujuu.]]


=== Exercises ===
=== Harjoituksia ===


* Use the other side of the line to follow the line
* Muuta koodia siten, että se seuraa viivan toista puolta.
* Make the robot to change the side of the line during the line following: Thus, after following the line e.g. 2 wheel rotations, use the other side of the line
* Käske robottia vaihtamaan kesken ajon (esim. kahden renkaan kierroksen jälkeen) viivan puolta.
* Make a robot with two color sensors, and use the information from the other sensor to stop the robot when the other sensor recognizes black line.
* Tee robotti, jossa on kaksi valoanturia, ja käytä toista anturia pysäyttämään robotti, kun tämä anturi havaitsee mustan poikittaisen viivan.
* Make a robot with two color sensors, and make the robot to follow a line that is in between the two sensors.
* Tee robotti, jossa on kaksi valoanturia, ja tee algoritmi, joka seuraa viivaa mikä on kahden valoanturin välissä.
* Make a robot with two color sensors, and make the robot to follow first the line with left sensor, then after two wheel rotations use the other sensor to follow the line to the end.
* Tee robotti, jossa on kaksi valoanturia. Käske robotin ensin seurata viivaa kaksi renkaan kierrosta vasemmalla anturilla, sitten vaihtaa puolta ja seurata loppumatka oikeanpuoleisella anturilla.






This course is supported by [https://meet-and-code.org/ Meet and Code]. The course is made in collaboration with [http://www.fllsuomi.org/ Robotiikka- ja tiedekasvatus ry].
Kurssia tukee rahallisesti  [https://meet-and-code.org/ Meet and Code]. Kurssi on suunniteltu yhteistyössä [http://www.fllsuomi.org/ Robotiikka- ja tiedekasvatus ry]:n kanssa.
[[File:MeetAndcodeLogo.png|thumb]]
[[File:MeetAndcodeLogo.png|thumb]]




[[Meet_and_Code_2020_I:_Ev3-G | Meet and Code I: Ev3-G]]
[[Meet_and_Code_2020_I:_Ev3-G | Meet and Code I: Ev3-G]]

Latest revision as of 18:51, 15 September 2020

<languages/>

Johdanto

Viivanseurantaan on hyvin paljon erilaisia tapoja eli algoritmeja. Tässä näytämme kaksi yksinkertaista menetelmää, jotka kummatkin voidaan koodata usealla eri tavalla. Menetelmät ovat nimeltään zig zag ja verrannollinen viivanseuranta.

Viivan voit piirtää isolle paperille tai vetämällä esimerkiksi teipillä viivan lattiaan. Helpoin viiva algoritmeille on sileä (tasainen), mutta viivassa voi tietenkin olla myös teräviä käännöksiä. Nämä algoritmit eivät huomaa, jos viiva leikkaa itseään.

Robotti

Lähes mikä tahansa liikkuva robotti toimii.

Anturit

Valoanturi on välttämätön. Joissain harjoitustehtävissä hyödynnetään kahta valoanturia.

Esimerkkivideot

Teoriaa

Itse asiassa nämä algoritmit seuraavat viivan reunaa, eikä viivaa.

Kalibrointi

Värianturi pitäisi kalibroida, jotta algoritmi toimii hyvin. Se voidaan kalibroida erillisellä ohjelmalla tai mustan ja valkoisen valon heijastuskertoimet voidaan tallettaa algoritmin käyttöön.

Zig Zag

Zig zag -algoritmi kääntyy oikealle, jos se näkee valkoista ja se kääntää robottia vasemmalle, jos anturi näkee mustaa. Tai päinvastoin. Algoritmi on helppo koodata yhdellä ehtolausekkeella. Robotin nopeutta ja kääntymismäärää pitänee säätää.

The Zig Zag algoritmi.

Verrannollinen

Verrannollinen viivanseuraaja kääntyy sen mukaan, mitä arvoja värianturista tulee. Tässä anturi oletetaan kalibroiduksi, eli arvolla robotti kulkee suoraan. Määritellään ohjausfunktio

.

Selvästi nähdään, että jos

Tekee
0 -100 Kääntyy vasemmalle
50 0 Ajaa suoraan
100 100 Kääntyy oikealle

Verrannollisuuskerroin on , jolloin robotti kääntyy nopeasti. Viivastasi riippuen saatat tarvita suuremman tai pienemmän kääntöarvon. Kääntöfunktio voidaan yleistää helposti funktioksi

jolloin erilaisia verrannollisuuskertoimia voidaan testata helpommin. Tämä on helppo ohjelmoida Ev3-G -ohjelmointikielellä.


Esimerkkikoodi

Zig Zag

Zig zag ei aja koskaan suoraan. Se kääntyy joko oikealle tai vasemmalle. Silti se voidaan tehdä hyvin nopeaksi ja luotettavaksi, tietenkin viivasta riippuen.

Zigzag-algoritmi

Verrannollinen

Verrannollinen viivanseuraaja mittaa koko ajan heijastuneen valon intensiteettiä. Arvolla 50 robotti ajaa suoraan. Muuten se kääntyy oikealle tai vasemmalle. Verrannollisuuskerroin määrittää kääntymisen voimakkuuden.

Verrannollinen viivanseuraaja. Koodi on lyhyempi ja kenties helpompi ymmärtää kuin zig zag -algoritmin koodi -- ainakin jos matematiikka sujuu.

Harjoituksia

  • Muuta koodia siten, että se seuraa viivan toista puolta.
  • Käske robottia vaihtamaan kesken ajon (esim. kahden renkaan kierroksen jälkeen) viivan puolta.
  • Tee robotti, jossa on kaksi valoanturia, ja käytä toista anturia pysäyttämään robotti, kun tämä anturi havaitsee mustan poikittaisen viivan.
  • Tee robotti, jossa on kaksi valoanturia, ja tee algoritmi, joka seuraa viivaa mikä on kahden valoanturin välissä.
  • Tee robotti, jossa on kaksi valoanturia. Käske robotin ensin seurata viivaa kaksi renkaan kierrosta vasemmalla anturilla, sitten vaihtaa puolta ja seurata loppumatka oikeanpuoleisella anturilla.


Kurssia tukee rahallisesti Meet and Code. Kurssi on suunniteltu yhteistyössä Robotiikka- ja tiedekasvatus ry:n kanssa.


Meet and Code I: Ev3-G