Reaali Robootika.COM

NXT robotimaailm ja programmeerimine C-keeles

4. 9 klass 2-3 õppetundi Sumorobotid

Tiigrihype_logoSee materjal on loodud Tiigrihüppe Sihtasutuse programmi ProgeTiiger raames.

Tutvume sumoroboti ehitamise ja programmeerimise strateegiatega. Projekti lõpuks saame teada, kuidas ehitada head sumorobotit.

Sumoroboti strateegiad võib jaotada kaheks, ehitus ja programmeerimine

1. Tund. Ehitus-strateegiate tutvustamine, robotite ehitamine

a.        Ehitamise strateegiad

b.       Erinevate sumorobotite ehitamine

2-3 Tund. Programmeerimise strateegiate tutvustamine.

c.        Programmeerimine, testimine

d.       Sumovõistluse läbiviimine

LEGO sumo reeglid

LEGO sumorobotite võistlusel on kindlad reeglid ja standardid. Kui on plaanis võistlustel osaleda, tasub robot ning võistluslaud ehitada kooskõlas alljärgnevate reeglitega.

Sumo laud

Sumo laua läbimõõt on 77 cm, kõrgus maapinnast 2,5 cm. Laua servas oleva valge joone laius on 2,5 cm. Ehituseks sobib 10 mm sile vineer, millele on vajaliku kõrguse saavutamiseks jalad alla pandud.

Sumo robot

Roboti maksimaalsed mõõdud on 15x15 cm, kõrgus ei ole piiratud. Kaalupiirang on 1 kg. Robot võib pärast starti oma mõõtmetelt laieneda.

Start

Pärast programmi käivitamist peavad robotid ootama 5 sekundit enne reaalset liikuma hakkamist.

Shikiri rist

Enne iga sumo matši algust viskab kohtuniklauale shikiri risti, mis jagab sumo laua neljaks veerandiks. Robotid stardivad sumoväljaku vastasveeranditest, stardisuund teineteise suhtes väljapoole suunatud. Täpsemalt vaata selle kohta joonist projekti viimase alalõigu, stardistrateegia juurest. clip_image002

Sumoroboti ehitamise strateegiad

Sumorobotite ehituses on hulk tegureid, mis mõjutavad roboti käitumist. Näiteks veosüsteem ja kaal mõjutavad seda, kui hästi saavutab robot kontakti maapinnaga, andurid mõjutavad vastase leidmist ning platsil püsimist, tõukemehhanism on seotud vastase ründamisega ja kaitsesüsteem sellega, kuidas robot peab vastu erinevatele rünnakutele.

Veosüsteemi valik

Sumoroboti elutähtis komponent on veosüsteem. See määrab füüsiliselt roboti püsimise platsil ja tõukejõu tugevuse. Alljärgnevalt on antud vastused erinevatele veosüsteeme puudutavatele küsimustele, mis tekivad igal sumoroboti ehitajal. Pildid aitavad mõista ühe või teise veosüsteemi omadusi.


 

Rattad või roomikud?

Veosüsteem võib olla nii rataste kui ka roomikutega.

 

Rattad

Roomikud

Manööverdamine

Robot reageerib kiiresti pööramisele.

Robot pöörab suhteliselt aeglaselt.

Liikumiskiirus

Võrreldes roomikutega on võimalik ehitada üsna kiire robot.

Roboti liikumiskiirus on tagasihoidlik, kuna roomikud on praktiliselt vastu velge, väikese diameetriga.

Roomikutele võib ehitada hammasratta ülekande kiiremaks liikumiseks, kuid sellisel juhul tuleb selle töökindlus hoolega läbi mõelda, kuna sellele rakenduvad suured jõud vastase ründamisel.

Püsimine platsil

Sõltub rattakummi mustrist, võib olla väga halvast kuni väga heani.

Kui roomikud on 100% tasapinnaga kontaktis, on platsil püsimine väga hea. Kui roomikud servapidi õhku kerkivad, muutub roboti vastupanuvõime hetkega nõrgaks ning hakkab libisema.

Tõukejõud

Sarnaselt püsimisele platsil, sõltuvad roboti tõukejõu omadused rattakummist ja ehitusest.

Roomikute tõukejõud on väga hea, kui robot saab neile püsivalt toetuda ja ei tõuse õhku.

Näide

Võrdle näiteks tanki mõne samaväärse maastikuautoga. Tank liigub ja manööverdab võrreldes autoga palju aeglasemalt ja kulutab sealjuures märkimisväärselt rohkem energiat kui auto.

Kummid mustriga või siledad?

 

Siledad kummid

Mustriga kummid

Roboti platsil püsimine ja tõukejõud

Sile kumm omab maksimaalselt kontakti sileda maapinnaga, tagades sellega parema haardumise. See tagab nii roboti parema platsil püsimise kui ka suurema tõukejõu võrreldes mustriga kummiga.

Mustriga kummid omavad maapinnaga kontakti vaid mustri väljaulatuvate punktide juurest. Seega mustrilise kummi haardumine siledal pinnal on alati halvem kui siledal kummil.

 

Näide

Mõtle vormelitele, mis sõidavad täiesti siledate kummidega.

Seejärel mõtle offroad maastikuautodele, mis sõidavad võimalikult mustrilise kummiga.

Rataste läbimõõt suur või väike?

 

Suur läbimõõt

Väike läbimõõt

Roboti kiirus

Suurte ratastega robot liigub kiiremini.

Väikeste ratastega robot liigub aeglasemalt, kuid siiski kiiremini kui roomikutega robot.

Roboti tõukejõud

Roboti tõukejõud on mõjutatud vähesel määral, olles suurtel ratastel suurem kui väikestel.

Roboti tõukejõud on väikestel ratastel pisut nõrgem võrreldes suurtega.

Näide

Võrdle autosid, väikeautode rataste läbimõõt on väike ja suuremate ning kiiremate autode rattad suurema läbimõõduga.

 

 

 

clip_image004

 

 

 

 

clip_image006

Vedavad rattad ees või taga?

 

Vedavad rattad ees

Vedavad rattad taga

Tõukejõud

Roboti tõukejõud on hea. Sõltuvalt roboti enda raskuskeskmest on oht, et roboti tagumine osa tõuseb tõukamisel õhku ning sellega võib kaasneda tasakaalukaotus.

Roboti tõukejõud on hea. Sõltumata roboti raskuskeskmest ei saa roboti tagumine osa õhku tõusta. Õhku võib kerkida roboti keskosa, kui näiteks liigendiga sahk on teise roboti all kinni.

Püsimine platsil

Platsil püsimise seisukohast omab tähtsust see, kas vastase roboti sahk suudab vedavate rataste vastaspoolelt (mis võib olla avatud) roboti alla minna. Sellega on kerge robotit tasakaalust välja viia.

Näide

