Има многу одлични курсеви во светот на инженерското образование, но често наставната програма изградена околу нив страда од една сериозна маана - недостаток на добра кохерентност помеѓу различни теми. Некој може да се спротивстави: како може ова да биде?
Кога се формира програма за обука, за секој курс се наведени предуслови и јасен редослед по кој дисциплините мора да се изучуваат. На пример, за да изградите и програмирате примитивен мобилен робот, треба да знаете малку механика за да ја создадете неговата физичка структура; основи на електрична енергија на ниво на законите на Ом/Кирхоф, претставување на дигитални и аналогни сигнали; операции со вектори и матрици со цел да се опишат координатни системи и движења на роботот во вселената; основи на програмирање на ниво на презентација на податоци, едноставни алгоритми и контролни преносни структури итн. да опише однесување.
Дали сето ова е покриено со универзитетските курсеви? Секако дека има. Меѓутоа, со законите на Ом/Кирхоф добиваме термодинамика и теорија на поле; покрај операциите со матрици и вектори, треба да се работи и со Јорданските форми; во програмирањето, проучувајте полиморфизам - теми кои не се секогаш потребни за решавање на едноставен практичен проблем.
Универзитетското образование е обемно - студентот оди на широк фронт и често не го гледа значењето и практичното значење на знаењето што го добива. Решивме да ја свртиме парадигмата на универзитетското образование во STEM (од зборовите Science, Technology, Engineering, Math) и да создадеме програма која се заснова на кохерентноста на знаењето, овозможувајќи зголемување на комплетноста во иднина, т.е. подразбира интензивно совладување на предметите.
Учењето нова предметна област може да се спореди со истражување на локално подрачје. И тука има две опции: или имаме многу детална мапа со огромна количина на детали што треба да се проучат (и за ова е потребно многу време) за да се разбере каде се главните знаменитости и како тие се поврзани едни со други ; или можете да користите примитивен план, на кој се означени само главните точки и нивните релативни позиции - таквата карта е доволна за веднаш да започнете да се движите во вистинската насока, разјаснувајќи ги деталите додека одите.
Го тестиравме интензивниот пристап за учење STEM во зимско училиште, кое го одржавме заедно со студентите на МИТ со поддршка од
Материјална подготовка
Првиот дел од училишната програма беше еднонеделна настава во главните области, која вклучуваше алгебра, електрични кола, компјутерска архитектура, програмирање со Python и вовед во ROS (Робот оперативен систем).
Насоките не беа случајно избрани: надополнувајќи се едни со други, тие требаше да им помогнат на учениците да ја видат врската помеѓу навидум различни нешта на прв поглед - математика, електроника и програмирање.
Се разбира, главната цел не беше да се одржат многу предавања, туку да им се даде можност на студентите самите да ги применат новостекнатите знаења во пракса.
Во делот алгебра, учениците можеа да вежбаат операции со матрици и да решаваат системи на равенки, кои беа корисни при проучувањето на електричните кола. Откако научија за структурата на транзисторот и логичките елементи изградени на негова основа, учениците можеа да ја видат нивната употреба во процесорски уред и откако ќе ги научат основите на јазикот Python, да напишат програма за вистински робот во него.

Дакитаун
Една од целите на училиштето беше да се минимизира работата со симулатори каде што е можно. Затоа, беше подготвен голем сет на електронски кола, кои студентите требаше да ги склопат на лебна плоча од вистински компоненти и да ги тестираат во пракса, а како основа за проектите беше избран Дакитаун.
Duckietown е проект со отворен код кој вклучува мали автономни роботи наречени Duckiebots и мрежите на патишта по кои тие патуваат. Duckiebot е платформа на тркала опремена со микрокомпјутер Raspberry Pi и една камера.
Врз основа на него, подготвивме збир на можни задачи, како што се изградба на патна карта, пребарување на предмети и застанување до нив и ред други. Студентите исто така би можеле да предложат свој проблем и не само да напишат програма за негово решавање, туку и веднаш да ја извршат на вистински робот.
Настава
За време на предавањето, наставниците го презентираа материјалот користејќи претходно подготвени презентации. Некои часови беа снимени на видео за учениците да можат да ги гледаат дома. За време на предавањата, студентите користеа материјали на нивните компјутери, поставуваа прашања и решаваа проблеми заедно и самостојно, понекогаш на табла. Врз основа на резултатите од работата, рејтингот на секој ученик беше пресметан посебно по различни предмети.

