NAO: Difference between revisions

From Intelligent Materials and Systems Lab

No edit summary
No edit summary
Line 113: Line 113:
*'''Aku''' - Madalast aku seisust annab märku NAO kõhul olev nupp, mis hakkab aeglaselt punase valgusega vilkuma. Kriitiliselt tühjast akust annab NAO märku ka verbaalselt (öeldes "Energy"), siis selle peale ei ole mõistlik lootma jääda. Reaalses katsetuses enne kõndimise programmi alustamist oli aku tuvastatud täituvus hea (kui kõhul olevat nuppu 2 sekundit vajutada ütleb NAO peale IP ka oma aku seisu, mis oli siin "My battery is strong"), kuid eelnevalt ei olnud aku täielikult laetud vaid adapter oli vahetult enne korraks ühendatud. Sellises olukorras paar minutit peale programmi algust hakkas punane indikaator vilkuma ja kõdimine lõppes kukkumisega (NAO on disainitud oma keha kõrguselt kukkumist üle elama, mille järel käivitatakse kõndimise programmis püsti tõusmise algoritm), põhjuseks liikumisele eluliselt tähtsate mootorite ebapiisav vool. Alles natuke aega pärast püstisaamise üritust tuli sõnaline hoiatus ning automaatne süsteemi shutdown, mistõttu tuleks '''NAO tegevuste puhul alati jälgida aku indikaatorit kõhul''' ning alati '''enne kasutamist viia läbi võimalikult täielik laadimine'''.     
*'''Aku''' - Madalast aku seisust annab märku NAO kõhul olev nupp, mis hakkab aeglaselt punase valgusega vilkuma. Kriitiliselt tühjast akust annab NAO märku ka verbaalselt (öeldes "Energy"), siis selle peale ei ole mõistlik lootma jääda. Reaalses katsetuses enne kõndimise programmi alustamist oli aku tuvastatud täituvus hea (kui kõhul olevat nuppu 2 sekundit vajutada ütleb NAO peale IP ka oma aku seisu, mis oli siin "My battery is strong"), kuid eelnevalt ei olnud aku täielikult laetud vaid adapter oli vahetult enne korraks ühendatud. Sellises olukorras paar minutit peale programmi algust hakkas punane indikaator vilkuma ja kõdimine lõppes kukkumisega (NAO on disainitud oma keha kõrguselt kukkumist üle elama, mille järel käivitatakse kõndimise programmis püsti tõusmise algoritm), põhjuseks liikumisele eluliselt tähtsate mootorite ebapiisav vool. Alles natuke aega pärast püstisaamise üritust tuli sõnaline hoiatus ning automaatne süsteemi shutdown, mistõttu tuleks '''NAO tegevuste puhul alati jälgida aku indikaatorit kõhul''' ning alati '''enne kasutamist viia läbi võimalikult täielik laadimine'''.     


==Linke==
==Jooksvad probleemid==
 