Raskeveokite vedav sild on alati taga. Sumorobot on nagu raskeveok, et alati oleks tagatud hea kontakt maaga.

 

 

 

clip_image008

 

 

 

clip_image010

Andurite valik ja paigutus

Andurid määravad roboti nutikuse vastase leidmisel (Ultrasonic ehk kauguseandur) ja platsil püsimise töökindluse (valguseandur).

Kas üks või kaks valguseandurit serva tuvastamiseks?

 

Üks valguseandur

Kaks valguseandurit

Kirjeldus

Ühe valguseanduriga roboti korral on kõige mõistlikum paigaldada valguseandur roboti ette keskele.

Kahe valguseanduri korral tuleb paigaldada need roboti ette paremasse ja vasakusse nurka.

Platsil püsimise töökindlus

Kui roboti valguseandur tuvastab valge joone, puudub robotil võimekus aru saada, millise suunaga läheneti platsi servale. Robot ei tea, kas läheneti otse või ollakse platsi serva suhtes tugevalt viltu.

Kahe valguseanduri korral tuvastab üks andur alati platsi serva varem kui teine ning selle info alusel on robotil võimekus ette võtta järgmine samm. Platsi poole tagasi liikudes keeratakse ümber parema või vasaku külje sõltuvalt sellest, kumb andur valge joone tuvastas.

 

 

 

clip_image012

 

 

 

 

clip_image014

Valguseandurid otse all või nurgaga ettepoole?

 

Valguseandur otse alla suunatud

Valguseandur on nurga all ettepoole suunatud

Platsil püsimise täpsus

Robot tuvastab valge joone alles siis, kui andur on täpselt joone peal.

See on igati töökindel ja järeleproovitud lahendus, kuid meeles peab pidama, et valge joone tuvastamise andurid peavad asuma võimalikult roboti eesotsas.

Robot tuvastab valge joone 1-2 cm enne seda, kui jõutakse platsi servale liiga lähedale.

Selle lahenduse korral võib tekkida oht, et ettepoole suunatud valguseandur tuvastab vastase robotit valge joonena. See omakorda võib viia roboti ettearvamatu käitumiseni.

Kas kauguseandur on vajalik?

 

Kauguseanduriga

Ilma kauguseandurita

Vastase tuvastamine

Kauguseandur võimaldab tuvastada vastase robotit.

Sellest on kasu ainult siis, kui seda infot osatakse roboti programmi juures õigesti kasutada.

Sõltuvalt roboti liikumise strateegiast on võimalik teha väga edukas sumorobot ilma kauguseandurita.

Rakendamise lihtsus

Kui puudub oskus kauguseandurist saabuvat infot programmis korrektselt kasutada, on tulemuseks kohapeal keerlev robot, milles puudub igasugune mõttekus.

Kui luua hea platsisõidu algoritm, võib kauguseandurita robot võita nii mõnegi kauguseanduriga roboti. Seni kuni kauguseanduriga robot keerutab ja vastast otsib, läheneb talle teine lihtsam robot ja puksib ringist välja.

 

Kas üks või kaks kauguseandurit?

 

Üks kauguseandur

Kaks kauguseandurit

Vastase tuvastamine

Andur tuleb paigaldada roboti esiosasse ja keskele.

Vastase tuvastamise algoritm seisneb tavaliselt selles, et robot keerutab seni, kuni näeb vastast. See töötab üldjuhul edukalt.

Paigaldada roboti esiotsa, kuid väikese nurgaga väljapoole.

Vastase tuvastamine toimub roboti pööramisel, kuid vastase asukoha määramine on tunduvalt täpsem kui ühe anduri korral.

Rakendamise lihtsus

Rakendamine on suhteliselt lihtne, kuid vastase tuvastamine seevastu ebatäpne. Ühe anduriga pole võimalik näiteks üheselt määrata vastase suunda.

Vastase roboti tuvastamine on täpne, kuid kahe anduri rakendamine ja vastase asukoha välja arvutamine vastavalt anduritest saadud infole keeruline.

 

 

 

clip_image016

 

 

 

 

clip_image018


 

Ründemehhanismid

Sumoroboti oluline komponent on tema ründemehhanism. See võib olla nii sahk, tagurpidi pöörlevad rattad või mõni muu täiesti erilaadne tõukur.

Sahk on kõige levinum ründemehhanism roboti juures. Seda on lihtne ehitada, kuid ikkagi tekivad küsimused. Kas sahk peaks olema suur või väike? Millise kaldenurgaga seda teha? Kas sahk peaks liikuma mootoriga üles-alla? Ja küsimus, millele enamik isegi ei mõtle, on saha värvus.

Vastates saha värviga seotud küsimusele, tuleb kõigepealt läbi mõelda, milline sahk ehitatakse - kas selline, mis püüab teise roboti alla minna, või mitte. Kui sahk ehitatakse selline, mis ei püüa teise roboti alla minna, pole selle värv oluline. Kui aga sahk on sellist tüüpi, mis läheb teise roboti alla, tasub see teha valget värvi LEGOst, kuna sellisel juhul tekib võimalus, et vastase roboti valguseandur peab seda platsi valgeks servaks ning hakkab teda ründava roboti eest ise ära tagurdama. Ja kuna tavaliselt ei paigaldata sumoroboti tagumisse otsa valgusandurit, tagurdabki robot ise ringist välja.

Kuna roboti mõõtmed on 15x15 cm, siis on üsna tavaline, et ründamiseks allalastud sahk etteantud mõõtude sisse ei mahu. Seega on saha ehitamisel esimene küsimus, kas sahk peaks ise pärast starti alla kukkuma või võiks mootor selle alla lükata.

Saha ehitamisel tuleb kindlasti mõelda mehaaniline takistuse peale, mis ei võimaldaks sahal maad puudutada väljaspool sumolauda, kui robot on platsi serval. Selliseid juhuseid on võistlustel palju olnud, kus robot on muidu tubli, aga tekitab ise endale kaotuse kuna platsi serva juures ulatub sahk üle serva maad puutuma.

Sahatüübid

Püstine sahk

Madal sahk

Püstise saha eeliseks on tavaliselt suur ja tugev pind. See võib lihtsustada teise roboti väljapressimist.

Madal sahk on tavaliselt lühike, kuna roboti piiratud mõõtude tõttu pole seda lihtsalt võimalik väga pikka teha.

Madal sahk peab olema otsast terav, kuna selle tööpõhimõte seisneb teise roboti serva alla minekus, et teine robot tasakaalust välja viia.

 

 

clip_image020

 

 

 

clip_image022

 

 

 

Mootoriga sahk

Ise allakukkuv sahk

Mootoriga sahk annab parema võimaluse rünnaku juhtimiseks.

Näiteks mootoriga sahal võib olla kogu aeg peal mootori surve, st. et see ei kerki niisama õhku.

