1.5 Noslēguma projekts: Pārbaudes misija
Stundas uzdevums: Izplānot, uzbūvēt, notestēt un demonstrēt autonomu LEGO SPIKE robotu, kas izmanto kustību, sensorus un manipulatoru vienotā pārbaudes misijā.
70 min plāns: Teorija un lomu sadale (~10 min) · 1. uzdevums (~15 min) - pārbaudi, vai bāze brauc atkārtojami · 2. uzdevums (~25 min) - liec robotam apstāties pēc sensora · 3. uzdevums (~20 min) - salien visu vienā misijā un nodemonstrē. Papildu uzdevumu sāc tikai tad, ja pārējie trīs ir gatavi.
Pirms sāc: paņem robotu ar satvērēju no 1.4 stundas, abus sensorus, mērlenti un misijas laukumu ar starta zonu un kravas objektu.
Teorija: no atsevišķiem blokiem līdz misijai
Noslēguma projektā svarīgākais nav uzbūvēt vissarežģītāko robotu. Svarīgākais ir pierādīt, ka robota mehānika, sensori un programma strādā kopā atkārtojamā veidā. Labs risinājums ir tāds, kuru komanda var palaist vairākas reizes un izskaidrot, kāpēc robots pieņem konkrētus lēmumus.
Misijas cikls: starts -> sekošana līnijai vai kustība pēc attāluma -> objekta noteikšana -> satveršana -> atgriešanās -> kravas atlaišana -> rezultāta izvērtēšana.
# SPIKE Word Blocks tekstuāls piemērs
when program starts
set movement motors to [A] and [B]
set movement speed to [40]%
move [forward] for [30] [cm]
wait until distance sensor is < [10] [cm]
stop moving
run motor [C] for [90] [degrees] # satver kravu
move [backward] for [30] [cm]
run motor [C] for [-90] [degrees] # atlaiž kravu
Pirms demonstrācijas vienojies ar komandu par lomām: konstruktors atbild par mehāniku, programmētājs par bloku loģiku, testētājs pieraksta kļūdas un prezentētājs skaidro risinājuma izvēles. Lomas drīkst mainīt, bet katram jāzina sava atbildība.
Praktiskie uzdevumi
1. uzdevums -
Pārbaudi, vai bāze brauc atkārtojami
Beigās tavs robots trīs reizes pēc kārtas apstāsies vienā un tajā pašā vietā.
- Pārbaudi, vai robota bāze ir cieši salikta un nezaudē detaļas, kad apstājas.
- Pieraksti portus komandas README.md failā: kreisais motors A, labais motors B, satvērējs C.
- Uzraksti testa programmu: izbrauc 40 cm, apgriezies par 180 grādiem, atgriezies.
- Atzīmē starta vietu uz grīdas ar līmlenti.
- Palaid programmu trīs reizes pēc kārtas.
- Izmēri, cik centimetru robots katru reizi paliek garām līmlentei.
Gatavs, kad: visos trīs braucienos robots apstājas ne tālāk kā 5 cm no līmlentes.
2. uzdevums -
Liec robotam apstāties pēc sensora
Beigās tavs robots pats apstāsies 10 cm pirms šķēršļa, nevis ietrieksies tajā.
- Iespraud krāsu sensoru portā
Eun distances sensoru portāF- porti A, B un C jau ir aizņemti ar motoriem. - Kalibrē sensorus klasē un pieraksti vērtības: melnā līnija (piem.,
15), baltā (85), objekta tuvums (10 cm). - Atver SPIKE vidē Python programmu un izveido galveno ciklu ar
while True:. - Ievieto cikla iekšā
if/elif/elselēmumus pēc sensoru rādījumiem:while True: if distance_sensor.get_distance_cm() < 10: motor_pair.stop() break elif color_sensor.get_reflected_light() < 30: motor_pair.move_tank(-20, 20) else: motor_pair.move_tank(30, 30) - Pārlej programmu robotā un veic vienu testa braucienu.
- Maini slieksni un pārlej vēlreiz, ja robots apstājas par tuvu vai par tālu.
Gatavs, kad: trīs braucienos pēc kārtas robots apstājas 10 cm pirms šķēršļa, ±2 cm robežās.
3. uzdevums -
Salien visu vienā misijā un nodemonstrē
Beigās tavs robots bez cilvēka palīdzības atradīs kravu, atvedīs to un noliks starta zonā.
- Savieno vienā programmā trīs daļas: braukšanu, sensora lēmumu un satvērēja darbību.
- Ieliec programmas pašā sākumā satvērēja atgriešanu sākuma pozīcijā.
- Palaid pilnu misiju un vēro, kurā solī robots kļūdās.
- Izlabo vienu lietu: ātrumu, leņķi, sliekšņa vērtību vai gaidīšanas laiku.
- Palaid misiju vēlreiz un atkārto, līdz tā izdodas divas reizes pēc kārtas.
- Nodemonstrē misiju skolotājam un paskaidro, ko dara katrs programmas bloks.
Gatavs, kad: robots divas reizes pēc kārtas izpilda visu misiju un tu vari izskaidrot katru bloku.
Papildu uzdevums - Adaptīva misija
Ja pamatdarbs ir gatavs, liec robotam pašam izvēlēties maršrutu pēc tā, kur atrodas krava.
- Pievieno otru maršruta variantu, ko robots izpilda, ja krava nav atrasta pirmajā vietā.
- Izveido mainīgo, kas skaita veiksmīgi atvestās kravas.
- Pievieno skaņas vai gaismas signālu misijas statusam: starts, krava atrasta, misija pabeigta.
Gatavs, kad: robots atrod kravu abās iespējamās vietās un Hub ekrānā rāda atvesto kravu skaitu.
Biežākās kļūdas (un kā tās labot)
- Robots brauc šķībi: pārbaudi riteņu nostiprinājumu, motora jaudu un to, vai abi riteņi ir vienāda izmēra.
- Sensors "neredz" līniju: nolaid sensoru tuvāk laukumam un kalibrē robežvērtību pēc klases apgaismojuma.
- Satvērējs iesprūst: samazini motora grādus un pārbaudi, vai konstrukcija nav pārāk cieši saspiesta.
- Misija strādā tikai vienu reizi: programmas sākumā atgriez motorus un mainīgos sākuma stāvoklī.
Koda piemērs (sākuma stāvokļa atgriešana - grūtākā daļa)
# SPIKE Word Blocks vizuālā koda tekstuālā reprezentācija
# Grūtākā vieta noslēguma projektā: misija izdodas pirmajā reizē,
# bet otrajā robots sāk ar aizvērtām spīlēm un saskaitītu mainīgo.
# Risinājums - katru palaišanu sākt ar SĀKUMA STĀVOKĻA atgriešanu.
when program starts
# --- 1. Sākuma stāvoklis (bez šīs daļas misija strādā tikai vienreiz) ---
set movement motors to [A] and [B]
set movement speed to [40]%
run motor [C] to position [0] degrees # spīles atpakaļ vaļā
set [Kravas] to [0] # skaitītājs atpakaļ uz nulli
# --- 2. Misija ---
move [forward] for [30] [cm]
wait until [Distance Sensor on F] distance < [10] [cm]
stop moving
start motor [C] # satver ar laiku, nevis grādiem
wait [1] seconds
stop motor [C]
move [backward] for [30] [cm]
run motor [C] to position [0] degrees # atlaiž kravu
change [Kravas] by [1]
Vērtēšanas kritēriji (SLA)
| Kritēriji | Sācis apgūt (1-3) | Turpina apgūt (4-6) | Apguvis (7-8) | Apguvis padziļināti (9-10) |
|---|---|---|---|---|
| Programmēšana un Kustība | Kods ir nepilnīgs, robots spēj veikt tikai atsevišķas taisnvirziena kustības. Nav izmantoti cikli. | Kods ietver ciklus un pamatkustības, taču robota kustība ir neprecīza (neprecīzi leņķi vai attālumi, nesasniedz mērķus). | Kods ir strukturēts. Robots precīzi pārvietojas pa laukumu, veic pagriezienus un izpilda kustības uzdevumus bez skolotāja iejaukšanās. | Kods ir lieliski optimizēts (nav lieku bloku, izmantoti mainīgie). Kustības ir ļoti precīzas un pielāgotas reālajai laukuma fizikai. |
| Sensoru un Loģikas izmantošana | Sensori ir fiziski pievienoti, bet netiek izmantoti kodā, vai arī to rādījumi netiek ņemti vērā. | Sāk izmantot vismaz vienu sensoru (piemēram, apstājas pie šķēršļa), taču algoritms nav stabils un bieži kļūdās. | Veiksmīgi un stabili izmanto "If-Else" un gaidīšanas loģiku, liekot lietā vismaz divus sensorus uzdevumu (sekošanas un apstāšanās) veikšanai. | Sensori darbojas nevainojami. Algoritms paredz izņēmuma situācijas (piemēram, nepazaudē līniju asos līkumos vai pielāgojas apgaismojumam). |
| Mehānika un Manipulators | Robota bāze ir nestabila, manipulators (3. motors) nav pievienots vai fiziski nedarbojas. | Manipulators ir pievienots, taču tas ir mehāniski vājš, iesprūst vai nespēj uzticami pacelt/pārvietot misijas objektu. | Robots ir izturīgs. Manipulators stabili satver, notur un atlaiž objektu, pareizi izmantojot motora grādu komandas kodā. | Izcils inženiertehniskais risinājums (piemēram, efektīva zobratu pārvadu izmantošana satvērējam). Dizains ir gan funkcionāls, gan izturīgs. |
| Sadarbība grupā un Process | Grupā aktīvi strādā tikai 1 skolēns, pārējie nepiedalās. Vāja laika plānošana. | Pienākumi ir daļēji sadalīti, taču komunikācija grupā ir vāja, kas traucē misijas secīgu izpildi. | Visi komandas biedri aktīvi iesaistās, spēj vienoties par kopīgiem risinājumiem un efektīvi testē robotu. | Grupa strādā pilnīgi patstāvīgi, palīdz citiem klasesbiedriem, lieliski sadala laiku un spēj argumentēti izskaidrot savu koda loģiku. |
Pašpārbaudes saraksts
- Vai mūsu robots stabili turas kopā un nezaudē detaļas braukšanas laikā?
- Vai kodā sākumā ir norādīti pareizie motoru un sensoru porti (A, B, C utt.)?
- Vai robota satvērējs kodā aizveras pareizajā virzienā un neiesprūst, bojājot motoru?
- Vai esam pārbaudījuši robotu uz laukuma vismaz 3 reizes pēc kārtas, lai pārliecinātos, ka veiksme nav tikai nejaušība?
- Vai mēs varam izskaidrot skolotājam, ko dara katrs krāsainais bloks mūsu kodā?