D'r binne in protte treflike kursussen yn 'e wrâld fan yngenieursûnderwiis, mar faak hat it om har hinne boude learplan te lijen fan ien serieuze flater - in gebrek oan goede gearhing tusken ferskate ûnderwerpen. Men kin beswier meitsje: hoe kin dit?
By it foarmjen fan in opliedingsprogramma wurde foar elke kursus betingsten en in dúdlike folchoarder oanjûn wêryn't de dissiplines bestudearre wurde moatte. Bygelyks, om in primitive mobile robot te bouwen en te programmearjen, moatte jo in bytsje meganika witte om syn fysike struktuer te meitsjen; basis fan elektrisiteit op it nivo fan Ohm / Kirchhoff syn wetten, fertsjintwurdiging fan digitale en analoge sinjalen; operaasjes mei vectoren en matriks om koördinatesystemen en bewegingen fan 'e robot yn 'e romte te beskriuwen; basis fan programmearring op it nivo fan gegevenspresintaasje, ienfâldige algoritmen en struktueren foar kontrôle oerdracht, ensfh. gedrach te beskriuwen.
Is dit alles behannele yn universitêre kursussen? Fansels hawwe. Mei de wetten fan Ohm/Kirchhoff krije wy lykwols thermodynamika en fjildteory; njonken operaasjes mei matrices en vectoren hat men te krijen mei Jordaansfoarmen; yn programmearring, studearje polymorfisme - ûnderwerpen dy't net altyd nedich binne om in ienfâldich praktysk probleem op te lossen.
It universitêr ûnderwiis is wiidweidich - de studint giet op in breed front en sjocht faak net de betsjutting en praktyske betsjutting fan de kennis dy't er krijt. Wy besletten om it paradigma fan universitêr ûnderwiis yn STEM te kearen (fan 'e wurden Science, Technology, Engineering, Math) en in programma te meitsjen dat basearre is op' e gearhing fan kennis, wêrtroch in tanimming fan folsleinens yn 'e takomst mooglik is, dat is, it ymplisearret yntinsive behearsking fan ûnderwerpen.
It learen fan in nij fakgebiet kin wurde fergelike mei it ferkennen fan in pleatslik gebiet. En hjir binne d'r twa opsjes: of wy hawwe in heul detaillearre kaart mei in enoarme hoemannichte details dy't moatte wurde bestudearre (en dit duorret in protte tiid) om te begripen wêr't de wichtichste landmarks binne en hoe't se mei elkoar relatearje ; of jo kinne in primitive plan brûke, wêryn allinich de haadpunten en har relative posysjes oanjûn binne - sa'n kaart is genôch om fuortendaliks yn 'e goede rjochting te begjinnen te bewegen, de details te ferdúdlikjen as jo gean.
Wy testten de yntinsive STEM-learbenadering op in winterskoalle, dy't wy tegearre mei MIT-learlingen holden mei stipe fan
Materialfoarming
It earste diel fan it skoalprogramma wie in wike fan lessen yn 'e haadgebieten, dy't algebra, elektryske circuits, kompjûterarsjitektuer, Python-programmearring en in ynlieding op ROS (Robot Operating System) omfette.
De rjochtingen waarden net tafallich keazen: inoar oanfolje, soene se studinten helpe om op it earste each de ferbining te sjen tusken skynbere ferskillende dingen - wiskunde, elektroanika en programmearring.
It haaddoel wie fansels net om in soad lêzingen te jaan, mar om de learlingen de kâns te jaan om de nij opdiene kennis sels yn de praktyk ta te passen.
Yn 'e algebra-seksje koene studinten matrixoperaasjes oefenje en systemen fan fergelikingen oplosse, dy't nuttich wiene by it bestudearjen fan elektryske circuits. Nei't leard oer de struktuer fan in transistor en de logyske eleminten boud op syn basis, studinten koenen sjen harren gebrûk yn in prosessor apparaat, en nei it learen fan de basis fan 'e Python taal, skriuwe in programma foar in echte robot yn it.