Teiseks võib luua programmi, mis tõstab sahka üles, kui vastase robot on väga lähedal ehk siis arvatavalt saha peal. See võimaldab vastase roboti tasakaalust välja viia.

Sellist vastase kontrolli saab teha puuteanduriga.

Sellist sahka on lihtne ehitada ja see võib töötada peaaegu sama hästi kui mootoriga sahk.

Robotiehituse juures tuleb planeerida, et allakukkuva saha taga oleksid toed. Siis puudub sahal võimalus robotit kergitama hakata.

Samuti võib ehitada mehaanilise lukustuse, mis rakendub pärast saha allakukkumist ja takistab sahal üles tõusmast.

 

Saha asemel tagurpidi pöörlevad rattad?

Võistlustel on olnud sumoroboteid, mille etteotsa kinnitatakse tagurpidi pöörlevad rattad. Roboti ründeidee seisneb selles, et vastasega kokku puutudes tõstavad tagurpidi ringikäivad rattad vastase maast lahti. Selle tulemusena kaotab vastane tasakaalu ning teda saab ringist välja tõugata.

Sellise ründemehhanismi juures peab jälgima, et roboti esimene toetuspunkt oleks võimalikult rullikute all. Vastasel korral on oht, et kui rullikud on hästi vastasega haakunud, tõusevad ründaval robotil tagumised rattad õhku.

Teised ründemehhanismi võimalused?

Võib oma vaba fantaasiaga mõelda liikuvate kraananokkade peale, mis roboti käimaminekul üritavad ülalt vastase robotit tasakaalust välja viia.

Võib mõelda tõukemehhanismide peale, mis liiguvad edasi-tagasi nagu poksija käsi, tõugates selle abil vastast tasakaalust ja ringist välja.

Võib mõelda pöörleva elemendi peale, mille eesmärk on samuti vastase tasakaalust välja viimine ning seejärel ringist välja tõukamine.

Kindlasti tasub fantaasial lennata lasta ning tulemuseks võib olla mõni sootuks erinev sumorobot, mis üllatuslikult rabab vastase nõrka kohta ning võidab seeläbi võistluse.

Üks omapärane võimalus nii ründe- kui ka kaitse seisukohast seisneb roboti mõõtmetes. Kuna kõrguse suhtes pole mõõtmed piiratud, on igal LEGO sumo võistlusel olnud roboteid, mis stardihetkel on püsti. Peale starti aga kukutavad need robotid ennast platsile, olles seejärel oluliselt suuremate mõõtmetega kui reeglites ettenähtud. Kui roboteid enne võistlust mõõdetakse, siis tähtis on see, et stardihetkel ja –asendis vastavad roboti mõõtmed ettenähtud 15x15 cm sisse.

Kui aga praktikas vaadata, siis need on küll väga vaatemängulised robotid, kuid pole kunagi võitjateks osutunud. Tõenäoliselt on see seotud sellise suure roboti korral tema suurusest tuleneva aegluse ja kohmakusega.

 

Kaitsemehhanismid

Lisaks ründamisele peab iga robot olema valmis selleks, et teda ennast rünnatakse. See on loomulik, kuna sumovõistlus seisnebki teineteise ründamises ja ringist välja tõukamises.

Valguseandurite kaitsmine ründaja eest?

Sahkade juures käsitlesime teemat, et kui saha eesmärk on teise roboti alla minna, tasub sahk teha valge. Ründeidee seisneb selles, et vastasroboti andur näeb valget plaati ja arvates, et tegemist on ringi servaga, hakkab tagurdama.

Seega on kaitsmise osas vaja lahendust, kuidas vältida vastase roboti ja eriti just valget värvi saha sattumist valguseanduri alla. See on takistatav mehaanilisel moel, ehk siis tuleb ehitada piisavalt madala servaga robot, kuhu vastase sahk nii lihtsalt alla minna ei saa.

Rataste kaitsmine ründaja eest?

Nii nagu on tarvis kaitsta valguseandureid vastase saha eest, ootavad kaitsmist ka roboti rattad.

Kui rattad on ründajale avatud, võib suhteliselt kergesti tekkida olukord, kus vastase sahk sõidab poolviltu roboti ratta alla ning tulemuseks on tasakaalukaotus.

Lahendus on sama mis valguseanduri juures: ehitada võimalikult madala servaga seinad ratta ette, kaitsmaks neid vastase saha ja teiste ründemehhanismide eest.

Roboti kaal

Kaalukamat robotit on raskem ringist välja lükata kui kerget.

Teooria ütleb, et massikese peaks asuma võimalikult madalal, kuid praktikas on olnud roboteid, mis vaatamata kõrgele massikeskmele on saavutanud häid tulemusi. Massikeskme kõrgusest olulisem on jälgida, et massikese asuks vedavate rataste peal.

Kui kõik vajalik on robotile külge pandud, tuleb robot kaalule panna ja vaadata tulemust. Kui see on 100g või rohkem alla lubatud kaalu, tasub lisada robotile kaalutõstvaid komponente, et viia kaal maksimaalseks.

Praktikas on olnud mitmeid juhtumeid, kus kaalutõstmiseks lisatakse robotile külge teine NXT, millel pole küljes ei andureid ega mootoreid ja võib-olla isegi mitte akut, kuid selle abil on viidud roboti kaal maksimumi lähedale.

Kaal tasub jätta 5-10 grammi alla normi, et oleks arvestatud enne võistlust kasutatava kaalu juhusliku veaga.


 

Programmeerimine

Programmeerimine on määrava tähtsusega, sest ehituslikult hea roboti saab kergesti ringist välja tõugata, kui sellel puudub korralik programm.

Sumomängu võidu aluseks on kiirus. Kiire ja ootamatu rünnak on kõige kindlam tee võiduni. Kuni teine robot ennast ründe- või võitlusasendisse sätib, on ootamatu ja jõuline ründaja juba mängu võitnud. Sellisel juhul on võidu eelduseks kiirus ja õige programm.

Järgnevalt erinevatest programmeerimise strateegiatest.

Platsil püsimise strateegia

Sumorobot ühe valguseanduriga

clip_image024See on kõige lihtsam robot eesmärgiga vaid platsil püsida. Sellisel robotil tekib ründevõime alles siis, kui suudetakse vastane tuvastada.

Platsil liikumise esimene algoritm on väga lihtne. Robot sõidab seni, kuni valguseandur näeb valget joont, siis tagurdab, keerab ringi ja sõidab jälle, kuni näeb valget joont. Ja nii lõpmatuseni.

See pole just kuigi võidukas strateegia, kuid esmane platsil püsimine on tagatud.

Kui on soov, et robot ei jääks kogu aeg ühesugusel moel ringi keerama, võib programmi sisse viia juhusliku numbri arvutamise, mille tulemusena robot keerab iga kord ringi suvalises suunas.