Да го разгледаме спроведувањето на часовите по секој предмет подетално. Првиот предмет беше линеарна алгебра. Учениците поминаа еден ден проучувајќи вектори и матрици, системи на линеарни равенки итн. Практичните задачи беа структурирани интерактивно: предложените проблеми се решаваа индивидуално, а наставникот и другите ученици даваа коментари и совети.

Вториот предмет е електрична енергија и едноставни кола. Учениците ги научија основите на електродинамиката: напон, струја, отпор, Омовиот закон и Кирхофовите закони. Практичните задачи беа делумно направени во симулаторот или завршени на таблата, но повеќе време беше потрошено за градење на вистински кола како што се логички кола, осцилирачки кола итн.

Следната тема е компјутерска архитектура - во извесна смисла, мост што ги поврзува физиката и програмирањето. Студентите ја проучуваа основната основа, чие значење е повеќе теоретско отколку практично. Како пракса, учениците самостојно дизајнираа аритметички и логички кола во симулаторот и добиваа поени за завршените задачи.
Четвртиот ден е првиот ден на програмирање. Python 2 е избран за програмски јазик бидејќи е оној што се користи во програмирањето ROS. Овој ден беше структуриран на следниов начин: наставниците го презентираа материјалот, даваа примери за решавање проблеми, додека учениците ги слушаа, седејќи на нивните компјутери и го повторуваа она што наставникот го напишал на табла или слајд. Потоа учениците сами решаваа слични проблеми, а решенијата потоа беа оценувани од наставниците.
Петтиот ден беше посветен на ROS: момците научија за програмирање на роботи. Целиот училишен ден, учениците седеа пред своите компјутери, пуштајќи го програмскиот код за кој зборуваше наставникот. Тие можеа сами да управуваат со основните ROS единици и исто така беа запознаени со проектот Duckietown. На крајот на овој ден, учениците беа подготвени да го започнат проектниот дел од училиштето - решавање на практични проблеми.

Опис на избраните проекти
Од учениците беше побарано да формираат тимови од тројца и да изберат тема на проектот. Како резултат на тоа, беа усвоени следните проекти:
1. Калибрација на боја. Duckiebot треба да ја калибрира камерата кога условите на осветлување се менуваат, така што има задача за автоматска калибрација. Проблемот е што опсегот на бои е многу чувствителен на светлина. Учесниците имплементираа алатка која ќе ги нагласи бараните бои во рамката (црвена, бела и жолта) и ќе изгради опсег за секоја боја во HSV формат.
2. Такси со патки. Идејата на овој проект е Duckiebot да може да застане во близина на објект, да го земе и да следи одредена рута. За предмет беше избрана светло жолта патка.

3. Изградба на графикон на патишта. Има задача да се изгради графикон на патишта и раскрсници. Целта на овој проект е да се изгради график на патишта без да се обезбедат априори податоци за животната средина на Duckiebot, потпирајќи се само на податоците од камерата.
4. Патролен автомобил. Овој проект е измислен од самите студенти. Тие предложија да научат еден Duckiebot, „патрола“, да брка друг, „насилник“. За таа цел се користеше механизмот на препознавање на целта со помош на маркерот ArUco. Штом ќе заврши препознавањето, се испраќа сигнал до „натрапникот“ да ја заврши работата.

