Mēs jau stāstījām par robotikas pamatiem: par to, kā būvēt un programmēt ierīces ar "Lego" un "Arduino" komplektiem. Darbs ar NAO robotiem ir nākamais līmenis robotikas apgūšanā. Tiesa, būvēt šeit vairs neko nevajag, robots ir gatavs. Galvenais izaicinājums ar NAO – "iemācīt" tam kaut ko jaunu.
Roberts Dedelis ir studiju programmas "Telekomunikāciju sistēmas un datortīkli" students, kurš piedalījās sešu mēnešu ilgā projektā (no 2020. gada novembra līdz 2021. gada maijam), kas ir daļa no valsts atbalsta studentiem Covid-19 pandēmijas laikā. Viņš bija viens no studentiem, kuri pandēmijas laikā palika bez darba. TSI iesaistījās ESF projekta "Subsidētās darbavietas bezdarbniekiem" (Nr.9.1.1.1/15/I/001), ko realizē Nodarbinātības valsts aģentūra (NVA), pasākumā "Darbam nepieciešamo iemaņu attīstība". Pasākumā augstākās izglītības iestādēm ir atļauts nodarbināt savus studentus īslaicīgos projektos (no diviem līdz sešiem mēnešiem), ja tie sniedz ieguldījumu augstskolai un ir saistīti ar nodarbinātā studiju jomu. Augstskola iegūst papildspēkus savu tiešo funkciju izpildei, savukārt students – finansiālu atbalstu un jaunu pieredzi.
Pusgada laikā Roberts iepazina NAO no nulles un līdz pat lietotnes radīšanai: "Sākumā es pētīju pamatinformāciju par NAO un veidoju par to prezentāciju un metodiskos norādījumus: kā robotu ieslēgt, kādas tam ir funkcijas, cik ir sensoru utt. Tad no teorijas pārgājam pie prakses, sāku programmēt vienkāršas komandas, lai NAO varētu pateikt dažus vārdus, kustēties, staigāt, pagriezties. Nākamais līmenis ir sarežģītāku algoritmu veidošana, kuros ietilpst ne tikai komandu izpildīšana, bet komunikācija ar cilvēku. Iemācīt NAO uzturēt dialogu ir grūtāk, nekā vienkārši likt viņam kaut ko pateikt. Vajadzīgs pilns dialoga scenārijs, lai jūsu saruna būtu strukturēta, kā arī var pievienot reakcijas, piemēram, smieklus pēc tam, kad robots pastāsta joku".
Trīs vienkāršas darbības – mēnesis darba
Lietotne, kuru īpaši NAO ir izveidojis Roberts Dedelis, no cilvēka skatupunkta ir diezgan vienkārša un sastāv no trīs režīmiem: sports (vingrošana), futbols un dialoga saruna, ko NAO piedāvā, ja cilvēks atsakās izmantot pirmos divus režīmus. NAO sasveicinās, pajautā jūsu vārdu. Ja atļausiet, tas iegaumēs jūs – gan vārdu, gan seju –, un nākamajā reizē jau atpazīs un uzrunās vārdā. Šī ir viena no diezgan aizraujošām robota īpašībām, jo ar to var iemācīt ar dažādiem cilvēkiem sazināties, atpazīstot viņu profilu – piedāvāt attiecīgas darbības un sarunas tēmas. Varat likt robotam arī aizmirst savu vārdu, tad tālāk tas komunicēs ar jums kā ar svešinieku.
Ja Roberta lietotnē izvēlēsieties sporta režīmu, NAO sāks rādīt jums vingrinājumus un skaitīt "viens, divi, trīs, četri...". NAO kustību kopumu speciālisti sauc par animāciju, un tā tiek programmēta atsevišķi no skaņas. Šobrīd vingojumu laikā NAO neseko tam, ko dara cilvēks, vai pareizi pilda vingrinājumus, vai vispār tos pilda, bet nākotnē tas noteikti ir iespējams. NAO ir divas kvalitatīvas kameras, tas labi "redz". Tātad aprīkojums ļauj uzlabot NAO kā trenera spējas, viss atkarīgs no programmētājiem. Pagaidām NAO veic atspiešanās vingrinājumu un lielās: "Esmu tik stiprs!". Ja nepatīk kāds vingrinājums, var pāriet uzreiz pie nākamā. Vingrojumus arī var apstādināt jebkurā brīdī ar speciālu balss komandu un atgriezties "galvenajā izvēlnē".
Futbola režīmā var izvēlēties, kuru no trim uzdevumiem pildīs NAO. Viņš pastāsta, kur viņam uzspiest, lai aktivizētu vēlamo režīmu. Vienkāršākais ir "soda sitiens" – robots pienāks pie bumbas un vienu reizi iesitīs pa to. Uzbrucēja lomā NAO sekos bumbai, kamēr varēs to atrast, un sitīs pa to, lai virzītu tālāk. Aizsarga lomā centīsies nelaut citiem spēlētajiem tikt pie bumbas – sekos tai, bet nesītīs, vienkārši apstāsies pie tās, lai traucētu citiem spēles dalībniekiem tai pietuvoties.
Sarunas režīmā NAO var atbildēt uz standarta un ieprogrammētajiem jautājumiem. Robots var nosaukt savu IP adresi, pateikt precīzu laiku un datumu. Tāpat var iemācīt tam atrast un atstāstīt vēlamo informāciju no interneta. Roberts ieprogrammējis NAO atbildēt uz jautājumiem par futbolu – ja pajautāsiet NAO, kas ir futbols, tas atbildēs ar informāciju no attiecīgā "Vikipēdijas" raksta. Darbību veidus un sarunu tēmas var ieprogrammēt jebkādas, viss ir atkarīgs tikai no programmētāja fantāzijas un spējām.
Lietotnes nodemonstrēšana prasa vien vairākas minūtes, bet tās programmēšanai Roberts veltīja aptuveni mēnesi (neskaitot visu sagatavošanas darbu, kad viņš mācījās strādāt ar NAO no nulles). Lietotnes ietvaros NAO var komunicēt ar cilvēku diezgan ilgi, jo programma ir cikliska. Darbības laiku ierobežo tikai baterijas apjoms – bez papildu uzlādes NAO var aktīvi strādāt līdz 40 minūtēm. Pilna uzlāde notiek aptuveni stundas laikā, tad NAO atkal gatavs sazināties.
Kā "iemācīt" NAO ko jaunu?
NAO var ieprogrammēt tā, lai viņš reaģētu uz kustību, skaņu, runu, sejas atpazīšanu, pieskārienu, kā arī uz jebkuru šo signālu kombināciju. Programmēšanai tiek izmantota speciālā NAO programmatūra "Choreographe" savienojumā ar citām prorgammēšanas valodām: C++, "Phyton", "Java" un MATLAB. Roberts savā projektā izmantojis "Python".
"Choreographe" programmēšanas vide, kā stāsta Roberts, ir diezgan vienkārši uztverama un nedaudz atgādina vidi "Lego" robotu programmēšanai, kur programmas tiek veidotas no blokiem. Gatavu programmu vai tās daļu sākumā pārbauda virtuālajā vidē – tur tiek simulēts, kā uzvedīsies NAO, kad izpildīs ieprogrammēto kustību secību. Piemēram, ja virtuālajā vidē robots krīt, tas nozīmē kļūdu kodā, ko var uzreiz novērst, nebojājot reālo robotu. Kad virtuālajā vidē viss strādā kā nākas, programmu ielādē robotā. TSI laboratorijā šim nolūkam izmanto Wi-Fi savienojumu, kas ir ērtāk mobilajam robotam, kaut gan pastāv iespēja savienot to ar datoru arī ar kabeli.
Ielādētā aplikācija sāk strādāt vai nu tad, kad NAO redz cilvēku, vai nu tad, kad sadzird koda vārdu. Tā, šis NAO sāk dialogu pēc vārda "Hello!" (Sveiki!) un sāk strādāt futbola režīmā pēc vārdu savienojuma "red ball" (sarkana bumba). Jārunā diezgan skaļi, jo robotam jāatpazīst vismaz 55 procenti no balss komandas. Visu, kas ir pārāk kluss vai nav līdzīgs ieprogrammētajiem koda vārdiem, robots uztver kā troksni. Robota apkārtnē nevajdzētu būt pārāk lielam liekam troksnim, jo tas traucēs atpazīt jūsu komandas. Ja divi vai vairāk cilvēki mēģinās nosaukt komandas vienlaicīgi, robots, visticamāk, tās nepildīs. Šī ir tikai neliela daļa problēmu, kas var rasties saistībā ar kodu. Mēdz arī būt problēmas ar "dzelžiem" – kāds vads, motors vai sensors ir bojāts.
"Ir viegli izdomāt ideju savā galvā un pat saplānot darbu, bet realizācijas laikā viss izrādās daudz sarežģītāk," neslēpj Roberts. Viena no problēmām lietotnes radīšanas procesā bija tāda, ka robots rīta rosmes laikā sāka skaitīt "one, two, three, four...", klausījās pats savos vārdos un kādā brīdi dzirdēja tajos kaut ko līdzīgu komandai, mēģināja to izpildīt, līdz ar ko programmā radās kļūdas un NAO nestrādāja tā, kā bija ieplānots. "Bija konflikts starp animācijas un dialoga blokiem. Beigās nācās vingrinājuma laikā vispār izslēgt NAO dialoga bloku, lai tas netraucētu pats sev. Tādas problēmas parādas tikai testēšanas laikā ar reālu robotu, un to novēršanai dažreiz nākās veltīt garas stundas. Šķiet, ka vienkāršu robota un cilvēka dialogu var uzrakstīt pāris dienu laikā, bet realitātē var paiet nedēļas," tā Roberts.
Augstskola atzinīgi vērtē Roberta ieguldīto darbu projekta laikā – izveidotās instrukcijas, kuras palīdzēs nākamajām robotikas studentu paaudzēm ātrāk iepazīties ar NAO darbības principiem, kā arī Roberta izveidoto aplikāciju citi studenti varēs pārveidot, papildināt un pilnveidot.