Siinkohal on esitatud lihtsa sumoroboti programmikood. Arvestama peab, et sõltuvalt mootorite suunast ja rataste suurustest võivad toodud numbrid erineda nii suuruse kui märgi poolest.

 

Näide. Lihtne sumorobot ühe valguseanduriga

task main()

{

  SetSensorLight(S1);

  while(TRUE)

  {

    //robot kontrollib valguseanduri näitu

    //kui see asub valgel, siis robot tagurdab ja keerab

    if(Sensor(S1) > 50)

    {

      RotateMotor(OUT_BC, -100, 300);

      RotateMotorEx(OUT_BC, 100, 100, 100, TRUE, TRUE);

    }

    //kui valguseandur asub mustal pinnal,

    //sõidab robot lõpmatuseni otse

    else

    {

      OnFwd(OUT_BC, 100);

    }

  }

}

Sumorobot kahe valguseanduriga

clip_image026Kui on võimalus ehitada kahe valguseanduriga robot, muutub programm juba keerukamaks, kuid samas muutub ka robot targemaks.

Kui robot jõuab platsi servale, rakendub igal juhul üks valguseandur juba enne, kui teine andur valge joone tuvastab. Sõltuvalt sellest, kumb andur varem rakendus, on robotil olemas ligikaudne teadmine oma asendi kohta platsi serva suhtes. Väga harva on see servaga täpselt risti, enamasti on robot ikka ühele või teisele poole viltu.

Saadud asendi info põhjal peab programm olema loodud viisil, et robot keerab platsile tagasi alati lühimat teed mööda. See välistab olukorra, kus robot võib juhuslikult keerata näiteks hoopis platsilt välja.

Alljärgnev on näide kahe valguseanduriga sumoroboti programmist Arvestama peab, et sõltuvalt mootorite suunast ja rataste suurustest võivad toodud numbrid erineda nii suuruse kui märgi poolest.

clip_image028

 

Näide. Kahe valguseanduriga sumorobot

task main()

{

  SetSensorLight(S1);

  SetSensorLight(S2);

 

  while(TRUE)

  {

    //robot kontrollib ühe valguseanduri näitu

    //kui see asub valgel, siis robot tagurdab

    //ja keerab mööda lühemat ted platisle tagasi

    if(Sensor(S1) > 50)

    {

      RotateMotor(OUT_BC, 100, 300);

      RotateMotorEx(OUT_BC, 100, 100, 100, TRUE, TRUE);

    }

    //robot kontrollib teise valguseanduri näitu

    //kui see asub valgel, siis robot tagurdab

    //ja keerab teistpidi platsile tagasi

    else if(Sensor(S2) > 50)

    {

      RotateMotor(OUT_BC, 100, 300);

      RotateMotorEx(OUT_BC, 100, 100, -100, TRUE, TRUE);

    }

    //kui valguseandur asub mustal pinnal

    //sõidab robot lõpmatuseni otse

    else

    {

      OnFwd(OUT_BC, 100);

    }

  }

}

Vastase ründamise strateegia

Ründestrateegia seisneb selles, et olles tuvastanud vastase roboti, tuleb seda rünnata seni, kuni see on platsilt välja tõugatud.

Kui sumorobotil on ainult valguseandur, on tema kohtumine vastasega juhuslik. Ründavast robotist saame rääkida alles siis, kui see on võimeline tuvastama platsil teist robotit ning seda ründama.

Kõige levinum võimalus LEGO-robootikas vastase tuvastamiseks on kauguseandur. Kuid võib proovida kasutada ka puuteandurit või valguseandurit.

Vastase tuvastamine kauguseanduriga

clip_image030Kauguseandur on võimeline tuvastama objekte kuni 250 cm kaugusel. Andur tuleb häälestada kindlale kaugusele, millest lähemal asuvaid objekte peetaks vastase robotiks.

Sumolaua läbimõõt on 77 cm (koos valge joonega), roboti suurus 15 cm. Kui eeldada, et mõlemad robotid asuvad platsi servades, siis on robotite omavaheline kaugus 42 cm. Praktikas tasub eeldada, et robotid on teineteisele lähemal ning arvestada kauguseks 40 cm.

 

Lähema kauguse valiku põhjuseid on kaks.

1)       Anduri täpsus vastase tuvastamisel on kauguseanduril parim 30-80 cm.

2)       Kui robot tuvastab vastase liiga kaugelt ja hakkab selle poole sõitma, on vastane tema kohale jõudmise hetkeks suure tõenäosusega juba teises kohas.

Järgnevalt on plokkskeem selle kohta, kuidas käitub kahe valguseanduri ja kauguseanduriga tüüpiline sumorobot.

clip_image032

Allpool on kahe valguseanduri ja ühe kauguseanduriga sumoroboti programmikood. Arvestama peab, et sõltuvalt mootorite suunast ja rataste suurustest võivad toodud numbrid erineda nii suuruse kui märgi poolest.

Näide. Sumorobot kahe valguse- ja ühe kauguseanduriga

task main()

{

  SetSensorLight(S1);

  SetSensorLight(S2);

 

  while(TRUE)

  {

    //robot kontrollib ühe valguseanduri näitu

    //kui see asub valgel, siis robot tagurdab ja keerab

    if(Sensor(S1) > 50)

    {

      RotateMotor(OUT_BC, 100, 300);

      RotateMotorEx(OUT_BC, 100, 100, 100, TRUE, TRUE);

    }

    //robot kontrollib teise valguseanduri näitu

    //kui see asub valgel, siis robot tagurdab ja keerab

    else if(Sensor(S2) > 50)

    {

      RotateMotor(OUT_BC, 100, 300);

      RotateMotorEx(OUT_BC, 100, 100, -100, TRUE, TRUE);

    }

    //robot kontrollib kauguseanduriga vastase kaugust

    //kui vastane on lähemal kui 40cm, siis rünnatakse

    else if(SensorUS(S3) < 40)

    {

      OnFwd(OUT_BC, 100);

    }

    //kui robot pole ei platsi servas ega näe ka vastast,

    //siis lihtsalt keerutab kohapeal, vastast otsides

    else

    {

      OnFwdSync(OUT_BC, 60, 100);

    }

  }

}

Stardistrateegia

Sumoroboti võistluse start on määrava tähtsusega. Hea sumoroboti raund kestab vaid 5-10 sekundit. See tähendab, et vastase robot tuleb välja tõugata enne, kui see on suutnud oma ründega alustada.

Kuidas seda saavutada?

Võistlus algab sellega, et kohtunik viskab platsile shikiri risti, mis jagab platsi mõttes neljaks veerandiks. Robotid peavad asuma vastasveerandites ja liikumissuunaga vastasest eemale, shikiri risti näidatud noole suunas. Seega sõltuvalt sellest, kuhu veerandisse robot satub, on lühem tee vastaseni keerata kas ümber parema või ümber vasaku külje.

 

clip_image034

