Inseneride hariduse valdkonnas on palju suurepĂ€raseid kursusi, kuid hariduse programm, mis nende pĂ”hjal on ĂŒles ehitatud, omab sageli ĂŒhte tĂ”sist puudust â seoste puudumist erinevate teemade vahel. Kuidas see saab olla, vĂ”iks selle ĂŒle vaielda?
Kursuste programmide koostamisel mÀÀratakse iga kursuse jaoks eeltingimused ja selge jĂ€rjekord, milles Ă”ppeaineid tuleb Ă”ppida. NĂ€iteks, et koguda ja programmeerida primitiivne mobiilrobot, on vaja tunda veidi mehhaanikat, et luua selle fĂŒĂŒsiline konstruktsioon; elektriseaduste aluseid Ohmi/Kirchhoffi seaduste tasemel, digitaalsete ja analoogsignaalide kĂ€sitlemist; vektori ja maatriksi operatsioone, et kirjeldada robotite koordinaatsĂŒsteeme ja liikumisi; programmeerimise aluseid andmete esitamisel, lihtsate algoritmide ja juhtimist konstruktsioonide osas jne, et kirjeldada kĂ€itumist.
Kas kĂ”ike seda leidub ĂŒlikooli kursustes? Muidugi on. Ent Ohmi/Kirchhoffi seadustega saame termodĂŒnaamika ja vĂ€ljade teooria; maatriksite ja vektoritega opereerimise kĂ”rval tuleb selgeks teha Jordan'i vormid; programmeerimises tuleb uurida polĂŒmorfismi â teemad, mis ei ole alati vajalikud lihtse praktilise probleemi lahendamiseks.
Ălikooliharidus on ulatuslik â Ă”ppija lĂ€heb laia rindega ning sageli ei nĂ€e ta mĂ”tet ja praktilist tĂ€htsust teadmistest, mida ta omandab. Otsustasime muuta STEM (teaduse, tehnoloogia, inseneritehnika, matemaatika) ĂŒlikoolihariduse paradigma ja luua programmi, mis toetub teadmiste seotusele, vĂ”imaldades muudatuste tulevikus, st eeldab aine intensiivset omandamist.
Uue teema Ă”ppimist vĂ”ib vĂ”rrelda mingi ala avastamisega. Siin on kaks vĂ”imalust: kas meil on vĂ€ga detailne kaart, kus on palju detaile, mida tuleb uurida (ja see vĂ”tab aega), et mĂ”ista, kus asuvad peamised orientiirid ja kuidas need ĂŒksteisega seostuvad; vĂ”i vĂ”ime kasutada lihtsat plaani, millel on tĂ€histatud vaid peamised punktid ja nende omavaheline asetus â selline kaart on piisav, et kohe Ă”igesse suunda liikuda ning ĂŒksikasju selgitada liikumise kĂ€igus.
STS intensiivĂ”ppe lĂ€henemist testisime talvekoolis, mille korraldasime koos MIT ĂŒliĂ”pilastega toetusel
Materjalide ettevalmistamine
Kooli programmi esimene osa hÔlmas nÀdalat, kus kÀsitleti pÔhisuundi, nagu algebra, elektriahelad, arvuti arhitektuur, Pythonis programmeerimine ja ROS (Robot Operating System) tutvustus.
Suunad ei olnud juhuslikud: need pidi ĂŒksteist tĂ€iendama, et aidata Ă”pilastel nĂ€ha seoseid nĂ€iliselt erinevate asjade â matemaatika, elektroonika ja programmeerimise â vahel.
Muidugi oli peamine eesmÀrk mitte lugeda palju loenguid, vaid anda Ôpilastele vÔimalus rakendada just saamata teadmisi praktikas.
Algebra osas said Ă”pilased harjutada maatriksite operatsioone ja vĂ”rrandisĂŒsteemide lahendamist, mis olid kasulikud elektriahelate Ă”ppimisel. Kui nad Ă”ppisid transistoride ja selle pĂ”hjal ehitatud loogikakomponentide toimimist, said nad nĂ€ha nende rakendust protsessori seadmetes, ning peale Python keele pĂ”hialuste Ă”ppimist kirjutada reaalse roboti programm.