Duckietown
Ien fan de doelen fan de skoalle wie om it wurk mei simulators sa mooglik te minimalisearjen. Dêrom waard in grutte set fan elektroanyske circuits taret, dy't studinten moasten sammelje op in breadboard fan echte komponinten en testen se yn 'e praktyk, en Duckietown waard keazen as basis foar de projekten.
Duckietown is in iepen-boarne-projekt mei lytse autonome robots neamd Duckiebots en de netwurken fan diken dy't se lâns reizgje. Duckiebot is in platfoarm mei tsjillen útrist mei in Raspberry Pi-mikrokomputer en in inkele kamera.
Op grûn dêrfan hawwe wy in set mei mooglike taken taret, lykas it bouwen fan in wegenkaart, sykjen nei objekten en njonken stopje en noch in oantal oaren. Learlingen koene ek har eigen probleem foarstelle en net allinnich in programma skriuwe om it op te lossen, mar ek daliks op in echte robot draaie.
Learje
Tidens de lêzing presintearren learkrêften it materiaal mei foarriedige presintaasjes. Guon klassen waarden op fideo opnommen, sadat studinten se thús koenen besjen. By lêzingen brûkten studinten materialen op har kompjûters, stelden fragen en losten se tegearre en selsstannich problemen op, soms oan it boerd. Op grûn fan de resultaten fan it wurk waard de wurdearring fan elke studint apart yn ferskate fakken berekkene.

Lit ús beskôgje it hâlden fan klassen yn elk fak yn mear detail. It earste ûnderwerp wie lineêre algebra. Studinten bestege ien dei oan it bestudearjen fan vectoren en matriksen, systemen fan lineêre fergelikingen, ensfh. Praktyske taken waarden ynteraktyf strukturearre: de foarstelde problemen waarden yndividueel oplost, en de learaar en oare learlingen levere opmerkings en tips.

It twadde ûnderwerp is elektrisiteit en ienfâldige circuits. Studinten learden de basis fan elektrodynamika: spanning, stroom, wjerstân, de wet fan Ohm en de wetten fan Kirchhoff. Praktyske taken waarden foar in part dien yn 'e simulator of foltôge op it boerd, mar mear tiid waard bestege oan it bouwen fan echte circuits lykas logyske circuits, oscillerende circuits, ensfh.

It folgjende ûnderwerp is Computer Architecture - yn in sin, in brêge dy't natuerkunde en programmearring ferbynt. Studinten studearre de fûnemintele basis, de betsjutting fan dat is mear teoretysk as praktysk. As praktyk ûntwurpen studinten selsstannich rekenkundige en logyske circuits yn 'e simulator en krigen punten foar foltôge taken.
De fjirde dei is de earste dei fan programmearring. Python 2 waard keazen as de programmearring taal omdat it is de iene brûkt yn ROS programmearring. Dizze dei wie as folget opboud: learkrêften presintearren it materiaal, joegen foarbylden fan it oplossen fan problemen, wylst learlingen nei har harken, by har kompjûters sitten en werhelle wat de learaar skreau op it boerd of dia. Dêrnei losten de learlingen ferlykbere problemen op harsels op, en waarden de oplossingen dêrnei evaluearre troch de learkrêften.
De fyfde dei wie wijd oan ROS: de jonges learden oer robotprogrammearring. De hiele skoaldei sieten learlingen by har kompjûters, en draaiden de programmakoade dêr't de learaar oer praat. Se koene basis ROS-ienheden op har eigen útfiere en waarden ek yntrodusearre oan it Duckietown-projekt. Oan 'e ein fan dizze dei wiene de learlingen ree om te begjinnen mei it projekt diel fan' e skoalle - it oplossen fan praktyske problemen.