Roboti programmeerimisel tasub kaaluda varianti, kus vastavalt sellele, millisest kvadrandist robot alustab, on võimalik valida erineva algusega programm.

Kiire võit tuleneks sellest, et robot ei keera alguses mitte kauguseanduri järgi, vaid täiskiirusel täpselt 135 kraadi, sattudes seega vastakuti vastase robotiga. Seejärel täiskäik edasi ning kiire võit võibki olla selle strateegiaga käes.

Kui alguses keerata kauguseanduri järgi, siis tõenäoliselt robot ei keera täiskiirusega, vaid aeglasemalt, et tagada vastase leidmise täpsus. Samuti pole otseliikumise korral tavaolukorras mõistlik edasi liikuda täiskiirusel, kuna sellisel juhul ei suuda robot platsi servas kinni pidada.

Stardis andureid kasutamata on aga võimalik robot programmeerida nii, et see keerab täpselt 135 kraadi ja sõidab täiskiirusel edasi eelnevalt määratud vahemaa. Sellise käitumisega võib suure tõenäosusega eeldada, et vastase robot on veel ennast stardipaigas ringi keeramas ning saab üllatuslikult tabatud.

Alljärgnev on näide sumoroboti programmist, mille käigus valitakse alguses stardisuund ja robot teeb esimese keeramise ning otseliikumise.

See programm eeldab motoriseeritud sahaga robotit ning lisatud on saha allalaskmine pärast starti. Kui on tegemist ilma sahata robotiga, tuleb eemaldada saha mootori allalaskmise alamprogramm MotorDown() ja välja võtta käsk StartTask(MotorADown), mis paneb eelnimetatud alamprogrammi tööle. Pärast seda käivitub roboti tüüpiline platsil sõitmise strateegia.

Alljärgnevas programmis kasutatakse üht olulist muutujat OpponentScanDir, mille toimimine ja vajadus vajab selgitamist. Tegemist on tõeväärtusmuutujaga mille alusel määratakse, kummas suunas pöörates hakkab robot vastast otsima. Selle muutuja väärtus seatakse vastavalt sellele, kumma valguseanduriga tuvastas robot platsi serva.

Miks aga muudetakse selle väärtus vastupidiseks OpponentScanDir=!OpponentScanDir selles tingimuslauses, kus on tuvastatud kauguseanduri abil vastane?

Põhjus seisneb selles, et kui robot kiiresti keerab, võib vabalt juhtuda, et ta keerab nö. vastasest „üle“ ja seega on vastane roboti jaoks uuesti kadunud. Kui robot ei näe vastast, siis toimub kohapeal pöörates vastase otsimine. Kui robot aga korraks nägi vastast, kuid keeras üle, pole mõtet vastast otsides samas suunas edasi pöörata, vaid kõige lühem tee vastaseni on tagasi keerates. Seetõttu on sisse toodud OpponentScanDir muutmine vastupidiseks.

Näide. Sumoroboti programm koos stardivalikuga

//saha mootori allalaskmise alamprogramm

task MotorADown()

{

  while(TRUE)

    OnFwdReg(OUT_A, 100, OUT_REGMODE_SPEED);

}

 

task main()

{

  SetSensorLowspeed(S4);

  SetSensorLight(S3);

  SetSensorLight(S2);

  const int MAXLIGHT = 50;

  const int vasak = 1;

  const int parem = 2;

  const int otse = -1;

  int suund = 0;

 

  //oodatakse, kuni kasutaja on vajutanud nooleklahvi

  //ja sellega valinud, kummale poole robot stardib

  while(!suund)

  {

    if(ButtonPressed(BTNRIGHT, TRUE))

      suund = parem;

    if(ButtonPressed(BTNLEFT, TRUE))

      suund = vasak;

    if(ButtonPressed(BTNCENTER, TRUE))

      suund = otse;

  }

 

  //robot ootab 5 s ja teeb iga sekundi järel heli

  repeat(5)

  {

    Wait(1000);

    PlaySound(SOUND_CLICK);

  }

 

  //robot stardib vastavalt valitud suunas

  switch(suund)

  {

    case vasak:

      RotateMotorEx(OUT_BC, 100, 560, -100, TRUE, FALSE);

      break;

    case parem:

      RotateMotorEx(OUT_BC, 100, 560, 100, TRUE, FALSE);

      break;

  }

  //robot laseb saha alla ja hoiab seda seal mootori jõuga

  StartTask(MotorADown);

  //robot sõidab täiskiirusel otse ja

  //ründab oletatavat vastast

  RotateMotorEx(OUT_BC, -100, 700, 0, FALSE, FALSE);

 

  bool OpponentScanDir = TRUE;

  while(TRUE)

  {

    if(Sensor(S2) > MAXLIGHT)

    {

      //kui 1. valguseandur näeb valget joont,

      //peatatakse mootorid ja tagurdatakse

      Off(OUT_BC);

      RotateMotorEx(OUT_BC, 80, 540, 0, FALSE, TRUE);

      //OpponentScanDir määrab, kummas suunas

      //hakatakse vastast otsides keerutama

      OpponentScanDir = TRUE;

    }

    else if(Sensor(S3) > MAXLIGHT)

    {

      //kui 2. valguseandur näeb valget joont,

      //peatatakse mootorid ja tagurdatakse

      Off(OUT_BC);

      RotateMotorEx(OUT_BC, 80, 540, 0, FALSE, TRUE);

      //OpponentScanDir määrab, kummas suunas

      //hakatakse vastast otsides keerutama

      OpponentScanDir = FALSE;

    }

    else if(SensorUS(S4) < 37)

    {

      //robot on tuvastanud vastase, täiskäik edasi

      OnRevReg(OUT_BC, 89, OUT_REGMODE_SPEED);

      //roboti keeramise suund muudetakse vastupidiseks

      OpponentScanDir = !OpponentScanDir;

    }

    else

    {

      //vastase otsimise suund, sõltuvalt OpponentScanDir

      //väärtusest. Robot keerutab kuni näeb vastast

      if(!OpponentScanDir)

      {

        OnFwdReg(OUT_B, 100, OUT_REGMODE_SPEED);

        OnFwdReg(OUT_C, -100, OUT_REGMODE_SPEED);

      }

      else

      {

        OnFwdReg(OUT_B, -100, OUT_REGMODE_SPEED);

        OnFwdReg(OUT_C, 100, OUT_REGMODE_SPEED);

      }

    }

  }

}

 

1. 9 klass 2 õppetundi Robot puldiauto

Tiigrihype_logoSee materjal on loodud Tiigrihüppe Sihtasutuse programmi ProgeTiiger raames.

Tee oma robotist puldiauto, mida saab juhtida lülitite abil. See projekt annab ülevaate, kuidas toimivad while-tsüklid ja if-tingimuslaused koos lülitite ja mootoritega erinevates kombinatsioonides.

 