Duckietown
Ăhe kooli ĂŒlesanne oli vĂ€ltida simulaatorite kasutamist seal, kus see on vĂ”imalik. SeetĂ”ttu valmistati ette suur komplekt elektroonilisi skeeme, mille Ă”pilased pidid kogu reaalseid komponente kasutades kokku panema ning praktikas testima, ning projektide aluseks valiti Duckietown.
Duckietown on avatud projekt, mis hĂ”lmab vĂ€ikesi autonoomseid roboteid, mida nimetatakse Duckiebot'ideks, ning teede vĂ”rgustikku, mille kaudu nad liiguvad. Duckiebot on ratastele paigaldatud platvorm, mis on varustatud Raspberry Pi mikrokontrolleri ja ĂŒhe kaameraga.
Selle pĂ”hjal oleme valmistanud hulga vĂ”imalikke ĂŒlesandeid, nagu teede kaardistamine, objektide leidmine ja nende kĂ”rval peatumine, ning mitmeid teisi. Samuti said ĂŒliĂ”pilased esitada oma probleemi ja mitte ainult kirjutada programmi selle lahendamiseks, vaid ka kohe selle tĂ”elisel robotil kĂ€ivitada.
Ăpetamine
Loengu ajal rÀÀkisid Ă”petajad materjalist, kasutades eelnevalt ettevalmistatud esitlusi. MĂ”ned loengud salvestati video peale, seega oli ĂŒliĂ”pilastel vĂ”imalus neid kodus vaadata. Loengute ajal kasutasid ĂŒliĂ”pilased materjale oma arvutites, kĂŒsisid kĂŒsimusi, lahendasid ĂŒlesandeid koos ja iseseisvalt, mĂ”nikord tahvlil. Töö tulemustena arvutati iga ĂŒliĂ”pilase reiting eraldi erinevates ainetes.

KĂ€sitleme iga aine Ă”ppetunde ĂŒksikasjalikumalt. Esimene aine oli lineaarne algebra. ĂliĂ”pilased Ă”ppisid ĂŒhe pĂ€eva jooksul vektoreid ja maatrikseid, sĂŒsteeme lineaarsetest vĂ”rranditest jne. Praktilised ĂŒlesanded olid ĂŒles ehitatud interaktiivses reĆŸiimis: pakutud ĂŒlesandeid lahendati individuaalselt, samas kui Ă”petaja ja teised Ă”pilased andsid kommentaare ja nĂ€punĂ€iteid.

Teine aine â elekter ja lihtsad skeemid. ĂliĂ”pilased Ă”ppisid elektridĂŒnaamika aluseid: pinge, vool, takistus, Ohmi seadus ja Kirchhoffi seadused. Praktilised ĂŒlesanded tehti osaliselt simulaatoris vĂ”i lahendati tahvlil, kuid rohkem aega kulus tĂ”eliste skeemide, nĂ€iteks loogikatsioonide, vĂ”nkumise kontuuride ja muu ehitamiseks.

JĂ€rgmine teema â Arvutite arhitektuur â on teatud mĂ”ttes sild, mis ĂŒhendab fĂŒĂŒsika ja programmeerimise. ĂliĂ”pilased uurisid fundamentaalset baasi, mille tĂ€hendus on pigem teoreetiline kui praktiline. Praktiina projekteerisid ĂŒliĂ”pilased iseseisvalt aritmeetilisi loogilisi skeeme simulaatoris, sooritatud ĂŒlesannete eest said nad punkte.
Neljas pĂ€ev â esimene programmeerimise pĂ€ev. Programmeerimiskeeleks valiti Python 2, kuna just seda kasutatakse ROS-i programmeerimisel. See pĂ€ev kulges jĂ€rgmiselt: Ă”ppejĂ”ud tutvustasid materjali, toodi nĂ€iteid probleemide lahendamiseks, samas kui ĂŒliĂ”pilased kuulasid neid, istudes arvutite taga, ja kordasid Ă”ppejĂ”u tahvlile vĂ”i slaidile kirjutatut. SeejĂ€rel lahendasid Ă”pilased sarnaseid probleeme iseseisvalt, mille jĂ€rel hindasid lahendusi Ă”ppejĂ”ud.
Viies pĂ€ev oli pĂŒhendatud ROS-ile: poisid tutvustasid end robotite programmeerimisega. Kogu Ă”ppepĂ€eva ĂŒliĂ”pilased istusid arvutite taga, kĂ€ivitades programmikoodi, millest rÀÀkis Ă”ppejĂ”ud. Nad suutsid iseseisvalt kĂ€ivitada pĂ”hilised ROS-i ĂŒksused ja tutvuda projektiga Duckietown. Selle pĂ€eva lĂ”puks olid ĂŒliĂ”pilased valmis minema projektiosa juurde â praktiliste probleemide lahendamisele.