Калибрација на бои
Целта на проектот Калибрација на бои беше да се прилагоди опсегот на препознатливите бои за обележување на новите услови на осветлување. Без такви прилагодувања, препознавањето на линиите за запирање, раздвојувачите на ленти и границите на патиштата станаа неточни. Учесниците предложија решение засновано на претходна обработка на обрасци на бои за обележување: црвена, жолта и бела.
Секоја од овие бои има претходно поставен опсег на вредности на HSV или RGB. Користејќи го овој опсег, се наоѓаат сите области на рамката што содржат соодветни бои и се избира најголемата. Оваа област се зема како боја што треба да се запомни. Потоа се користат статистички формули како што се пресметување на средната вредност и стандардното отстапување за да се процени новиот опсег на бои.
Овој опсег е снимен во датотеките за конфигурација на камерата на Duckiebot и може да се користи подоцна. Опишаниот пристап беше применет за сите три бои, на крајот формирајќи опсези за секоја од боите за обележување.
Тестовите покажаа речиси совршено препознавање на линиите за обележување, освен во случаите кога материјалите за обележување користеа сјајна лента, која толку силно ги рефлектира изворите на светлина што од аголот на гледање на фотоапаратот ознаките изгледаа бели, без оглед на нејзината оригинална боја.

Патка такси
Проектот Duck Taxi вклучуваше изградба на алгоритам за пребарување на патник од патка во градот, а потоа транспортирање до потребната точка. Учесниците го поделија овој проблем на два: откривање и движење по графиконот.
Учениците извршија детекција на патка со претпоставка дека патка е која било област во рамката што може да се препознае како жолта, со црвен триаголник (клун) на неа. Штом ќе се открие таква област во следниот кадар, роботот треба да му пријде и потоа да застане неколку секунди, симулирајќи слетување на патник.
Потоа, имајќи однапред зачуван во меморија графикот на патиштата на целиот duckietown и позицијата на ботот, а исто така ја добиваат дестинацијата како влез, учесниците градат патека од точката на поаѓање до точката на пристигнување, користејќи го алгоритмот на Дијкстра за да ги најдат патеките во графиконот . Излезот е претставен како збир на команди - се врти на секоја од следните раскрсници.

График на патишта
Целта на овој проект беше да се изгради графикон - мрежа на патишта во Дакитаун. Јазлите на добиениот график се раскрсници, а лаците се патишта. За да го направите ова, Duckiebot мора да го истражи градот и да ја анализира неговата рута.
За време на работата на проектот, идејата за создавање пондериран график беше разгледана, но потоа отфрлена, во која цената на работ се одредува според растојанието (времето на патување) помеѓу раскрсниците. Имплементацијата на оваа идеја се покажа како премногу трудоинтензивна и немаше доволно време за тоа во училиштето.
Кога Duckiebot ќе стигне до следната раскрсница, го избира патот што води надвор од раскрсницата што сè уште не ја поминал. Кога ќе се поминат сите патишта на сите раскрсници, генерираната листа на соседства на раскрсниците останува во меморијата на ботот, која се претвора во слика со помош на библиотеката Graphviz.
Алгоритмот предложен од учесниците не беше соодветен за случаен Дакитаун, но работеше добро за мал град од четири раскрсници што се користат во училиштето. Идејата беше да се додаде маркер ArUco на секоја раскрсница што содржи идентификатор на раскрсницата за да се следи редоследот по кој се возеле раскрсниците.
Дијаграмот на алгоритмот развиен од учесниците е прикажан на сликата.

Патролен автомобил
Целта на овој проект е да се пребара, прогонува и приведе бот кој прекршува во градот Дакитаун. Патролен бот мора да се движи по надворешниот прстен на градскиот пат, барајќи познат бот натрапник. Откако ќе открие натрапник, патролниот бот мора да го следи натрапникот и да го принуди да застане.
Работата започна со барање идеја за откривање бот во рамка и препознавање на натрапник во него. Тимот предложи да се опреми секој бот во градот со уникатен маркер на задната страна - исто како што вистинските автомобили имаат државни регистарски броеви. За таа цел беа избрани ArUco маркери. Тие се користени претходно во duckietown бидејќи се лесни за работа и ви овозможуваат да ја одредите ориентацијата на маркерот во просторот и растојанието до него.
Следно, беше неопходно да се осигура дека патролниот бот се движи строго во надворешниот круг без да запира на раскрсниците. Стандардно, Duckiebot се движи по лента и застанува на линијата за застанување. Потоа со помош на патокази ја одредува конфигурацијата на раскрсницата и прави избор за насоката на минување на раскрсницата. За секоја од опишаните фази, одговорна е една од состојбите на машината за конечни состојби на роботот. За да се ослободат од застанувањата на раскрсницата, тимот ја смени состојбата на машината така што кога се приближува до линијата за застанување, ботот веднаш се префрли на состојба на возење право низ раскрсницата.
Следниот чекор беше да се реши проблемот со запирање на натрапникот бот. Тимот претпоставуваше дека патролниот бот може да има SSH пристап до секој од ботови во градот, односно да има информации за тоа кои податоци за овластување и каков id има секој бот. Така, по откривањето на натрапникот, патролниот бот почна да се поврзува преку SSH со ботот на натрапникот и да го исклучува неговиот систем.
Откако потврди дека командата за исклучување е завршена, застана и патролниот бот.
Алгоритмот за работа на патролен робот може да се претстави како следниов дијаграм:

Работа на проекти
Работата беше организирана во формат сличен на Scrum: секое утро учениците планираа задачи за тековниот ден, а навечер известуваа за сработеното.
Во првиот и последниот ден, учениците подготвија презентации во кои ја опишуваа задачата и како да ја решат. За да им помогнат на учениците да ги следат нивните избрани планови, наставниците од Русија и Америка беа постојано присутни во просториите каде што се работеше на проекти, одговарајќи на прашања. Комуникацијата се одвиваше првенствено на англиски јазик.
Резултати и нивна демонстрација
Работата на проектите траеше една недела, по што учениците ги презентираа своите резултати. Сите подготвија презентации во кои зборуваа за она што го научиле во ова училиште, кои се најважните лекции што ги научиле, што им се допаѓало или што не. После тоа, секој тим го претстави својот проект. Сите тимови се справија со зададените задачи.
Тимот кој спроведува калибрација на бои го заврши проектот побрзо од другите, така што имаа време да подготват документација за нивната програма. И тимот кој работи на графикот на патиштата, дури и на последниот ден пред демонстрацијата на проектот, се обиде да ги усоврши и коригира нивните алгоритми.

Заклучок
По завршувањето на училиштето, ги замоливме учениците да ги оценат минатите активности и да одговорат на прашања за тоа колку училиштето ги исполнило нивните очекувања, кои вештини ги стекнале итн. Сите ученици забележаа дека научиле да работат во тим, да ги распределуваат задачите и да го планираат своето време.
Од студентите исто така беше побарано да ја оценат корисноста и тежината на курсевите што ги посетуваа. И тука беа формирани две групи на проценки: за некои курсевите не претставуваа многу тешкотии, други ги оценија како исклучително тешки.
Тоа значи дека училиштето ја зазело вистинската позиција со тоа што останува достапно за почетниците во одредена област, но и обезбедува материјали за повторување и консолидација од искусни ученици. Треба да се напомене дека курсот за програмирање (Python) беше забележан од речиси сите како некомплициран, но корисен. Според студентите, најтешкиот курс бил „Архитектура на компјутери“.
Кога учениците беа прашани за силните и слабите страни на училиштето, многумина одговорија дека им се допаѓа избраниот стил на настава, во кој наставниците даваа брза и лична помош и одговараа на прашања.
Учениците исто така забележаа дека им се допаѓа да работат во режим на дневно планирање на нивните задачи и да поставуваат свои рокови. Како недостатоци, студентите го забележаа недостатокот на обезбедено знаење, кое беше потребно при работа со ботот: при поврзување, разбирање на основите и принципите на неговото функционирање.
Речиси сите ученици забележаа дека училиштето ги надмина нивните очекувања, а тоа укажува на вистинската насока за организирање на училиштето. Така, општите принципи треба да се задржат при организирање на следното училиште, земајќи ги предвид и, доколку е можно, елиминирање на недостатоците забележани од учениците и наставниците, евентуално менување на списокот на предмети или времето на нивното предавање.
Автори на статијата: тим в
П.С Нашиот корпоративен блог има ново име. Сега ќе биде посветен на едукативни проекти на JetBrains.
Извор: www.habr.com