Alustuseks vaatame erinevaid võimalikke lähenemisi puldiauto juhtimisele. Esimesed on lihtsamad ning järgmised muutuvad keerukamateks.

Ehitada tuleb tavaline baasrobot, mis on võimeline liikuma edasi-tagasi ja keerama paremale-vasakule. Sellele tuleb lisada kõige pikema juhtmega üks või kaks puuteandurit vastavalt ülesandele, mida kasutatakse roboti juhtimiseks.

1.       Puldiauto ühe lülitiga, 2 varianti.

a.        Robot liigub edasi, kui lüliti on vajutatud ning seisab, kui lüliti on lahti lastud.

b.       Robot hakkab liikuma, kui lüliti on alla vajutatud ja lahti lastud (bumped) ning jääb seisma, kui teist korda lüliti alla vajutatakse ja lahti lastakse.

2.       Puldiauto kahe lülitiga, 2 varianti.

a.        Kumbki lüliti juhib ühte mootorit. Lüliti lahti lastud asendis robot seisab, parempoolset lülitit vajutades keerab robot paremale ja vasakpoolsega vasakule. Mõlemat all hoides sõidab robot otse edasi.

b.       Robot hakkab edasi sõitma siis, kui mõlemad lülitid on korraga alla vajutatud ja lahti lastud (bumped). Üksikult kasutades toimivad lülitid roboti paremale-vasakule keeramise juhtimiseks. Teistkordsel üheaegsel vajutamisel (bumped) jääb robot seisma.

Puldiauto ühe lülitiga

Sellel ülesandel on kaks varianti, esimene hästi lihtne ning teine õige pisut keerulisem.

Variant 1. Robot liigub edasi, kui lüliti on vajutatud ning seisab, kui lüliti on lahti lastud.

Programmi käivitudes on esimene käsk SetSensorTouch, mis on vajalik lülitianduri initsialiseerimiseks, st. selle käsuga me ütleme robotile: „Sinu esimeses pordis asub lüliti andur“. Järgmisena käivitub lõpmatu while-tsükkel (lõpmatu, kuna selle tingimuseks on märgitud TRUE). Lõpmatu tsükli sees on if-else tingimuslause. If tingimus kontrollib, kas lüliti on alla vajutatud. Kui lüliti on alla vajutatud, siis käivitub edasisõitmine OnFwd, kui mitte, siis käivitub else ning mootorid lülitatakse välja.

Kuna tegemist on while-tsükliga, siis if-else lauset seal sees täidetakse 10 000 korda sekundis. See tagab, et robot igal juhul nö. märkab lüliti vajutamist ja meil pole võimalust öelda, et „robot ei jõudnud reageerida minu lüliti vajutusele“.


 

Näide. Lihtne puldiauto ühe lülitiga

task main()

{

  SetSensorTouch(S1);

  while(TRUE)

  {

    //kui lüliti on alla vajutatud, sõidab robot edasi

    //kui lüliti on lahti lastud, jääb robot seisma

    if (Sensor(S1))

      OnFwd(OUT_BC, 100);

    else

      Off(OUT_BC);

  }

}

Variant 2. Robot hakkab liikuma, kui lüliti on alla vajutatud ja lahti lastud (bumped) ning jääb seisma, kui lüliti teist korda alla vajutatakse ja lahti lastakse.

Selle programmi while-tsüklid käituvad eelmise variandiga võrreldes täiesti erinevalt. Alguses käivitub esimene lõpmatu while-tsükkel while(TRUE).  Järgmised kaks käsku on samuti while-tsüklid, mille tingimusena kontrollitakse lüliti asendit. Kui lüliti on lahti lastud (nagu alguses on), siis on koheselt käivitunud esimene tsükkel while(!Sensor(S1)), mis käib seni, kuni nupp on lahti lastud asendis. Täpselt nupu alla vajutamisel väljutakse sellest while-tsüklist, kuna nupu väärtus muutus true-ks, mis omakorda while-tsükli jaoks hüüumärgiga vastupidiseks muudeti. Käivitub teine while-tsükkel, millest programm väljub siis, kui kasutaja nupu lahti laseb.

Alles nüüd käivitub käsk, mis paneb mootorid liikuma ja roboti edasi sõitma. Kuna ükski käsk mootori sõitmist ei lõpeta, töötavad mootorid seni, kuni kasutaja on teist korda nupu alla vajutanud ja lahti lasknud, et käivituks käsk Off mootorite väljalülitamiseks.

Ja alles seejärel jõuab programm ringiga algusesse tagasi kõige esimesena käivitunud while-tsükli täitmisele.

Näide. Puldiauto koos bumped-lülitiga

task main()

{

  SetSensorTouch(S1);

  while(TRUE)

  {

    //programm ootab nupu vajutamist ja lahti laskmist

    while(!Sensor(S1));

    while(Sensor(S1));

    //robot sõidab edasi

    OnFwd(OUT_BC, 100);

    //programm ootab nupu vajutamist ja lahti laskmist

    while(!Sensor(S1));

    while(Sensor(S1));

    //robot jääb seisma

    Off(OUT_BC);

  }

}

Puldiauto kahe lülitiga

clip_image002[4]Sellel ülesandel on kaks varianti, esimene lihtsam ja teine veidi keerulisem.

Variant 1. Kumbki lüliti juhib ühte mootorit. Lahti lastud asendis robot seisab, parempoolset nuppu vajutades keerab robot paremale ja vasakpoolsega vasakule. Mõlemat all hoides sõidab robot otse edasi.

Järgnevalt on välja toodud selle roboti plokkskeem. Sellel skeemil tähendavad rombid while-tsükleid või if-lauseid ning ristkülikud tegevusi nagu näiteks mootorite liigutamine.

Siin on näha, et alguses käivitub lõpmatu while-tsükkel, mille sees on if-else-if-else tingimuslause.

Esimese if-tingimusega kontrollitakse, kas mõlemad lülitid on korraga vajutatud. Kui tingimus vastab tõele, siis robot sõidab otse edasi, kui mitte, siis minnakse kontrollima järgmist if-tingimust. Järgmises if-tingimuses kontrollitakse, kas lüliti 1 on vajutatud. Kui on, siis käivitub mootoritele käsk, et robot peab paremale pöörama. Sellele järgnevaid tingimusi eiratakse ning tsükkel jõuab uuesti algusesse tagasi ning kontrollib uuesti if-tingimust.

Kui esimene lüliti ei ole vajutatud, liigub programm edasi ja kontrollib järgmise else-if tingimusega, kas teine lüliti on vajutatud. Kui on, siis robot pöörab vasakule. Kui aga kumbki lüliti pole vajutatud, käivitub else-lause ja robot seiskab oma mootorid.

Näide. Robot kahe lülitiga

task main()