Valitud projektide kirjeldus
ĂliĂ”pilastele pakuti vĂ”imalust jaguneda kolme inimese rĂŒhmadesse ja valida endale projektiteema. LĂ”puks valiti jĂ€rgmised projektid:
1. VĂ€rvide kalibreerimine. Duckiebot vajab kaamera kalibreerimist valgusolude muutumisel, seega on olemas automaatse kalibreerimise ĂŒlesanne. Probleem seisneb selles, et vĂ€rvide vahemikud on valgusele vĂ€ga tundlikud. Osalised realiseerisid utiliidi, mis eristaks kaadris vajalikke vĂ€rve (punane, valge ja kollane) ning koostaks igale vĂ€rvile vahemikud HSV formaadis.
2. Duck Taxi. Selle projekti idee on, et Duckiebot saaks peatuda mĂ”ne objekti juures, selle ĂŒles korjata ja jĂ€rgida teatud marsruuti. Objektina valiti ere kollane part.

3. Teede graafi loomine. On olemas ĂŒlesanne luua teede ja ristmike graaf. Selle projekti eesmĂ€rk on luua teede graaf ilma eelneva keskkonnaandmete esitamiseta Duckiebotile, lĂ€htudes ainult kaamerast saadud andmetest.
4. Patrullauto. Selle projekti tuli vĂ€lja ĂŒliĂ”pilased ise. Nad soovitasid Ă”petada ĂŒhte Duckiebot'i, "patrulli", jĂ€litama teist â "reeglitest rikkujat". Selleks kasutati sihtmĂ€rkide tuvastamise mehhanismi ArUco-mĂ€rgist. Kui tuvastamine on lĂ”pule viidud, saadetakse "reeglitest rikkujale" signaal lĂ”petamise kohta.

VĂ€rvide kalibreerimine
Color Calibration projekti eesmÀrk oli korrigeerida vÀrvide tuvastamise ulatust uusites valgustingimustes. Ilma selliste korrigeerimisteta muutus stopplinjade, valgete ja teerajade jagajate tuvastamine ebatÀpseks. Osalejad pakkusid lahendust, mis pÔhines teeservade vÀrvide diskrimineerimise eelprotsessil: punane, kollane ja valge.
IgaĂŒhele neist vĂ€rvidest on mÀÀratud eelnevad HSV vĂ”i RGB vÀÀrtuste vahemikud. Selle vahemiku abil tuvastatakse kaadris kĂ”ik piirkonnad, mis sisaldavad sobivaid vĂ€rve, ja neist valitakse suurim. See piirkond on see, mida tuleb meeles pidada. Siis kasutatakse statistilisi valemeid, nagu keskmise ja keskmise ruutudekvendi arvutamine, et hinnata uut vĂ€rvi vahemikku.
See vahemik salvestatakse Duckieboti kaamera konfiguratsioonifailidesse ja vÔib tulevikus kasutada. Kirjeldatud lÀhenemist rakendati kÔigi kolme vÀrvi puhul, luues lÔpuks iga teeteenistuse vÀrvi jaoks vahemikud.
Testid nÀitasid peaaegu ideaalset teeteenistuse joonte tuvastamist, vÀlja arvatud juhul, kui mÀrgistusmaterjalina kasutati lÀikivat lint, mis peegeldas valgusallikaid nii palju, et kaamera vaatevinklist nÀis, et mÀrgistus oli valge, sÔltumata selle algsest vÀrvist.

Duck Taxi
Duck Taxi projekt nĂ€gi ette algoritmi loomise linnas passase ristsedakude otsimiseks ja seejĂ€rel oma sihtpunkti transportimiseks. Osalejad jagasid ĂŒlesande kaks: tuvastamine ja graafiku kaudu liikumine.
ĂliĂ”pilased teostasid ristsedakude tuvastamise, tehes eeldust, et ristsedakuks loetakse igasuguseid piirkondi kaadris, mida on vĂ”imalik tuvastada kui kollast, millel on punane kolmnurk (nokks). Kui selline piirkond tuvastatakse jĂ€rgmise kaadri töötlemisel, peab robot sellele lĂ€henema ja seejĂ€rel peatuma paariks sekundiks, jĂ€ljendades reisija maandumist.
SeejĂ€rel, olles eelnevalt mĂ€llu salvestanud kogu Duckietowni teede graafiku ja roboti asukoha ning saades ka sihtpunkti sisendina, koostavad osalejad marsruudi alguspunktist sihtkohta, kasutades Dijkstra algoritmi teede leidmiseks graafikus. VĂ€ljund esitatakse kĂ€skude kogumina â pöörded igal jĂ€rgmisel ristmikul.