Beskriuwing fan selektearre projekten
Studinten waarden frege om teams fan trije te foarmjen en in projektûnderwerp te kiezen. As resultaat waarden de folgjende projekten oannommen:
1. Kleur kalibraasje. Duckiebot moat de kamera kalibrearje as ljochtbetingsten feroarje, dus d'r is in automatyske kalibraasjetaak. It probleem is dat kleurbereiken tige gefoelich binne foar ljocht. Dielnimmers ymplementearre in hulpprogramma dat soe markearje de fereaske kleuren yn in frame (read, wyt en giel) en bouwe berik foar elke kleur yn HSV-formaat.
2. Duck Taxi. It idee fan dit projekt is dat Duckiebot tichtby in objekt kin stopje, it ophelje en in bepaalde rûte folgje. In helder giele ein waard as objekt keazen.

3. Bou fan in dyk grafyk. Der is in taak om in grafyk te meitsjen fan diken en krusingen. It doel fan dit projekt is om in dykgrafyk te bouwen sûnder a priori miljeugegevens oan Duckiebot te leverjen, allinich op kameragegevens.
4. Patrol auto. Dit projekt is útfûn troch de learlingen sels. Se stelden foar om ien Duckiebot te learen, in "patrol", om in oare te jagen, in "oertreder." Foar dit doel waard it meganisme fan doelerkenning mei de ArUco-marker brûkt. Sadree't de erkenning foltôge is, wurdt in sinjaal stjoerd nei de "ynbrekker" om it wurk te foltôgjen.

Kleurkalibraasje
It doel fan it Color Calibration-projekt wie om it berik fan werkenbere markearringskleuren oan te passen oan nije ljochtomstannichheden. Sûnder sokke oanpassingen waard de herkenning fan stoplinen, rydstroken en dykgrinzen ferkeard. Dielnimmers foarstelden in oplossing basearre op foarferwurking markup kleur patroanen: read, giel en wyt.
Elk fan dizze kleuren hat in ynsteld berik fan HSV- as RGB-wearden. Mei help fan dit berik wurde alle gebieten fan it frame mei passende kleuren fûn, en de grutste wurdt selektearre. Dit gebiet wurdt nommen as de kleur dy't moat wurde ûnthâlden. Statistyske formules lykas it berekkenjen fan de gemiddelde en standertdeviaasje wurde dan brûkt om it nije kleurberik te skatten.
Dit berik is opnommen yn 'e kamerakonfiguraasjebestannen fan Duckiebot en kin letter brûkt wurde. De beskreaune oanpak waard tapast op alle trije kleuren, en foarmje úteinlik berik foar elk fan 'e markupkleuren.
Tests toande hast perfekte erkenning fan markearring rigels, útsein yn gefallen dêr't de markearring materialen brûkt glossy tape, dat wjerspegelet ljocht boarnen sa sterk dat út de kamera syn besjen hoeke de markearring ferskynde wyt, nettsjinsteande syn oarspronklike kleur.

Duck Taxi
It Duck Taxi-projekt befette it bouwen fan in algoritme om te sykjen nei in duckpassazjier yn 'e stêd, en it dan nei it fereaske punt te ferfieren. De dielnimmers ferdielden dit probleem yn twa: deteksje en beweging lâns de grafyk.
Studinten fierden einedeteksje út troch de oanname te meitsjen dat in ein elk gebiet yn it frame is dat kin wurde herkend as giel, mei in reade trijehoek (bek) derop. Sadree't sa'n gebiet wurdt ûntdutsen yn it folgjende frame, de robot moat benaderje it en dan stopje foar in pear sekonden, simulearje de lâning fan in passazjier.
Dan, troch de dykgrafyk fan 'e hiele duckietown en de posysje fan 'e bot foarôf yn it ûnthâld opslein te hawwen, en ek de bestimming as ynfier krije, bouwe dielnimmers in paad fan it fertrekpunt nei it oankomstpunt, mei it algoritme fan Dijkstra om paden yn 'e grafyk te finen . De útfier wurdt presintearre as in set fan kommando's - bochten by elk fan 'e folgjende krúspunten.