{

  SetSensorTouch(S1);

  SetSensorTouch(S2);

 

  while(TRUE)

  {

    //kui mõlemad lülitid korraga vajutatud, sõidab otse

    if (Sensor(S2) && Sensor(S2))

      OnFwd(OUT_BC, 50);

    //kui esimene lüliti vajutatud, keerab robot paremale

    else if (Sensor(S2))

      OnFwdSync(OUT_BC, 50, -10);

    //kui teine lüliti on vajutatud, keerab robot vasakule

    else if(Sensor(S1))

      OnFwdSync(OUT_BC, 50, 10);

    //kui lülitid pole vajutatud, sõidab robot otse

    else

      Off(OUT_BC);

  }

}

clip_image004[4]Variant 2. Robot hakkab edasi sõitma siis, kui mõlemad lülitid on korraga alla vajutatud ja lahti lastud. Üksikult kasutades toimivad lülitid paremale-vasakule keeramisena. Teistkordsel üheaegsel vajutamisel jääb robot seisma.

Pärast esimese lõpmatu tsükli käivitumist jääb programm järgmise while-tsükli sisse while(!Sensor(S1) && !Sensor(S2)). Tsükli tingimuseks on kaks lülitiandurit koos && märgiga, mis tähendab seda, et while-tsükkel peatub alles seejärel, kui mõlemad lülitid on korraga alla vajutatud. Seejärel käivitub järgmine while-tsükkel, mis ootab, kuni mõlemad lülitid on lahti lastud.

Seejärel käivitub while-tsükkel, mille tingimuseks on uuesti nende lülitite olek, kuid selle while-tsükli sees asuvad ka paremale-vasakule-otse sõitmise if-else-tingimuslaused.

Siinkohal toimib see programm täpselt samamoodi nagu esimene variant kahe lülitiga robotist.

Kui mõlemad lülitid on korraga alla vajutatud, muutub selle while-tsükli tingimus mittetõeseks ning väljutakse tsüklist. Mootorid seisatakse ja programmis käivitub viimane while-tsükkel, mille sees omakorda uuesti kontrollitakse nende kahe lüliti olekut ja oodatakse, kuni kasutaja need lahti laseb.

See viimane kontroll on vajalik selleks, et programm ei suunduks koheselt järgmisele ringile, vaid ootaks enne ära nuppude lahtilaskmise.

Näide. Robot kahe lülitiga ja bumped funktsiooniga

task main()

{

  SetSensorTouch(S1);

  SetSensorTouch(S2);

  while(TRUE)

  {

    //programm ootab vajutust

    while(!Sensor(S1) && !Sensor(S2));

    //programm ootab nupu lahti laskmist

    while(Sensor(S1) && Sensor(S2));

   

    //kui mõlemad nupud koos vajutatud,

    //väljutakse while-tsüklist

    while(!Sensor(S1) || !Sensor(S2))

    {

      //kui esimene lüliti on vajutatud, keerab paremale

      if (Sensor(S2))

        OnFwdSync(OUT_BC, 50, -10);

      //kui teine lüliti on vajutatud, keerab vasakule

      else if(Sensor(S1))

        OnFwdSync(OUT_BC, 50, 10);

      //kui lülitid pole vajutatud, sõidab robot otse

      else

        OnFwd(OUT_BC, 50);

    }

    //pärast while tsüklist väljumist seisatakse mootorid

    Off(OUT_BC);

    //programm ootab nupu lahti laskmist, see on vajalik,

    //et programm ei suunduks automaatselt uuele ringile

    while(Sensor(S1) && Sensor(S2));

  }

}

Eesti informaatikaolümpiaadi eelvooru tulemused

Põhikooli õpilaste tulemused.

 

Nimi Kool Klass Punkte kokku
Roland Perli Vanalinna Hariduskolleegium  9 96
Rao Zvorovski Tallinna Reaalkool  8 93
Ramses Sepp Tallinna 21. Kool 7 10
Kristofer Sokk Tallinna Reaalkool  7 8
Indrek Anissimov  Viljandi Kesklinna Kool 7 2
Leonid Manieiev  Haabersti Vene Gümnaasium 9 2
Markus Rene Pae Tallinna Reaalkool  9 2

 

Alates kolmandast kohast on punktide hüpe mäekõrgune, kuid edu kõigile kes osalesid!

FLL läbi kohtunikupilgu

Niipalju kui kohtuniku aeg võimaldas, klõpsutasin mõned pildid:

http://sdrv.ms/VcZzNn

Väga lahedad tiimid olid kõik!

FLL karikad

___

Mõned lõbusad seigad:

“Kas olete stardiks valmis “ - “Jah” ja siis kohe “eiiii, meil pole mootorit” ning juba saadeti tiimikaaslane mootorit tooma.

___

“Kas teie robot on stardiks valmis” - “jah on”, siis vaatasid koos robotit ja teatasid “ikka ei ole veel”.

Robotil olid nimelt absoluutselt kõik mootorite ja andurite juhtmed lahti, mida hakati siis koos suvalstesse portidesse toppima. Natuke omavahelist vaidlemist kas sai õigesti, teatasd nad et “nüüd oleme valmis”. Õnneks taipas üks neist veelkord robotit vaadata ja juba ta hüüdiski “aga meil pole ju valgusandurit”. Ja saadetigi tiimikaaaslane valgusandurit otsima.

Sai siis see andur sinna külge ja ka mingisse porti.

Start.

Robot sõitis väga naljakalt ja muidugi tõsteti see kohe baasi tagasi ja hakati juhtmeid ümber tõstma ja siis uuesti proovima

Väga lõbus tiim.

___

Küsisin et mitu ülesannet plaanite et robot teeb? Vastati, et “meie robot sõidab ainult platvormile ja teeb seda senikaua kuni peale saab”

Kolm korda said nad proovida, siis oli robot platvormi täiesti risti ajanud ja ise ka külili. Poisid arvasid et järgmisel voorul proovivad uuesti.

___

Pit-Areas, enne viimast, kolmandat vooru.

Tuli üks tiim minu juurde ja teatas et nad tegid nüüd enne kolmandat vooru oma roboti TÄIESTI ümber (40 minutiga). Kõik programmid kirjutati uuesti ja võeti palju uusi ülesandeid juurde ning nad proovisid, et nad saavad nüüd palju rohkem punkte kui varem  (lõpptulemust kahjuks ei tea)

___

Üks tiim sai platsilt kätte ainult tooli ja tõi selle baasi.

Rohkem nende robot punkte ei teinud. Kui hakkasime punkte kokku lugema, selgus, et tool oli küll baasis aga parandamata. Ütlesin, et selle eest punkte ei saa. Aga kui nad siis ilusti palusid, et “me parandame kohe ära, palun anna ikka selle eest punkte” siis muidugi läks kohtunikusüda härdaks ja andis neile tooli eest punkti (kuna see oli ka ainus asi mida nende robot tegi).

Kolmnurga trigonomeetria: robotiprogrammeerija raudvara

