NAO: Difference between revisions

From Intelligent Materials and Systems Lab

No edit summary
 
(13 intermediate revisions by the same user not shown)
Line 13: Line 13:
===NaoQi===
===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 <nowiki>http://NaoIp:9559/full</nowiki>, TCP port 9559 on valitud vaikimisi. [[#Choregraphe|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 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 <nowiki>http://NaoIp:9559/full</nowiki>, TCP port 9559 on valitud vaikimisi. [[Choregraphe#Choregraphe|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.
NaoQi taaskäivitamiseks tuleb Nao veebikeskonnast valida "Advanced"->"NaoQi" ning "Restart", sama tulemuse annab NAO välja- ja sisselülitamine.
Line 21: Line 21:
Windows platvormil sobib seadmete nagu NAO võrgust leidmiseks (tavaliselt teised arvutid, printerid jms). Tekib ikoonina Internet Exploreri tööriistaribale.
Windows platvormil sobib seadmete nagu NAO võrgust leidmiseks (tavaliselt teised arvutid, printerid jms). Tekib ikoonina Internet Exploreri tööriistaribale.


===Choregraphe===
===Arendus===


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|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| Visuaalprogrammeerimine: Choregraphe]]


====Choregraphe projekti kasutamine ilma keskkonnata====
[[Python| Skriptid: Python]]
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|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.
[[C++| Programmeerimine: C++]]
* "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====
[[Simulatsioonitarkvara| Simulatsioonitarkvara]]
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.


[[File:sample_app.png|frame|center|Istumine ja kõndimine]]
====Operatsioonisüsteemide tugi====


# 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.
{| border="1" class="wikitable"
# 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).
|-
# Lõpmatu kõndimise plokk. Lõpetab tegevuse (annab väljundi) siis kui vajutatakse pea tagumist puutesensorit.
!
# 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.
! Windows XP 32 bit
# 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.
! Windows 7 64 bit
! Ubuntu 10.10 32 bit
! Ubuntu 10.10 64 bit
|-
! Choregraphe
| Töötab
| Töötab
| Töötab
| Ei tööta
|-
! Python
| Paigaldatav, töötab
| Paigaldatav, töötab
| Töötab
| Töötab
|-
! C++, native compiling*
| Töötab. Vaja Microsoft Visual Studio 2005/2008 kompillaatorit
| ?
| Töötab
| Ei tööta
|-
! C++, cross-compiling**
| Ei toetata
| Ei toetata
| Töötab
| Ei tööta
|-
! NaoSim
| Töötab
| Töötab
| [[NaoSim Linuxis| Paigaldatav]]
| [[NaoSim Linuxis| Paigaldatav]]
|-
! Webots
| Töötab
| Töötab
| Töötab
| Töötab
|}


===Python===
<nowiki>* Koodi kompilleerimine kompilleerivas masinas jooksetamiseks. Kui NAOQi käib kohalikus masinas (väga piiratud kasutusvõimalused)</nowiki>


Testkeskkond: Ubuntu 10.04 (bash shell)
<nowiki>** Koodi kompilleerimine võõrale platvormile (NAOle).</nowiki>


====Näiteprogramm====
'Ei tööta' on tabelis suhteline termin, mis tähendab, et antud platvormil ei õnnestunud funktsionaalsust tööle saada, kui see võib siiski võimalik olla. Operatsioonisüsteemi valikul arendamiseks tuleks lähtuda vajadustest, kui lähenemine on visuaalsete vahenditega ning lisaks üksikud skriptid, siis sobivad ka Windowsi süsteemid. Uute moodulite loomiseks vajalikku C++ koodi saab aga hetkel kompilleerida ainult Linuxis ning ka siin tuleks vältida 64 bitiste distributsioonide kasutamist. NAO enda juhtsüsteemiks on 32 bitine Linux AMD Genode platvormil.
 
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 <code>echo $PYTHONPATH</code>. Püsivaks kasutamiseks tuleks lisada parameeter faili <code>/home/.profile</code>. 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===
===Tähelepanekuid===
Line 113: Line 100:
*'''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==
==Võimalused ja piirangud==


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


=Jooksvad probleemid=
'''Bluetooth''' (Riistvara pole veel saadaval)
* Võimaldab tuvastada bluetoothiga seadmeid, kuid ühendust luua saab ainult eraldi saadaval oleva Aldebaran Bluetooth boardiga. Kasutamiseks on vaja sisestada Bluetooth key NAO peas olevasse USB pessa.
* Kasutusalad: Boardiga saab kontrollida muud elektroonikat (digitaalsed, PWM, servo, mootorite kontrollimise väljundid). Väliste sensorite ühendamine, NAO kontrolli all olevad lisaseadmed.
http://robocup.aldebaran-robotics.com/docs/site_en/reddoc/bluetooth/bluetooth.html


*'''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.
'''Infrapuna'''
* Andmevahetus otsenähtavusel. Eelseadistatav veebikeskkonna vahendusel. Soovituslik kasutuspiirkond ligikaudu 15cm NAO silmadest.
* Kasutusalad: Kahe NAO andmevahetus, IR suhtlust kasutavate seadmete kontrollimine, käskude vastuvõtmine IR puldi kaudu.
http://robocup.aldebaran-robotics.com/docs/site_en/reddoc/infrared/purpose_description.html


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.
'''WiFi'''
* Ühendada NAO(d), arvutid samasse kohtvõrku. Suhtlus üle SOAP liidese (kasutajale koodis nähtamatu).
* Kasutusalad: Mitme NAO või arvuti omavaheline moodulites deklareeritud meetodite väljakutsumine. Infovahetus, käsud. Lokaalsel arvutil simuleeritud NAO ning reaalse roboti suhtlus (sellisel juhul saab ka robot arvutist meetodeid välja kutsuda). Arvutiga NAO kontrollimine, väline andmetöötlus.
* E-mail - Choregraphes. Võimaldab suvalisest mailiserveri kontost kirju vastu võtta ning saata.
* Internet - ?