*[http://robocup.aldebaran-robotics.com/docs/site_en/index_doc.html Dokumentatsioon]
*http://robotzeitgeist.com/tag/aldebaran-robotics
*http://ognacgnouc.com/
 
=Jooksvad probleemid=


*'''Sonarid''' - NAO kasutab kahte sonarit, mis suudavad takistusi tuvastada vahemikus 0 kuni 70 cm. Ligikaudu 15 cm on piir mille puhul saab määrata ainult takistuse olemasolu, kuid mitte selle kaugust.
*'''Sonarid''' - NAO kasutab kahte sonarit, mis suudavad takistusi tuvastada vahemikus 0 kuni 70 cm. Ligikaudu 15 cm on piir mille puhul saab määrata ainult takistuse olemasolu, kuid mitte selle kaugust.
Line 148: Line 142:


Ehk tegelikult suudetakse midagi ikka tuvastada. Kui lugeda näiteks 30 cm alapiiriks ja seda koodis arvestada võib kasutamine isegi võimalik olla (signaali stabiilsust eriti ei testinud), kuid kuna tarkvaraga kaasa tulnud programm seda ei tee ning spetsifikatsioon nii ei märgi võib olla tegemist riistvaralise probleemiga. Võimalik, et sonarite kasutamine on kuidagi sünkroonist väljas ja nad segavad üksteist.
Ehk tegelikult suudetakse midagi ikka tuvastada. Kui lugeda näiteks 30 cm alapiiriks ja seda koodis arvestada võib kasutamine isegi võimalik olla (signaali stabiilsust eriti ei testinud), kuid kuna tarkvaraga kaasa tulnud programm seda ei tee ning spetsifikatsioon nii ei märgi võib olla tegemist riistvaralise probleemiga. Võimalik, et sonarite kasutamine on kuidagi sünkroonist väljas ja nad segavad üksteist.
==Linke==
*[http://robocup.aldebaran-robotics.com/docs/site_en/index_doc.html Dokumentatsioon]
*http://robotzeitgeist.com/tag/aldebaran-robotics
*http://ognacgnouc.com/

Revision as of 22:44, 21 January 2011

Ülevaade

Nao ühendamine arvutiga

NAO käivitamine toimub kõhul oleva nupu vajutamisega (umbes neli sekundit). Protsess võib võtta aega üle minuti, selle lõppemisest annab robot verbaalselt märku ning jalgadel olevad LED tuled süttivad.

Esmane ühendus tuleb luua kaabli abil. Nao ja arvuti ühedada samasse kohtvõrkku, eeldus on, et ruuteris on võimaldatud DHCP, sest vastasel juhul ei saa Nao endale IP-d, samuti võib takistuseks osutuda mõni sisselogimissüsteem.

Kui IP saamine õnnestub ütleb NAO oma IP aadressi kui tema kõhul olevat nuppu vajutada. Navigeerides veebibrauseriga http://(NAO IP) lehele on võimalik muuta mõningaid seadeid ning näha staatuse informatsiooni. Kui ligiduses on traadita võrke peaksid need ilmuma "Networks" valiku all nähtavale. Selleks, et robotit oleks võimalik kasutada (ethernet juhe segab) on vaja nüüd ühenduda WiFi võrkku. Sobivad ka turvatud võrgud, mille jaoks küsitakse parooli. VPN võrkudesse ühenduda ei saa kuna puuduvad konfigureerimisvõimalused.

Pärast traadita ühenduse loomist tuleks meelde jätta wireless võrgust saadud IP ("Networks" kuval) ning ühendada lahti ethernet kaabel. Pärast seda kui wireless võrk on korra juba valitud saab NAO ühendada end sellega automaatselt ("Wireless" nimekirjas on võrk märgitud "favorite" = 1). Tuleks jälgida, et ka pärast traadita võrguga liitumist kuuluvad arvuti ning Nao samasse kohtvõrkku (kindlam on arvuti samuti ühendada ning kaabel eemaldada).

NaoQi

NaoQi on raamistik, mis võimaldab kasutada Nao funktsionaalsust nagu klient serveri teenuseid. NaoQi käivitatakse Nao üleslaadimisel automaatselt ning kui võrgust on saadud IP aadress on võimalik selle poolt pakutavate meetodite ja hetke tegevuste nimekirja näha brauseri aadressil http://NaoIp:9559/full, TCP port 9559 on valitud vaikimisi. Choregraphe vajab ühendust selle raamistkuga, et robotiga suhelda. NaoQi võib käivitada ka muudel masinatel peale roboti enda, näiteks Choregraphe sees on võimalik luua ühendus virtuaalse NAOga, millega saab liigutusi simuleerida.

NaoQi taaskäivitamiseks tuleb Nao veebikeskonnast valida "Advanced"->"NaoQi" ning "Restart", sama tulemuse annab NAO välja- ja sisselülitamine.

BonJour

Windows platvormil sobib seadmete nagu NAO võrgust leidmiseks (tavaliselt teised arvutid, printerid jms). Tekib ikoonina Internet Exploreri tööriistaribale.

Choregraphe

NAOga ühendamiseks valida "Connection"->"Connect To". NAO peaks olema ilmunud valikusse, kui see nii ei ole võib proovida sisestada IP käsitsi (juhul kui ei ole paigaldatud BonJour programmi). Kui ühenduse loomine möödus vigadeta peaks olema võimalik näha NAO hetke füüsilist asendit simulatsiooni 3D aknas, kui seal midagi muuta ja vastava liigese kohta on valitud Enslaved (hammasrattaga ikoon on punane) ehk mootorid on tööasendis, peaks NAO võtma sama asendi.

Choregraphe projekti kasutamine ilma keskkonnata

Choregraphe projekte on võimalik käivitada ka ilma programmita, selleks tuleb menüüst valida "Behaviors" ning valida näiteks "Add current", mis laeb hetkel avatud skeemi NAOsse. Siin on võimalik käitumist ka kohe aktiveerida. Selleks, et NAO kasutaks loodud programi tuleb aktiveerida valik "Default". Järgmisel korral kui NaoQi käivitatakse alustatakse laetud programmi täitmisega. Üleslaadimiseks valitud skeemi(de) nimetus peaks ilmuma NAO veebikeskonnas avalehel "Behaviours" sildi all.

  • Nao võib omada mitut paralleelset vaikekäitumist, kuid nende poolt tehtavad tegevused peavad olema sõltumatud, st. ei tohi tekkida võimalust, kus mõlemad üritavad liigutada samu mootoreid. Sensorite puhul võib kattumisi esineda.
  • "Default" programmiks seadmine käivitab koodi kohe kui NaoQi laadimine on lõppenud, seetõttu tuleks jälgida, et skeemis poleks liigutusi, mida robot täidaks vahetult pärast käitumise algust kuna üleslaadimise hetkel võib NAO olla ohtlikus asukohas nagu laual, ühendatud võivad olla võrgu- ja toitekaabel ning liikumine sellises asendis võib ühendusporte kahjustada või tekitada kukkumisohu. Allpool toodud näiteprogrammis ootab robot puudutust enne kui programmi põhiosa täidetakse.

Näiteprogramm

Kui NAO peas olevat keskmist puutesensorit puudutatakse tõuseb NAO püsti ning teeb tervitusliigutuse, pärast seda asub kõndima kasutades sonareid, et tuvastada ettetulevaid takistusi kui neid esineb püüab robot neid vältida muutes suunda. Kui tagumist pea puutesensorit puudutada jääb NAO seisma ja istub taas maha. Kõik kasutatud plokid on Choregraphes olemas ja modifitseerimata loogikaga. Välja arvatud "Stiffness" plokkide parameetrid.

Istumine ja kõndimine
  1. Tactil touch plokk registreerib puudutusi NAO peas asetseval puutealal. Kui keskmist punkti puudutatakse, tekitatakse signaal, mis käivitab järgmise ploki. Selle väljund on ühendatud sama ploki termineerimise sisendiga selleks, et pärast ühekorset vajutust sama loogikat enam ei korrataks. Probleem ilma selle ühenduseta skeemi juures on see, et ka "Endless Walk" plokk kasutab pea puutesensoreid ja kui sinna vajutada, siis tekib sündmus mõlemas plokis ehk NAO alustab uuesti tervitamist, selle asemel, et jääda seisma, mida puudutus kõndimise ploki koodi sees peaks tegema. Enne kui käitumine pole lõplikult termineeritud (väljundit 5 pole stimuleeritud), siis jätkavad kõik sensoriplokid tööd ja seetõttu on tarvilik neid sundida lõpetama kui saadavat infot enam vaja pole.
  2. Selleks, et mootoreid liigutada peavad need olema varem aktiveeritud (stiffness on 1). Kui programmi käivitatakse ilma stiffness seadmata liikumisi ei toimu. Paljud eeldefineeritud liigutuste plokid Choregraphe sees teevad seda automaatselt (siin näitena eraldi välja toodud).
  3. Lõpmatu kõndimise plokk. Lõpetab tegevuse (annab väljundi) siis kui vajutatakse pea tagumist puutesensorit.
  4. Siin seatakse mootorid uuesti vabaks (stiffness 0). Plokki võib kasutada ainult siis kui NAO on stabiilses asendis, antud juhul istumas. Mootrite vabastamine pärast liikumisi vähendab voolutarvet ning ühtlasi saavutatakse sellega samasugune olek nagu enne programmi käivitamist.
  5. Kui signaal jõuab väljundisse on kogu skeem oma töö lõpetanud ning seda ei korrata enne NaoQi taaskäivitamist. Choregraphe programmi sees testimisel piisab kui uuesti alustamise nuppu vajutada.

Python

Testkeskkond: Ubuntu 10.04 (bash shell)

Näiteprogramm

Meetodite väljakutsumiseks kasutades Pythoni skripti on vajalik Aldebaran SDK olemasolu, millele peab viitama keskkonna parameeter PYTHONPATH. Mugavaim on teha seda Lunuxi keskkonnas. Järgnevas näites seatud parameeter eksisteerib ainult terminali sessiooni vältel. Seatud parameetri väärtust võib näha käsuga echo $PYTHONPATH. Püsivaks kasutamiseks tuleks lisada parameeter faili /home/.profile. Uue terminaliühenduse loomise ajal loetakse failis olevad parameetrid shelli (graafilises keskkonnas ei piisa terminaliakna sulgemisest ning taasavamisest vaid tuleb uuesti sisse logida).

kasutaja@Huginn:~$ export PYTHONPATH=/home/kasutaja/Desktop/aldebaran-sdk-1.8.11-linux-i386/lib/
kasutaja@Huginn:~$ python
Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from naoqi import ALProxy

NaoQi poolt pakutavate moodulite kasutamiseks on vajalik luua proxy (antud kontekstis objekt, mis vahendab arvuti ja NAO vahelist suhtlemist). Proxy loomiseks on vaja teada mooduli nime, NAO IP aadressi ning porti, mida NaoQi "kuulab". Järgnev kood väljastab teate NAO logisse.

>>> loggerProxy = ALProxy("ALLogger","172.19.3.244",9559)
INF: Registering module : ALFileManager
INF: Registering module : ALNetwork
INF: Connection established between 172.19.2.142:54011 and 172.19.3.244:9559
>>> loggerProxy.info("Important Message", "log this!")

Väljund NAO logis (veebikeskkond Advaced->Log):

Jan 1 00:26:52 nao local1.info NaoQi: INF: New client broker: ALProxyBroker 172.19.2.142 54011
Jan 1 00:26:52 nao local1.info NaoQi: INF: ok Unregister broker ALProxyBroker
Jan 1 00:28:37 nao local1.info NaoQi: INF: Important Message: log this!

Paljude moodulite puhul kirjutatakse andmeid mällu. Sonari kasutamiseks on vajalik registreerida kaks moodulit: sonar ja mälu. Sonar kirjutab mällu väärtuseid, mida on võimalik lugeda kasutades neile antud nime nagu "SonarLeftDetected". Sonari käivitamiseks kasutatakse meetodit subscribe, mille parameetriteks on moodul, mis soovib mäluga suhelda, mälus olevate andmete uuendamise periood millisekundites ning väljundi täpsus. Pärast seda alustab sonar andete uuendamist mälus. Väärtuseid saab lugeda meetodiga "getData". Töö lõpetamiseks on meetod "unsubscribe".

>>> sonar = ALProxy("ALSonar", "172.19.3.244", 9559)
>>> sonar.version()
'1.8.11'
>>> sonar.innerTest()
True
>>> sonar.getOutputNames()
['SonarLeftDetected', 'SonarLeftNothingDetected', 'SonarMiddleDetected', 'SonarRightDetected', 'SonarRightNothingDetected']
>>> sonar.getCurrentPeriod()
-1
>>> memory = ALProxy("ALMemory", "172.19.3.244", 9559)
>>> print memory.getData("SonarLeftDetected")
None
>>> sonar.subscribe("sonar", 1000, 0.1)
>>> print memory.getData("SonarLeftDetected")
0.239999994636
>>> print memory.getData("SonarRightDetected")
0.579999983311
>>> sonar.unsubscribe("sonar")
>>> quit()

NaoQi kohalikus masinas

Aldebaran SDK paketiga tuleb kaasa NaoQi, mida saab käivitada ka välisel arvutil, mis ei oma NAO riistvara. Selleks käivitada SDK kaustas olev fail "naoqi", pärast mida on selle raamistiku poolt pakutavad moodulid kättesaadavad kohalikul masinal. Proxy loomiseks kasutada IP aadressi "0.0.0.0" pordiga 9559. Kuna arvutil puuduvad NAO sensorid ning mootorid on pakutav funktsionaalsus küllaltki piiratud, kuid võimaldab katsetada NaoQi üldist toimimist.

Tähelepanekuid

  • Liikumised - Kui valida mõni eeldefineeritud poos (Predefined position paneel, nähtav läbi menüüvaliku), siis tuleks jälgida, et kõik mootorid on Enslaved olekus (üleval ribal hammasratta ikoon peab olema punane). Juhul näiteks ainult üks jalg on aktiivne ja valitakse seismise poos, siis see jalg liigub defineeritud asendisse, jättes teise vabalt liikuma, kust tekib tõenäoliselt tasakaalu kaotus.

http://robocup.aldebaran-robotics.com/docs/site_en/greendoc/choregraphe/predefined_positions.html

  • Objektide tuvastamine - NAO suudab meelde jätta talle näidatud pilte ja neid hiljem ära tunda. Choreographe sees käib see View->Video Monitor menüüvalikuga. Video aken näitab reaalajas pilti NAO kaamerast. Learn nupuga saab teha ülesvõtte ning määrata hiirega ala fotost, mida NAO peaks tundma.Kuvatakse kast informatsiooni sisestamiseks näiteks kui see oli leht raamatust, siis selle raamatu nimi, kui osa mõnest ruumist, siis selle nimi, Pärast salvestamist ja saatmist NAOle saab kasutada visuaalprogrammerimise vahedit, et luua käitumine õpitud objektide tuvastamiseks, millele vastav kast annab väljundiks varem sisestatud objekti info kui see kaamera ette satub, mille saab omakorda saata sisendiks rääkimise kastile, et NAO nähtud eseme ka välja ütleks.

http://robocup.aldebaran-robotics.com/docs/site_en/greendoc/choregraphe/video-monitor-tuto.html

  • Liigutuste salvestamine - Uuemas Choregraphe versioonis on salvestamise alustamise nupp ainukese menüüvalikuna tegumiribal, mitte ikoonina tööriistade hulgas. Salvestatud liikumine mängitakse hiljem oluliselt kiiremini maha kui see salvestati.

http://robocup.aldebaran-robotics.com/docs/site_en/greendoc/choregraphe/creating_movement_with_recording_mode.html

  • Aku - Madalast aku seisust annab märku NAO kõhul olev nupp, mis hakkab aeglaselt punase valgusega vilkuma. Kriitiliselt tühjast akust annab NAO märku ka verbaalselt (öeldes "Energy"), siis selle peale ei ole mõistlik lootma jääda. Reaalses katsetuses enne kõndimise programmi alustamist oli aku tuvastatud täituvus hea (kui kõhul olevat nuppu 2 sekundit vajutada ütleb NAO peale IP ka oma aku seisu, mis oli siin "My battery is strong"), kuid eelnevalt ei olnud aku täielikult laetud vaid adapter oli vahetult enne korraks ühendatud. Sellises olukorras paar minutit peale programmi algust hakkas punane indikaator vilkuma ja kõdimine lõppes kukkumisega (NAO on disainitud oma keha kõrguselt kukkumist üle elama, mille järel käivitatakse kõndimise programmis püsti tõusmise algoritm), põhjuseks liikumisele eluliselt tähtsate mootorite ebapiisav vool. Alles natuke aega pärast püstisaamise üritust tuli sõnaline hoiatus ning automaatne süsteemi shutdown, mistõttu tuleks NAO tegevuste puhul alati jälgida aku indikaatorit kõhul ning alati enne kasutamist viia läbi võimalikult täielik laadimine.

Jooksvad probleemid

  • Sonarid - NAO kasutab kahte sonarit, mis suudavad takistusi tuvastada vahemikus 0 kuni 70 cm. Ligikaudu 15 cm on piir mille puhul saab määrata ainult takistuse olemasolu, kuid mitte selle kaugust.

Endless walk programmi töö ei olnud testimisel ootuspärane, kui robot oleks pidanud kõndima seni kuni sonariga tuvastatakse takistus, siis tulemus oli rohkem paigal tammumine, robot astus väikeseid samme suvalistes suundades. Choregraphe ploki tööd jälgides võis näha kuidas pidevalt tekitati sündmusi "SonarRightDetected" või "SonarLeftDetected" olenemata, sellest kas roboti ees oli objekt. Sellest tuli välja ka üks Choregraphega seotud viga, signaalide liikumisi skeemil näidati ainult siis kui programm käivitati olles sonari alamprogrammi ploki lahti võtnud, kõndimise programmi peaskeemilt alustades ja siis sonarit valides signaalide liikumist ekraanil ei kuvatud.

Samalaadse tulemuse andis ka Pythoni skript. Kui käivitasin näiteskript ja suunasin sonarid lakke olid loetud väärtused:

>>> print memory.getData("SonarMiddleDetected")
0.264999985695
>>> print memory.getData("SonarMiddleDetected")
0.264999985695
>>> print memory.getData("SonarRightDetected")
0.239999994636
>>> print memory.getData("SonarRightDetected")
0.239999994636

Tagastatud ujukoma arv märgib suurima tõenäosusega tuvastatud kaugust, kuid see püsib stabiilselt vahemaal vastavalt 26, 24 cm (?). Kui suunasin sonarid takistusele, siis olid tulemused:

>>> print memory.getData("SonarRightDetected")
0.569999992847
>>> print memory.getData("SonarRightDetected")
0.680000007153
>>> print memory.getData("SonarRightDetected")
0.680000007153
>>> print memory.getData("SonarRightDetected")
0.579999983311

Ehk tegelikult suudetakse midagi ikka tuvastada. Kui lugeda näiteks 30 cm alapiiriks ja seda koodis arvestada võib kasutamine isegi võimalik olla (signaali stabiilsust eriti ei testinud), kuid kuna tarkvaraga kaasa tulnud programm seda ei tee ning spetsifikatsioon nii ei märgi võib olla tegemist riistvaralise probleemiga. Võimalik, et sonarite kasutamine on kuidagi sünkroonist väljas ja nad segavad üksteist.

Linke