Teede graaf
Selle projekti eesmĂ€rk oli ehitada graaf - teede vĂ”rgu Duckietownis. Graafi sĂ”lmedeks on ristmikud ja kaared - teed. Selleks peab Duckiebot uurima linna ja analĂŒĂŒsima oma marsruuti.
Projekti kÀigus kaaluti, kuid seejÀrel loobuti ideest luua kaalutud graaf, mille servade hind oleks mÀÀratud kauguse (ajalise kestuse) jÀrgi ristmete vahel. Selle idee elluviimine osutus liiga töömahukaks ja aega ei piisanud selleks kooliprogrammi raames.
Kui Duckiebot jÔuab jÀrgmiseks ristmikuks, valib ta teed, mis vÀljub ristmikust, millega ta varem pole liikunud. Kui kÔik teed on kÔigis ristmikes lÀbitud, jÀÀb boti mÀllu koostatud ristmikute naabrusloend, mis muudetakse pildi jÀrgi Graphviz teegi abil.
Osalejate poolt pakutud algoritm ei sobi juhuslikuks Duckietowniks, kuid toimis hÀsti vÀikese linna korral, mis koosneb neljast ristmikust ja mida kasutati kooliprogrammi raames. Idee oli rikastada igat ristmikku ArUco-mÀrkeriga, mis sisaldab ristmiku identifikaatorit, et jÀlgida ristmike lÀbimise jÀrjekorda.
Kujutisel on nÀidatud osalejate loodud algoritmi tööjÔud.

Patrulleauto
Selle projekti eesmÀrk on otsida, jÀlitama ja kinni pidada rikkumist teinud bot Duckietownis. Patrullbot peab liikuma linna vÀlisringtee pidi, otsides ette teadaolevat rikkumist teinud boti. Peale rikkumise avastamist peab patrullbot jÀrgima rikkujat ja sundima teda peatuma.
Töö algas ideede otsimisest, kuidas tuvastada boti kaadrid ja Àra tunda rikkumist. Meeskond pakkus vÀlja, et iga bot linna taga varustatakse unikaalse mÀrgiga - nagu autodel on riigi registreerimisnumbrid. Selleks valiti ArUco-mÀrgid. Need on varem kasutatud Duckietownis, kuna neid on lihtne kasutada ja need vÔimaldavad mÀÀrata mÀrgi orientatsiooni ruumis ja kauguse selle juurde.
SeejÀrgmiseks tuli teha, et patrullebot liiguks rangelt vÀlist ringi pidi, peatumatult ristmikel. Vaikimisi liigub Duckiebot sÔidureas ja peatub peatusmÀrgi kohal. SeejÀrel mÀÀrab see liiklusmÀrkide abil ristmiku konfiguratsiooni ja otsustab, millises suunas ristmik lÀbida. Iga kirjeldatud etapi eest vastutab roboti lÔppautomaat. Peatuste vÀltimiseks ristmikel muutis meeskond olekute automaati nii, et bot lÀhenedes peatusmÀrgile, liikus ta kohe ristmiku lÀbimise olekusse.
JĂ€rgmine samm oli rahuldada seaduse rikkumise botiga peatamine. Meeskond tegi eeldusi, et patrullebot vĂ”ib igale botile linnas SSH kaudu juurde pÀÀseda, st tal on teavet selle kohta, millised on igasugused volituste andmed ja milline ID on igal botil. Seega, pĂ€rast seaduserikkuja avastamist, hakkas patrullebot SSH kaudu ĂŒhendust vĂ”tma seaduse rikkumise botiga ja sulgema selle sĂŒsteemi.
PÀrast kontrollimist, et sulgemiskÀsk on tÀidetud, peatub ka patrullebot.
Patrullroboti töö algoritmi saab esitada jÀrgmise skeemina:

Projektide töö
Tööd korraldati Scrumi sarnases formaadis: iga hommik planeerisid Ă”pilased ĂŒlesandeid jooksvale pĂ€evale ja Ă”htuti andsid nad aru, mida nad on teinud.
Esimesel ja lĂ”pp-pĂ€eval valmistusid Ă”pilased esitlusteks, mis kirjeldasid seatud ĂŒlesannet ja selle lahendamise viise. Aitamiseks olid projektitöös ruumides pidevalt kohal Venemaa ja Ameerika Ă”petajad, kes vastasid kĂŒsimustele. Suhtlus toimus enamasti inglise keeles.
Tulemused ja nende esitlemine
Projektide töö kestis nĂ€dala aega, mille jooksul esitlesid Ă”pilased oma tulemusi. KĂ”ik valmistusid esitlusteks, kus rÀÀkisid, mida nad selle kooli jooksul Ă”ppisid, millised olid kĂ”ige olulisemad Ă”ppetunnid, mis neile meeldis vĂ”i ei meeldinud. PĂ€rast seda esitles iga meeskond oma projekti. KĂ”ik meeskonnad said oma ĂŒlesannete tĂ€itmisega hakkama.
VĂ€rvide kalibreerimise meeskond lĂ”petas projekti kiiremini kui teised, seetĂ”ttu suudeti valmistada ette ka oma programmi dokumentatsioon. Tehniliste teede graafika meeskond pĂŒĂŒdsid isegi projekti demonstreerimise eelviimasel pĂ€eval parandada ja toimetada oma algoritme.

KokkuvÔte
PĂ€rast kooli lĂ”petamist palusime Ă”pilastel hinnata möödunud tegevusi ja vastata kĂŒsimustele selle kohta, kuivĂ”rd kool vastas nende ootustele, milliseid oskusi nad omandasid jne. KĂ”ik Ă”pilased mĂ€rkisid, et nad Ă”ppisid meeskonnas töötama, ĂŒlesandeid jagama ja oma aega planeerima.
Ăpilastele pakuti ka vĂ”imalust hinnata lĂ€bitud kursuste kasulikkust ja keerukust. Siin kujunesid vĂ€lja kaks hinnangute rĂŒhma: ĂŒhed leidisid, et kursused ei valmista suurt vaeva, teised aga hindasid neid maksimaalselt keerukateks.
See tĂ€hendab, et kool on vĂ”tnud Ă”ige positsiooni, jÀÀdes algajatele kergesti ligipÀÀsetavaks erinevates valdkondades, kuid pakkudes samas materjale kogenud Ă”pilastele pĂ”hjalikuks kordamiseks. Tuleb mĂ€rkida, et programmeerimise kursust (Python) mĂ€rkis peaaegu igaĂŒhe poolt kui mitte eriti keerulist, kuid kasulikku. KĂ”ige keerulisemaks osutus Ă”pilaste arvates kursus "Kliendi arhitektuur".
Kui Ă”pilastelt kĂŒsiti kooli puuduste ja eeliste kohta, vastasid paljud, et neile meeldis valitud Ă”petamisstiil, kus Ă”petajad pakkusid kiiret ja individuaalset abi ning vastasid tekkinud kĂŒsimustele.
Lisaks mĂ€rkisid Ă”pilased, et neile meeldis töötada ĂŒlesannete igapĂ€evase planeerimise reĆŸiimis ja iseseisvalt tĂ€htaegu seada. Puudustena tĂ”id Ă”pilased vĂ€lja vajalike teadmiste nappuse, mis oli vajalik tööks botiga: ĂŒhendamisel, töötamise pĂ”himĂ”tete ja aluste mĂ”istmisel.
Praktiselt kĂ”ik Ă”pilased mĂ€rkisid, et kool ĂŒletas nende ootusi, mis viitab sellele, et kooli korraldamine on Ă”igesti suunatud. SeetĂ”ttu tuleks jĂ€rgmist kooli korraldades sĂ€ilitada ĂŒldised pĂ”himĂ”tted, arvestades ja vajadusel kĂ”rvaldades Ă”pilaste ja Ă”petajate mĂ€rgitud puudusi, muutes kursuste loetelu vĂ”i nende Ă”petamise aega.
Artikli autorid: meeskond ja
P.S. Meie ettevĂ”tte blogil on uus nimi. NĂŒĂŒd keskendub see JetBrainsi haridusprojektidele.
Allikas: habr.com