Grafyk fan Roads
It doel fan dit projekt wie om in grafyk te bouwen - in netwurk fan diken yn Duckietown. De knopen fan 'e resultearjende grafyk binne krusingen, en de bôgen binne diken. Om dit te dwaan, moat Duckiebot de stêd ferkenne en har rûte analysearje.
Tidens it wurk oan it projekt waard it idee fan it meitsjen fan in gewogen grafyk beskôge, mar dan ôfkarre, wêrby't de kosten fan in râne wurdt bepaald troch de ôfstân (tiid om te reizgjen) tusken krusingen. De útfiering fan dit idee blykte te arbeidsintensyf te wêzen en der wie net genôch tiid foar binnen de skoalle.
As Duckiebot komt by de folgjende krusing, kiest it de wei dy't liedt út it krúspunt dat it noch net hat nommen. As alle diken op alle krusingen binne trochjûn, bliuwt de generearre list fan krusingsadjacences yn it ûnthâld fan 'e bot, dy't mei de Graphviz-bibleteek omset wurdt yn in ôfbylding.
It algoritme foarsteld troch de dielnimmers wie net geskikt foar in willekeurige Duckietown, mar wurke goed foar in lytse stêd fan fjouwer krusingen brûkt binnen de skoalle. It idee wie om in ArUco-marker ta te foegjen oan elke krusing mei in krusing-identifikaasje om de folchoarder te folgjen wêryn't de krusingen waarden riden.
It diagram fan it algoritme ûntwikkele troch de dielnimmers wurdt werjûn yn 'e figuer.

Patrol auto
It doel fan dit projekt is it sykjen, efterfolgjen en oanhâlden fan in ynbrekkende bot yn 'e stêd Duckietown. In patrol bot moat bewege lâns de bûtenste ring fan in stêd dyk, op syk nei in bekende intruder bot. Nei it ûntdekken fan in ynbrekker, moat de patrolbot de ynbrekker folgje en him twinge om te stopjen.
It wurk begûn mei it sykjen nei in idee om in bot yn in frame op te spoaren en dêr in ynbrekker yn te herkennen. It team stelde foar om elke bot yn 'e stêd út te rusten mei in unike marker op' e rêch - krekt lykas echte auto's steatregistraasjenûmers hawwe. ArUco markers waarden keazen foar dit doel. Se binne earder brûkt yn duckietown, om't se maklik binne om mei te wurkjen en kinne jo de oriïntaasje fan 'e marker yn' e romte en de ôfstân ta it bepale.
Folgjende, it wie nedich om te soargjen dat de patrol bot ferhuze strikt yn 'e bûtenste sirkel sûnder stopjen op krusingen. Standert beweecht Duckiebot yn in baan en stopet by de stopline. Dan bepaalt er mei help fan ferkearsbuorden de konfiguraasje fan it krúspunt en makket er in kar oer de trochgongsrjochting fan it krúspunt. Foar elk fan 'e beskreaune stadia is ien fan' e steaten fan 'e finite state masine fan' e robot ferantwurdlik. Om de haltes op it krúspunt kwyt te reitsjen, feroare it team de steateautomaat sa dat by it oanreitsjen fan de stopline de bot daliks oerstapt nei de stân fan it krusing rjochttroch.
De folgjende stap wie om it probleem op te lossen fan it stopjen fan de ynkringerbot. It team makke de oanname dat de patrolbot SSH-tagong koe hawwe ta elk fan 'e bots yn' e stêd, dat is wat ynformaasje oer hokker autorisaasjegegevens en hokker id elke bot hat. Sa, nei it opspoaren fan de ynbrekker, begûn de patrol bot te ferbinen fia SSH oan de ynkringer bot en slute syn systeem.
Nei it befêstigjen dat it shutdown-kommando foltôge wie, stoppe de patrolbot ek.
It operaasjealgoritme fan in patrolrobot kin wurde fertsjintwurdige as it folgjende diagram:

Wurkje oan projekten
It wurk waard organisearre yn in opmaak lykas Scrum: elke moarn planden de learlingen taken foar de aktuele dei, en jûns rapportearren se oer it dien wurk.
Op 'e earste en lêste dagen hawwe studinten presintaasjes taret dy't de taak beskriuwe en hoe't se it kinne oplosse. Om studinten te helpen har keazen plannen te folgjen, wiene learkrêften út Ruslân en Amearika konstant oanwêzich yn 'e keamers dêr't wurke oan projekten, beantwurdzjen fan fragen. Kommunikaasje fûn benammen yn it Ingelsk.
Resultaten en harren demonstraasje
It wurk oan de projekten duorre in wike, wêrnei't de learlingen harren resultaten presintearren. Elkenien hat presintaasjes makke wêryn't se prate oer wat se op dizze skoalle leard hawwe, wat de wichtichste lessen wiene dy't se leard hawwe, wat se leuk of net leuk fine. Dêrnei presintearre elk team syn projekt. Alle teams foltôge harren taken.
It team dat kleurkalibraasje ymplementearre, foltôge it projekt rapper dan oaren, sadat se ek tiid hiene om dokumintaasje foar har programma ta te rieden. En it team dat wurke oan 'e dykgrafyk, sels op' e lêste dei foar de projektdemonstraasje, besocht har algoritmen te ferfine en te korrigearjen.

konklúzje
Nei it foltôgjen fan 'e skoalle fregen wy studinten om aktiviteiten yn it ferline te evaluearjen en fragen te beantwurdzjen oer hoe goed de skoalle foldie oan har ferwachtings, hokker feardigens se krigen, ensfh. Alle studinten merkten op dat se learden om yn in team te wurkjen, taken te fersprieden en har tiid te plannen.
Studinten waarden ek frege om it nut en de muoite fan 'e kursussen dy't se namen te beoardieljen. En hjir binne twa groepen beoardielingen foarme: foar guon hiene de kursussen net folle muoite, oaren beoardiele se as heul lestich.
Dat betsjut dat de skoalle de goede posysje ynnommen hat troch tagonklik te bliuwen foar begjinners op in bepaald mêd, mar ek materiaal foar herhelling en konsolidaasje troch betûfte learlingen te leverjen. Dêrby moat opmurken wurde dat de programmearring kursus (Python) waard opmurken troch hast elkenien as uncomplicated mar nuttich. Neffens studinten wie de dreechste kursus "Computer Architecture".
Doe't studinten waarden frege oer de sterke en swakke punten fan 'e skoalle, reagearren in protte dat se de keazen learstyl leuk hienen, wêryn learkrêften rappe en persoanlike bystân levere en fragen beantwurde.
Studinten merkten ek op dat se graach wurkje yn 'e modus fan deistige planning fan har taken en har eigen deadlines ynstelle. As neidielen, studinten opmurken it gebrek oan kennis levere, dat wie nedich by it wurkjen mei de bot: by it ferbinen, begripe de basis en prinsipes fan syn wurking.
Hast alle studinten opmurken dat de skoalle boppe harren ferwachtings, en dit jout de goede rjochting foar it organisearjen fan de skoalle. Sa moatte de algemiene útgongspunten by it organisearjen fan de folgjende skoalle hanthavene wurde, rekken hâldend mei en, as it mooglik is, de tekoartkommingen opmurken troch studinten en learkrêften, eventueel feroarjen fan de list fan kursussen of de timing fan har les.
Artikel skriuwers: team в
PS Us bedriuwsblog hat in nije namme. No sil it wijd wurde oan edukative projekten fan JetBrains.
Boarne: www.habr.com