Samalaadse tulemuse andis ka Pythoni skript. Kui käivitasin [[#Näiteprogramm 2 | näiteskript]] ja suunasin sonarid lakke olid loetud väärtused:
==Ülesandeid==
*[[NAO: Pea peal seismine| Pea peal seismine]]


>>> print memory.getData("SonarMiddleDetected")
==Jooksvad probleemid==
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:
*'''[[SonariProbleem| 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.


>>> print memory.getData("SonarRightDetected")
==Linke==
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.
*[http://robocup.aldebaran-robotics.com/docs/site_en/index_doc.html Dokumentatsioon]
*http://robotzeitgeist.com/tag/aldebaran-robotics
*http://ognacgnouc.com/

Latest revision as of 19:57, 24 April 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.

Arendus

Visuaalprogrammeerimine: Choregraphe

Skriptid: Python

Programmeerimine: C++

Simulatsioonitarkvara

Operatsioonisüsteemide tugi

Windows XP 32 bit Windows 7 64 bit Ubuntu 10.10 32 bit Ubuntu 10.10 64 bit
Choregraphe Töötab Töötab Töötab Ei tööta
Python Paigaldatav, töötab Paigaldatav, töötab Töötab Töötab
C++, native compiling* Töötab. Vaja Microsoft Visual Studio 2005/2008 kompillaatorit ? Töötab Ei tööta
C++, cross-compiling** Ei toetata Ei toetata Töötab Ei tööta
NaoSim Töötab Töötab Paigaldatav Paigaldatav
Webots Töötab Töötab Töötab Töötab

* Koodi kompilleerimine kompilleerivas masinas jooksetamiseks. Kui NAOQi käib kohalikus masinas (väga piiratud kasutusvõimalused)

** Koodi kompilleerimine võõrale platvormile (NAOle).

'Ei tööta' on tabelis suhteline termin, mis tähendab, et antud platvormil ei õnnestunud funktsionaalsust tööle saada, kui see võib siiski võimalik olla. Operatsioonisüsteemi valikul arendamiseks tuleks lähtuda vajadustest, kui lähenemine on visuaalsete vahenditega ning lisaks üksikud skriptid, siis sobivad ka Windowsi süsteemid. Uute moodulite loomiseks vajalikku C++ koodi saab aga hetkel kompilleerida ainult Linuxis ning ka siin tuleks vältida 64 bitiste distributsioonide kasutamist. NAO enda juhtsüsteemiks on 32 bitine Linux AMD Genode platvormil.

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.

Võimalused ja piirangud

Kommunikatsioon

Bluetooth (Riistvara pole veel saadaval)

  • Võimaldab tuvastada bluetoothiga seadmeid, kuid ühendust luua saab ainult eraldi saadaval oleva Aldebaran Bluetooth boardiga. Kasutamiseks on vaja sisestada Bluetooth key NAO peas olevasse USB pessa.
  • Kasutusalad: Boardiga saab kontrollida muud elektroonikat (digitaalsed, PWM, servo, mootorite kontrollimise väljundid). Väliste sensorite ühendamine, NAO kontrolli all olevad lisaseadmed.

http://robocup.aldebaran-robotics.com/docs/site_en/reddoc/bluetooth/bluetooth.html

Infrapuna

  • Andmevahetus otsenähtavusel. Eelseadistatav veebikeskkonna vahendusel. Soovituslik kasutuspiirkond ligikaudu 15cm NAO silmadest.
  • Kasutusalad: Kahe NAO andmevahetus, IR suhtlust kasutavate seadmete kontrollimine, käskude vastuvõtmine IR puldi kaudu.

http://robocup.aldebaran-robotics.com/docs/site_en/reddoc/infrared/purpose_description.html

WiFi

  • Ühendada NAO(d), arvutid samasse kohtvõrku. Suhtlus üle SOAP liidese (kasutajale koodis nähtamatu).
  • Kasutusalad: Mitme NAO või arvuti omavaheline moodulites deklareeritud meetodite väljakutsumine. Infovahetus, käsud. Lokaalsel arvutil simuleeritud NAO ning reaalse roboti suhtlus (sellisel juhul saab ka robot arvutist meetodeid välja kutsuda). Arvutiga NAO kontrollimine, väline andmetöötlus.
  • E-mail - Choregraphes. Võimaldab suvalisest mailiserveri kontost kirju vastu võtta ning saata.
  • Internet - ?

Ülesandeid

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.

Linke