See teema kulub igal robotiprogrammeerijal marjaks ära. Järgmine tund seletan need lihtsad kuid väga võimsad funktsioonid lahti.

AC=23 AB=55 BC=50

Teooria

Matemaatika

NXC

Excel

Mathe-

matics

sin, cos, tan leidmine

clip_image002[4]

 

clip_image004[4]

 

clip_image006[4]

 

clip_image008[13]

 

clip_image010[4]

 

clip_image012[4]

 

sind(65)

 

cosd(65)
 
tand(65)

 

 

=SIN(RADIANS(65))

 

=COS(RADIANS(65))

 

=TAN(RADIANS(65))

 

sin(65)

 

cos(65)

 

tan(65)

Kraadide leidmine

arcsin, arccos, arctan

clip_image020[4]

 

clip_image022[4]

 

clip_image024[4]

clip_image026[4]

 

clip_image028[4]

 

clip_image030[4]

 

 

asind(50/55)

 

acosd(23/55)
 
atand(50/23)

 

 

=DEGREES(ASIN(50/55))

 

=DEGREES(ACOS(23/55))

 

=DEGREES(ATAN(50/23))

arcsin(50/55)

 

arccos(23/55)

 

arctan(50/23)

image

Robotexi FLL-i võistluse võitis Robootika.COM

Tiim Robootika.COM

Tiim oli supertubli !

Palju õnne kõigile eduka esinemise eest terve päeva vältel !!!

Robotexi FLL-i võistluse võitis Robootika.COM

Robotexi raames toimunud põhikooliõpilastele suunatud võistluse FLL (FIRST LEGO League) võitis huviringi Robootika.COM võistkond.

FLL-i võistlus koosneb kolmest osast: robotiehitus, uurimustöö/projekt ja meeskonnatöö. Tänavune võistlus oli teemal „Lahendused eakatele“ (Senior Solutions).

„Hindan tiimi juures väga kõrgelt seda, et võistluseks ettevalmistamise perioodil tegeleti võrdselt tugevalt kõigi kolme etapiga ning kindlasti oligi see meie edu üks alus,“ ütles Robootika.COM juhendaja Leivo Sepp.

Kõige vaatemängulisem on võistluse juures robot, mis peab täitma spetsiaalsel väljakul kahe ja poole minuti jooksul iseseisvalt hulga ülesandeid. Robootika.COM robot sai edukalt hakkama vanuritele tekkide kohaletoimetamisega, ravimi toomisega, ümberkukkunud tooli põrandalt koristamisega.

Uurimustöö raames tuli valida eakate inimestega seotud probleem ning sellele innovaatiline lahendus välja pakkuda. Robootika.COM ideeks oli interaktiivne ravimikapp, mis aitab eakatele meelde tuletada ravimite võtmise või protseduuride aega ning on ühtlasi ühenduses apteegiga, et vajalikul ajal ravimeid operatiivselt juurde tellida.

Meeskonnatöö osas hinnatakse FLL-i põhiväärtusi, mis aitavad arendada õpilasi koos töötama ja ühiselt probleemidele lahendusi otsida.

Robotexi raames toimus FLL-i Põhja-Eesti voor. Lõuna-Eesti voor toimub 1.detsembril Tartus ning mõlema vooru kümme parimat võistkonda kohtuvad omavahel kevadisel koolivaheajal, et võistelda FLL-i Eesti meistri tiitlile ning õigusele esindada Eestit FLLi Euroopa meistrivõistlustel.

Robootika.COM on üks 36 tehnoloogia huviringist, kes tänavu valiti Vaata Maailma SA, EMT, Elioni ja Microsofti Nutilabori projekti. Samuti on Robootika.COM pälvinud tiitli „Eesti Parim Robootikakool 2012“.

Robootika.COM FLL-i tiimi kuuluvad Rao Zvorovski (Tallinna Reaalkool), Tomi-Andre Priimets, Karl Jakob Levin, Kirte Katrin Sarevet, Petra Brit Põhjakas (kõik Tallinna Tehnikagümnaasiumi õpilased), Ramses Sepp, Peter Alex Mahhov, Marko-Raul Peetersoo, Raimond Lume (kõik Tallinna 21.Koolist) ja Jaan Roop (Nõmme Põhikool).

Vaadake meie Senior Solutions projekti !

Pilt001

 

 

Pilt002

 

 

Pilt003

image

 

Ravimikapp tuletab meelde, millal on vaja rohtu võtta, kui palju on vaja võtta ning annab kõrvale ka vett juua.

Sisse on ehitatud turvaline süstimissüsteem.

Kapiga on kaasas ka käekell, mis mõõdab pulssi jms.

Kapiga saab videokõne abil arstiga ühendust võtta.

Kapi ravimivarudele pääseb ligi vaid spetsialist, kes käib iga kuu kappi kontrollimas ja ravimivaru vaatamas.

Ekraan on kasutajasõbraliku interface’iga.

 

 

image

Nutilabor alustas üle Eesti 36 huvikoolis

Nutilabori välja kuulutamine Enn SaarMicrosoft, EMT ja Elion toetasid Vaata Maailma algatust soodustada tehnoloogiaalase huviringide õpet Eestis.

Enn Saare käima lükatud projekt sai avapaugu 5. oktoobril 2012 ning on äärmiselt toreda nimega – Nutilabor.

Nutilabori projekti käigus arendatakse 2012-2013. õppeaastal noorte infotehnoloogia-alast huvitegevust Eestis, et pakkuda suuremale hulgale noortele infotehnoloogiaga seotud huviringides osalemise võimalust ning kasvatades seeläbi nende huvi antud eriala õppimise vastu.

Suur aitäh. Ka huvikool Robootika.COM on saanud tuult tiibadesse.

Nutilabor Robootika.COM

 

 

EMT Valdo KalmNutilabori avamisele saatis President oma tervituse, mille luges ette EMT peadirektor Valdo Kalm.

Kõrvalolevad fotod võetud Nutilabori avamisel tehtud pildipangast.

Meie Nutilabori tiim otsustas teha Presidendile vastutervituse, mille panime avalikult üles Youtube kanalisse.

Nutilabori partner Robootika.COM Leivo SeppTehnoloogia huviharidust edendava Nutilabori projekti eestvedajad ja partnerid tänavad Presidenti Toomas Hendrik Ilves südamliku tervituse eest, mille ta saatis Nutilabori avamisele 5.oktoobril 2012.

Tänavuse aasta Eesti parima robootikakooli Robootika.COM õpilased saadavad allolevas videos Presidendile Nutilabori nimel vastutervituse ning esitlevad Presidendi Robotit, mille nad Nutilabori avaürituseks Presidendi jaoks ehitasid.

Nutilabor saadab tervituse Presidendile

 

Leivo Sepp
Robootika.COM juhendaja, Nutilabori partner