Follow a line/fi: Difference between revisions
(Created page with "=== Robotti ===") |
(Created page with "=== Johdanto ===") |
||
(24 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<languages/> | <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. | 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 9: | Line 9: | ||
=== Robotti === | === 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 === | ||
<youtube>DN2prlLoyPo</youtube> | <youtube>DN2prlLoyPo</youtube> | ||
Line 22: | Line 21: | ||
<youtube>kVce9k_e6OI</youtube> | <youtube>kVce9k_e6OI</youtube> | ||
=== | === 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 ==== | ||
''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ää. | ||
[[File:Zigzag.png|thumb|''The Zig Zag'' | [[File:Zigzag.png|thumb|''The Zig Zag'' algoritmi.]] | ||
==== | ==== Verrannollinen ==== | ||
[[File:LinefollowerProp.png|thumb]] | [[File:LinefollowerProp.png|thumb]] | ||
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>. | ||
Selvästi nähdään, että jos | |||
{| class="sortable" | {| class="sortable" | ||
|- | |- | ||
! <math>c</math> !! <math>s(c)</math> !! | ! <math>c</math> !! <math>s(c)</math> !! Tekee | ||
|- | |- | ||
| 0 || -100|| | | 0 || -100|| Kääntyy vasemmalle | ||
|- | |- | ||
| 50 || 0|| | | 50 || 0|| Ajaa suoraan | ||
|- | |- | ||
| 100 || 100 || | | 100 || 100 || Kääntyy oikealle | ||
|} | |} | ||
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> | ||
jolloin erilaisia verrannollisuuskertoimia <math>k</math> voidaan testata helpommin. Tämä on helppo ohjelmoida Ev3-G -ohjelmointikielellä. | |||
=== | === Esimerkkikoodi === | ||
==== Zig Zag ==== | ==== Zig Zag ==== | ||
Zig | ''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 | [[File:Zigzag.png|thumb|Zigzag-algoritmi]] | ||
==== | ==== Verrannollinen ==== | ||
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| | [[File:Proportional.png|thumb|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 [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ää.

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.

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.

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.
