1. Metode de Predare și
Instrumente Flexibile
MATERIALE PENTRU ELEVI
-GRUP DE ACTIVITĂȚI 8–
-(ÎNVĂȚĂMÂNT
SECUNDAR)
Acest proiect a fost finanțat cu ajutorul Comisiei Europene. Această publicație reflectă doar
punctele de vedere ale autorului, iar Comisia nu este responsabilă pentru orice utilizare pe
care informațiile incluse în continuare ar putea să o aibă
2. ROBOȚII LEGO – INTERSECȚII
Elevii vor fi implicați în trafic mai devreme sau mai târziu, mai întâi ca
pasageri și bicicliști și mai târziu ca șoferi. Cel mai important lucru la această
parte este să știți regulile și să respectați variate situații din trafic.
Participanții ar putea dezvolta algoritmul pentru a se descurca în situații
oarecare din traffic, în alomerație sau în oraș.
Profesorul prezintă două variante. În primul rând, elevii află despre prima.
Profesorul le dă problema și ei trebuie să găsească soluția. Ar putea exista
mai mult de o soluție.
Mai târziu elevii prezintă problema (proprie) iar profesorul sau ceilalți elevi
încearcă să găsească soluția.
Ei îndeplinesc sarcina fără să folosească calculatorul sau robotul, pentru
început. Doar desenează soluțiile pe tablă sau pe caiet.
Când înțeleg legătura dintre probleme și soluții (după folosirea gândirii
algoritmice fără calculator) ei au fost introduși în codare.
Apoi încearcă să scrie un cod simplu (sau complex).
Varietatea 1: dezvoltarea algoritmului simplu pentru gândirea în
intersecție
Participanții dezvoltă algoritmul care găsește soluția unei situații oarecare
din intersecția semnalizată cu semne rutiere luând în cosiderarea
specificațiile naționale.
Imaginea 1: exemplu de intersecție simplă
3. Varietatea 2: dezvoltarea unui cod de program pentru conducerea
unui vehicul autonom în intersecție (LEGO)
Participanții dezvoltă un algoritm și o soluție a programului pentru
conducerea a doi roboți LEGO prin poligonul care are cel puțin o intersecție.
Roboții conduc astfel încât să urmeze linia dar se pot întâlni în intersecție.
Roboții trebuie să respecte regulile în intersecție pentru a evita ciocnirea.
Când robotul intră în zona intersecției trebuie să semnalizeze către celălalt
robot cu un cod de intrare. În cazul în care doi roboți intră în intersecție în
același timp, aceștia se clasează datorită algoritmului conform cu codul de
intrare și regulile din trafic.
Imaginea 2: zone intersecției
(1: punctul de intrare în intersecție; 2: zona intersecției ; 3: codul de
intrare; 4: intrare la 4)
Participanții folosesc comunicarea prin senzori și Bluetooth la lucrul cu roboții
LEGO. Nu vom dezvolta varietatea cu algoritmul pentru că este nevoie de
cunoștințe specifice despre programarea soluției.
Varietatea 1: soluție
Examplu de intersecție
Algoritmul care trebuie dezvoltat indică modul de căutare a permisiunii
pentru libera trecere a vehiculului meu prin intersecție. Algoritmul și întreaga
aplicație pot fi făcute într-un limbaj de calculator simplu HTML5 (canvas) și
4. JavaScript. Algoritmul va permite, în conformitate cu starea inițială a
situației din trafic, conducerea în intersecție a vehiculelor care pot fi primele
care traversează. Algoritmul evaluează în primă fază situația din intersecție
pentru vehiculul »meu«, iar apoi este posibilă extensia evaluării pentru orice
vehicul selectat.
Imaginea 1: situația din intersecția X
Semne și un set de marcaje ale indicatoarelor rutiere în intersecție
(pentru dezvoltarea algoritmului)
Marcaje: P1 – poziția 1 (este întotdeauna vehiculul »meu«), P2, P3, P4
Indicatoare rutiere: Stop – S, drum cu prioritate - ◊, intersecție cu drum cu
prioritate - V
Algoritm – etapele elaborării
Algoritmul în loop îndeplinește sarcinile de evaluare a situațiilor din trafic
pentru vehiculul ales în poziția P1 până ajunge la îndeplinirea condițiilor P2_
direction_ok=1&P4_direction:ok=1. Acest lucru înseamnă că sarcina este
îndeplinită while ()loop pentru ca direcția vehiculului meu din P1 să fie liberă.
Spre exemplu:
While (true)
Task 1: setarea condițiilor inițiale; (inițializarea setată de
utilizator)
5. While (P2_smer_ok=0 OR P3_smer_ok=0 OR P4_smer_ok=0)
Task 2;
Task 3;
Task 1: setarea condițiilor inițiale
Scriem condițiile inițiale în ferestre pentru fiecare poziție
Punem semnele rutiere în intersecție la început prin scrierea variabilei
Px_sign;x numărul poziției. Px_sign €{S,V, ◊} – stabilită mai sus!.
Apoi punem vehiculele în poziții de la P1 la P4 prin scrierea variabilei
Px_vehicle. Dacă vrem ca vehiculul să fie prezent scriem Px_vehicle=1
altfel Px_vehicle=0. Astfel: Px_vehicle € {0,1}.
Stabilim direcția dorită a vehiculelor pe care le punem în poziții în
prima căsuță prin scrierea variabilei Px_vehicle_direction.
Px_vehicle_direction€{rgt,fwd,lft, null} (right, forward, left, null);
Imagine: situația din intersecție aplicată în ferestre scrise
Traducere: znak – semn; vozilo – vehicul; smer-direcție
Task 2: determinarea situației conform cu mersul meu (P1) și
vehiculul din pozițiile învecinate
Condiții pentru S1: Dacă nu este niciun vehicul într-o anumită poziție,
această poziție este etichetată ca Px_direction_ok=1
6. Condiții S2_drive_rgt: Dacă conduc către dreapta trebuie să fiu atent la
vehiculul din P3 (care conduce către stânga) și P4 (care conduce înainte)!
Condiții S3_drive_fwd: Dacă conduc înainte trebuie să fiu atent la vehiculul
din P2 (toate direcțiile), P3 (care conduce către stânga) și P4 (care conduce
înainte sau către stânga)!
Condiții S4_drive_lft: Dacă conduc către stânga trebuie să fiu atent la P2
(care NU conduce înainte), P3 (care NU conduce către stânga), și P4 (care
NU conduce către dreapta)
Task 3: deteminați prioritatea în conformitate cu indicatoarele
rutiere din poziții
Dacă am indicator de prioritate ◊ pot conduce, dacă am semnul S sau V
atunci trebuie să aștept. Dacă două poziții au același semn trebuie să
respect regula de dreapta sau regula de întâlnire!
- Regula de dreapta:
Situație: am același indicator ca vehiculul din dreapta (P2), dacă conduc
înainte pot să trec, altfel NU.
If (P1_znak=P2_znak) AND P1_vozilo_smer=rgt then
P2_smer_ok=1;
Situație: am același indicator ca vehiculul din stânga (P4), am prioritate în
orice caz.
If P1_znak=P4_znak then
P4_smer_ok=1;
- Regula de întâlnire :
Am același indicator cu vehiculul de pe cealaltă bandă (P3), am prioritate
dacă conduc înainte sau la dreapta.
If (P1_znak=P3_znak) AND (P1_vozilo_smer=fwd OR P1_vozilo_smer=rgt)
then
P3_smer_ok=1;
7. Soluția exemplului nostru:
Pentru intersecția X poate fi stabilită valoarea inițială a variabilelor:
P1_znak=V; P2_znak=V; P3_znak=◊; P4_znak=V;
P1_vozilo=1; P2_vozilo=1; P3_vozilo=0; P4_vozilo=0;
P1_vozilo_smer=f
wd;
P2_vozilo_smer
=lft;
P3_vozilo_smer=
null;
P4_vozilo_smer=
null;
P1_smer_ok=0 P2_smer_ok=0 P3_smer_ok=1 P4_smer_ok=1
P1 este întotdeauna direcția mea, apoi numărăm în sensul invers acelor de
ceasornic pozițiile P2, P3 și P4!
Pseudocod
While(P2_smer_ok=1& P3_smer_ok=1& P4_smer_ok=1)
Task2:
//***********preverimoprisotnostvozilnapozicijah*************
(verificăm prezența vehiculelor în poziții)
If P2_vozilo=0 then
P2_vozilo_smer=null;
P2_smer_ok=1;
If P3_vozilo=0 then
P3_vozilo_smer=null;
P3_smer_ok=1;
If P4_vozilo=0 then
P4_vozilo_smer=null;
P4_smer_ok=1;
//*********ovrednotimogledenapogoje S2 do S4 ********
(evaluăm în conformitate cu condițiile S2 până la S4)
If P1_vozilo_smer=rgt then
Preveri _S1_drive_rgt; (pazina P3 lft in P4 fwd !)
(preveri-check)
If P1_vozilo_smer=fwd then
8. Preveri _S3_drive_fwd;
If P1_vozilo_smer=lft then
Preveri _S4_drive_lft;
Preveri _S2_drive_rgt:
If P3_vozilo=1 then
If P3_vozilo_smer=lft then
Preveri P3_znak; (podprogram)
If P3_vozilo_smer=fwd then
P3_smer_ok=1;
If P3_vozilo_smer=rgt then
P3_smer_ok=1;
If P4_vozilo=1 then
If P4_vozilo_smer=lft then
Preveri P4_znak; (podprogram)
podprogram - subprogramme
If P4_vozilo_smer=fwd then
Preveri P4_znak; (podprogram)
If P4_vozilo_smer=rgt then
P4_smer_ok=1;
Return
Preveri_ S3_drive_fwd:
If P2_vozilo=1 then
If P2_vozilo_smer=lft then
Preveri P2_znak; (podprogram)
If P3_vozilo_smer=fwd then
Preveri P2_znak; (podprogram)
If P3_vozilo_smer=rgt then
P2_smer_ok=1;
9. If P3_vozilo=1 then
If P3_vozilo_smer=lft then
Preveri P3_znak; (podprogram)
If P3_vozilo_smer=fwd then
Preveri P3_znak; (podprogram)
If P3_vozilo_smer=rgt then
P3_smer_ok=1;
If P4_vozilo=1 then
If P4_vozilo_smer=lft then
Preveri P4_znak; (podprogram)
If P4_vozilo_smer=fwd then
Preveri P4_znak; (podprogram)
If P34_vozilo_smer=rgt then
P4_smer_ok=1;
Return
Preveri_S4_drive_lft:
If P2_vozilo_smer=rgt then
P2_smer_ok=1;
If P2_vozilo_smer=fwd then
Preveri P2_znak; (podprogram)
If P2_vozilo_smer=lft then
Preveri P2_znak; (podprogram)
If P3_vozilo_smer=lft then
P3_smer_ok=1;
If P3_vozilo_smer=fwd then
Preveri P3_znak; (podprogram)
If P3_vozilo_smer=rgt then
Preveri P3_znak; (podprogram)
10. If P4_vozilo_smer=rgt then
P4_smer_ok=1;
If P4_vozilo_smer=fwd then
Preveri P4_znak; (podprogram)
If P4_vozilo_smer=lft then
Preveri P4_znak; (podprogram)
Return
Preveri P2_znak:
If (P2_znak≠P1_znak)&(P2_znak=(S OR V)) then
P2_smer_ok=1;
If (P1_znak=P2_znak) AND P1_vozilo_smer=rgt then
P2_smer_ok=1;
Return
Preveri P3_znak:
If (P3_znak≠P1_znak)&(P3_znak=(S OR V)) then
P3_smer_ok=1;
If (P1_znak=P3_znak) AND (P1_vozilo_smer=fwd OR P1_vozilo_smer=rgt)
then
P3_smer_ok=1;
Return
Preveri P4_znak:
If (P4_znak≠P1_znak)&(P4_znak=(S OR V)) then
P4_smer_ok=1;
If P1_znak=P4_znak then
P4_smer_ok=1;
Return
11. Algoritmul dezvoltat poate fi îmbunătățit și dezvoltat în direcția rezolvării
ordinii vehiculelor, înseamnând felul în care vehiculele merg în intersecție.