<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://ims.ut.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Siimsundla</id>
	<title>Intelligent Materials and Systems Lab - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://ims.ut.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Siimsundla"/>
	<link rel="alternate" type="text/html" href="https://ims.ut.ee/Special:Contributions/Siimsundla"/>
	<updated>2026-04-07T10:39:37Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.38.2</generator>
	<entry>
		<id>https://ims.ut.ee/index.php?title=NAO&amp;diff=8560</id>
		<title>NAO</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=NAO&amp;diff=8560"/>
		<updated>2011-04-24T16:57:02Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Operatsioonisüsteemide tugi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Ülevaade==&lt;br /&gt;
&lt;br /&gt;
===Nao ühendamine arvutiga===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Kui IP saamine õnnestub ütleb NAO oma IP aadressi kui tema kõhul olevat nuppu vajutada. Navigeerides veebibrauseriga &amp;lt;nowiki&amp;gt;http://(NAO IP)&amp;lt;/nowiki&amp;gt; lehele on võimalik muuta mõningaid seadeid ning näha staatuse informatsiooni. Kui ligiduses on traadita võrke peaksid need ilmuma &amp;quot;Networks&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Pärast traadita ühenduse loomist tuleks meelde jätta wireless võrgust saadud IP (&amp;quot;Networks&amp;quot; kuval) ning ühendada lahti ethernet kaabel. Pärast seda kui wireless võrk on korra juba valitud saab NAO ühendada end sellega automaatselt (&amp;quot;Wireless&amp;quot; nimekirjas on võrk märgitud &amp;quot;favorite&amp;quot; = 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).  &lt;br /&gt;
&lt;br /&gt;
===NaoQi===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;nowiki&amp;gt;http://NaoIp:9559/full&amp;lt;/nowiki&amp;gt;, 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.&lt;br /&gt;
   &lt;br /&gt;
NaoQi taaskäivitamiseks tuleb Nao veebikeskonnast valida &amp;quot;Advanced&amp;quot;-&amp;gt;&amp;quot;NaoQi&amp;quot; ning &amp;quot;Restart&amp;quot;, sama tulemuse annab NAO välja- ja sisselülitamine.&lt;br /&gt;
&lt;br /&gt;
===BonJour===&lt;br /&gt;
&lt;br /&gt;
Windows platvormil sobib seadmete nagu NAO võrgust leidmiseks (tavaliselt teised arvutid, printerid jms). Tekib ikoonina Internet Exploreri tööriistaribale.&lt;br /&gt;
&lt;br /&gt;
===Arendus===&lt;br /&gt;
&lt;br /&gt;
[[Choregraphe| Visuaalprogrammeerimine: Choregraphe]]&lt;br /&gt;
&lt;br /&gt;
[[Python| Skriptid: Python]]&lt;br /&gt;
&lt;br /&gt;
[[C++| Programmeerimine: C++]]&lt;br /&gt;
&lt;br /&gt;
[[Simulatsioonitarkvara| Simulatsioonitarkvara]]&lt;br /&gt;
&lt;br /&gt;
====Operatsioonisüsteemide tugi====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! Windows XP 32 bit&lt;br /&gt;
! Windows 7 64 bit&lt;br /&gt;
! Ubuntu 10.10 32 bit&lt;br /&gt;
! Ubuntu 10.10 64 bit&lt;br /&gt;
|-&lt;br /&gt;
! Choregraphe&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| Ei tööta&lt;br /&gt;
|-&lt;br /&gt;
! Python&lt;br /&gt;
| Paigaldatav, töötab&lt;br /&gt;
| Paigaldatav, töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
|-&lt;br /&gt;
! C++, native compiling*&lt;br /&gt;
| Töötab. Vaja Microsoft Visual Studio 2005/2008 kompillaatorit&lt;br /&gt;
| ?&lt;br /&gt;
| Töötab&lt;br /&gt;
| Ei tööta&lt;br /&gt;
|-&lt;br /&gt;
! C++, cross-compiling**&lt;br /&gt;
| Ei toetata&lt;br /&gt;
| Ei toetata&lt;br /&gt;
| Töötab&lt;br /&gt;
| Ei tööta&lt;br /&gt;
|-&lt;br /&gt;
! NaoSim&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| [[NaoSim Linuxis| Paigaldatav]]&lt;br /&gt;
| [[NaoSim Linuxis| Paigaldatav]]&lt;br /&gt;
|-&lt;br /&gt;
! Webots&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;* Koodi kompilleerimine kompilleerivas masinas jooksetamiseks. Kui NAOQi käib kohalikus masinas (väga piiratud kasutusvõimalused)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;** Koodi kompilleerimine võõrale platvormile (NAOle).&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'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.&lt;br /&gt;
&lt;br /&gt;
===Tähelepanekuid===&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/greendoc/choregraphe/predefined_positions.html&lt;br /&gt;
&lt;br /&gt;
*'''Objektide tuvastamine''' - NAO suudab meelde jätta talle näidatud pilte ja neid hiljem ära tunda. Choreographe sees käib see View-&amp;gt;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.&lt;br /&gt;
&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/greendoc/choregraphe/video-monitor-tuto.html&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/greendoc/choregraphe/creating_movement_with_recording_mode.html&lt;br /&gt;
&lt;br /&gt;
*'''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 &amp;quot;Energy&amp;quot;), 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 &amp;quot;My battery is strong&amp;quot;), 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'''.    &lt;br /&gt;
&lt;br /&gt;
==Võimalused ja piirangud==&lt;br /&gt;
&lt;br /&gt;
===Kommunikatsioon===&lt;br /&gt;
&lt;br /&gt;
'''Bluetooth''' (Riistvara pole veel saadaval)&lt;br /&gt;
* 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.&lt;br /&gt;
* Kasutusalad: Boardiga saab kontrollida muud elektroonikat (digitaalsed, PWM, servo, mootorite kontrollimise väljundid). Väliste sensorite ühendamine, NAO kontrolli all olevad lisaseadmed. &lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/reddoc/bluetooth/bluetooth.html&lt;br /&gt;
&lt;br /&gt;
'''Infrapuna'''&lt;br /&gt;
* Andmevahetus otsenähtavusel. Eelseadistatav veebikeskkonna vahendusel. Soovituslik kasutuspiirkond ligikaudu 15cm NAO silmadest.&lt;br /&gt;
* Kasutusalad: Kahe NAO andmevahetus, IR suhtlust kasutavate seadmete kontrollimine, käskude vastuvõtmine IR puldi kaudu.&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/reddoc/infrared/purpose_description.html&lt;br /&gt;
&lt;br /&gt;
'''WiFi'''&lt;br /&gt;
* Ühendada NAO(d), arvutid samasse kohtvõrku. Suhtlus üle SOAP liidese (kasutajale koodis nähtamatu).&lt;br /&gt;
* 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.&lt;br /&gt;
* E-mail - Choregraphes. Võimaldab suvalisest mailiserveri kontost kirju vastu võtta ning saata.&lt;br /&gt;
* Internet - ?&lt;br /&gt;
&lt;br /&gt;
==Ülesandeid==&lt;br /&gt;
*[[NAO: Pea peal seismine| Pea peal seismine]]&lt;br /&gt;
&lt;br /&gt;
==Jooksvad probleemid==&lt;br /&gt;
&lt;br /&gt;
*'''[[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.&lt;br /&gt;
&lt;br /&gt;
==Linke==&lt;br /&gt;
&lt;br /&gt;
*[http://robocup.aldebaran-robotics.com/docs/site_en/index_doc.html Dokumentatsioon]&lt;br /&gt;
*http://robotzeitgeist.com/tag/aldebaran-robotics&lt;br /&gt;
*http://ognacgnouc.com/&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=NAO:_Pea_peal_seismine&amp;diff=8559</id>
		<title>NAO: Pea peal seismine</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=NAO:_Pea_peal_seismine&amp;diff=8559"/>
		<updated>2011-04-24T16:53:12Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Tulemused */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Ülesanne==&lt;br /&gt;
Panna robot liikuma püstiasendist stabiilsesse pea peal seisu.&lt;br /&gt;
&lt;br /&gt;
==Vahendid==&lt;br /&gt;
Choregraphe (1.10.10), NAOSim (1.10.3)&lt;br /&gt;
&lt;br /&gt;
==Lahendus==&lt;br /&gt;
Choregraphe sisseehitatud funktsionaalsuse ärakasutamine. Animatsiooni võtmepunktide defineerimine. Kasutatud demoplokke: &amp;quot;Stand up&amp;quot;, &amp;quot;Sit down&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Käte ja pea asend on paigas enne maaga kokkupuudet, mis tähendab, et neid ei ole enam vaja keha raskuse all liigutada, mis osutus seda tegeva koodi füüsilistes katsetes problemaatiliseks. Eelmainitud põhjusel jääb pea &amp;quot;kuklasse&amp;quot; ning küünarvarred ei ole kehaga 90 kraadise nurga all (kuna liigutada ei saa, kuid keha peab olema võimeline ennast sellesse asendisse &amp;quot;lükkama&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==Kood==&lt;br /&gt;
[[File:headStand.crg]]&lt;br /&gt;
&lt;br /&gt;
==Tulemused==&lt;br /&gt;
&lt;br /&gt;
Simulatsioon:&lt;br /&gt;
Antud koodi puhul küllaltki heas lähenduses reaalsusega.&lt;br /&gt;
&lt;br /&gt;
Füüsiline robot:&lt;br /&gt;
[[Media:NAO_head.avi]]&lt;br /&gt;
&lt;br /&gt;
Olulist:&lt;br /&gt;
# NAOSim simulatsioonis on NAO liigesed lõpmatult jäigad ja tugevad (st. robot võib ennast ka näppude peal maast lahti lükata, mis reaalsuses pole loomulikult võimalik.&lt;br /&gt;
# Pole võimalik lükata keha üles käte liigeste jõul samuti ei saa seda teha ühe jalaga (alustades madalast kükakil asendist)&lt;br /&gt;
# Kui mootorid on töös tõuseb nende temperatuur ning juhtudel, kus soovitud asendi saavutamine pole võimalik (midagi segab liigese liikumist, antud juhul näiteks ei suuda keha raskust kätelt üles lükata), siis läbib neid maksimaalne töövool niikaua kuni antakse käsk muu asend võtta või võimaldatakse õigesse olekusse minna. Võivad tekkida ülekuumenemise probleemid (sõnaline hoiatus NAOlt), mille tulemuseks on vähem jäigad liigesed. Samas lõpliku koodi versioonis stabiilne pea peal seismine vaadeldud 1 minuti jooksul küünarnukkide ja õlgade liigeste temperatuuri ei tõstnud eelkõige tänu sellele, et liigesed olid juba enne maaga kokkupuutumist vajalikus asendis. Kui stabiilses asendis mootorit liigutada, siis on tulemuseks tõenäoliselt kukkumine kuna liikumises mootor ei hoia enam mehaanilise pinge nii hästi oma asendit.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8558</id>
		<title>Simulatsioonitarkvara</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8558"/>
		<updated>2011-04-24T16:50:43Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Webbots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===NAOSim===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.3 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Hea''':&lt;br /&gt;
* Küllaltki täpne tasakaalu simulatsioon.&lt;br /&gt;
* Kaamera&lt;br /&gt;
&lt;br /&gt;
'''Halb''':&lt;br /&gt;
* Ei arvestata liigeste jäikust ning mootorite mehaanilist võimekust.&lt;br /&gt;
* Ei simuleeri sonareid&lt;br /&gt;
&lt;br /&gt;
===Webbots===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; PRO 6.3.4 &amp;lt;/span&amp;gt;&lt;br /&gt;
Paigaldusjuhend: http://www.cyberbotics.com/nao/&lt;br /&gt;
&lt;br /&gt;
'''Hea''':&lt;br /&gt;
* Kaamera&lt;br /&gt;
* Sonarid&lt;br /&gt;
* Arvestatakse mootorite võimekusega&lt;br /&gt;
* Puutesensorid&lt;br /&gt;
&lt;br /&gt;
'''Halb''':&lt;br /&gt;
* Tasakaalumoodul NaoQi versioon 1.10.10 sisuliselt ei tööta. Tegevused, mis NAOSim ja reaalse NAO puhul töötavad viivad siin kukkumiseni (Tai-chi demoplokk Choregraphes). Pärast kukkumist püstitõusmise käivitamine teeb kõhuli asendist liigutusi, mida peaks tegema selili asendist ja vastupidi (üleval ja all on vahetuses).&lt;br /&gt;
&lt;br /&gt;
Viimase probleemi tõttu out-of-the-box kasutuskõlbmatu.&lt;br /&gt;
&lt;br /&gt;
Mõõdetud akseleromeetrite väljund NAO seisvas püstises asendis kinnitab, et Webots simuleerib kiirendust vastassuunaliselt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Webots (tagastab väärtused m/s2)&lt;br /&gt;
&lt;br /&gt;
AccX 0.753286540508&lt;br /&gt;
AccY -0.0355014316738&lt;br /&gt;
AccZ 9.86777114868&lt;br /&gt;
&lt;br /&gt;
NAOSim:&lt;br /&gt;
&lt;br /&gt;
AccX -4.06194591522&lt;br /&gt;
AccY 0.113250367343&lt;br /&gt;
AccZ -55.8523826599&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fix: &lt;br /&gt;
&lt;br /&gt;
naoproxy.cpp failis ridadel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Webots returns values in m/s^2&lt;br /&gt;
const double *acc = wb_accelerometer_get_values(accelerometer);&lt;br /&gt;
accelerometerValues.clear();&lt;br /&gt;
accelerometerValues.push_back((float)acc[0]);&lt;br /&gt;
accelerometerValues.push_back((float)acc[1]);&lt;br /&gt;
accelerometerValues.push_back((float)acc[2]);&lt;br /&gt;
if (! naoqiSimulated-&amp;gt;updateAccelerometers(accelerometerValues))&lt;br /&gt;
cerr &amp;lt;&amp;lt; &amp;quot;ALNaoSimulationInterface::updateAccelerometers() failed.\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//__________&lt;br /&gt;
// Inertial values (computed from accelerometer values)&lt;br /&gt;
//&lt;br /&gt;
inertialValues.clear();&lt;br /&gt;
inertialValues.push_back((float)(-PI_2 + acos(acc[1]/GRAVITY)));&lt;br /&gt;
inertialValues.push_back((float)(PI_2 - acos(acc[0]/GRAVITY)));&lt;br /&gt;
if (! naoqiSimulated-&amp;gt;updateInertialValues(inertialValues))&lt;br /&gt;
cerr &amp;lt;&amp;lt; &amp;quot;ALNaoSimulationInterface::updateInertialValues() failed.\n&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
acc[?] muuta negatiivseks (-acc[?]). Käivitada Build.&lt;br /&gt;
Ühtlasi tuli katsetest välja, et püstitõusmise moodul kasutab inertialValues, mitte otse akseleromeetri andmeid.&lt;br /&gt;
&lt;br /&gt;
* Arvestatakse mootorite võimekusega (vahest liiga palju)&lt;br /&gt;
Kuigi liigutsed on pärast viimase probleemi parandamist õiged ei õnnestu ikkagi püsti tõusta kuna käte mootorid pole simulatsioonis selleks piisavalt tugevad (üritab, kuid jääb poolikusse asendisse)&lt;br /&gt;
&lt;br /&gt;
Fix:&lt;br /&gt;
&lt;br /&gt;
Linuxis /usr/local/webots/resources/projects/robots/nao/protos/NaoV3H.proto fail defineerib simuleeritava Nao mudeli omadused mh mootorite pöördemomendi, mis on kätega seonduvatel mootoritel seatud 2,27 või 2.61 Nm (LShoulderRoll, RElbowYaw...), mis on ka NAO spetsifikatsiooni kohaselt õige, kuid simulatsioonis pole need väärtused piisavad. Pärast väärtuste seadmist vastavalt 3.5 ja 4 Nm peale töötab püstitõusmine nagu oodatud (madalamatel 3 ja 3.5 Nm oli veel probleeme). Leitud väärtused pole kindlasti kõige õigemad, kuid optimaalsema pöördemomendi seadmiseks oleks vaja simulatsiooni kõrvutada reaalse NAOga ning viia läbi hulganisti katseid. Ilmelt piisab ka mõnevõrra väiksemast pöördemomendi paradusest. Võimalik, et probleemi põhjuseks on mõni teine valesti seatud parameeter (liigeste mass, massi jaotus jne), kuid jõudluse suuredamine on lihtsaim viis probleem lahedada.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8557</id>
		<title>Simulatsioonitarkvara</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8557"/>
		<updated>2011-04-24T16:49:38Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===NAOSim===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.3 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Hea''':&lt;br /&gt;
* Küllaltki täpne tasakaalu simulatsioon.&lt;br /&gt;
* Kaamera&lt;br /&gt;
&lt;br /&gt;
'''Halb''':&lt;br /&gt;
* Ei arvestata liigeste jäikust ning mootorite mehaanilist võimekust.&lt;br /&gt;
* Ei simuleeri sonareid&lt;br /&gt;
&lt;br /&gt;
===Webbots===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; PRO 6.3.4 &amp;lt;/span&amp;gt;&lt;br /&gt;
Paigaldusjuhend: http://www.cyberbotics.com/nao/&lt;br /&gt;
&lt;br /&gt;
'''Hea''':&lt;br /&gt;
* Kaamera&lt;br /&gt;
* Sonarid&lt;br /&gt;
* Arvestatakse mootorite võimekusega&lt;br /&gt;
* Puutesensorid&lt;br /&gt;
&lt;br /&gt;
'''Halb''':&lt;br /&gt;
* Tasakaalumoodul NaoQi versioon 1.10.10 sisuliselt ei tööta. Tegevused, mis NAOSim ja reaalse NAO puhul töötavad viivad siin kukkumiseni (Tai-chi demoplokk Choregraphes). Pärast kukkumist püstitõusmise käivitamine teeb kõhuli asendist liigutusi, mida peaks tegema selili asendist ja vastupidi (üleval ja all on vahetuses).&lt;br /&gt;
&lt;br /&gt;
Viimase probleemi tõttu out-of-the-box kasutuskõlbmatu.&lt;br /&gt;
&lt;br /&gt;
Mõõdetud akseleromeetrite väljund NAO seisvas püstises asendis kinnitab, et Webots simuleerib kiirendust vastassuunaliselt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Webots (tagastab väärtused m/s2)&lt;br /&gt;
&lt;br /&gt;
AccX 0.753286540508&lt;br /&gt;
AccY -0.0355014316738&lt;br /&gt;
AccZ 9.86777114868&lt;br /&gt;
&lt;br /&gt;
NAOSim:&lt;br /&gt;
&lt;br /&gt;
AccX -4.06194591522&lt;br /&gt;
AccY 0.113250367343&lt;br /&gt;
AccZ -55.8523826599&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fix: &lt;br /&gt;
&lt;br /&gt;
naoproxy.cpp failis ridadel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Webots returns values in m/s^2&lt;br /&gt;
const double *acc = wb_accelerometer_get_values(accelerometer);&lt;br /&gt;
accelerometerValues.clear();&lt;br /&gt;
accelerometerValues.push_back((float)acc[0]);&lt;br /&gt;
accelerometerValues.push_back((float)acc[1]);&lt;br /&gt;
accelerometerValues.push_back((float)acc[2]);&lt;br /&gt;
if (! naoqiSimulated-&amp;gt;updateAccelerometers(accelerometerValues))&lt;br /&gt;
cerr &amp;lt;&amp;lt; &amp;quot;ALNaoSimulationInterface::updateAccelerometers() failed.\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//__________&lt;br /&gt;
// Inertial values (computed from accelerometer values)&lt;br /&gt;
//&lt;br /&gt;
inertialValues.clear();&lt;br /&gt;
inertialValues.push_back((float)(-PI_2 + acos(acc[1]/GRAVITY)));&lt;br /&gt;
inertialValues.push_back((float)(PI_2 - acos(acc[0]/GRAVITY)));&lt;br /&gt;
if (! naoqiSimulated-&amp;gt;updateInertialValues(inertialValues))&lt;br /&gt;
cerr &amp;lt;&amp;lt; &amp;quot;ALNaoSimulationInterface::updateInertialValues() failed.\n&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
acc[?] muuta negatiivseks (-acc[?]). Käivitada Build.&lt;br /&gt;
Ühtlasi tuli katsetest välja, et püstitõusmise moodul kasutab inertialValues, mitte otse akseleromeetri andmeid.&lt;br /&gt;
&lt;br /&gt;
* Arvestatakse mootorite võimekusega (vahest liiga palju)&lt;br /&gt;
Kuigi liigutsed on pärast viimase probleemi parandamist õiged ei õnnestu ikkagi püsti tõusta kuna käte mootorid pole simulatsioonis selleks piisavalt tugevad (üritab, kuid jääb poolikusse asendisse)&lt;br /&gt;
&lt;br /&gt;
Fix:&lt;br /&gt;
Linuxis /usr/local/webots/resources/projects/robots/nao/protos/NaoV3H.proto fail defineerib simuleeritava Nao mudeli omadused mh mootorite pöördemomendi, mis on kätega seonduvatel mootoritel seatud 2,27 või 2.61 Nm (LShoulderRoll, RElbowYaw...), mis on ka NAO spetsifikatsiooni kohaselt õige, kuid simulatsioonis pole need väärtused piisavad. Pärast väärtuste seadmist vastavalt 3.5 ja 4 Nm peale töötab püstitõusmine nagu oodatud (madalamatel 3 ja 3.5 Nm oli veel probleeme). Leitud väärtused pole kindlasti kõige õigemad, kuid optimaalsema pöördemomendi seadmiseks oleks vaja simualtsiooni kõrvutada reaalse NAOga ning viia läbi hulganisti katseid. Ilmelt piisab ka mõnevõrra väiksemast pöördemomendi paradusest. Võimalik, et probleemi põhjuseks on mõni teine valesti seatud parameeter (liigeste mass, massi jaotus jne), kuid jõudluse suuredamine on lihtsaim viis probleem lahedada.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8556</id>
		<title>Simulatsioonitarkvara</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8556"/>
		<updated>2011-04-24T16:18:53Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===NAOSim===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.3 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Hea''':&lt;br /&gt;
* Küllaltki täpne tasakaalu simulatsioon.&lt;br /&gt;
* Kaamera&lt;br /&gt;
&lt;br /&gt;
'''Halb''':&lt;br /&gt;
* Ei arvestata liigeste jäikust ning mootorite mehaanilist võimekust.&lt;br /&gt;
* Ei simuleeri sonareid&lt;br /&gt;
&lt;br /&gt;
===Webbots===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; PRO 6.3.4 &amp;lt;/span&amp;gt;&lt;br /&gt;
Paigaldusjuhend: http://www.cyberbotics.com/nao/&lt;br /&gt;
&lt;br /&gt;
'''Hea''':&lt;br /&gt;
* Kaamera&lt;br /&gt;
* Sonarid&lt;br /&gt;
* Arvestatakse mootorite võimekusega&lt;br /&gt;
* Puutesensorid&lt;br /&gt;
&lt;br /&gt;
'''Halb''':&lt;br /&gt;
* Tasakaalumoodul NaoQi versioon 1.10.10 sisuliselt ei tööta. Tegevused, mis NAOSim ja reaalse NAO puhul töötavad viivad siin kukkumiseni (Tai-chi demoplokk Choregraphes). Pärast kukkumist püstitõusmise käivitamine teeb kõhuli asendist liigutusi, mida peaks tegema selili asendist ja vastupidi (üleval ja all on vahetuses).&lt;br /&gt;
&lt;br /&gt;
Viimase probleemi tõttu out-of-the-box kasutuskõlbmatu.&lt;br /&gt;
&lt;br /&gt;
Mõõdetud akseleromeetrite väljund NAO seisvas püstises asendis kinnitab, et Webots simuleerib kiirendust vastassuunaliselt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Webots (tagastab väärtused m/s2)&lt;br /&gt;
&lt;br /&gt;
AccX 0.753286540508&lt;br /&gt;
AccY -0.0355014316738&lt;br /&gt;
AccZ 9.86777114868&lt;br /&gt;
&lt;br /&gt;
NAOSim:&lt;br /&gt;
&lt;br /&gt;
AccX -4.06194591522&lt;br /&gt;
AccY 0.113250367343&lt;br /&gt;
AccZ -55.8523826599&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fix: &lt;br /&gt;
&lt;br /&gt;
naoproxy.cpp failis ridadel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Webots returns values in m/s^2&lt;br /&gt;
const double *acc = wb_accelerometer_get_values(accelerometer);&lt;br /&gt;
accelerometerValues.clear();&lt;br /&gt;
accelerometerValues.push_back((float)acc[0]);&lt;br /&gt;
accelerometerValues.push_back((float)acc[1]);&lt;br /&gt;
accelerometerValues.push_back((float)acc[2]);&lt;br /&gt;
if (! naoqiSimulated-&amp;gt;updateAccelerometers(accelerometerValues))&lt;br /&gt;
cerr &amp;lt;&amp;lt; &amp;quot;ALNaoSimulationInterface::updateAccelerometers() failed.\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//__________&lt;br /&gt;
// Inertial values (computed from accelerometer values)&lt;br /&gt;
//&lt;br /&gt;
inertialValues.clear();&lt;br /&gt;
inertialValues.push_back((float)(-PI_2 + acos(acc[1]/GRAVITY)));&lt;br /&gt;
inertialValues.push_back((float)(PI_2 - acos(acc[0]/GRAVITY)));&lt;br /&gt;
if (! naoqiSimulated-&amp;gt;updateInertialValues(inertialValues))&lt;br /&gt;
cerr &amp;lt;&amp;lt; &amp;quot;ALNaoSimulationInterface::updateInertialValues() failed.\n&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
acc[?] muuta negatiivseks (-acc[?]). Käivitada Build.&lt;br /&gt;
Ühtlasi tuli katsetest välja, et püstitõusmise moodul kasutab inertialValues, mitte otse akseleromeetri andmeid.&lt;br /&gt;
&lt;br /&gt;
* Arvestatakse mootorite võimekusega (vahest liiga palju)&lt;br /&gt;
Kuigi liigutsed on pärast viimase probleemi parandamist õiged ei õnnestu ikkagi püsti tõusta kuna käte mootorid pole simulatsioonis selleks piisavalt tugevad (üritab, kuid jääb poolikusse asendisse)&lt;br /&gt;
&lt;br /&gt;
Fix:&lt;br /&gt;
Linuxis /usr/local/webots/resources/projects/robots/nao/protos/NaoV3H.proto fail defineerib simuleeritava Nao mudeli omadused mh mootorite pöördemomendi, mis on kätega seonduvatel mootoritel seatud 2,27 või 2.61 Nm (LShoulderRoll, RElbowYaw...), mis on ka NAO spetsifikatsiooni kohaselt õige, kuid simulatsioonis pole need väärtused piisavad. Pärast väärtuste seadmist 5 Nm peale töötab püstitõusmine nagu oodatud. Väärtus 5 Nm pole kindlasti õige, kuid optimaalsema pöördemomendi seadmiseks oleks vaja simualtsiooni kõrvutada reaalse NAOga. Ilmelt piisab ka oluliselt väiksemast pöördemomendi paradusest.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8555</id>
		<title>Simulatsioonitarkvara</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8555"/>
		<updated>2011-04-24T16:18:07Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===NAOSim===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.3 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Hea''':&lt;br /&gt;
* Küllaltki täpne tasakaalu simulatsioon.&lt;br /&gt;
* Kaamera&lt;br /&gt;
&lt;br /&gt;
'''Halb''':&lt;br /&gt;
* Ei arvestata liigeste jäikust ning mootorite mehaanilist võimekust.&lt;br /&gt;
* Ei simuleeri sonareid&lt;br /&gt;
&lt;br /&gt;
===Webbots===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; PRO 6.3.4 &amp;lt;/span&amp;gt;&lt;br /&gt;
Paigaldusjuhend: http://www.cyberbotics.com/nao/&lt;br /&gt;
&lt;br /&gt;
'''Hea''':&lt;br /&gt;
* Kaamera&lt;br /&gt;
* Sonarid&lt;br /&gt;
* Arvestatakse mootorite võimekusega&lt;br /&gt;
* Puutesensorid&lt;br /&gt;
&lt;br /&gt;
'''Halb''':&lt;br /&gt;
* Tasakaalumoodul NaoQi versioon 1.10.10 sisuliselt ei tööta. Tegevused, mis NAOSim ja reaalse NAO puhul töötavad viivad siin kukkumiseni (Tai-chi demoplokk Choregraphes). Pärast kukkumist püstitõusmise käivitamine teeb kõhuli asendist liigutusi, mida peaks tegema selili asendist ja vastupidi (üleval ja all on vahetuses).&lt;br /&gt;
&lt;br /&gt;
Viimase probleemi tõttu out-of-the-box kasutuskõlbmatu.&lt;br /&gt;
&lt;br /&gt;
Mõõdetud akseleromeetrite väljund NAO seisvas püstises asendis kinnitab, et Webots simuleerib kiirendust vastassuunaliselt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Webots (tagastab väärtused m/s2)&lt;br /&gt;
&lt;br /&gt;
AccX 0.753286540508&lt;br /&gt;
AccY -0.0355014316738&lt;br /&gt;
AccZ 9.86777114868&lt;br /&gt;
&lt;br /&gt;
NAOSim:&lt;br /&gt;
&lt;br /&gt;
AccX -4.06194591522&lt;br /&gt;
AccY 0.113250367343&lt;br /&gt;
AccZ -55.8523826599&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fix: &lt;br /&gt;
&lt;br /&gt;
naoproxy.cpp failis ridadel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Webots returns values in m/s^2&lt;br /&gt;
const double *acc = wb_accelerometer_get_values(accelerometer);&lt;br /&gt;
accelerometerValues.clear();&lt;br /&gt;
accelerometerValues.push_back((float)acc[0]);&lt;br /&gt;
accelerometerValues.push_back((float)acc[1]);&lt;br /&gt;
accelerometerValues.push_back((float)acc[2]);&lt;br /&gt;
if (! naoqiSimulated-&amp;gt;updateAccelerometers(accelerometerValues))&lt;br /&gt;
cerr &amp;lt;&amp;lt; &amp;quot;ALNaoSimulationInterface::updateAccelerometers() failed.\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//__________&lt;br /&gt;
// Inertial values (computed from accelerometer values)&lt;br /&gt;
//&lt;br /&gt;
inertialValues.clear();&lt;br /&gt;
inertialValues.push_back((float)(-PI_2 + acos(acc[1]/GRAVITY)));&lt;br /&gt;
inertialValues.push_back((float)(PI_2 - acos(acc[0]/GRAVITY)));&lt;br /&gt;
if (! naoqiSimulated-&amp;gt;updateInertialValues(inertialValues))&lt;br /&gt;
cerr &amp;lt;&amp;lt; &amp;quot;ALNaoSimulationInterface::updateInertialValues() failed.\n&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
acc[?] muuta negatiivseks (-acc[?]). Käivitada Build.&lt;br /&gt;
Ühtlasi tuli katsetest välja, et püstitõusmise moodul kasutab inertialValues, mitte otse akseleromeetri andmeid.&lt;br /&gt;
&lt;br /&gt;
* Arvestatakse mootorite võimekusega (vahest liiga palju)&lt;br /&gt;
Kuigi liigutsed on pärast viimase probleemi parandamist õiged ei õnnestu ikkagi püsti tõusta kuna käte mootorid pole simulatsioonis selleks piisavalt tugevad (üritab, kuid jääb poolikusse asendisse)&lt;br /&gt;
&lt;br /&gt;
Fix:&lt;br /&gt;
Linuxis /usr/local/webots/resources/projects/robots/nao/protos/NaoV3H.proto fail defineerib simuleeritava Nao mudeli omadused mh mootorite pöördemomendi, mis on kätega seonduvatel mootoritel seatud 2,27 või 2.61 Nm (LShoulderRoll, RElbowYaw...), mis on ka NAO spetsifikatsiooni kohaselt õige, kuid simulatsioonis pole need väärtused piisavad. Pärast väärtuste seadmist 5 Nm peale töötab püstitõusmine nagu oodatud. Väärtus 5 Nm pole kindalsti õige, kuid optimaalsema pöördemomendi seadmiseks oleks vaja simualtsiooni kõrvutada reaalse NAOga. Ilmelt piisab ka oluliselt väiksemast pöördemomendi paradusest.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8554</id>
		<title>Simulatsioonitarkvara</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8554"/>
		<updated>2011-04-24T14:52:50Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===NAOSim===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.3 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Hea''':&lt;br /&gt;
* Küllaltki täpne tasakaalu simulatsioon.&lt;br /&gt;
* Kaamera&lt;br /&gt;
&lt;br /&gt;
'''Halb''':&lt;br /&gt;
* Ei arvestata liigeste jäikust ning mootorite mehaanilist võimekust.&lt;br /&gt;
* Ei simuleeri sonareid&lt;br /&gt;
&lt;br /&gt;
===Webbots===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; PRO 6.3.4 &amp;lt;/span&amp;gt;&lt;br /&gt;
Paigaldusjuhend: http://www.cyberbotics.com/nao/&lt;br /&gt;
&lt;br /&gt;
'''Hea''':&lt;br /&gt;
* Kaamera&lt;br /&gt;
* Sonarid&lt;br /&gt;
* Arvestatakse mootorite võimekusega&lt;br /&gt;
* Puutesensorid&lt;br /&gt;
&lt;br /&gt;
'''Halb''':&lt;br /&gt;
* Arvestatakse mootorite võimekusega (vahest liiga palju, vt järgmise probleemi lahedust)&lt;br /&gt;
* Tasakaalumoodul NaoQi versioon 1.10.10 sisuliselt ei tööta. Tegevused, mis NAOSim ja reaalse NAO puhul töötavad viivad siin kukkumiseni (Tai-chi demoplokk Choregraphes). Pärast kukkumist püstitõusmise käivitamine teeb kõhuli asendist liigutusi, mida peaks tegema selili asendist ja vastupidi (üleval ja all on vahetuses).&lt;br /&gt;
&lt;br /&gt;
Viimase probleemi tõttu out-of-the-box kasutuskõlbmatu.&lt;br /&gt;
&lt;br /&gt;
Mõõdetud akseleromeetrite väljund NAO seisvas püstises asendis kinnitab, et Webots simuleerib kiirendust vastassuunaliselt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Webots (tagastab väärtused m/s2)&lt;br /&gt;
&lt;br /&gt;
AccX 0.753286540508&lt;br /&gt;
AccY -0.0355014316738&lt;br /&gt;
AccZ 9.86777114868&lt;br /&gt;
&lt;br /&gt;
NAOSim:&lt;br /&gt;
&lt;br /&gt;
AccX -4.06194591522&lt;br /&gt;
AccY 0.113250367343&lt;br /&gt;
AccZ -55.8523826599&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fix: &lt;br /&gt;
&lt;br /&gt;
naoproxy.cpp failis ridadel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Webots returns values in m/s^2&lt;br /&gt;
const double *acc = wb_accelerometer_get_values(accelerometer);&lt;br /&gt;
accelerometerValues.clear();&lt;br /&gt;
accelerometerValues.push_back((float)acc[0]);&lt;br /&gt;
accelerometerValues.push_back((float)acc[1]);&lt;br /&gt;
accelerometerValues.push_back((float)acc[2]);&lt;br /&gt;
if (! naoqiSimulated-&amp;gt;updateAccelerometers(accelerometerValues))&lt;br /&gt;
cerr &amp;lt;&amp;lt; &amp;quot;ALNaoSimulationInterface::updateAccelerometers() failed.\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//__________&lt;br /&gt;
// Inertial values (computed from accelerometer values)&lt;br /&gt;
//&lt;br /&gt;
inertialValues.clear();&lt;br /&gt;
inertialValues.push_back((float)(-PI_2 + acos(acc[1]/GRAVITY)));&lt;br /&gt;
inertialValues.push_back((float)(PI_2 - acos(acc[0]/GRAVITY)));&lt;br /&gt;
if (! naoqiSimulated-&amp;gt;updateInertialValues(inertialValues))&lt;br /&gt;
cerr &amp;lt;&amp;lt; &amp;quot;ALNaoSimulationInterface::updateInertialValues() failed.\n&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
acc[?] muuta negatiivseks (-acc[?]). Käivitada Build.&lt;br /&gt;
Ühtlasi tuli katsetest välja, et püstitõusmise moodul kasutab inertialValues, mitte otse akseleromeetri andmeid.&lt;br /&gt;
&lt;br /&gt;
Kuigi liigutsed on pärast muudatust õiged ei õnnestu ikkagi püsti tõusta kuna käte mootorid pole simulatsioonis selleks piisavalt tugevad (üritab, kuid jääb poolikusse asendisse)&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8553</id>
		<title>Simulatsioonitarkvara</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8553"/>
		<updated>2011-04-24T14:48:08Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===NAOSim===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.3 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Hea''':&lt;br /&gt;
* Küllaltki täpne tasakaalu simulatsioon.&lt;br /&gt;
* Kaamera&lt;br /&gt;
&lt;br /&gt;
'''Halb''':&lt;br /&gt;
* Ei arvestata liigeste jäikust ning mootorite mehaanilist võimekust.&lt;br /&gt;
* Ei simuleeri sonareid&lt;br /&gt;
&lt;br /&gt;
===Webbots===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; PRO 6.3.4 &amp;lt;/span&amp;gt;&lt;br /&gt;
Paigaldusjuhend: http://www.cyberbotics.com/nao/&lt;br /&gt;
&lt;br /&gt;
'''Hea''':&lt;br /&gt;
* Kaamera&lt;br /&gt;
* Sonarid&lt;br /&gt;
* Arvestatakse mootorite võimekusega&lt;br /&gt;
* Puutesensorid&lt;br /&gt;
&lt;br /&gt;
'''Halb''':&lt;br /&gt;
* Tasakaalumoodul NaoQi versioon 1.10.10 sisuliselt ei tööta. Tegevused, mis NAOSim ja reaalse NAO puhul töötavad viivad siin kukkumiseni (Tai-chi demoplokk Choregraphes). Pärast kukkumist püstitõusmise käivitamine teeb kõhuli asendist liigutusi, mida peaks tegema selili asendist ja vastupidi (üleval ja all on vahetuses). &lt;br /&gt;
&lt;br /&gt;
Viimase probleemi tõttu out-of-the-box kasutuskõlbmatu.&lt;br /&gt;
&lt;br /&gt;
Mõõdetud akseleromeetrite väljund NAO seisvas püstises asendis kinnitab, et Webots simuleerib kiirendust vastassuunaliselt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Webots (tagastab väärtused m/s2)&lt;br /&gt;
&lt;br /&gt;
AccX 0.753286540508&lt;br /&gt;
AccY -0.0355014316738&lt;br /&gt;
AccZ 9.86777114868&lt;br /&gt;
&lt;br /&gt;
NAOSim:&lt;br /&gt;
&lt;br /&gt;
AccX -4.06194591522&lt;br /&gt;
AccY 0.113250367343&lt;br /&gt;
AccZ -55.8523826599&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fix: &lt;br /&gt;
&lt;br /&gt;
naoproxy.cpp failis ridadel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Webots returns values in m/s^2&lt;br /&gt;
const double *acc = wb_accelerometer_get_values(accelerometer);&lt;br /&gt;
accelerometerValues.clear();&lt;br /&gt;
accelerometerValues.push_back((float)acc[0]);&lt;br /&gt;
accelerometerValues.push_back((float)acc[1]);&lt;br /&gt;
accelerometerValues.push_back((float)acc[2]);&lt;br /&gt;
if (! naoqiSimulated-&amp;gt;updateAccelerometers(accelerometerValues))&lt;br /&gt;
cerr &amp;lt;&amp;lt; &amp;quot;ALNaoSimulationInterface::updateAccelerometers() failed.\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//__________&lt;br /&gt;
// Inertial values (computed from accelerometer values)&lt;br /&gt;
//&lt;br /&gt;
inertialValues.clear();&lt;br /&gt;
inertialValues.push_back((float)(-PI_2 + acos(acc[1]/GRAVITY)));&lt;br /&gt;
inertialValues.push_back((float)(PI_2 - acos(acc[0]/GRAVITY)));&lt;br /&gt;
if (! naoqiSimulated-&amp;gt;updateInertialValues(inertialValues))&lt;br /&gt;
cerr &amp;lt;&amp;lt; &amp;quot;ALNaoSimulationInterface::updateInertialValues() failed.\n&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
acc[?] muuta negatiivseks (-acc[?]). Käivitada Build.&lt;br /&gt;
Ühtlasi tuli katsetest välja, et püstitõusmise moodul kasutab inertialValues, mitte otse akseleromeetri andmeid.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8552</id>
		<title>Simulatsioonitarkvara</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8552"/>
		<updated>2011-04-24T14:16:46Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Webbots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===NAOSim===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.3 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hea:&lt;br /&gt;
* Küllaltki täpne tasakaalu simulatsioon.&lt;br /&gt;
* Kaamera&lt;br /&gt;
&lt;br /&gt;
Halb:&lt;br /&gt;
* Ei arvestata liigeste jäikust ning mootorite mehaanilist võimekust.&lt;br /&gt;
* Ei simuleeri sonareid&lt;br /&gt;
&lt;br /&gt;
===Webbots===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; PRO 6.3.4 &amp;lt;/span&amp;gt;&lt;br /&gt;
Paigaldusjuhend: http://www.cyberbotics.com/nao/&lt;br /&gt;
&lt;br /&gt;
Hea:&lt;br /&gt;
* Kaamera&lt;br /&gt;
* Sonarid&lt;br /&gt;
* Arvestatakse mootorite võimekusega&lt;br /&gt;
* Puutesensorid&lt;br /&gt;
&lt;br /&gt;
Halb:&lt;br /&gt;
* Tasakaalumoodul NaoQi versioon 1.10.10 sisuliselt ei tööta. Tegevused, mis NAOSim ja reaalse NAO puhul töötavad viivad siin kukkumiseni (Tai-chi demoplokk Choregraphes). Pärast kukkumist püstitõusmise käivitamine teeb kõhuli asendist liigutusi, mida peaks tegema selili asendist ja vastupidi (üleval ja all on vahetuses). &lt;br /&gt;
&lt;br /&gt;
Viimase probleemi tõttu hetkel kasutuskõlbmatu.&lt;br /&gt;
&lt;br /&gt;
Mõõdetud akseleromeetrite väljund NAO seisvas püstises asendis kinnitab, et Webots simuleerib kiirendust vastassuunaliselt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Webots&lt;br /&gt;
&lt;br /&gt;
AccX 0.753286540508&lt;br /&gt;
AccY -0.0355014316738&lt;br /&gt;
AccZ 9.86777114868&lt;br /&gt;
&lt;br /&gt;
NAOSim:&lt;br /&gt;
&lt;br /&gt;
AccX -4.06194591522&lt;br /&gt;
AccY 0.113250367343&lt;br /&gt;
AccZ -55.8523826599&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8551</id>
		<title>Simulatsioonitarkvara</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8551"/>
		<updated>2011-04-24T14:13:45Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Webbots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===NAOSim===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.3 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hea:&lt;br /&gt;
* Küllaltki täpne tasakaalu simulatsioon.&lt;br /&gt;
* Kaamera&lt;br /&gt;
&lt;br /&gt;
Halb:&lt;br /&gt;
* Ei arvestata liigeste jäikust ning mootorite mehaanilist võimekust.&lt;br /&gt;
* Ei simuleeri sonareid&lt;br /&gt;
&lt;br /&gt;
===Webbots===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; PRO 6.3.4 &amp;lt;/span&amp;gt;&lt;br /&gt;
Paigaldusjuhend: http://www.cyberbotics.com/nao/&lt;br /&gt;
&lt;br /&gt;
Hea:&lt;br /&gt;
* Kaamera&lt;br /&gt;
* Sonarid&lt;br /&gt;
* Arvestatakse mootorite võimekusega&lt;br /&gt;
&lt;br /&gt;
Halb:&lt;br /&gt;
* Tasakaalumoodul NaoQi versioon 1.10.10 sisuliselt ei tööta. Tegevused, mis NAOSim ja reaalse NAO puhul töötavad viivad siin kukkumiseni (Tai-chi demoplokk Choregraphes). Pärast kukkumist püstitõusmise käivitamine teeb kõhuli asendist liigutusi, mida peaks tegema selili asendist ja vastupidi (üleval ja all on vahetuses). &lt;br /&gt;
&lt;br /&gt;
Viimase probleemi tõttu hetkel kasutuskõlbmatu.&lt;br /&gt;
&lt;br /&gt;
Mõõdetud akseleromeetrite väljund NAO seisvas püstises asendis kinnitab, et Webots simuleerib kiirendust vastassuunaliselt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Webots&lt;br /&gt;
&lt;br /&gt;
AccX 0.753286540508&lt;br /&gt;
AccY -0.0355014316738&lt;br /&gt;
AccZ 9.86777114868&lt;br /&gt;
&lt;br /&gt;
NAOSim:&lt;br /&gt;
&lt;br /&gt;
AccX -4.06194591522&lt;br /&gt;
AccY 0.113250367343&lt;br /&gt;
AccZ -55.8523826599&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8550</id>
		<title>Simulatsioonitarkvara</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8550"/>
		<updated>2011-04-24T14:12:31Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===NAOSim===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.3 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hea:&lt;br /&gt;
* Küllaltki täpne tasakaalu simulatsioon.&lt;br /&gt;
* Kaamera&lt;br /&gt;
&lt;br /&gt;
Halb:&lt;br /&gt;
* Ei arvestata liigeste jäikust ning mootorite mehaanilist võimekust.&lt;br /&gt;
* Ei simuleeri sonareid&lt;br /&gt;
&lt;br /&gt;
===Webbots===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; PRO 6.3.4 &amp;lt;/span&amp;gt;&lt;br /&gt;
Paigaldusjuhend: http://www.cyberbotics.com/nao/&lt;br /&gt;
&lt;br /&gt;
Hea:&lt;br /&gt;
* Kaamera&lt;br /&gt;
* Sonarid&lt;br /&gt;
* Arvestatakse mootorite võimekusega&lt;br /&gt;
&lt;br /&gt;
Halb:&lt;br /&gt;
* Tasakaalumoodul NaoQi versioon 1.10.10 sisuliselt ei tööta. Tegevused, mis NAOSim ja reaalse NAO puhul töötavad viivad siin kukkumiseni (Tai-chi demoplokk Choregraphes). Pärast kukkumist püstitõusmise käivitamine teeb kõhuli asendist liigutusi, mida peaks tegema selili asendist ja vastupidi (üleval ja all on vahetuses). &lt;br /&gt;
&lt;br /&gt;
Viimase probleemi tõttu hetkel kasutuskõlbmatu.&lt;br /&gt;
&lt;br /&gt;
Mõõdetud aktseleromeetrite väljund NAO seisvas püstises asendis kinnitab, et Webots simuleerib kiirendust vastassuunaliselt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Webots&lt;br /&gt;
&lt;br /&gt;
AccX 0.753286540508&lt;br /&gt;
AccY -0.0355014316738&lt;br /&gt;
AccZ 9.86777114868&lt;br /&gt;
&lt;br /&gt;
NAOSim:&lt;br /&gt;
&lt;br /&gt;
AccX -4.06194591522&lt;br /&gt;
AccY 0.113250367343&lt;br /&gt;
AccZ -55.8523826599&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8549</id>
		<title>Simulatsioonitarkvara</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8549"/>
		<updated>2011-04-24T13:42:22Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Webbots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===NAOSim===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.3 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hea:&lt;br /&gt;
* Küllaltki täpne tasakaalu simulatsioon.&lt;br /&gt;
* Kaamera&lt;br /&gt;
&lt;br /&gt;
Halb:&lt;br /&gt;
* Ei arvestata liigeste jäikust ning mootorite mehaanilist võimekust.&lt;br /&gt;
* Ei simuleeri sonareid&lt;br /&gt;
&lt;br /&gt;
===Webbots===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; PRO 6.3.4 &amp;lt;/span&amp;gt;&lt;br /&gt;
Paigaldusjuhend: http://www.cyberbotics.com/nao/&lt;br /&gt;
&lt;br /&gt;
Hea:&lt;br /&gt;
* Kaamera&lt;br /&gt;
* Sonarid&lt;br /&gt;
* Arvestatakse mootorite võimekusega&lt;br /&gt;
&lt;br /&gt;
Halb:&lt;br /&gt;
* Tasakaalumoodul NaoQi versioon 1.10.10 sisuliselt ei tööta. Tegevused, mis NAOSim ja reaalse NAO puhul töötavad viivad siin kukkumiseni (Tai-chi demoplokk Choregraphes). Pärast kukkumist püstitõusmise käivitamine teeb kõhuli asendist liigutusi, mida peaks tegema selili asendist ja vastupidi (üleval ja all on vahetuses). &lt;br /&gt;
&lt;br /&gt;
Viimase probleemi tõttu hetkel kasutuskõlbmatu.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8548</id>
		<title>Simulatsioonitarkvara</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8548"/>
		<updated>2011-04-24T13:41:24Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===NAOSim===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.3 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hea:&lt;br /&gt;
* Küllaltki täpne tasakaalu simulatsioon.&lt;br /&gt;
* Kaamera&lt;br /&gt;
&lt;br /&gt;
Halb:&lt;br /&gt;
* Ei arvestata liigeste jäikust ning mootorite mehaanilist võimekust.&lt;br /&gt;
* Ei simuleeri sonareid&lt;br /&gt;
&lt;br /&gt;
===Webbots===&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; PRO 6.3.4 &amp;lt;/span&amp;gt;&lt;br /&gt;
Paigaldusjuhend: [[http://www.cyberbotics.com/nao/]]&lt;br /&gt;
&lt;br /&gt;
Hea:&lt;br /&gt;
* Kaamera&lt;br /&gt;
* Sonarid&lt;br /&gt;
* Arvestatakse mootorite võimekusega&lt;br /&gt;
&lt;br /&gt;
Halb:&lt;br /&gt;
* Tasakaalumoodul NaoQi versioon 1.10.10 sisuliselt ei tööta. Tegevused, mis NAOSim ja reaalse NAO puhul töötavad viivad siin kukkumiseni (Tai-chi demoplokk Chorgraphes). Pärast kukkumist püstitõusmise käivitamine teeb kõhuli asendist liigutusi, mida peaks tegema selili asendist ja vastupidi (üleval ja all on vahetuses). &lt;br /&gt;
&lt;br /&gt;
Viimase probleemi tõttu hetkel kasutuskõlbmatu.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8547</id>
		<title>Simulatsioonitarkvara</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=Simulatsioonitarkvara&amp;diff=8547"/>
		<updated>2011-04-24T13:23:36Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: Created page with '===NAOSim=== Hea:   Halb:   ===Webbots=== Hea:   Halb:'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===NAOSim===&lt;br /&gt;
Hea:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Halb:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Webbots===&lt;br /&gt;
Hea:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Halb:&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=NAO&amp;diff=8546</id>
		<title>NAO</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=NAO&amp;diff=8546"/>
		<updated>2011-04-24T13:22:15Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Arendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Ülevaade==&lt;br /&gt;
&lt;br /&gt;
===Nao ühendamine arvutiga===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Kui IP saamine õnnestub ütleb NAO oma IP aadressi kui tema kõhul olevat nuppu vajutada. Navigeerides veebibrauseriga &amp;lt;nowiki&amp;gt;http://(NAO IP)&amp;lt;/nowiki&amp;gt; lehele on võimalik muuta mõningaid seadeid ning näha staatuse informatsiooni. Kui ligiduses on traadita võrke peaksid need ilmuma &amp;quot;Networks&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Pärast traadita ühenduse loomist tuleks meelde jätta wireless võrgust saadud IP (&amp;quot;Networks&amp;quot; kuval) ning ühendada lahti ethernet kaabel. Pärast seda kui wireless võrk on korra juba valitud saab NAO ühendada end sellega automaatselt (&amp;quot;Wireless&amp;quot; nimekirjas on võrk märgitud &amp;quot;favorite&amp;quot; = 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).  &lt;br /&gt;
&lt;br /&gt;
===NaoQi===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;nowiki&amp;gt;http://NaoIp:9559/full&amp;lt;/nowiki&amp;gt;, 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.&lt;br /&gt;
   &lt;br /&gt;
NaoQi taaskäivitamiseks tuleb Nao veebikeskonnast valida &amp;quot;Advanced&amp;quot;-&amp;gt;&amp;quot;NaoQi&amp;quot; ning &amp;quot;Restart&amp;quot;, sama tulemuse annab NAO välja- ja sisselülitamine.&lt;br /&gt;
&lt;br /&gt;
===BonJour===&lt;br /&gt;
&lt;br /&gt;
Windows platvormil sobib seadmete nagu NAO võrgust leidmiseks (tavaliselt teised arvutid, printerid jms). Tekib ikoonina Internet Exploreri tööriistaribale.&lt;br /&gt;
&lt;br /&gt;
===Arendus===&lt;br /&gt;
&lt;br /&gt;
[[Choregraphe| Visuaalprogrammeerimine: Choregraphe]]&lt;br /&gt;
&lt;br /&gt;
[[Python| Skriptid: Python]]&lt;br /&gt;
&lt;br /&gt;
[[C++| Programmeerimine: C++]]&lt;br /&gt;
&lt;br /&gt;
[[Simulatsioonitarkvara| Simulatsioonitarkvara]]&lt;br /&gt;
&lt;br /&gt;
====Operatsioonisüsteemide tugi====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! Windows XP 32 bit&lt;br /&gt;
! Windows 7 64 bit&lt;br /&gt;
! Ubuntu 10.10 32 bit&lt;br /&gt;
! Ubuntu 10.10 64 bit&lt;br /&gt;
|-&lt;br /&gt;
! Choregraphe&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| Ei tööta&lt;br /&gt;
|-&lt;br /&gt;
! Python&lt;br /&gt;
| Paigaldatav, töötab&lt;br /&gt;
| Paigaldatav, töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
|-&lt;br /&gt;
! C++, native compiling*&lt;br /&gt;
| Töötab. Vaja Microsoft Visual Studio 2005/2008 kompillaatorit&lt;br /&gt;
| ?&lt;br /&gt;
| Töötab&lt;br /&gt;
| Ei tööta&lt;br /&gt;
|-&lt;br /&gt;
! C++, cross-compiling**&lt;br /&gt;
| Ei toetata&lt;br /&gt;
| Ei toetata&lt;br /&gt;
| Töötab&lt;br /&gt;
| Ei tööta&lt;br /&gt;
|-&lt;br /&gt;
! NaoSim&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| [[NaoSim Linuxis| Paigaldatav]]&lt;br /&gt;
| [[NaoSim Linuxis| Paigaldatav]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;* Koodi kompilleerimine kompilleerivas masinas jooksetamiseks. Kui NAOQi käib kohalikus masinas (väga piiratud kasutusvõimalused)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;** Koodi kompilleerimine võõrale platvormile (NAOle).&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'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.&lt;br /&gt;
&lt;br /&gt;
===Tähelepanekuid===&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/greendoc/choregraphe/predefined_positions.html&lt;br /&gt;
&lt;br /&gt;
*'''Objektide tuvastamine''' - NAO suudab meelde jätta talle näidatud pilte ja neid hiljem ära tunda. Choreographe sees käib see View-&amp;gt;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.&lt;br /&gt;
&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/greendoc/choregraphe/video-monitor-tuto.html&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/greendoc/choregraphe/creating_movement_with_recording_mode.html&lt;br /&gt;
&lt;br /&gt;
*'''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 &amp;quot;Energy&amp;quot;), 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 &amp;quot;My battery is strong&amp;quot;), 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'''.    &lt;br /&gt;
&lt;br /&gt;
==Võimalused ja piirangud==&lt;br /&gt;
&lt;br /&gt;
===Kommunikatsioon===&lt;br /&gt;
&lt;br /&gt;
'''Bluetooth''' (Riistvara pole veel saadaval)&lt;br /&gt;
* 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.&lt;br /&gt;
* Kasutusalad: Boardiga saab kontrollida muud elektroonikat (digitaalsed, PWM, servo, mootorite kontrollimise väljundid). Väliste sensorite ühendamine, NAO kontrolli all olevad lisaseadmed. &lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/reddoc/bluetooth/bluetooth.html&lt;br /&gt;
&lt;br /&gt;
'''Infrapuna'''&lt;br /&gt;
* Andmevahetus otsenähtavusel. Eelseadistatav veebikeskkonna vahendusel. Soovituslik kasutuspiirkond ligikaudu 15cm NAO silmadest.&lt;br /&gt;
* Kasutusalad: Kahe NAO andmevahetus, IR suhtlust kasutavate seadmete kontrollimine, käskude vastuvõtmine IR puldi kaudu.&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/reddoc/infrared/purpose_description.html&lt;br /&gt;
&lt;br /&gt;
'''WiFi'''&lt;br /&gt;
* Ühendada NAO(d), arvutid samasse kohtvõrku. Suhtlus üle SOAP liidese (kasutajale koodis nähtamatu).&lt;br /&gt;
* 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.&lt;br /&gt;
* E-mail - Choregraphes. Võimaldab suvalisest mailiserveri kontost kirju vastu võtta ning saata.&lt;br /&gt;
* Internet - ?&lt;br /&gt;
&lt;br /&gt;
==Ülesandeid==&lt;br /&gt;
*[[NAO: Pea peal seismine| Pea peal seismine]]&lt;br /&gt;
&lt;br /&gt;
==Jooksvad probleemid==&lt;br /&gt;
&lt;br /&gt;
*'''[[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.&lt;br /&gt;
&lt;br /&gt;
==Linke==&lt;br /&gt;
&lt;br /&gt;
*[http://robocup.aldebaran-robotics.com/docs/site_en/index_doc.html Dokumentatsioon]&lt;br /&gt;
*http://robotzeitgeist.com/tag/aldebaran-robotics&lt;br /&gt;
*http://ognacgnouc.com/&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=NaoSim_Linuxis&amp;diff=8545</id>
		<title>NaoSim Linuxis</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=NaoSim_Linuxis&amp;diff=8545"/>
		<updated>2011-04-24T13:20:00Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Windowsi versiooni NaoSim tarkvarast on võimalik saada käima ka Linuxis kasutades WINE ühilduvuskihti.&lt;br /&gt;
&lt;br /&gt;
Testkeskkond: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; Ubuntu 10.10, WINE 1.3.15, NaoSim 1.10.3, Choregraphe 1.10.10&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Installeerida paketid wine ja winetricks&lt;br /&gt;
* Kasutades winetricksi lisada WINE'le vcrun2008 (MS Visual C++ libraries)&lt;br /&gt;
* Käivitada NaoSim paigaldus&lt;br /&gt;
* Selleks, et NaoSim töötaks on vaja registrisse lisada Choregraphe registreerimiskood, see jõab sinna ainult siis kui Choregraphe ise kävitatakse läbi WINE'i ning kood sisestatakse. Windowsi Choregraphe paigaldamine kasutades WINE ei õnnestunud, kuid Windowsi kettal juba olemas olnud versioon käivitus läbi WINE ideaalselt ning lisas vajalikud koodid WINE Windowsi registrisse.&lt;br /&gt;
&lt;br /&gt;
NaoSim peaks sellega olema töökorras, ning kasutatav koos Linuxi Choregraphe versiooniga, samas tuleb jälgida, et NaoSim kävitatakse enne kui Choregraphe kuna viimane blokeerib NaoSim naoqi jaoks vajalikud pordid. Choregraphe saab ühendada käivitatud simulatsiooni kasutades IPd 127.0.0.1 ning vaikeporti 9559.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=NAO:_Pea_peal_seismine&amp;diff=8544</id>
		<title>NAO: Pea peal seismine</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=NAO:_Pea_peal_seismine&amp;diff=8544"/>
		<updated>2011-04-24T13:17:49Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Tulemused */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Ülesanne==&lt;br /&gt;
Panna robot liikuma püstiasendist stabiilsesse pea peal seisu.&lt;br /&gt;
&lt;br /&gt;
==Vahendid==&lt;br /&gt;
Choregraphe (1.10.10), NAOSim (1.10.3)&lt;br /&gt;
&lt;br /&gt;
==Lahendus==&lt;br /&gt;
Choregraphe sisseehitatud funktsionaalsuse ärakasutamine. Animatsiooni võtmepunktide defineerimine. Kasutatud demoplokke: &amp;quot;Stand up&amp;quot;, &amp;quot;Sit down&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Käte ja pea asend on paigas enne maaga kokkupuudet, mis tähendab, et neid ei ole enam vaja keha raskuse all liigutada, mis osutus seda tegeva koodi füüsilistes katsetes problemaatiliseks. Eelmainitud põhjusel jääb pea &amp;quot;kuklasse&amp;quot; ning küünarvarred ei ole kehaga 90 kraadise nurga all (kuna liigutada ei saa, kuid keha peab olema võimeline ennast sellesse asendisse &amp;quot;lükkama&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==Kood==&lt;br /&gt;
[[File:headStand.crg]]&lt;br /&gt;
&lt;br /&gt;
==Tulemused==&lt;br /&gt;
&lt;br /&gt;
Simulatsioon:&lt;br /&gt;
Antud koodi puhul küllaltki heas lähenduses reaalsusega.&lt;br /&gt;
&lt;br /&gt;
Füüsiline robot:&lt;br /&gt;
[[File:NAO_head.avi]]&lt;br /&gt;
&lt;br /&gt;
Olulist:&lt;br /&gt;
# NAOSim simulatsioonis on NAO liigesed lõpmatult jäigad ja tugevad (st. robot võib ennast ka näppude peal maast lahti lükata, mis reaalsuses pole loomulikult võimalik.&lt;br /&gt;
# Pole võimalik lükata keha üles käte liigeste jõul samuti ei saa seda teha ühe jalaga (alustades madalast kükakil asendist)&lt;br /&gt;
# Kui mootorid on töös tõuseb nende temperatuur ning juhtudel, kus soovitud asendi saavutamine pole võimalik (midagi segab liigese liikumist, antud juhul näiteks ei suuda keha raskust kätelt üles lükata), siis läbib neid maksimaalne töövool niikaua kuni antakse käsk muu asend võtta või võimaldatakse õigesse olekusse minna. Võivad tekkida ülekuumenemise probleemid (sõnaline hoiatus NAOlt), mille tulemuseks on vähem jäigad liigesed. Samas lõpliku koodi versioonis stabiilne pea peal seismine vaadeldud 1 minuti jooksul küünarnukkide ja õlgade liigeste temperatuuri ei tõstnud eelkõige tänu sellele, et liigesed olid juba enne maaga kokkupuutumist vajalikus asendis. Kui stabiilses asendis mootorit liigutada, siis on tulemuseks tõenäoliselt kukkumine kuna liikumises mootor ei hoia enam mehaanilise pinge nii hästi oma asendit.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=NAO:_Pea_peal_seismine&amp;diff=8543</id>
		<title>NAO: Pea peal seismine</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=NAO:_Pea_peal_seismine&amp;diff=8543"/>
		<updated>2011-04-24T13:14:59Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Tulemused */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Ülesanne==&lt;br /&gt;
Panna robot liikuma püstiasendist stabiilsesse pea peal seisu.&lt;br /&gt;
&lt;br /&gt;
==Vahendid==&lt;br /&gt;
Choregraphe (1.10.10), NAOSim (1.10.3)&lt;br /&gt;
&lt;br /&gt;
==Lahendus==&lt;br /&gt;
Choregraphe sisseehitatud funktsionaalsuse ärakasutamine. Animatsiooni võtmepunktide defineerimine. Kasutatud demoplokke: &amp;quot;Stand up&amp;quot;, &amp;quot;Sit down&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Käte ja pea asend on paigas enne maaga kokkupuudet, mis tähendab, et neid ei ole enam vaja keha raskuse all liigutada, mis osutus seda tegeva koodi füüsilistes katsetes problemaatiliseks. Eelmainitud põhjusel jääb pea &amp;quot;kuklasse&amp;quot; ning küünarvarred ei ole kehaga 90 kraadise nurga all (kuna liigutada ei saa, kuid keha peab olema võimeline ennast sellesse asendisse &amp;quot;lükkama&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==Kood==&lt;br /&gt;
[[File:headStand.crg]]&lt;br /&gt;
&lt;br /&gt;
==Tulemused==&lt;br /&gt;
&lt;br /&gt;
Simulatsioon:&lt;br /&gt;
Antud koodi puhul küllaltki heas lähenduses reaalsusega.&lt;br /&gt;
&lt;br /&gt;
Füüsiline robot:&lt;br /&gt;
[[Media:NAO_head.avi]]&lt;br /&gt;
&lt;br /&gt;
Olulist:&lt;br /&gt;
# NAOSim simulatsioonis on NAO liigesed lõpmatult jäigad ja tugevad (st. robot võib ennast ka näppude peal maast lahti lükata, mis reaalsuses pole loomulikult võimalik.&lt;br /&gt;
# Pole võimalik lükata keha üles käte liigeste jõul samuti ei saa seda teha ühe jalaga (alustades madalast kükakil asendist)&lt;br /&gt;
# Kui mootorid on töös tõuseb nende temperatuur ning juhtudel, kus soovitud asendi saavutamine pole võimalik (midagi segab liigese liikumist, antud juhul näiteks ei suuda keha raskust kätelt üles lükata), siis läbib neid maksimaalne töövool niikaua kuni antakse käsk muu asend võtta või võimaldatakse õigesse olekusse minna. Võivad tekkida ülekuumenemise probleemid (sõnaline hoiatus NAOlt), mille tulemuseks on vähem jäigad liigesed. Samas lõpliku koodi versioonis stabiilne pea peal seismine vaadeldud 1 minuti jooksul küünarnukkide ja õlgade liigeste temperatuuri ei tõstnud eelkõige tänu sellele, et liigesed olid juba enne maaga kokkupuutumist vajalikus asendis. Kui stabiilses asendis mootorit liigutada, siis on tulemuseks tõenäoliselt kukkumine kuna liikumises mootor ei hoia enam mehaanilise pinge nii hästi oma asendit.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=NAO:_Pea_peal_seismine&amp;diff=8542</id>
		<title>NAO: Pea peal seismine</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=NAO:_Pea_peal_seismine&amp;diff=8542"/>
		<updated>2011-04-24T13:13:15Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Lahendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Ülesanne==&lt;br /&gt;
Panna robot liikuma püstiasendist stabiilsesse pea peal seisu.&lt;br /&gt;
&lt;br /&gt;
==Vahendid==&lt;br /&gt;
Choregraphe (1.10.10), NAOSim (1.10.3)&lt;br /&gt;
&lt;br /&gt;
==Lahendus==&lt;br /&gt;
Choregraphe sisseehitatud funktsionaalsuse ärakasutamine. Animatsiooni võtmepunktide defineerimine. Kasutatud demoplokke: &amp;quot;Stand up&amp;quot;, &amp;quot;Sit down&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Käte ja pea asend on paigas enne maaga kokkupuudet, mis tähendab, et neid ei ole enam vaja keha raskuse all liigutada, mis osutus seda tegeva koodi füüsilistes katsetes problemaatiliseks. Eelmainitud põhjusel jääb pea &amp;quot;kuklasse&amp;quot; ning küünarvarred ei ole kehaga 90 kraadise nurga all (kuna liigutada ei saa, kuid keha peab olema võimeline ennast sellesse asendisse &amp;quot;lükkama&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==Kood==&lt;br /&gt;
[[File:headStand.crg]]&lt;br /&gt;
&lt;br /&gt;
==Tulemused==&lt;br /&gt;
&lt;br /&gt;
Simulatsioon:&lt;br /&gt;
Antud koodi puhul küllaltki heas lähenduses reaalsusega.&lt;br /&gt;
&lt;br /&gt;
Füüsiline robot:&lt;br /&gt;
[[Media:NAO_head.avi]]&lt;br /&gt;
&lt;br /&gt;
Olulist:&lt;br /&gt;
# NAOSim simulatsioonis on NAO liigesed lõpmatult jäigad ja tugevad (st. robot võib ennast ka näppude peal maast lahti lükata, mis reaalsuses pole loomulikult võimalik.&lt;br /&gt;
# Pole võimalik lükata keha üles käte liigeste jõul samuti ei saa seda teha ühe jalaga (alustades madalast kükakil asendist)&lt;br /&gt;
# Kui mootorid on töös tõuseb nende temperatuur ning juhtudel, kus soovitud asendi saavutamine pole võimalik (midagi segab liigese liikumist, antud juhul näiteks ei suuda keha raskust kätelt üles lükata), siis läbib neid maksimaalne töövool niikaua kuni antakse käsk muu asend võtta või võimaldatakse õigesse olekusse minna. Võivad tekkida üleluumenemise probleemid (sõnaline hoiatus NAOlt), mille tulemuseks on vähem jäigad liigesed. Samas lõpliku koodi versioonis stabiilne pea peal seismine vaadeldud 1 minuti jooksuk küünarnukkide ja õlgade liigeste temperatuuri ei tõstnud eelkõige tänu sellele, et liigesed olid juba enne maaga kokkupuutumist vajalikus asendis. Kui stabiilses asendis mootorit liigutada, siis on tulemuseks tõenäoliselt kukkumine kuna liikumises mootor ei hoia enam mehaanilise pinge nii hästi oma asendit.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=File:HeadStand.crg&amp;diff=8541</id>
		<title>File:HeadStand.crg</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=File:HeadStand.crg&amp;diff=8541"/>
		<updated>2011-04-24T13:11:50Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: uploaded a new version of &amp;quot;File:HeadStand.crg&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=NAO:_Pea_peal_seismine&amp;diff=8540</id>
		<title>NAO: Pea peal seismine</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=NAO:_Pea_peal_seismine&amp;diff=8540"/>
		<updated>2011-04-24T13:08:42Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Ülesanne==&lt;br /&gt;
Panna robot liikuma püstiasendist stabiilsesse pea peal seisu.&lt;br /&gt;
&lt;br /&gt;
==Vahendid==&lt;br /&gt;
Choregraphe (1.10.10), NAOSim (1.10.3)&lt;br /&gt;
&lt;br /&gt;
==Lahendus==&lt;br /&gt;
Choregraphe sisseehitatud funktsionaalsuse ärakasutamine. Animatsiooni võtmepunktide defineerimine. Käte ja pea asend on paigas enne maaga kokkupuudet, mis tähendab, et neid ei ole enam vaja keha raskuse all liigutada, mis osutus seda tegeva koodi füüsilistes katsetes problemaatiliseks. Eelmainitud põhjusel jääb pea 'kuklasse' ning küünarvarred ei ole kehaga 90 kraadise nurga all (kuna liigutada ei saa, kuid keha peab olema võimeline ennast sellesse asendisse 'lükkama').&lt;br /&gt;
&lt;br /&gt;
==Kood==&lt;br /&gt;
[[File:headStand.crg]]&lt;br /&gt;
&lt;br /&gt;
==Tulemused==&lt;br /&gt;
&lt;br /&gt;
Simulatsioon:&lt;br /&gt;
Antud koodi puhul küllaltki heas lähenduses reaalsusega.&lt;br /&gt;
&lt;br /&gt;
Füüsiline robot:&lt;br /&gt;
[[Media:NAO_head.avi]]&lt;br /&gt;
&lt;br /&gt;
Olulist:&lt;br /&gt;
# NAOSim simulatsioonis on NAO liigesed lõpmatult jäigad ja tugevad (st. robot võib ennast ka näppude peal maast lahti lükata, mis reaalsuses pole loomulikult võimalik.&lt;br /&gt;
# Pole võimalik lükata keha üles käte liigeste jõul samuti ei saa seda teha ühe jalaga (alustades madalast kükakil asendist)&lt;br /&gt;
# Kui mootorid on töös tõuseb nende temperatuur ning juhtudel, kus soovitud asendi saavutamine pole võimalik (midagi segab liigese liikumist, antud juhul näiteks ei suuda keha raskust kätelt üles lükata), siis läbib neid maksimaalne töövool niikaua kuni antakse käsk muu asend võtta või võimaldatakse õigesse olekusse minna. Võivad tekkida üleluumenemise probleemid (sõnaline hoiatus NAOlt), mille tulemuseks on vähem jäigad liigesed. Samas lõpliku koodi versioonis stabiilne pea peal seismine vaadeldud 1 minuti jooksuk küünarnukkide ja õlgade liigeste temperatuuri ei tõstnud eelkõige tänu sellele, et liigesed olid juba enne maaga kokkupuutumist vajalikus asendis. Kui stabiilses asendis mootorit liigutada, siis on tulemuseks tõenäoliselt kukkumine kuna liikumises mootor ei hoia enam mehaanilise pinge nii hästi oma asendit.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=File:NAO_head.avi&amp;diff=8539</id>
		<title>File:NAO head.avi</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=File:NAO_head.avi&amp;diff=8539"/>
		<updated>2011-04-24T13:03:17Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=NAO:_Pea_peal_seismine&amp;diff=8538</id>
		<title>NAO: Pea peal seismine</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=NAO:_Pea_peal_seismine&amp;diff=8538"/>
		<updated>2011-04-24T13:01:57Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Ülesanne==&lt;br /&gt;
Panna robot liikuma püstiasendist stabiilsesse pea peal seisu.&lt;br /&gt;
&lt;br /&gt;
==Vahendid==&lt;br /&gt;
Choregraphe (1.10.10), NAOSim (1.10.3)&lt;br /&gt;
&lt;br /&gt;
==Lahendus==&lt;br /&gt;
Choregraphe sisseehitatud funktsionaalsuse ärakasutamine. Animatsiooni võtmepunktide defineerimine.&lt;br /&gt;
&lt;br /&gt;
==Kood==&lt;br /&gt;
[[File:headStand.crg]]&lt;br /&gt;
&lt;br /&gt;
==Tulemused==&lt;br /&gt;
&lt;br /&gt;
Simulatsioon:&lt;br /&gt;
Antud koodi puhul küllaltki heas lähenduses reaalsusega.&lt;br /&gt;
&lt;br /&gt;
Füüsiline robot:&lt;br /&gt;
[[File:NAO_head.avi]]&lt;br /&gt;
&lt;br /&gt;
Olulist:&lt;br /&gt;
# NAOSim simulatsioonis on NAO liigesed lõpmatult jäigad ja tugevad (st. robot võib ennast ka näppude peal maast lahti lükata, mis reaalsuses pole loomulikult võimalik.&lt;br /&gt;
# Pole võimalik lükata keha üles käte liigeste jõul samuti ei saa seda teha ühe jalaga (alustades madalast kükakil asendist)&lt;br /&gt;
# Kui mootorid on töös tõuseb nende temperatuur ning juhtudel, kus soovitud asendi saavutamine pole võimalik (midagi segab liigese liikumist, antud juhul näiteks ei suuda keha raskust kätelt üles lükata), siis läbib neid maksimaalne töövool niikaua kuni antakse käsk muu asend võtta või võimaldatakse õigesse olekusse minna. Võivad tekkida üleluumenemise probleemid (sõnaline hoiatus NAOlt), mille tulemuseks on vähem jäigad liigesed. Samas lõpliku koodi versioonis stabiilne pea peal seismine vaadeldud 1 minuti jooksuk küünarnukkide ja õlgade liigeste temperatuuri ei tõstnud eelkõige tänu sellele, et liigesed olid juba enne maaga kokkupuutumist vajalikus asendis. Kui stabiilses asendis mootorit liigutada, siis on tulemuseks tõenäoliselt kukkumine kuna liikumises mootor ei hoia enam mehaanilise pinge nii hästi oma asendit.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8428</id>
		<title>SonariProbleem</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8428"/>
		<updated>2011-04-09T18:04:52Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Stabiilsustestid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Filtreeritud väärtused==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;SonarRightDetected&amp;quot; või &amp;quot;SonarLeftDetected&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Samalaadse tulemuse andis ka Pythoni skript. Kui käivitasin [[Python#Näiteprogramm | näiteskripti]] ja suunasin sonarid lakke olid loetud väärtused:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.569999992847&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.579999983311&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Ülaltoodud &amp;quot;SonarRightDetected&amp;quot; väärtused on eelnevalt läbinud filtri (töötluse) ning ei kajasta otseselt seda, mida sonar mõõtis.&lt;br /&gt;
&lt;br /&gt;
==Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevas katses liigutati NAOd mööda tuba ringi viies teda seintest lähemale/kaugemale kokku võeti 100 lugemit igale sonari loetud väärtusele järgneb filtri läbinud väärtus.&lt;br /&gt;
&lt;br /&gt;
Väljundi stabiilsuse ning filtreerimise testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import time&lt;br /&gt;
 import numpy&lt;br /&gt;
 from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
 IP = sys.argv[1] // Käsurea argumendid&lt;br /&gt;
 SAMPLES = sys.argv[2]&lt;br /&gt;
 PORT = 9559&lt;br /&gt;
&lt;br /&gt;
 sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
 mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
 sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0) // Uuenda 500ms tagant, täpsus 1.0&lt;br /&gt;
&lt;br /&gt;
 leftValues=[]&lt;br /&gt;
 rightValues=[]&lt;br /&gt;
&lt;br /&gt;
 for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1) // Oota 1 sekund&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0) // 0 tähendab uusima väärtuse lugemist, otse sonarist saadud väärtus &lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;) // Läbinud filtri&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
	leftValues.append(float(left))&lt;br /&gt;
	rightValues.append(float(right))&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
 print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
 print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
 print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
 print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
 sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljundifail: [[File:NAO_sonarTest_output.txt]]&lt;br /&gt;
&lt;br /&gt;
Väljundis:&lt;br /&gt;
&lt;br /&gt;
 left: 1.66999995708 right: 1.39999997616&lt;br /&gt;
 filter left: 0.389999985695 right: 0.699999988079&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.87999999523 right: 1.40999996662&lt;br /&gt;
 filter left: 0.439999997616 right: 0.649999976158&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.310000002384 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.289999991655 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
&lt;br /&gt;
Väljundist on väga suur erinevus filtreermata ning filtreeritud väärtuste vahel, samuti eksisteerib väljund alati, isegi siis kui lähemalasetsevad objektid on kaugemal kui 1,5m nagu on dokumentatsiooni järgi suurim tuvastuskaugus. Katse lõpus arvutatud keskmine ning standardhälve ei oma selle katse kontekstis erilist tähendust kuna sonarid oli liikumises.&lt;br /&gt;
&lt;br /&gt;
==Mitmekordse kaja väärtused==&lt;br /&gt;
&lt;br /&gt;
NAO Sonar mõõdab kaugusi ka teistele kajadele peale esimese. Mällu salvestatakse 10 väärtust. Järgnev kood prindib ekraanile kõik kümme väärtust ning lisaks nenede põhjal arvutatud 'SonarLeftDetected' väärtuse.&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 1000, 1.0)&lt;br /&gt;
&lt;br /&gt;
time.sleep(10)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
 	time.sleep(2)&lt;br /&gt;
	print &amp;quot;Iteration&amp;quot;,i&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value1&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value2&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value3&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value4&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value5&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value6&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value7&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value8&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value9&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 0.909999966621&lt;br /&gt;
 1.49000000954&lt;br /&gt;
 1.7199999094&lt;br /&gt;
 2.06999993324&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 0.899999976158&lt;br /&gt;
 1.48000001907&lt;br /&gt;
 2.0&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Versioonis 1.10.11 ei eksisteeri mälus enam väärtust &amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, mida esindab väljundis nüüd &amp;quot;None&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud vabasse ruumi: &lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.45999991894&lt;br /&gt;
 1.87999999523&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.44999992847&lt;br /&gt;
 1.86000001431&lt;br /&gt;
 2.22000002861&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tulemustest järeldub, et kui takistused on liiga kaugel tagastab filtreeritud väärtus alati minimaalse mõõteväärtuse, kuigi mõõtetulemused on olemas. Väärtused suuremad kui 2.54 tähendavad suurima tõenäosusega, et niimitmendat kaja ei registreeritud piiratud aja vältel. Samas võib semantiliselt lugeda 'SonarLeftDetected' tulemuse korrektseks, sest nagu nimest järeldub peaks see väärtust esindama takistust, mille tuvastamine liiga kaugelt tekitab liigset andmemüra ning takistusega võib tegeleda kui see robotile reaalselt ette satub.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud ligi poole meetri kauguselt vastu toa nurka:&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.53999996185&lt;br /&gt;
 2.03999996185&lt;br /&gt;
 2.38999986649&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.57999992371&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Mingisugusel põhjusel on lähendalt mõõdetud väärtused filtris olemas, kuid ei ole sarnased erinevate kajade tulemustega, võimalik, et esimese väärtuse kadumine tähendab, et siin esitatakse andmed alates teisest saabunud kajast. Hiljem sooritatud testides ilmus esimene kaja väärtus tagasi ning pärast seda pole õnnestunud viga korrata, küllaga võib 'None' esineda filtreeritud väärtuste lugemisel ning kutsuv kood peaks selleks valmis olema ('None' on Pythonis ekvivalentne samaks otstarbeks kasutatava 'null' väärtusega).&lt;br /&gt;
&lt;br /&gt;
==Stabiilsustestid==&lt;br /&gt;
&lt;br /&gt;
===Standardhälbe arvutamine===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud vastu seina (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -[[#Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus|link]]-&lt;br /&gt;
&lt;br /&gt;
Tulemused on arvutatud meetrites.&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 Mean left: 0.239333327611&lt;br /&gt;
 Mean right: 0.239333327611&lt;br /&gt;
 Standard deviation left: 0.00249443959597&lt;br /&gt;
 Standard deviation right: 0.00359011179731&lt;br /&gt;
&lt;br /&gt;
Tulemused: Väljund näitab, et jõutud on minimaalse tuvastuskauguseni, kus kauguse täpne mõõtmine pole enam võimalik, kui takistuse olemasolu võib järeldada. Väljund väga stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.Suunatud ~30cm kauguselt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 Mean left: 0.438333324591&lt;br /&gt;
 Mean right: 0.436999990543&lt;br /&gt;
 Standard deviation left: 0.00582142222363&lt;br /&gt;
 Standard deviation right: 0.00525991948363&lt;br /&gt;
&lt;br /&gt;
Tulemused: Keskmistel mõõtmiskaugustel taaskord küllaltki stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud vabasse ruumi. Takistused üle kahe meetri kaugusel. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62999999523&lt;br /&gt;
 left: 1.62999999523 right: 1.40999996662&lt;br /&gt;
 left: 1.64999997616 right: 1.26999998093&lt;br /&gt;
 left: 1.64999997616 right: 1.78999996185&lt;br /&gt;
 left: 1.64999997616 right: 1.55999994278&lt;br /&gt;
 left: 1.64999997616 right: 1.63999998569&lt;br /&gt;
 left: 1.65999996662 right: 1.65999996662&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.64999997616 right: 1.81999993324&lt;br /&gt;
 left: 1.64999997616 right: 1.83999991417&lt;br /&gt;
 left: 1.65999996662 right: 1.86000001431&lt;br /&gt;
 left: 1.84999990463 right: 1.87999999523&lt;br /&gt;
 left: 1.66999995708 right: 1.84999990463&lt;br /&gt;
 left: 1.65999996662 right: 1.87000000477&lt;br /&gt;
 Mean left: 1.65466664235&lt;br /&gt;
 Mean right: 1.67933330536&lt;br /&gt;
 Standard deviation left: 0.0387928804152&lt;br /&gt;
 Standard deviation right: 0.149620252664&lt;br /&gt;
&lt;br /&gt;
Tulemused: Ei tohiks sellistel kaugustel takistusi tuvastada, kuid testi läbiviimiseks valitud ruumis võib olla tegimist kajaprobleemidega. Rahuldav väljundi stabiilsus.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus tühjas ruumis===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Vaba ruum, seinad vähemalt 2.5m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
def joonis(timestep, list1,list2,list3,list4):&lt;br /&gt;
    #joonise loomine&lt;br /&gt;
    fig = plt.figure()&lt;br /&gt;
    ax1 = fig.add_subplot(111)&lt;br /&gt;
    &lt;br /&gt;
    ax1.plot(timestep,list1, 'b',label=&amp;quot;L&amp;quot;,marker='+')&lt;br /&gt;
    ax1.plot(timestep,list2,'r',label=&amp;quot;R&amp;quot;,marker='+')&lt;br /&gt;
&lt;br /&gt;
    ax1.plot(timestep,list3,'c', label=&amp;quot;LF&amp;quot;,marker='o')&lt;br /&gt;
    ax1.plot(timestep,list4,'m',label=&amp;quot;RF&amp;quot;,marker='o')&lt;br /&gt;
    &lt;br /&gt;
    ax1.set_xlabel('time (s)')&lt;br /&gt;
    ax1.set_ylabel('distance (cm)', color='g')&lt;br /&gt;
    for tl in ax1.get_yticklabels():&lt;br /&gt;
        tl.set_color('g')&lt;br /&gt;
    &lt;br /&gt;
    plt.legend()&lt;br /&gt;
    plt.show()&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0)&lt;br /&gt;
&lt;br /&gt;
leftValues=[]&lt;br /&gt;
rightValues=[]&lt;br /&gt;
leftValuesF=[]&lt;br /&gt;
rightValuesF=[]&lt;br /&gt;
timestep=[]&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1)&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
	leftValues.append(float(left)*100)&lt;br /&gt;
	rightValues.append(float(right)*100)&lt;br /&gt;
	if(leftD == None):&lt;br /&gt;
		leftD=0&lt;br /&gt;
	if(rightD == None):&lt;br /&gt;
		rightD=0&lt;br /&gt;
	leftValuesF.append(float(leftD)*100)&lt;br /&gt;
	rightValuesF.append(float(rightD)*100)&lt;br /&gt;
	timestep.append(i)&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
joonis(timestep, leftValues,rightValues,leftValuesF,rightValuesF)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljund:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kasutaja@Huginn:~/Desktop$ python NAO_sonarTest_plot.py 172.19.2.79 50&lt;br /&gt;
left: 1.05999994278 right: 1.09000003338&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.59999990463&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.37000000477 right: 1.56999993324&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.22000002861&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.10000002384 right: 1.11000001431&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
...&lt;br /&gt;
left: 1.04999995232 right: 1.25999999046&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
Mean left: 126.299996376&lt;br /&gt;
Mean right: 125.379997134&lt;br /&gt;
Standard deviation left: 31.8472923989&lt;br /&gt;
Standard deviation right: 19.6243602903&lt;br /&gt;
INFO: Destroying broker 'ALProxyBroker'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Viimased arvutused on tehtud cm-tes.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonar_output.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Esineb väga tugev väljundi kõikumine (standardhälve 32 ja 20 cm) samas filtreeritud väärtused ei muutu. Graafik viitab, et vasaku ja parema sonari mõõdetud tulemused on omavahel teatavas korrellatsioonis.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (puitplaat)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, seinad vähemalt 2 m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: [[#Väljundite võrdlus tühjas ruumis |-link-]]&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Puidust plaat mõõtmetega 55 cm x 77 cm liigutatud 30 cm kaupa sonaritele lähemale, numbrid graafiku ülemisel serval tähistavad plaadi kaugust (täpsus ligikaudu 10 cm). Esimesed mõõtmised &amp;gt; 150 cm tehtud ilma plaadita. Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_plaat.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Plaadi väikeste mõõtmete tõttu tuvastatakse see alles vahemaal alla 90 cm. Sellele eelnevatel kõrgustel püsivad vasaku sonari mõõtetulemused stabiiliselt 110 cm piirimail kui parem sonar annab võrdlemisi mürarikka väljundi, mida järgib teataval määral ka talle vastav filtri läbinud väärtus. Kuna mõõtetulemuste saamiseks liigutati plaati NAO ees, siis on võimalik, et lugemid tulevad ümbritsevast keskkonnast ehk antud juhul plaadi hoidja jalgadest. Lisakaja võib põhjustada ka 60 cm alas nähtava filtrite ja töötlemata tulemuste vahelise erinevuse kuna esimene kasutab arvutustes kuni üheksat mõõdetud kaja. Graafikust võib paremal juhul järeldada seda, et sonarid sobivad seinast väiksemate takistuste tuvastamiseks vahemaal alla 50 cm, kus väljund on väiksemas sõltuvuses muust ümbritsevast. Samuti on selles piirkonnas parema ja vasaku sonari tulemused omavahel küllaltki heas lähenduses.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: [[#Väljundite võrdlus tühjas ruumis |-link-]]&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein1.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Taaskord annab vasak sonar vähem mürarikkaid tulemusi kui parem, kuigi  võib öelda, et sein on tuvastatav kõikidel mõõdetud kaugustel. Filtrid LeftObstacleDetected ja RightObstacleDetected hakkavad reaalsuse lähedasi tulemusi andma alles 60 cm piirimail. Sellele eelnev võib aga tekitada probleeme kuna pole kindel, kas tulemus 60 cm tähendab objekti või tuvastuskaugusest väljumist, eelnevad katsed näitavad filtreeritud väärtuste küllaltki juhuslikku asetust suurematel kaugustel ning sellega tuleks kasutamisel arvesta. Viimane annab ka seletuse, miks 'Endless walk' demoprogrammis kasutatavad filtreeritud sonari mõõtetulemused polnud ootuspärased ning tekitasid vaatlusel olematute takistuste tuvastamise vigu. 10 cm on alla sonari kasutamise piiri ning seal saadud lugemid annavad minimaalse võimaliku väljundi.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein, sonaritel kattev plastikriba)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: [[#Väljundite võrdlus tühjas ruumis |-link-]]&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Koos sonari avasi ümbritseva ornamentaalse plastikribaga.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein2.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Graafik ei erine oluliselt sonareid ümbritseva plastikribata saadud tulemustest ning võib järeldada, et selle olemasolu ei mõjuta oluliselt väljundit.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8427</id>
		<title>SonariProbleem</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8427"/>
		<updated>2011-04-09T18:03:45Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Stabiilsustestid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Filtreeritud väärtused==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;SonarRightDetected&amp;quot; või &amp;quot;SonarLeftDetected&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Samalaadse tulemuse andis ka Pythoni skript. Kui käivitasin [[Python#Näiteprogramm | näiteskripti]] ja suunasin sonarid lakke olid loetud väärtused:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.569999992847&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.579999983311&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Ülaltoodud &amp;quot;SonarRightDetected&amp;quot; väärtused on eelnevalt läbinud filtri (töötluse) ning ei kajasta otseselt seda, mida sonar mõõtis.&lt;br /&gt;
&lt;br /&gt;
==Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevas katses liigutati NAOd mööda tuba ringi viies teda seintest lähemale/kaugemale kokku võeti 100 lugemit igale sonari loetud väärtusele järgneb filtri läbinud väärtus.&lt;br /&gt;
&lt;br /&gt;
Väljundi stabiilsuse ning filtreerimise testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import time&lt;br /&gt;
 import numpy&lt;br /&gt;
 from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
 IP = sys.argv[1] // Käsurea argumendid&lt;br /&gt;
 SAMPLES = sys.argv[2]&lt;br /&gt;
 PORT = 9559&lt;br /&gt;
&lt;br /&gt;
 sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
 mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
 sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0) // Uuenda 500ms tagant, täpsus 1.0&lt;br /&gt;
&lt;br /&gt;
 leftValues=[]&lt;br /&gt;
 rightValues=[]&lt;br /&gt;
&lt;br /&gt;
 for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1) // Oota 1 sekund&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0) // 0 tähendab uusima väärtuse lugemist, otse sonarist saadud väärtus &lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;) // Läbinud filtri&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
	leftValues.append(float(left))&lt;br /&gt;
	rightValues.append(float(right))&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
 print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
 print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
 print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
 print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
 sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljundifail: [[File:NAO_sonarTest_output.txt]]&lt;br /&gt;
&lt;br /&gt;
Väljundis:&lt;br /&gt;
&lt;br /&gt;
 left: 1.66999995708 right: 1.39999997616&lt;br /&gt;
 filter left: 0.389999985695 right: 0.699999988079&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.87999999523 right: 1.40999996662&lt;br /&gt;
 filter left: 0.439999997616 right: 0.649999976158&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.310000002384 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.289999991655 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
&lt;br /&gt;
Väljundist on väga suur erinevus filtreermata ning filtreeritud väärtuste vahel, samuti eksisteerib väljund alati, isegi siis kui lähemalasetsevad objektid on kaugemal kui 1,5m nagu on dokumentatsiooni järgi suurim tuvastuskaugus. Katse lõpus arvutatud keskmine ning standardhälve ei oma selle katse kontekstis erilist tähendust kuna sonarid oli liikumises.&lt;br /&gt;
&lt;br /&gt;
==Mitmekordse kaja väärtused==&lt;br /&gt;
&lt;br /&gt;
NAO Sonar mõõdab kaugusi ka teistele kajadele peale esimese. Mällu salvestatakse 10 väärtust. Järgnev kood prindib ekraanile kõik kümme väärtust ning lisaks nenede põhjal arvutatud 'SonarLeftDetected' väärtuse.&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 1000, 1.0)&lt;br /&gt;
&lt;br /&gt;
time.sleep(10)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
 	time.sleep(2)&lt;br /&gt;
	print &amp;quot;Iteration&amp;quot;,i&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value1&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value2&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value3&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value4&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value5&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value6&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value7&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value8&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value9&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 0.909999966621&lt;br /&gt;
 1.49000000954&lt;br /&gt;
 1.7199999094&lt;br /&gt;
 2.06999993324&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 0.899999976158&lt;br /&gt;
 1.48000001907&lt;br /&gt;
 2.0&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Versioonis 1.10.11 ei eksisteeri mälus enam väärtust &amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, mida esindab väljundis nüüd &amp;quot;None&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud vabasse ruumi: &lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.45999991894&lt;br /&gt;
 1.87999999523&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.44999992847&lt;br /&gt;
 1.86000001431&lt;br /&gt;
 2.22000002861&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tulemustest järeldub, et kui takistused on liiga kaugel tagastab filtreeritud väärtus alati minimaalse mõõteväärtuse, kuigi mõõtetulemused on olemas. Väärtused suuremad kui 2.54 tähendavad suurima tõenäosusega, et niimitmendat kaja ei registreeritud piiratud aja vältel. Samas võib semantiliselt lugeda 'SonarLeftDetected' tulemuse korrektseks, sest nagu nimest järeldub peaks see väärtust esindama takistust, mille tuvastamine liiga kaugelt tekitab liigset andmemüra ning takistusega võib tegeleda kui see robotile reaalselt ette satub.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud ligi poole meetri kauguselt vastu toa nurka:&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.53999996185&lt;br /&gt;
 2.03999996185&lt;br /&gt;
 2.38999986649&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.57999992371&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Mingisugusel põhjusel on lähendalt mõõdetud väärtused filtris olemas, kuid ei ole sarnased erinevate kajade tulemustega, võimalik, et esimese väärtuse kadumine tähendab, et siin esitatakse andmed alates teisest saabunud kajast. Hiljem sooritatud testides ilmus esimene kaja väärtus tagasi ning pärast seda pole õnnestunud viga korrata, küllaga võib 'None' esineda filtreeritud väärtuste lugemisel ning kutsuv kood peaks selleks valmis olema ('None' on Pythonis ekvivalentne samaks otstarbeks kasutatava 'null' väärtusega).&lt;br /&gt;
&lt;br /&gt;
==Stabiilsustestid==&lt;br /&gt;
&lt;br /&gt;
===Standardhälbe arvutamine===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud vastu seina (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -[[#Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus|link]]-&lt;br /&gt;
&lt;br /&gt;
Tulemused on arvutatud meetrites.&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 Mean left: 0.239333327611&lt;br /&gt;
 Mean right: 0.239333327611&lt;br /&gt;
 Standard deviation left: 0.00249443959597&lt;br /&gt;
 Standard deviation right: 0.00359011179731&lt;br /&gt;
&lt;br /&gt;
Tulemused: Väljund näitab, et jõutud on minimaalse tuvastuskauguseni, kus kauguse täpne mõõtmine pole enam võimalik, kui takistuse olemasolu võib järeldada. Väljund väga stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.Suunatud ~30cm kauguselt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 Mean left: 0.438333324591&lt;br /&gt;
 Mean right: 0.436999990543&lt;br /&gt;
 Standard deviation left: 0.00582142222363&lt;br /&gt;
 Standard deviation right: 0.00525991948363&lt;br /&gt;
&lt;br /&gt;
Tulemused: Keskmistel mõõtmiskaugustel taaskord küllaltki stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud vabasse ruumi. Takistused üle kahe meetri kaugusel. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62999999523&lt;br /&gt;
 left: 1.62999999523 right: 1.40999996662&lt;br /&gt;
 left: 1.64999997616 right: 1.26999998093&lt;br /&gt;
 left: 1.64999997616 right: 1.78999996185&lt;br /&gt;
 left: 1.64999997616 right: 1.55999994278&lt;br /&gt;
 left: 1.64999997616 right: 1.63999998569&lt;br /&gt;
 left: 1.65999996662 right: 1.65999996662&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.64999997616 right: 1.81999993324&lt;br /&gt;
 left: 1.64999997616 right: 1.83999991417&lt;br /&gt;
 left: 1.65999996662 right: 1.86000001431&lt;br /&gt;
 left: 1.84999990463 right: 1.87999999523&lt;br /&gt;
 left: 1.66999995708 right: 1.84999990463&lt;br /&gt;
 left: 1.65999996662 right: 1.87000000477&lt;br /&gt;
 Mean left: 1.65466664235&lt;br /&gt;
 Mean right: 1.67933330536&lt;br /&gt;
 Standard deviation left: 0.0387928804152&lt;br /&gt;
 Standard deviation right: 0.149620252664&lt;br /&gt;
&lt;br /&gt;
Tulemused: Ei tohiks sellistel kaugustel takistusi tuvastada, kuid testi läbiviimiseks valitud ruumis võib olla tegimist kajaprobleemidega. Rahuldav väljundi stabiilsus.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus tühjas ruumis===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Vaba ruum, seinad vähemalt 2.5m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
def joonis(timestep, list1,list2,list3,list4):&lt;br /&gt;
    #joonise loomine&lt;br /&gt;
    fig = plt.figure()&lt;br /&gt;
    ax1 = fig.add_subplot(111)&lt;br /&gt;
    &lt;br /&gt;
    ax1.plot(timestep,list1, 'b',label=&amp;quot;L&amp;quot;,marker='+')&lt;br /&gt;
    ax1.plot(timestep,list2,'r',label=&amp;quot;R&amp;quot;,marker='+')&lt;br /&gt;
&lt;br /&gt;
    ax1.plot(timestep,list3,'c', label=&amp;quot;LF&amp;quot;,marker='o')&lt;br /&gt;
    ax1.plot(timestep,list4,'m',label=&amp;quot;RF&amp;quot;,marker='o')&lt;br /&gt;
    &lt;br /&gt;
    ax1.set_xlabel('time (s)')&lt;br /&gt;
    ax1.set_ylabel('distance (cm)', color='g')&lt;br /&gt;
    for tl in ax1.get_yticklabels():&lt;br /&gt;
        tl.set_color('g')&lt;br /&gt;
    &lt;br /&gt;
    plt.legend()&lt;br /&gt;
    plt.show()&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0)&lt;br /&gt;
&lt;br /&gt;
leftValues=[]&lt;br /&gt;
rightValues=[]&lt;br /&gt;
leftValuesF=[]&lt;br /&gt;
rightValuesF=[]&lt;br /&gt;
timestep=[]&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1)&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
	leftValues.append(float(left)*100)&lt;br /&gt;
	rightValues.append(float(right)*100)&lt;br /&gt;
	if(leftD == None):&lt;br /&gt;
		leftD=0&lt;br /&gt;
	if(rightD == None):&lt;br /&gt;
		rightD=0&lt;br /&gt;
	leftValuesF.append(float(leftD)*100)&lt;br /&gt;
	rightValuesF.append(float(rightD)*100)&lt;br /&gt;
	timestep.append(i)&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
joonis(timestep, leftValues,rightValues,leftValuesF,rightValuesF)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljund:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kasutaja@Huginn:~/Desktop$ python NAO_sonarTest_plot.py 172.19.2.79 50&lt;br /&gt;
left: 1.05999994278 right: 1.09000003338&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.59999990463&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.37000000477 right: 1.56999993324&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.22000002861&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.10000002384 right: 1.11000001431&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
...&lt;br /&gt;
left: 1.04999995232 right: 1.25999999046&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
Mean left: 126.299996376&lt;br /&gt;
Mean right: 125.379997134&lt;br /&gt;
Standard deviation left: 31.8472923989&lt;br /&gt;
Standard deviation right: 19.6243602903&lt;br /&gt;
INFO: Destroying broker 'ALProxyBroker'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Viimased arvutused on tehtud cm-tes.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonar_output.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Esineb väga tugev väljundi kõikumine (standardhälve 32 ja 20 cm) samas filtreeritud väärtused ei muutu. Graafik viitab, et vasaku ja parema sonari mõõdetud tulemused on omavahel teatavas korrellatsioonis.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (puitplaat)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, seinad vähemalt 2 m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: [#Väljundite võrdlus tühjas ruumis | -link-]&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Puidust plaat mõõtmetega 55 cm x 77 cm liigutatud 30 cm kaupa sonaritele lähemale, numbrid graafiku ülemisel serval tähistavad plaadi kaugust (täpsus ligikaudu 10 cm). Esimesed mõõtmised &amp;gt; 150 cm tehtud ilma plaadita. Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_plaat.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Plaadi väikeste mõõtmete tõttu tuvastatakse see alles vahemaal alla 90 cm. Sellele eelnevatel kõrgustel püsivad vasaku sonari mõõtetulemused stabiiliselt 110 cm piirimail kui parem sonar annab võrdlemisi mürarikka väljundi, mida järgib teataval määral ka talle vastav filtri läbinud väärtus. Kuna mõõtetulemuste saamiseks liigutati plaati NAO ees, siis on võimalik, et lugemid tulevad ümbritsevast keskkonnast ehk antud juhul plaadi hoidja jalgadest. Lisakaja võib põhjustada ka 60 cm alas nähtava filtrite ja töötlemata tulemuste vahelise erinevuse kuna esimene kasutab arvutustes kuni üheksat mõõdetud kaja. Graafikust võib paremal juhul järeldada seda, et sonarid sobivad seinast väiksemate takistuste tuvastamiseks vahemaal alla 50 cm, kus väljund on väiksemas sõltuvuses muust ümbritsevast. Samuti on selles piirkonnas parema ja vasaku sonari tulemused omavahel küllaltki heas lähenduses.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: [#Väljundite võrdlus tühjas ruumis | -link-]&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein1.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Taaskord annab vasak sonar vähem mürarikkaid tulemusi kui parem, kuigi  võib öelda, et sein on tuvastatav kõikidel mõõdetud kaugustel. Filtrid LeftObstacleDetected ja RightObstacleDetected hakkavad reaalsuse lähedasi tulemusi andma alles 60 cm piirimail. Sellele eelnev võib aga tekitada probleeme kuna pole kindel, kas tulemus 60 cm tähendab objekti või tuvastuskaugusest väljumist, eelnevad katsed näitavad filtreeritud väärtuste küllaltki juhuslikku asetust suurematel kaugustel ning sellega tuleks kasutamisel arvesta. Viimane annab ka seletuse, miks 'Endless walk' demoprogrammis kasutatavad filtreeritud sonari mõõtetulemused polnud ootuspärased ning tekitasid vaatlusel olematute takistuste tuvastamise vigu. 10 cm on alla sonari kasutamise piiri ning seal saadud lugemid annavad minimaalse võimaliku väljundi.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein, sonaritel kattev plastikriba)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: [#Väljundite võrdlus tühjas ruumis | -link-]&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Koos sonari avasi ümbritseva ornamentaalse plastikribaga.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein2.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Graafik ei erine oluliselt sonareid ümbritseva plastikribata saadud tulemustest ning võib järeldada, et selle olemasolu ei mõjuta oluliselt väljundit.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8426</id>
		<title>SonariProbleem</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8426"/>
		<updated>2011-04-09T18:02:10Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Standardhälbe arvutamine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Filtreeritud väärtused==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;SonarRightDetected&amp;quot; või &amp;quot;SonarLeftDetected&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Samalaadse tulemuse andis ka Pythoni skript. Kui käivitasin [[Python#Näiteprogramm | näiteskripti]] ja suunasin sonarid lakke olid loetud väärtused:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.569999992847&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.579999983311&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Ülaltoodud &amp;quot;SonarRightDetected&amp;quot; väärtused on eelnevalt läbinud filtri (töötluse) ning ei kajasta otseselt seda, mida sonar mõõtis.&lt;br /&gt;
&lt;br /&gt;
==Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevas katses liigutati NAOd mööda tuba ringi viies teda seintest lähemale/kaugemale kokku võeti 100 lugemit igale sonari loetud väärtusele järgneb filtri läbinud väärtus.&lt;br /&gt;
&lt;br /&gt;
Väljundi stabiilsuse ning filtreerimise testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import time&lt;br /&gt;
 import numpy&lt;br /&gt;
 from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
 IP = sys.argv[1] // Käsurea argumendid&lt;br /&gt;
 SAMPLES = sys.argv[2]&lt;br /&gt;
 PORT = 9559&lt;br /&gt;
&lt;br /&gt;
 sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
 mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
 sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0) // Uuenda 500ms tagant, täpsus 1.0&lt;br /&gt;
&lt;br /&gt;
 leftValues=[]&lt;br /&gt;
 rightValues=[]&lt;br /&gt;
&lt;br /&gt;
 for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1) // Oota 1 sekund&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0) // 0 tähendab uusima väärtuse lugemist, otse sonarist saadud väärtus &lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;) // Läbinud filtri&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
	leftValues.append(float(left))&lt;br /&gt;
	rightValues.append(float(right))&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
 print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
 print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
 print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
 print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
 sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljundifail: [[File:NAO_sonarTest_output.txt]]&lt;br /&gt;
&lt;br /&gt;
Väljundis:&lt;br /&gt;
&lt;br /&gt;
 left: 1.66999995708 right: 1.39999997616&lt;br /&gt;
 filter left: 0.389999985695 right: 0.699999988079&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.87999999523 right: 1.40999996662&lt;br /&gt;
 filter left: 0.439999997616 right: 0.649999976158&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.310000002384 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.289999991655 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
&lt;br /&gt;
Väljundist on väga suur erinevus filtreermata ning filtreeritud väärtuste vahel, samuti eksisteerib väljund alati, isegi siis kui lähemalasetsevad objektid on kaugemal kui 1,5m nagu on dokumentatsiooni järgi suurim tuvastuskaugus. Katse lõpus arvutatud keskmine ning standardhälve ei oma selle katse kontekstis erilist tähendust kuna sonarid oli liikumises.&lt;br /&gt;
&lt;br /&gt;
==Mitmekordse kaja väärtused==&lt;br /&gt;
&lt;br /&gt;
NAO Sonar mõõdab kaugusi ka teistele kajadele peale esimese. Mällu salvestatakse 10 väärtust. Järgnev kood prindib ekraanile kõik kümme väärtust ning lisaks nenede põhjal arvutatud 'SonarLeftDetected' väärtuse.&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 1000, 1.0)&lt;br /&gt;
&lt;br /&gt;
time.sleep(10)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
 	time.sleep(2)&lt;br /&gt;
	print &amp;quot;Iteration&amp;quot;,i&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value1&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value2&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value3&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value4&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value5&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value6&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value7&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value8&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value9&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 0.909999966621&lt;br /&gt;
 1.49000000954&lt;br /&gt;
 1.7199999094&lt;br /&gt;
 2.06999993324&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 0.899999976158&lt;br /&gt;
 1.48000001907&lt;br /&gt;
 2.0&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Versioonis 1.10.11 ei eksisteeri mälus enam väärtust &amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, mida esindab väljundis nüüd &amp;quot;None&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud vabasse ruumi: &lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.45999991894&lt;br /&gt;
 1.87999999523&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.44999992847&lt;br /&gt;
 1.86000001431&lt;br /&gt;
 2.22000002861&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tulemustest järeldub, et kui takistused on liiga kaugel tagastab filtreeritud väärtus alati minimaalse mõõteväärtuse, kuigi mõõtetulemused on olemas. Väärtused suuremad kui 2.54 tähendavad suurima tõenäosusega, et niimitmendat kaja ei registreeritud piiratud aja vältel. Samas võib semantiliselt lugeda 'SonarLeftDetected' tulemuse korrektseks, sest nagu nimest järeldub peaks see väärtust esindama takistust, mille tuvastamine liiga kaugelt tekitab liigset andmemüra ning takistusega võib tegeleda kui see robotile reaalselt ette satub.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud ligi poole meetri kauguselt vastu toa nurka:&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.53999996185&lt;br /&gt;
 2.03999996185&lt;br /&gt;
 2.38999986649&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.57999992371&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Mingisugusel põhjusel on lähendalt mõõdetud väärtused filtris olemas, kuid ei ole sarnased erinevate kajade tulemustega, võimalik, et esimese väärtuse kadumine tähendab, et siin esitatakse andmed alates teisest saabunud kajast. Hiljem sooritatud testides ilmus esimene kaja väärtus tagasi ning pärast seda pole õnnestunud viga korrata, küllaga võib 'None' esineda filtreeritud väärtuste lugemisel ning kutsuv kood peaks selleks valmis olema ('None' on Pythonis ekvivalentne samaks otstarbeks kasutatava 'null' väärtusega).&lt;br /&gt;
&lt;br /&gt;
==Stabiilsustestid==&lt;br /&gt;
&lt;br /&gt;
===Standardhälbe arvutamine===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud vastu seina (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -[[#Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus|link]]-&lt;br /&gt;
&lt;br /&gt;
Tulemused on arvutatud meetrites.&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 Mean left: 0.239333327611&lt;br /&gt;
 Mean right: 0.239333327611&lt;br /&gt;
 Standard deviation left: 0.00249443959597&lt;br /&gt;
 Standard deviation right: 0.00359011179731&lt;br /&gt;
&lt;br /&gt;
Tulemused: Väljund näitab, et jõutud on minimaalse tuvastuskauguseni, kus kauguse täpne mõõtmine pole enam võimalik, kui takistuse olemasolu võib järeldada. Väljund väga stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.Suunatud ~30cm kauguselt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 Mean left: 0.438333324591&lt;br /&gt;
 Mean right: 0.436999990543&lt;br /&gt;
 Standard deviation left: 0.00582142222363&lt;br /&gt;
 Standard deviation right: 0.00525991948363&lt;br /&gt;
&lt;br /&gt;
Tulemused: Keskmistel mõõtmiskaugustel taaskord küllaltki stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud vabasse ruumi. Takistused üle kahe meetri kaugusel. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62999999523&lt;br /&gt;
 left: 1.62999999523 right: 1.40999996662&lt;br /&gt;
 left: 1.64999997616 right: 1.26999998093&lt;br /&gt;
 left: 1.64999997616 right: 1.78999996185&lt;br /&gt;
 left: 1.64999997616 right: 1.55999994278&lt;br /&gt;
 left: 1.64999997616 right: 1.63999998569&lt;br /&gt;
 left: 1.65999996662 right: 1.65999996662&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.64999997616 right: 1.81999993324&lt;br /&gt;
 left: 1.64999997616 right: 1.83999991417&lt;br /&gt;
 left: 1.65999996662 right: 1.86000001431&lt;br /&gt;
 left: 1.84999990463 right: 1.87999999523&lt;br /&gt;
 left: 1.66999995708 right: 1.84999990463&lt;br /&gt;
 left: 1.65999996662 right: 1.87000000477&lt;br /&gt;
 Mean left: 1.65466664235&lt;br /&gt;
 Mean right: 1.67933330536&lt;br /&gt;
 Standard deviation left: 0.0387928804152&lt;br /&gt;
 Standard deviation right: 0.149620252664&lt;br /&gt;
&lt;br /&gt;
Tulemused: Ei tohiks sellistel kaugustel takistusi tuvastada, kuid testi läbiviimiseks valitud ruumis võib olla tegimist kajaprobleemidega. Rahuldav väljundi stabiilsus.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus tühjas ruumis===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Vaba ruum, seinad vähemalt 2.5m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
def joonis(timestep, list1,list2,list3,list4):&lt;br /&gt;
    #joonise loomine&lt;br /&gt;
    fig = plt.figure()&lt;br /&gt;
    ax1 = fig.add_subplot(111)&lt;br /&gt;
    &lt;br /&gt;
    ax1.plot(timestep,list1, 'b',label=&amp;quot;L&amp;quot;,marker='+')&lt;br /&gt;
    ax1.plot(timestep,list2,'r',label=&amp;quot;R&amp;quot;,marker='+')&lt;br /&gt;
&lt;br /&gt;
    ax1.plot(timestep,list3,'c', label=&amp;quot;LF&amp;quot;,marker='o')&lt;br /&gt;
    ax1.plot(timestep,list4,'m',label=&amp;quot;RF&amp;quot;,marker='o')&lt;br /&gt;
    &lt;br /&gt;
    ax1.set_xlabel('time (s)')&lt;br /&gt;
    ax1.set_ylabel('distance (cm)', color='g')&lt;br /&gt;
    for tl in ax1.get_yticklabels():&lt;br /&gt;
        tl.set_color('g')&lt;br /&gt;
    &lt;br /&gt;
    plt.legend()&lt;br /&gt;
    plt.show()&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0)&lt;br /&gt;
&lt;br /&gt;
leftValues=[]&lt;br /&gt;
rightValues=[]&lt;br /&gt;
leftValuesF=[]&lt;br /&gt;
rightValuesF=[]&lt;br /&gt;
timestep=[]&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1)&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
	leftValues.append(float(left)*100)&lt;br /&gt;
	rightValues.append(float(right)*100)&lt;br /&gt;
	if(leftD == None):&lt;br /&gt;
		leftD=0&lt;br /&gt;
	if(rightD == None):&lt;br /&gt;
		rightD=0&lt;br /&gt;
	leftValuesF.append(float(leftD)*100)&lt;br /&gt;
	rightValuesF.append(float(rightD)*100)&lt;br /&gt;
	timestep.append(i)&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
joonis(timestep, leftValues,rightValues,leftValuesF,rightValuesF)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljund:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kasutaja@Huginn:~/Desktop$ python NAO_sonarTest_plot.py 172.19.2.79 50&lt;br /&gt;
left: 1.05999994278 right: 1.09000003338&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.59999990463&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.37000000477 right: 1.56999993324&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.22000002861&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.10000002384 right: 1.11000001431&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
...&lt;br /&gt;
left: 1.04999995232 right: 1.25999999046&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
Mean left: 126.299996376&lt;br /&gt;
Mean right: 125.379997134&lt;br /&gt;
Standard deviation left: 31.8472923989&lt;br /&gt;
Standard deviation right: 19.6243602903&lt;br /&gt;
INFO: Destroying broker 'ALProxyBroker'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Viimased arvutused on tehtud cm-tes.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonar_output.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Esineb väga tugev väljundi kõikumine (standardhälve 32 ja 20 cm) samas filtreeritud väärtused ei muutu. Graafik viitab, et vasaku ja parema sonari mõõdetud tulemused on omavahel teatavas korrellatsioonis.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (puitplaat)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, seinad vähemalt 2 m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Puidust plaat mõõtmetega 55 cm x 77 cm liigutatud 30 cm kaupa sonaritele lähemale, numbrid graafiku ülemisel serval tähistavad plaadi kaugust (täpsus ligikaudu 10 cm). Esimesed mõõtmised &amp;gt; 150 cm tehtud ilma plaadita. Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_plaat.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Plaadi väikeste mõõtmete tõttu tuvastatakse see alles vahemaal alla 90 cm. Sellele eelnevatel kõrgustel püsivad vasaku sonari mõõtetulemused stabiiliselt 110 cm piirimail kui parem sonar annab võrdlemisi mürarikka väljundi, mida järgib teataval määral ka talle vastav filtri läbinud väärtus. Kuna mõõtetulemuste saamiseks liigutati plaati NAO ees, siis on võimalik, et lugemid tulevad ümbritsevast keskkonnast ehk antud juhul plaadi hoidja jalgadest. Lisakaja võib põhjustada ka 60 cm alas nähtava filtrite ja töötlemata tulemuste vahelise erinevuse kuna esimene kasutab arvutustes kuni üheksat mõõdetud kaja. Graafikust võib paremal juhul järeldada seda, et sonarid sobivad seinast väiksemate takistuste tuvastamiseks vahemaal alla 50 cm, kus väljund on väiksemas sõltuvuses muust ümbritsevast. Samuti on selles piirkonnas parema ja vasaku sonari tulemused omavahel küllaltki heas lähenduses.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein1.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Taaskord annab vasak sonar vähem mürarikkaid tulemusi kui parem, kuigi  võib öelda, et sein on tuvastatav kõikidel mõõdetud kaugustel. Filtrid LeftObstacleDetected ja RightObstacleDetected hakkavad reaalsuse lähedasi tulemusi andma alles 60 cm piirimail. Sellele eelnev võib aga tekitada probleeme kuna pole kindel, kas tulemus 60 cm tähendab objekti või tuvastuskaugusest väljumist, eelnevad katsed näitavad filtreeritud väärtuste küllaltki juhuslikku asetust suurematel kaugustel ning sellega tuleks kasutamisel arvesta. Viimane annab ka seletuse, miks 'Endless walk' demoprogrammis kasutatavad filtreeritud sonari mõõtetulemused polnud ootuspärased ning tekitasid vaatlusel olematute takistuste tuvastamise vigu. 10 cm on alla sonari kasutamise piiri ning seal saadud lugemid annavad minimaalse võimaliku väljundi.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein, sonaritel kattev plastikriba)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Koos sonari avasi ümbritseva ornamentaalse plastikribaga.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein2.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Graafik ei erine oluliselt sonareid ümbritseva plastikribata saadud tulemustest ning võib järeldada, et selle olemasolu ei mõjuta oluliselt väljundit.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8425</id>
		<title>SonariProbleem</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8425"/>
		<updated>2011-04-09T18:01:33Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Standardhälbe arvutamine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Filtreeritud väärtused==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;SonarRightDetected&amp;quot; või &amp;quot;SonarLeftDetected&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Samalaadse tulemuse andis ka Pythoni skript. Kui käivitasin [[Python#Näiteprogramm | näiteskripti]] ja suunasin sonarid lakke olid loetud väärtused:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.569999992847&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.579999983311&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Ülaltoodud &amp;quot;SonarRightDetected&amp;quot; väärtused on eelnevalt läbinud filtri (töötluse) ning ei kajasta otseselt seda, mida sonar mõõtis.&lt;br /&gt;
&lt;br /&gt;
==Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevas katses liigutati NAOd mööda tuba ringi viies teda seintest lähemale/kaugemale kokku võeti 100 lugemit igale sonari loetud väärtusele järgneb filtri läbinud väärtus.&lt;br /&gt;
&lt;br /&gt;
Väljundi stabiilsuse ning filtreerimise testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import time&lt;br /&gt;
 import numpy&lt;br /&gt;
 from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
 IP = sys.argv[1] // Käsurea argumendid&lt;br /&gt;
 SAMPLES = sys.argv[2]&lt;br /&gt;
 PORT = 9559&lt;br /&gt;
&lt;br /&gt;
 sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
 mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
 sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0) // Uuenda 500ms tagant, täpsus 1.0&lt;br /&gt;
&lt;br /&gt;
 leftValues=[]&lt;br /&gt;
 rightValues=[]&lt;br /&gt;
&lt;br /&gt;
 for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1) // Oota 1 sekund&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0) // 0 tähendab uusima väärtuse lugemist, otse sonarist saadud väärtus &lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;) // Läbinud filtri&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
	leftValues.append(float(left))&lt;br /&gt;
	rightValues.append(float(right))&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
 print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
 print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
 print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
 print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
 sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljundifail: [[File:NAO_sonarTest_output.txt]]&lt;br /&gt;
&lt;br /&gt;
Väljundis:&lt;br /&gt;
&lt;br /&gt;
 left: 1.66999995708 right: 1.39999997616&lt;br /&gt;
 filter left: 0.389999985695 right: 0.699999988079&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.87999999523 right: 1.40999996662&lt;br /&gt;
 filter left: 0.439999997616 right: 0.649999976158&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.310000002384 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.289999991655 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
&lt;br /&gt;
Väljundist on väga suur erinevus filtreermata ning filtreeritud väärtuste vahel, samuti eksisteerib väljund alati, isegi siis kui lähemalasetsevad objektid on kaugemal kui 1,5m nagu on dokumentatsiooni järgi suurim tuvastuskaugus. Katse lõpus arvutatud keskmine ning standardhälve ei oma selle katse kontekstis erilist tähendust kuna sonarid oli liikumises.&lt;br /&gt;
&lt;br /&gt;
==Mitmekordse kaja väärtused==&lt;br /&gt;
&lt;br /&gt;
NAO Sonar mõõdab kaugusi ka teistele kajadele peale esimese. Mällu salvestatakse 10 väärtust. Järgnev kood prindib ekraanile kõik kümme väärtust ning lisaks nenede põhjal arvutatud 'SonarLeftDetected' väärtuse.&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 1000, 1.0)&lt;br /&gt;
&lt;br /&gt;
time.sleep(10)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
 	time.sleep(2)&lt;br /&gt;
	print &amp;quot;Iteration&amp;quot;,i&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value1&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value2&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value3&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value4&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value5&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value6&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value7&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value8&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value9&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 0.909999966621&lt;br /&gt;
 1.49000000954&lt;br /&gt;
 1.7199999094&lt;br /&gt;
 2.06999993324&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 0.899999976158&lt;br /&gt;
 1.48000001907&lt;br /&gt;
 2.0&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Versioonis 1.10.11 ei eksisteeri mälus enam väärtust &amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, mida esindab väljundis nüüd &amp;quot;None&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud vabasse ruumi: &lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.45999991894&lt;br /&gt;
 1.87999999523&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.44999992847&lt;br /&gt;
 1.86000001431&lt;br /&gt;
 2.22000002861&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tulemustest järeldub, et kui takistused on liiga kaugel tagastab filtreeritud väärtus alati minimaalse mõõteväärtuse, kuigi mõõtetulemused on olemas. Väärtused suuremad kui 2.54 tähendavad suurima tõenäosusega, et niimitmendat kaja ei registreeritud piiratud aja vältel. Samas võib semantiliselt lugeda 'SonarLeftDetected' tulemuse korrektseks, sest nagu nimest järeldub peaks see väärtust esindama takistust, mille tuvastamine liiga kaugelt tekitab liigset andmemüra ning takistusega võib tegeleda kui see robotile reaalselt ette satub.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud ligi poole meetri kauguselt vastu toa nurka:&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.53999996185&lt;br /&gt;
 2.03999996185&lt;br /&gt;
 2.38999986649&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.57999992371&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Mingisugusel põhjusel on lähendalt mõõdetud väärtused filtris olemas, kuid ei ole sarnased erinevate kajade tulemustega, võimalik, et esimese väärtuse kadumine tähendab, et siin esitatakse andmed alates teisest saabunud kajast. Hiljem sooritatud testides ilmus esimene kaja väärtus tagasi ning pärast seda pole õnnestunud viga korrata, küllaga võib 'None' esineda filtreeritud väärtuste lugemisel ning kutsuv kood peaks selleks valmis olema ('None' on Pythonis ekvivalentne samaks otstarbeks kasutatava 'null' väärtusega).&lt;br /&gt;
&lt;br /&gt;
==Stabiilsustestid==&lt;br /&gt;
&lt;br /&gt;
===Standardhälbe arvutamine===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud vastu seina (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -[[Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus]]-&lt;br /&gt;
&lt;br /&gt;
Tulemused on arvutatud meetrites.&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 Mean left: 0.239333327611&lt;br /&gt;
 Mean right: 0.239333327611&lt;br /&gt;
 Standard deviation left: 0.00249443959597&lt;br /&gt;
 Standard deviation right: 0.00359011179731&lt;br /&gt;
&lt;br /&gt;
Tulemused: Väljund näitab, et jõutud on minimaalse tuvastuskauguseni, kus kauguse täpne mõõtmine pole enam võimalik, kui takistuse olemasolu võib järeldada. Väljund väga stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.Suunatud ~30cm kauguselt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 Mean left: 0.438333324591&lt;br /&gt;
 Mean right: 0.436999990543&lt;br /&gt;
 Standard deviation left: 0.00582142222363&lt;br /&gt;
 Standard deviation right: 0.00525991948363&lt;br /&gt;
&lt;br /&gt;
Tulemused: Keskmistel mõõtmiskaugustel taaskord küllaltki stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud vabasse ruumi. Takistused üle kahe meetri kaugusel. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62999999523&lt;br /&gt;
 left: 1.62999999523 right: 1.40999996662&lt;br /&gt;
 left: 1.64999997616 right: 1.26999998093&lt;br /&gt;
 left: 1.64999997616 right: 1.78999996185&lt;br /&gt;
 left: 1.64999997616 right: 1.55999994278&lt;br /&gt;
 left: 1.64999997616 right: 1.63999998569&lt;br /&gt;
 left: 1.65999996662 right: 1.65999996662&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.64999997616 right: 1.81999993324&lt;br /&gt;
 left: 1.64999997616 right: 1.83999991417&lt;br /&gt;
 left: 1.65999996662 right: 1.86000001431&lt;br /&gt;
 left: 1.84999990463 right: 1.87999999523&lt;br /&gt;
 left: 1.66999995708 right: 1.84999990463&lt;br /&gt;
 left: 1.65999996662 right: 1.87000000477&lt;br /&gt;
 Mean left: 1.65466664235&lt;br /&gt;
 Mean right: 1.67933330536&lt;br /&gt;
 Standard deviation left: 0.0387928804152&lt;br /&gt;
 Standard deviation right: 0.149620252664&lt;br /&gt;
&lt;br /&gt;
Tulemused: Ei tohiks sellistel kaugustel takistusi tuvastada, kuid testi läbiviimiseks valitud ruumis võib olla tegimist kajaprobleemidega. Rahuldav väljundi stabiilsus.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus tühjas ruumis===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Vaba ruum, seinad vähemalt 2.5m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
def joonis(timestep, list1,list2,list3,list4):&lt;br /&gt;
    #joonise loomine&lt;br /&gt;
    fig = plt.figure()&lt;br /&gt;
    ax1 = fig.add_subplot(111)&lt;br /&gt;
    &lt;br /&gt;
    ax1.plot(timestep,list1, 'b',label=&amp;quot;L&amp;quot;,marker='+')&lt;br /&gt;
    ax1.plot(timestep,list2,'r',label=&amp;quot;R&amp;quot;,marker='+')&lt;br /&gt;
&lt;br /&gt;
    ax1.plot(timestep,list3,'c', label=&amp;quot;LF&amp;quot;,marker='o')&lt;br /&gt;
    ax1.plot(timestep,list4,'m',label=&amp;quot;RF&amp;quot;,marker='o')&lt;br /&gt;
    &lt;br /&gt;
    ax1.set_xlabel('time (s)')&lt;br /&gt;
    ax1.set_ylabel('distance (cm)', color='g')&lt;br /&gt;
    for tl in ax1.get_yticklabels():&lt;br /&gt;
        tl.set_color('g')&lt;br /&gt;
    &lt;br /&gt;
    plt.legend()&lt;br /&gt;
    plt.show()&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0)&lt;br /&gt;
&lt;br /&gt;
leftValues=[]&lt;br /&gt;
rightValues=[]&lt;br /&gt;
leftValuesF=[]&lt;br /&gt;
rightValuesF=[]&lt;br /&gt;
timestep=[]&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1)&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
	leftValues.append(float(left)*100)&lt;br /&gt;
	rightValues.append(float(right)*100)&lt;br /&gt;
	if(leftD == None):&lt;br /&gt;
		leftD=0&lt;br /&gt;
	if(rightD == None):&lt;br /&gt;
		rightD=0&lt;br /&gt;
	leftValuesF.append(float(leftD)*100)&lt;br /&gt;
	rightValuesF.append(float(rightD)*100)&lt;br /&gt;
	timestep.append(i)&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
joonis(timestep, leftValues,rightValues,leftValuesF,rightValuesF)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljund:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kasutaja@Huginn:~/Desktop$ python NAO_sonarTest_plot.py 172.19.2.79 50&lt;br /&gt;
left: 1.05999994278 right: 1.09000003338&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.59999990463&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.37000000477 right: 1.56999993324&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.22000002861&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.10000002384 right: 1.11000001431&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
...&lt;br /&gt;
left: 1.04999995232 right: 1.25999999046&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
Mean left: 126.299996376&lt;br /&gt;
Mean right: 125.379997134&lt;br /&gt;
Standard deviation left: 31.8472923989&lt;br /&gt;
Standard deviation right: 19.6243602903&lt;br /&gt;
INFO: Destroying broker 'ALProxyBroker'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Viimased arvutused on tehtud cm-tes.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonar_output.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Esineb väga tugev väljundi kõikumine (standardhälve 32 ja 20 cm) samas filtreeritud väärtused ei muutu. Graafik viitab, et vasaku ja parema sonari mõõdetud tulemused on omavahel teatavas korrellatsioonis.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (puitplaat)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, seinad vähemalt 2 m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Puidust plaat mõõtmetega 55 cm x 77 cm liigutatud 30 cm kaupa sonaritele lähemale, numbrid graafiku ülemisel serval tähistavad plaadi kaugust (täpsus ligikaudu 10 cm). Esimesed mõõtmised &amp;gt; 150 cm tehtud ilma plaadita. Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_plaat.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Plaadi väikeste mõõtmete tõttu tuvastatakse see alles vahemaal alla 90 cm. Sellele eelnevatel kõrgustel püsivad vasaku sonari mõõtetulemused stabiiliselt 110 cm piirimail kui parem sonar annab võrdlemisi mürarikka väljundi, mida järgib teataval määral ka talle vastav filtri läbinud väärtus. Kuna mõõtetulemuste saamiseks liigutati plaati NAO ees, siis on võimalik, et lugemid tulevad ümbritsevast keskkonnast ehk antud juhul plaadi hoidja jalgadest. Lisakaja võib põhjustada ka 60 cm alas nähtava filtrite ja töötlemata tulemuste vahelise erinevuse kuna esimene kasutab arvutustes kuni üheksat mõõdetud kaja. Graafikust võib paremal juhul järeldada seda, et sonarid sobivad seinast väiksemate takistuste tuvastamiseks vahemaal alla 50 cm, kus väljund on väiksemas sõltuvuses muust ümbritsevast. Samuti on selles piirkonnas parema ja vasaku sonari tulemused omavahel küllaltki heas lähenduses.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein1.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Taaskord annab vasak sonar vähem mürarikkaid tulemusi kui parem, kuigi  võib öelda, et sein on tuvastatav kõikidel mõõdetud kaugustel. Filtrid LeftObstacleDetected ja RightObstacleDetected hakkavad reaalsuse lähedasi tulemusi andma alles 60 cm piirimail. Sellele eelnev võib aga tekitada probleeme kuna pole kindel, kas tulemus 60 cm tähendab objekti või tuvastuskaugusest väljumist, eelnevad katsed näitavad filtreeritud väärtuste küllaltki juhuslikku asetust suurematel kaugustel ning sellega tuleks kasutamisel arvesta. Viimane annab ka seletuse, miks 'Endless walk' demoprogrammis kasutatavad filtreeritud sonari mõõtetulemused polnud ootuspärased ning tekitasid vaatlusel olematute takistuste tuvastamise vigu. 10 cm on alla sonari kasutamise piiri ning seal saadud lugemid annavad minimaalse võimaliku väljundi.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein, sonaritel kattev plastikriba)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Koos sonari avasi ümbritseva ornamentaalse plastikribaga.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein2.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Graafik ei erine oluliselt sonareid ümbritseva plastikribata saadud tulemustest ning võib järeldada, et selle olemasolu ei mõjuta oluliselt väljundit.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8424</id>
		<title>SonariProbleem</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8424"/>
		<updated>2011-04-09T18:01:12Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Standardhälbe arvutamine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Filtreeritud väärtused==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;SonarRightDetected&amp;quot; või &amp;quot;SonarLeftDetected&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Samalaadse tulemuse andis ka Pythoni skript. Kui käivitasin [[Python#Näiteprogramm | näiteskripti]] ja suunasin sonarid lakke olid loetud väärtused:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.569999992847&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.579999983311&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Ülaltoodud &amp;quot;SonarRightDetected&amp;quot; väärtused on eelnevalt läbinud filtri (töötluse) ning ei kajasta otseselt seda, mida sonar mõõtis.&lt;br /&gt;
&lt;br /&gt;
==Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevas katses liigutati NAOd mööda tuba ringi viies teda seintest lähemale/kaugemale kokku võeti 100 lugemit igale sonari loetud väärtusele järgneb filtri läbinud väärtus.&lt;br /&gt;
&lt;br /&gt;
Väljundi stabiilsuse ning filtreerimise testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import time&lt;br /&gt;
 import numpy&lt;br /&gt;
 from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
 IP = sys.argv[1] // Käsurea argumendid&lt;br /&gt;
 SAMPLES = sys.argv[2]&lt;br /&gt;
 PORT = 9559&lt;br /&gt;
&lt;br /&gt;
 sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
 mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
 sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0) // Uuenda 500ms tagant, täpsus 1.0&lt;br /&gt;
&lt;br /&gt;
 leftValues=[]&lt;br /&gt;
 rightValues=[]&lt;br /&gt;
&lt;br /&gt;
 for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1) // Oota 1 sekund&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0) // 0 tähendab uusima väärtuse lugemist, otse sonarist saadud väärtus &lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;) // Läbinud filtri&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
	leftValues.append(float(left))&lt;br /&gt;
	rightValues.append(float(right))&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
 print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
 print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
 print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
 print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
 sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljundifail: [[File:NAO_sonarTest_output.txt]]&lt;br /&gt;
&lt;br /&gt;
Väljundis:&lt;br /&gt;
&lt;br /&gt;
 left: 1.66999995708 right: 1.39999997616&lt;br /&gt;
 filter left: 0.389999985695 right: 0.699999988079&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.87999999523 right: 1.40999996662&lt;br /&gt;
 filter left: 0.439999997616 right: 0.649999976158&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.310000002384 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.289999991655 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
&lt;br /&gt;
Väljundist on väga suur erinevus filtreermata ning filtreeritud väärtuste vahel, samuti eksisteerib väljund alati, isegi siis kui lähemalasetsevad objektid on kaugemal kui 1,5m nagu on dokumentatsiooni järgi suurim tuvastuskaugus. Katse lõpus arvutatud keskmine ning standardhälve ei oma selle katse kontekstis erilist tähendust kuna sonarid oli liikumises.&lt;br /&gt;
&lt;br /&gt;
==Mitmekordse kaja väärtused==&lt;br /&gt;
&lt;br /&gt;
NAO Sonar mõõdab kaugusi ka teistele kajadele peale esimese. Mällu salvestatakse 10 väärtust. Järgnev kood prindib ekraanile kõik kümme väärtust ning lisaks nenede põhjal arvutatud 'SonarLeftDetected' väärtuse.&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 1000, 1.0)&lt;br /&gt;
&lt;br /&gt;
time.sleep(10)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
 	time.sleep(2)&lt;br /&gt;
	print &amp;quot;Iteration&amp;quot;,i&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value1&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value2&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value3&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value4&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value5&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value6&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value7&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value8&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value9&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 0.909999966621&lt;br /&gt;
 1.49000000954&lt;br /&gt;
 1.7199999094&lt;br /&gt;
 2.06999993324&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 0.899999976158&lt;br /&gt;
 1.48000001907&lt;br /&gt;
 2.0&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Versioonis 1.10.11 ei eksisteeri mälus enam väärtust &amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, mida esindab väljundis nüüd &amp;quot;None&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud vabasse ruumi: &lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.45999991894&lt;br /&gt;
 1.87999999523&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.44999992847&lt;br /&gt;
 1.86000001431&lt;br /&gt;
 2.22000002861&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tulemustest järeldub, et kui takistused on liiga kaugel tagastab filtreeritud väärtus alati minimaalse mõõteväärtuse, kuigi mõõtetulemused on olemas. Väärtused suuremad kui 2.54 tähendavad suurima tõenäosusega, et niimitmendat kaja ei registreeritud piiratud aja vältel. Samas võib semantiliselt lugeda 'SonarLeftDetected' tulemuse korrektseks, sest nagu nimest järeldub peaks see väärtust esindama takistust, mille tuvastamine liiga kaugelt tekitab liigset andmemüra ning takistusega võib tegeleda kui see robotile reaalselt ette satub.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud ligi poole meetri kauguselt vastu toa nurka:&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.53999996185&lt;br /&gt;
 2.03999996185&lt;br /&gt;
 2.38999986649&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.57999992371&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Mingisugusel põhjusel on lähendalt mõõdetud väärtused filtris olemas, kuid ei ole sarnased erinevate kajade tulemustega, võimalik, et esimese väärtuse kadumine tähendab, et siin esitatakse andmed alates teisest saabunud kajast. Hiljem sooritatud testides ilmus esimene kaja väärtus tagasi ning pärast seda pole õnnestunud viga korrata, küllaga võib 'None' esineda filtreeritud väärtuste lugemisel ning kutsuv kood peaks selleks valmis olema ('None' on Pythonis ekvivalentne samaks otstarbeks kasutatava 'null' väärtusega).&lt;br /&gt;
&lt;br /&gt;
==Stabiilsustestid==&lt;br /&gt;
&lt;br /&gt;
===Standardhälbe arvutamine===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud vastu seina (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -[[#Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus]]-&lt;br /&gt;
&lt;br /&gt;
Tulemused on arvutatud meetrites.&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 Mean left: 0.239333327611&lt;br /&gt;
 Mean right: 0.239333327611&lt;br /&gt;
 Standard deviation left: 0.00249443959597&lt;br /&gt;
 Standard deviation right: 0.00359011179731&lt;br /&gt;
&lt;br /&gt;
Tulemused: Väljund näitab, et jõutud on minimaalse tuvastuskauguseni, kus kauguse täpne mõõtmine pole enam võimalik, kui takistuse olemasolu võib järeldada. Väljund väga stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.Suunatud ~30cm kauguselt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 Mean left: 0.438333324591&lt;br /&gt;
 Mean right: 0.436999990543&lt;br /&gt;
 Standard deviation left: 0.00582142222363&lt;br /&gt;
 Standard deviation right: 0.00525991948363&lt;br /&gt;
&lt;br /&gt;
Tulemused: Keskmistel mõõtmiskaugustel taaskord küllaltki stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud vabasse ruumi. Takistused üle kahe meetri kaugusel. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62999999523&lt;br /&gt;
 left: 1.62999999523 right: 1.40999996662&lt;br /&gt;
 left: 1.64999997616 right: 1.26999998093&lt;br /&gt;
 left: 1.64999997616 right: 1.78999996185&lt;br /&gt;
 left: 1.64999997616 right: 1.55999994278&lt;br /&gt;
 left: 1.64999997616 right: 1.63999998569&lt;br /&gt;
 left: 1.65999996662 right: 1.65999996662&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.64999997616 right: 1.81999993324&lt;br /&gt;
 left: 1.64999997616 right: 1.83999991417&lt;br /&gt;
 left: 1.65999996662 right: 1.86000001431&lt;br /&gt;
 left: 1.84999990463 right: 1.87999999523&lt;br /&gt;
 left: 1.66999995708 right: 1.84999990463&lt;br /&gt;
 left: 1.65999996662 right: 1.87000000477&lt;br /&gt;
 Mean left: 1.65466664235&lt;br /&gt;
 Mean right: 1.67933330536&lt;br /&gt;
 Standard deviation left: 0.0387928804152&lt;br /&gt;
 Standard deviation right: 0.149620252664&lt;br /&gt;
&lt;br /&gt;
Tulemused: Ei tohiks sellistel kaugustel takistusi tuvastada, kuid testi läbiviimiseks valitud ruumis võib olla tegimist kajaprobleemidega. Rahuldav väljundi stabiilsus.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus tühjas ruumis===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Vaba ruum, seinad vähemalt 2.5m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
def joonis(timestep, list1,list2,list3,list4):&lt;br /&gt;
    #joonise loomine&lt;br /&gt;
    fig = plt.figure()&lt;br /&gt;
    ax1 = fig.add_subplot(111)&lt;br /&gt;
    &lt;br /&gt;
    ax1.plot(timestep,list1, 'b',label=&amp;quot;L&amp;quot;,marker='+')&lt;br /&gt;
    ax1.plot(timestep,list2,'r',label=&amp;quot;R&amp;quot;,marker='+')&lt;br /&gt;
&lt;br /&gt;
    ax1.plot(timestep,list3,'c', label=&amp;quot;LF&amp;quot;,marker='o')&lt;br /&gt;
    ax1.plot(timestep,list4,'m',label=&amp;quot;RF&amp;quot;,marker='o')&lt;br /&gt;
    &lt;br /&gt;
    ax1.set_xlabel('time (s)')&lt;br /&gt;
    ax1.set_ylabel('distance (cm)', color='g')&lt;br /&gt;
    for tl in ax1.get_yticklabels():&lt;br /&gt;
        tl.set_color('g')&lt;br /&gt;
    &lt;br /&gt;
    plt.legend()&lt;br /&gt;
    plt.show()&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0)&lt;br /&gt;
&lt;br /&gt;
leftValues=[]&lt;br /&gt;
rightValues=[]&lt;br /&gt;
leftValuesF=[]&lt;br /&gt;
rightValuesF=[]&lt;br /&gt;
timestep=[]&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1)&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
	leftValues.append(float(left)*100)&lt;br /&gt;
	rightValues.append(float(right)*100)&lt;br /&gt;
	if(leftD == None):&lt;br /&gt;
		leftD=0&lt;br /&gt;
	if(rightD == None):&lt;br /&gt;
		rightD=0&lt;br /&gt;
	leftValuesF.append(float(leftD)*100)&lt;br /&gt;
	rightValuesF.append(float(rightD)*100)&lt;br /&gt;
	timestep.append(i)&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
joonis(timestep, leftValues,rightValues,leftValuesF,rightValuesF)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljund:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kasutaja@Huginn:~/Desktop$ python NAO_sonarTest_plot.py 172.19.2.79 50&lt;br /&gt;
left: 1.05999994278 right: 1.09000003338&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.59999990463&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.37000000477 right: 1.56999993324&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.22000002861&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.10000002384 right: 1.11000001431&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
...&lt;br /&gt;
left: 1.04999995232 right: 1.25999999046&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
Mean left: 126.299996376&lt;br /&gt;
Mean right: 125.379997134&lt;br /&gt;
Standard deviation left: 31.8472923989&lt;br /&gt;
Standard deviation right: 19.6243602903&lt;br /&gt;
INFO: Destroying broker 'ALProxyBroker'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Viimased arvutused on tehtud cm-tes.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonar_output.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Esineb väga tugev väljundi kõikumine (standardhälve 32 ja 20 cm) samas filtreeritud väärtused ei muutu. Graafik viitab, et vasaku ja parema sonari mõõdetud tulemused on omavahel teatavas korrellatsioonis.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (puitplaat)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, seinad vähemalt 2 m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Puidust plaat mõõtmetega 55 cm x 77 cm liigutatud 30 cm kaupa sonaritele lähemale, numbrid graafiku ülemisel serval tähistavad plaadi kaugust (täpsus ligikaudu 10 cm). Esimesed mõõtmised &amp;gt; 150 cm tehtud ilma plaadita. Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_plaat.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Plaadi väikeste mõõtmete tõttu tuvastatakse see alles vahemaal alla 90 cm. Sellele eelnevatel kõrgustel püsivad vasaku sonari mõõtetulemused stabiiliselt 110 cm piirimail kui parem sonar annab võrdlemisi mürarikka väljundi, mida järgib teataval määral ka talle vastav filtri läbinud väärtus. Kuna mõõtetulemuste saamiseks liigutati plaati NAO ees, siis on võimalik, et lugemid tulevad ümbritsevast keskkonnast ehk antud juhul plaadi hoidja jalgadest. Lisakaja võib põhjustada ka 60 cm alas nähtava filtrite ja töötlemata tulemuste vahelise erinevuse kuna esimene kasutab arvutustes kuni üheksat mõõdetud kaja. Graafikust võib paremal juhul järeldada seda, et sonarid sobivad seinast väiksemate takistuste tuvastamiseks vahemaal alla 50 cm, kus väljund on väiksemas sõltuvuses muust ümbritsevast. Samuti on selles piirkonnas parema ja vasaku sonari tulemused omavahel küllaltki heas lähenduses.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein1.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Taaskord annab vasak sonar vähem mürarikkaid tulemusi kui parem, kuigi  võib öelda, et sein on tuvastatav kõikidel mõõdetud kaugustel. Filtrid LeftObstacleDetected ja RightObstacleDetected hakkavad reaalsuse lähedasi tulemusi andma alles 60 cm piirimail. Sellele eelnev võib aga tekitada probleeme kuna pole kindel, kas tulemus 60 cm tähendab objekti või tuvastuskaugusest väljumist, eelnevad katsed näitavad filtreeritud väärtuste küllaltki juhuslikku asetust suurematel kaugustel ning sellega tuleks kasutamisel arvesta. Viimane annab ka seletuse, miks 'Endless walk' demoprogrammis kasutatavad filtreeritud sonari mõõtetulemused polnud ootuspärased ning tekitasid vaatlusel olematute takistuste tuvastamise vigu. 10 cm on alla sonari kasutamise piiri ning seal saadud lugemid annavad minimaalse võimaliku väljundi.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein, sonaritel kattev plastikriba)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Koos sonari avasi ümbritseva ornamentaalse plastikribaga.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein2.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Graafik ei erine oluliselt sonareid ümbritseva plastikribata saadud tulemustest ning võib järeldada, et selle olemasolu ei mõjuta oluliselt väljundit.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8423</id>
		<title>SonariProbleem</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8423"/>
		<updated>2011-04-09T17:55:05Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Filtreeritud väärtused==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;SonarRightDetected&amp;quot; või &amp;quot;SonarLeftDetected&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Samalaadse tulemuse andis ka Pythoni skript. Kui käivitasin [[Python#Näiteprogramm | näiteskripti]] ja suunasin sonarid lakke olid loetud väärtused:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.569999992847&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.579999983311&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Ülaltoodud &amp;quot;SonarRightDetected&amp;quot; väärtused on eelnevalt läbinud filtri (töötluse) ning ei kajasta otseselt seda, mida sonar mõõtis.&lt;br /&gt;
&lt;br /&gt;
==Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevas katses liigutati NAOd mööda tuba ringi viies teda seintest lähemale/kaugemale kokku võeti 100 lugemit igale sonari loetud väärtusele järgneb filtri läbinud väärtus.&lt;br /&gt;
&lt;br /&gt;
Väljundi stabiilsuse ning filtreerimise testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import time&lt;br /&gt;
 import numpy&lt;br /&gt;
 from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
 IP = sys.argv[1] // Käsurea argumendid&lt;br /&gt;
 SAMPLES = sys.argv[2]&lt;br /&gt;
 PORT = 9559&lt;br /&gt;
&lt;br /&gt;
 sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
 mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
 sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0) // Uuenda 500ms tagant, täpsus 1.0&lt;br /&gt;
&lt;br /&gt;
 leftValues=[]&lt;br /&gt;
 rightValues=[]&lt;br /&gt;
&lt;br /&gt;
 for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1) // Oota 1 sekund&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0) // 0 tähendab uusima väärtuse lugemist, otse sonarist saadud väärtus &lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;) // Läbinud filtri&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
	leftValues.append(float(left))&lt;br /&gt;
	rightValues.append(float(right))&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
 print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
 print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
 print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
 print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
 sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljundifail: [[File:NAO_sonarTest_output.txt]]&lt;br /&gt;
&lt;br /&gt;
Väljundis:&lt;br /&gt;
&lt;br /&gt;
 left: 1.66999995708 right: 1.39999997616&lt;br /&gt;
 filter left: 0.389999985695 right: 0.699999988079&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.87999999523 right: 1.40999996662&lt;br /&gt;
 filter left: 0.439999997616 right: 0.649999976158&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.310000002384 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.289999991655 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
&lt;br /&gt;
Väljundist on väga suur erinevus filtreermata ning filtreeritud väärtuste vahel, samuti eksisteerib väljund alati, isegi siis kui lähemalasetsevad objektid on kaugemal kui 1,5m nagu on dokumentatsiooni järgi suurim tuvastuskaugus. Katse lõpus arvutatud keskmine ning standardhälve ei oma selle katse kontekstis erilist tähendust kuna sonarid oli liikumises.&lt;br /&gt;
&lt;br /&gt;
==Mitmekordse kaja väärtused==&lt;br /&gt;
&lt;br /&gt;
NAO Sonar mõõdab kaugusi ka teistele kajadele peale esimese. Mällu salvestatakse 10 väärtust. Järgnev kood prindib ekraanile kõik kümme väärtust ning lisaks nenede põhjal arvutatud 'SonarLeftDetected' väärtuse.&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 1000, 1.0)&lt;br /&gt;
&lt;br /&gt;
time.sleep(10)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
 	time.sleep(2)&lt;br /&gt;
	print &amp;quot;Iteration&amp;quot;,i&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value1&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value2&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value3&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value4&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value5&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value6&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value7&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value8&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value9&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 0.909999966621&lt;br /&gt;
 1.49000000954&lt;br /&gt;
 1.7199999094&lt;br /&gt;
 2.06999993324&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 0.899999976158&lt;br /&gt;
 1.48000001907&lt;br /&gt;
 2.0&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Versioonis 1.10.11 ei eksisteeri mälus enam väärtust &amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, mida esindab väljundis nüüd &amp;quot;None&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud vabasse ruumi: &lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.45999991894&lt;br /&gt;
 1.87999999523&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.44999992847&lt;br /&gt;
 1.86000001431&lt;br /&gt;
 2.22000002861&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tulemustest järeldub, et kui takistused on liiga kaugel tagastab filtreeritud väärtus alati minimaalse mõõteväärtuse, kuigi mõõtetulemused on olemas. Väärtused suuremad kui 2.54 tähendavad suurima tõenäosusega, et niimitmendat kaja ei registreeritud piiratud aja vältel. Samas võib semantiliselt lugeda 'SonarLeftDetected' tulemuse korrektseks, sest nagu nimest järeldub peaks see väärtust esindama takistust, mille tuvastamine liiga kaugelt tekitab liigset andmemüra ning takistusega võib tegeleda kui see robotile reaalselt ette satub.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud ligi poole meetri kauguselt vastu toa nurka:&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.53999996185&lt;br /&gt;
 2.03999996185&lt;br /&gt;
 2.38999986649&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.57999992371&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Mingisugusel põhjusel on lähendalt mõõdetud väärtused filtris olemas, kuid ei ole sarnased erinevate kajade tulemustega, võimalik, et esimese väärtuse kadumine tähendab, et siin esitatakse andmed alates teisest saabunud kajast. Hiljem sooritatud testides ilmus esimene kaja väärtus tagasi ning pärast seda pole õnnestunud viga korrata, küllaga võib 'None' esineda filtreeritud väärtuste lugemisel ning kutsuv kood peaks selleks valmis olema ('None' on Pythonis ekvivalentne samaks otstarbeks kasutatava 'null' väärtusega).&lt;br /&gt;
&lt;br /&gt;
==Stabiilsustestid==&lt;br /&gt;
&lt;br /&gt;
===Standardhälbe arvutamine===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud vastu seina (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Tulemused on arvutatud meetrites.&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 Mean left: 0.239333327611&lt;br /&gt;
 Mean right: 0.239333327611&lt;br /&gt;
 Standard deviation left: 0.00249443959597&lt;br /&gt;
 Standard deviation right: 0.00359011179731&lt;br /&gt;
&lt;br /&gt;
Tulemused: Väljund näitab, et jõutud on minimaalse tuvastuskauguseni, kus kauguse täpne mõõtmine pole enam võimalik, kui takistuse olemasolu võib järeldada. Väljund väga stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.Suunatud ~30cm kauguselt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 Mean left: 0.438333324591&lt;br /&gt;
 Mean right: 0.436999990543&lt;br /&gt;
 Standard deviation left: 0.00582142222363&lt;br /&gt;
 Standard deviation right: 0.00525991948363&lt;br /&gt;
&lt;br /&gt;
Tulemused: Keskmistel mõõtmiskaugustel taaskord küllaltki stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud vabasse ruumi. Takistused üle kahe meetri kaugusel. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62999999523&lt;br /&gt;
 left: 1.62999999523 right: 1.40999996662&lt;br /&gt;
 left: 1.64999997616 right: 1.26999998093&lt;br /&gt;
 left: 1.64999997616 right: 1.78999996185&lt;br /&gt;
 left: 1.64999997616 right: 1.55999994278&lt;br /&gt;
 left: 1.64999997616 right: 1.63999998569&lt;br /&gt;
 left: 1.65999996662 right: 1.65999996662&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.64999997616 right: 1.81999993324&lt;br /&gt;
 left: 1.64999997616 right: 1.83999991417&lt;br /&gt;
 left: 1.65999996662 right: 1.86000001431&lt;br /&gt;
 left: 1.84999990463 right: 1.87999999523&lt;br /&gt;
 left: 1.66999995708 right: 1.84999990463&lt;br /&gt;
 left: 1.65999996662 right: 1.87000000477&lt;br /&gt;
 Mean left: 1.65466664235&lt;br /&gt;
 Mean right: 1.67933330536&lt;br /&gt;
 Standard deviation left: 0.0387928804152&lt;br /&gt;
 Standard deviation right: 0.149620252664&lt;br /&gt;
&lt;br /&gt;
Tulemused: Ei tohiks sellistel kaugustel takistusi tuvastada, kuid testi läbiviimiseks valitud ruumis võib olla tegimist kajaprobleemidega. Rahuldav väljundi stabiilsus.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus tühjas ruumis===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Vaba ruum, seinad vähemalt 2.5m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
def joonis(timestep, list1,list2,list3,list4):&lt;br /&gt;
    #joonise loomine&lt;br /&gt;
    fig = plt.figure()&lt;br /&gt;
    ax1 = fig.add_subplot(111)&lt;br /&gt;
    &lt;br /&gt;
    ax1.plot(timestep,list1, 'b',label=&amp;quot;L&amp;quot;,marker='+')&lt;br /&gt;
    ax1.plot(timestep,list2,'r',label=&amp;quot;R&amp;quot;,marker='+')&lt;br /&gt;
&lt;br /&gt;
    ax1.plot(timestep,list3,'c', label=&amp;quot;LF&amp;quot;,marker='o')&lt;br /&gt;
    ax1.plot(timestep,list4,'m',label=&amp;quot;RF&amp;quot;,marker='o')&lt;br /&gt;
    &lt;br /&gt;
    ax1.set_xlabel('time (s)')&lt;br /&gt;
    ax1.set_ylabel('distance (cm)', color='g')&lt;br /&gt;
    for tl in ax1.get_yticklabels():&lt;br /&gt;
        tl.set_color('g')&lt;br /&gt;
    &lt;br /&gt;
    plt.legend()&lt;br /&gt;
    plt.show()&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0)&lt;br /&gt;
&lt;br /&gt;
leftValues=[]&lt;br /&gt;
rightValues=[]&lt;br /&gt;
leftValuesF=[]&lt;br /&gt;
rightValuesF=[]&lt;br /&gt;
timestep=[]&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1)&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
	leftValues.append(float(left)*100)&lt;br /&gt;
	rightValues.append(float(right)*100)&lt;br /&gt;
	if(leftD == None):&lt;br /&gt;
		leftD=0&lt;br /&gt;
	if(rightD == None):&lt;br /&gt;
		rightD=0&lt;br /&gt;
	leftValuesF.append(float(leftD)*100)&lt;br /&gt;
	rightValuesF.append(float(rightD)*100)&lt;br /&gt;
	timestep.append(i)&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
joonis(timestep, leftValues,rightValues,leftValuesF,rightValuesF)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljund:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kasutaja@Huginn:~/Desktop$ python NAO_sonarTest_plot.py 172.19.2.79 50&lt;br /&gt;
left: 1.05999994278 right: 1.09000003338&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.59999990463&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.37000000477 right: 1.56999993324&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.22000002861&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.10000002384 right: 1.11000001431&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
...&lt;br /&gt;
left: 1.04999995232 right: 1.25999999046&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
Mean left: 126.299996376&lt;br /&gt;
Mean right: 125.379997134&lt;br /&gt;
Standard deviation left: 31.8472923989&lt;br /&gt;
Standard deviation right: 19.6243602903&lt;br /&gt;
INFO: Destroying broker 'ALProxyBroker'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Viimased arvutused on tehtud cm-tes.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonar_output.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Esineb väga tugev väljundi kõikumine (standardhälve 32 ja 20 cm) samas filtreeritud väärtused ei muutu. Graafik viitab, et vasaku ja parema sonari mõõdetud tulemused on omavahel teatavas korrellatsioonis.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (puitplaat)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, seinad vähemalt 2 m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Puidust plaat mõõtmetega 55 cm x 77 cm liigutatud 30 cm kaupa sonaritele lähemale, numbrid graafiku ülemisel serval tähistavad plaadi kaugust (täpsus ligikaudu 10 cm). Esimesed mõõtmised &amp;gt; 150 cm tehtud ilma plaadita. Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_plaat.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Plaadi väikeste mõõtmete tõttu tuvastatakse see alles vahemaal alla 90 cm. Sellele eelnevatel kõrgustel püsivad vasaku sonari mõõtetulemused stabiiliselt 110 cm piirimail kui parem sonar annab võrdlemisi mürarikka väljundi, mida järgib teataval määral ka talle vastav filtri läbinud väärtus. Kuna mõõtetulemuste saamiseks liigutati plaati NAO ees, siis on võimalik, et lugemid tulevad ümbritsevast keskkonnast ehk antud juhul plaadi hoidja jalgadest. Lisakaja võib põhjustada ka 60 cm alas nähtava filtrite ja töötlemata tulemuste vahelise erinevuse kuna esimene kasutab arvutustes kuni üheksat mõõdetud kaja. Graafikust võib paremal juhul järeldada seda, et sonarid sobivad seinast väiksemate takistuste tuvastamiseks vahemaal alla 50 cm, kus väljund on väiksemas sõltuvuses muust ümbritsevast. Samuti on selles piirkonnas parema ja vasaku sonari tulemused omavahel küllaltki heas lähenduses.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein1.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Taaskord annab vasak sonar vähem mürarikkaid tulemusi kui parem, kuigi  võib öelda, et sein on tuvastatav kõikidel mõõdetud kaugustel. Filtrid LeftObstacleDetected ja RightObstacleDetected hakkavad reaalsuse lähedasi tulemusi andma alles 60 cm piirimail. Sellele eelnev võib aga tekitada probleeme kuna pole kindel, kas tulemus 60 cm tähendab objekti või tuvastuskaugusest väljumist, eelnevad katsed näitavad filtreeritud väärtuste küllaltki juhuslikku asetust suurematel kaugustel ning sellega tuleks kasutamisel arvesta. Viimane annab ka seletuse, miks 'Endless walk' demoprogrammis kasutatavad filtreeritud sonari mõõtetulemused polnud ootuspärased ning tekitasid vaatlusel olematute takistuste tuvastamise vigu. 10 cm on alla sonari kasutamise piiri ning seal saadud lugemid annavad minimaalse võimaliku väljundi.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein, sonaritel kattev plastikriba)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Koos sonari avasi ümbritseva ornamentaalse plastikribaga.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein2.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Graafik ei erine oluliselt sonareid ümbritseva plastikribata saadud tulemustest ning võib järeldada, et selle olemasolu ei mõjuta oluliselt väljundit.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8422</id>
		<title>SonariProbleem</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8422"/>
		<updated>2011-04-09T17:51:47Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Mitmekordse kaja väärtused */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Filtreeritud väärtused==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;SonarRightDetected&amp;quot; või &amp;quot;SonarLeftDetected&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Samalaadse tulemuse andis ka Pythoni skript. Kui käivitasin [[Python#Näiteprogramm | näiteskripti]] ja suunasin sonarid lakke olid loetud väärtused:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.569999992847&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.579999983311&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Ülaltoodud &amp;quot;SonarRightDetected&amp;quot; väärtused on eelnevalt läbinud filtri (töötluse) ning ei kajasta otseselt seda, mida sonar mõõtis.&lt;br /&gt;
&lt;br /&gt;
==Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevas katses liigutati NAOd mööda tuba ringi viies teda seintest lähemale/kaugemale kokku võeti 100 lugemit igale sonari loetud väärtusele järgneb filtri läbinud väärtus.&lt;br /&gt;
&lt;br /&gt;
Väljundi stabiilsuse ning filtreerimise testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import time&lt;br /&gt;
 import numpy&lt;br /&gt;
 from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
 IP = sys.argv[1] // Käsurea argumendid&lt;br /&gt;
 SAMPLES = sys.argv[2]&lt;br /&gt;
 PORT = 9559&lt;br /&gt;
&lt;br /&gt;
 sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
 mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
 sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0) // Uuenda 500ms tagant, täpsus 1.0&lt;br /&gt;
&lt;br /&gt;
 leftValues=[]&lt;br /&gt;
 rightValues=[]&lt;br /&gt;
&lt;br /&gt;
 for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1) // Oota 1 sekund&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0) // 0 tähendab uusima väärtuse lugemist, otse sonarist saadud väärtus &lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;) // Läbinud filtri&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
	leftValues.append(float(left))&lt;br /&gt;
	rightValues.append(float(right))&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
 print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
 print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
 print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
 print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
 sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljundifail: [[File:NAO_sonarTest_output.txt]]&lt;br /&gt;
&lt;br /&gt;
Väljundis:&lt;br /&gt;
&lt;br /&gt;
 left: 1.66999995708 right: 1.39999997616&lt;br /&gt;
 filter left: 0.389999985695 right: 0.699999988079&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.87999999523 right: 1.40999996662&lt;br /&gt;
 filter left: 0.439999997616 right: 0.649999976158&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.310000002384 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.289999991655 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
&lt;br /&gt;
Väljundist on väga suur erinevus filtreermata ning filtreeritud väärtuste vahel, samuti eksisteerib väljund alati, isegi siis kui lähemalasetsevad objektid on kaugemal kui 1,5m nagu on dokumentatsiooni järgi suurim tuvastuskaugus. Katse lõpus arvutatud keskmine ning standardhälve ei oma selle katse kontekstis erilist tähendust kuna sonarid oli liikumises.&lt;br /&gt;
&lt;br /&gt;
==Stabiilsustestid==&lt;br /&gt;
&lt;br /&gt;
===Standardhälbe arvutamine===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud vastu seina (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Tulemused on arvutatud meetrites.&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 Mean left: 0.239333327611&lt;br /&gt;
 Mean right: 0.239333327611&lt;br /&gt;
 Standard deviation left: 0.00249443959597&lt;br /&gt;
 Standard deviation right: 0.00359011179731&lt;br /&gt;
&lt;br /&gt;
Tulemused: Väljund näitab, et jõutud on minimaalse tuvastuskauguseni, kus kauguse täpne mõõtmine pole enam võimalik, kui takistuse olemasolu võib järeldada. Väljund väga stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.Suunatud ~30cm kauguselt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 Mean left: 0.438333324591&lt;br /&gt;
 Mean right: 0.436999990543&lt;br /&gt;
 Standard deviation left: 0.00582142222363&lt;br /&gt;
 Standard deviation right: 0.00525991948363&lt;br /&gt;
&lt;br /&gt;
Tulemused: Keskmistel mõõtmiskaugustel taaskord küllaltki stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud vabasse ruumi. Takistused üle kahe meetri kaugusel. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62999999523&lt;br /&gt;
 left: 1.62999999523 right: 1.40999996662&lt;br /&gt;
 left: 1.64999997616 right: 1.26999998093&lt;br /&gt;
 left: 1.64999997616 right: 1.78999996185&lt;br /&gt;
 left: 1.64999997616 right: 1.55999994278&lt;br /&gt;
 left: 1.64999997616 right: 1.63999998569&lt;br /&gt;
 left: 1.65999996662 right: 1.65999996662&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.64999997616 right: 1.81999993324&lt;br /&gt;
 left: 1.64999997616 right: 1.83999991417&lt;br /&gt;
 left: 1.65999996662 right: 1.86000001431&lt;br /&gt;
 left: 1.84999990463 right: 1.87999999523&lt;br /&gt;
 left: 1.66999995708 right: 1.84999990463&lt;br /&gt;
 left: 1.65999996662 right: 1.87000000477&lt;br /&gt;
 Mean left: 1.65466664235&lt;br /&gt;
 Mean right: 1.67933330536&lt;br /&gt;
 Standard deviation left: 0.0387928804152&lt;br /&gt;
 Standard deviation right: 0.149620252664&lt;br /&gt;
&lt;br /&gt;
Tulemused: Ei tohiks sellistel kaugustel takistusi tuvastada, kuid testi läbiviimiseks valitud ruumis võib olla tegimist kajaprobleemidega. Rahuldav väljundi stabiilsus.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus tühjas ruumis===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Vaba ruum, seinad vähemalt 2.5m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
def joonis(timestep, list1,list2,list3,list4):&lt;br /&gt;
    #joonise loomine&lt;br /&gt;
    fig = plt.figure()&lt;br /&gt;
    ax1 = fig.add_subplot(111)&lt;br /&gt;
    &lt;br /&gt;
    ax1.plot(timestep,list1, 'b',label=&amp;quot;L&amp;quot;,marker='+')&lt;br /&gt;
    ax1.plot(timestep,list2,'r',label=&amp;quot;R&amp;quot;,marker='+')&lt;br /&gt;
&lt;br /&gt;
    ax1.plot(timestep,list3,'c', label=&amp;quot;LF&amp;quot;,marker='o')&lt;br /&gt;
    ax1.plot(timestep,list4,'m',label=&amp;quot;RF&amp;quot;,marker='o')&lt;br /&gt;
    &lt;br /&gt;
    ax1.set_xlabel('time (s)')&lt;br /&gt;
    ax1.set_ylabel('distance (cm)', color='g')&lt;br /&gt;
    for tl in ax1.get_yticklabels():&lt;br /&gt;
        tl.set_color('g')&lt;br /&gt;
    &lt;br /&gt;
    plt.legend()&lt;br /&gt;
    plt.show()&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0)&lt;br /&gt;
&lt;br /&gt;
leftValues=[]&lt;br /&gt;
rightValues=[]&lt;br /&gt;
leftValuesF=[]&lt;br /&gt;
rightValuesF=[]&lt;br /&gt;
timestep=[]&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1)&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
	leftValues.append(float(left)*100)&lt;br /&gt;
	rightValues.append(float(right)*100)&lt;br /&gt;
	if(leftD == None):&lt;br /&gt;
		leftD=0&lt;br /&gt;
	if(rightD == None):&lt;br /&gt;
		rightD=0&lt;br /&gt;
	leftValuesF.append(float(leftD)*100)&lt;br /&gt;
	rightValuesF.append(float(rightD)*100)&lt;br /&gt;
	timestep.append(i)&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
joonis(timestep, leftValues,rightValues,leftValuesF,rightValuesF)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljund:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kasutaja@Huginn:~/Desktop$ python NAO_sonarTest_plot.py 172.19.2.79 50&lt;br /&gt;
left: 1.05999994278 right: 1.09000003338&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.59999990463&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.37000000477 right: 1.56999993324&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.22000002861&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.10000002384 right: 1.11000001431&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
...&lt;br /&gt;
left: 1.04999995232 right: 1.25999999046&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
Mean left: 126.299996376&lt;br /&gt;
Mean right: 125.379997134&lt;br /&gt;
Standard deviation left: 31.8472923989&lt;br /&gt;
Standard deviation right: 19.6243602903&lt;br /&gt;
INFO: Destroying broker 'ALProxyBroker'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Viimased arvutused on tehtud cm-tes.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonar_output.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Esineb väga tugev väljundi kõikumine (standardhälve 32 ja 20 cm) samas filtreeritud väärtused ei muutu. Graafik viitab, et vasaku ja parema sonari mõõdetud tulemused on omavahel teatavas korrellatsioonis.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (puitplaat)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, seinad vähemalt 2 m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Puidust plaat mõõtmetega 55 cm x 77 cm liigutatud 30 cm kaupa sonaritele lähemale, numbrid graafiku ülemisel serval tähistavad plaadi kaugust (täpsus ligikaudu 10 cm). Esimesed mõõtmised &amp;gt; 150 cm tehtud ilma plaadita. Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_plaat.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Plaadi väikeste mõõtmete tõttu tuvastatakse see alles vahemaal alla 90 cm. Sellele eelnevatel kõrgustel püsivad vasaku sonari mõõtetulemused stabiiliselt 110 cm piirimail kui parem sonar annab võrdlemisi mürarikka väljundi, mida järgib teataval määral ka talle vastav filtri läbinud väärtus. Kuna mõõtetulemuste saamiseks liigutati plaati NAO ees, siis on võimalik, et lugemid tulevad ümbritsevast keskkonnast ehk antud juhul plaadi hoidja jalgadest. Lisakaja võib põhjustada ka 60 cm alas nähtava filtrite ja töötlemata tulemuste vahelise erinevuse kuna esimene kasutab arvutustes kuni üheksat mõõdetud kaja. Graafikust võib paremal juhul järeldada seda, et sonarid sobivad seinast väiksemate takistuste tuvastamiseks vahemaal alla 50 cm, kus väljund on väiksemas sõltuvuses muust ümbritsevast. Samuti on selles piirkonnas parema ja vasaku sonari tulemused omavahel küllaltki heas lähenduses.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein1.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Taaskord annab vasak sonar vähem mürarikkaid tulemusi kui parem, kuigi  võib öelda, et sein on tuvastatav kõikidel mõõdetud kaugustel. Filtrid LeftObstacleDetected ja RightObstacleDetected hakkavad reaalsuse lähedasi tulemusi andma alles 60 cm piirimail. Sellele eelnev võib aga tekitada probleeme kuna pole kindel, kas tulemus 60 cm tähendab objekti või tuvastuskaugusest väljumist, eelnevad katsed näitavad filtreeritud väärtuste küllaltki juhuslikku asetust suurematel kaugustel ning sellega tuleks kasutamisel arvesta. Viimane annab ka seletuse, miks 'Endless walk' demoprogrammis kasutatavad filtreeritud sonari mõõtetulemused polnud ootuspärased ning tekitasid vaatlusel olematute takistuste tuvastamise vigu. 10 cm on alla sonari kasutamise piiri ning seal saadud lugemid annavad minimaalse võimaliku väljundi.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein, sonaritel kattev plastikriba)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Koos sonari avasi ümbritseva ornamentaalse plastikribaga.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein2.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Graafik ei erine oluliselt sonareid ümbritseva plastikribata saadud tulemustest ning võib järeldada, et selle olemasolu ei mõjuta oluliselt väljundit.&lt;br /&gt;
&lt;br /&gt;
==Mitmekordse kaja väärtused==&lt;br /&gt;
&lt;br /&gt;
NAO Sonar mõõdab kaugusi ka teistele kajadele peale esimese. Mällu salvestatakse 10 väärtust. Järgnev kood prindib ekraanile kõik kümme väärtust ning lisaks nenede põhjal arvutatud 'SonarLeftDetected' väärtuse.&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 1000, 1.0)&lt;br /&gt;
&lt;br /&gt;
time.sleep(10)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
 	time.sleep(2)&lt;br /&gt;
	print &amp;quot;Iteration&amp;quot;,i&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value1&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value2&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value3&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value4&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value5&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value6&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value7&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value8&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value9&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 0.909999966621&lt;br /&gt;
 1.49000000954&lt;br /&gt;
 1.7199999094&lt;br /&gt;
 2.06999993324&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 0.899999976158&lt;br /&gt;
 1.48000001907&lt;br /&gt;
 2.0&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Versioonis 1.10.11 ei eksisteeri mälus enam väärtust &amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, mida esindab väljundis nüüd &amp;quot;None&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud vabasse ruumi: &lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.45999991894&lt;br /&gt;
 1.87999999523&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.44999992847&lt;br /&gt;
 1.86000001431&lt;br /&gt;
 2.22000002861&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tulemustest järeldub, et kui takistused on liiga kaugel tagastab filtreeritud väärtus alati minimaalse mõõteväärtuse, kuigi mõõtetulemused on olemas. Väärtused suuremad kui 2.54 tähendavad suurima tõenäosusega, et niimitmendat kaja ei registreeritud piiratud aja vältel. Samas võib semantiliselt lugeda 'SonarLeftDetected' tulemuse korrektseks, sest nagu nimest järeldub peaks see väärtust esindama takistust, mille tuvastamine liiga kaugelt tekitab liigset andmemüra ning takistusega võib tegeleda kui see robotile reaalselt ette satub.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud ligi poole meetri kauguselt vastu toa nurka:&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.53999996185&lt;br /&gt;
 2.03999996185&lt;br /&gt;
 2.38999986649&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.57999992371&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Mingisugusel põhjusel on lähendalt mõõdetud väärtused filtris olemas, kuid ei ole sarnased erinevate kajade tulemustega, võimalik, et esimese väärtuse kadumine tähendab, et siin esitatakse andmed alates teisest saabunud kajast. Hiljem sooritatud testides ilmus esimene kaja väärtus tagasi ning pärast seda pole õnnestunud viga korrata, küllaga võib 'None' esineda filtreeritud väärtuste lugemisel ning kutsuv kood peaks selleks valmis olema ('None' on Pythonis ekvivalentne samaks otstarbeks kasutatava 'null' väärtusega).&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8421</id>
		<title>SonariProbleem</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8421"/>
		<updated>2011-04-09T17:51:42Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Väljundite võrdlus erinevatel kaugustel (sein) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Filtreeritud väärtused==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;SonarRightDetected&amp;quot; või &amp;quot;SonarLeftDetected&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Samalaadse tulemuse andis ka Pythoni skript. Kui käivitasin [[Python#Näiteprogramm | näiteskripti]] ja suunasin sonarid lakke olid loetud väärtused:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.569999992847&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.579999983311&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Ülaltoodud &amp;quot;SonarRightDetected&amp;quot; väärtused on eelnevalt läbinud filtri (töötluse) ning ei kajasta otseselt seda, mida sonar mõõtis.&lt;br /&gt;
&lt;br /&gt;
==Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevas katses liigutati NAOd mööda tuba ringi viies teda seintest lähemale/kaugemale kokku võeti 100 lugemit igale sonari loetud väärtusele järgneb filtri läbinud väärtus.&lt;br /&gt;
&lt;br /&gt;
Väljundi stabiilsuse ning filtreerimise testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import time&lt;br /&gt;
 import numpy&lt;br /&gt;
 from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
 IP = sys.argv[1] // Käsurea argumendid&lt;br /&gt;
 SAMPLES = sys.argv[2]&lt;br /&gt;
 PORT = 9559&lt;br /&gt;
&lt;br /&gt;
 sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
 mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
 sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0) // Uuenda 500ms tagant, täpsus 1.0&lt;br /&gt;
&lt;br /&gt;
 leftValues=[]&lt;br /&gt;
 rightValues=[]&lt;br /&gt;
&lt;br /&gt;
 for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1) // Oota 1 sekund&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0) // 0 tähendab uusima väärtuse lugemist, otse sonarist saadud väärtus &lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;) // Läbinud filtri&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
	leftValues.append(float(left))&lt;br /&gt;
	rightValues.append(float(right))&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
 print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
 print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
 print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
 print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
 sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljundifail: [[File:NAO_sonarTest_output.txt]]&lt;br /&gt;
&lt;br /&gt;
Väljundis:&lt;br /&gt;
&lt;br /&gt;
 left: 1.66999995708 right: 1.39999997616&lt;br /&gt;
 filter left: 0.389999985695 right: 0.699999988079&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.87999999523 right: 1.40999996662&lt;br /&gt;
 filter left: 0.439999997616 right: 0.649999976158&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.310000002384 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.289999991655 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
&lt;br /&gt;
Väljundist on väga suur erinevus filtreermata ning filtreeritud väärtuste vahel, samuti eksisteerib väljund alati, isegi siis kui lähemalasetsevad objektid on kaugemal kui 1,5m nagu on dokumentatsiooni järgi suurim tuvastuskaugus. Katse lõpus arvutatud keskmine ning standardhälve ei oma selle katse kontekstis erilist tähendust kuna sonarid oli liikumises.&lt;br /&gt;
&lt;br /&gt;
==Stabiilsustestid==&lt;br /&gt;
&lt;br /&gt;
===Standardhälbe arvutamine===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud vastu seina (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Tulemused on arvutatud meetrites.&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 Mean left: 0.239333327611&lt;br /&gt;
 Mean right: 0.239333327611&lt;br /&gt;
 Standard deviation left: 0.00249443959597&lt;br /&gt;
 Standard deviation right: 0.00359011179731&lt;br /&gt;
&lt;br /&gt;
Tulemused: Väljund näitab, et jõutud on minimaalse tuvastuskauguseni, kus kauguse täpne mõõtmine pole enam võimalik, kui takistuse olemasolu võib järeldada. Väljund väga stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.Suunatud ~30cm kauguselt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 Mean left: 0.438333324591&lt;br /&gt;
 Mean right: 0.436999990543&lt;br /&gt;
 Standard deviation left: 0.00582142222363&lt;br /&gt;
 Standard deviation right: 0.00525991948363&lt;br /&gt;
&lt;br /&gt;
Tulemused: Keskmistel mõõtmiskaugustel taaskord küllaltki stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud vabasse ruumi. Takistused üle kahe meetri kaugusel. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62999999523&lt;br /&gt;
 left: 1.62999999523 right: 1.40999996662&lt;br /&gt;
 left: 1.64999997616 right: 1.26999998093&lt;br /&gt;
 left: 1.64999997616 right: 1.78999996185&lt;br /&gt;
 left: 1.64999997616 right: 1.55999994278&lt;br /&gt;
 left: 1.64999997616 right: 1.63999998569&lt;br /&gt;
 left: 1.65999996662 right: 1.65999996662&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.64999997616 right: 1.81999993324&lt;br /&gt;
 left: 1.64999997616 right: 1.83999991417&lt;br /&gt;
 left: 1.65999996662 right: 1.86000001431&lt;br /&gt;
 left: 1.84999990463 right: 1.87999999523&lt;br /&gt;
 left: 1.66999995708 right: 1.84999990463&lt;br /&gt;
 left: 1.65999996662 right: 1.87000000477&lt;br /&gt;
 Mean left: 1.65466664235&lt;br /&gt;
 Mean right: 1.67933330536&lt;br /&gt;
 Standard deviation left: 0.0387928804152&lt;br /&gt;
 Standard deviation right: 0.149620252664&lt;br /&gt;
&lt;br /&gt;
Tulemused: Ei tohiks sellistel kaugustel takistusi tuvastada, kuid testi läbiviimiseks valitud ruumis võib olla tegimist kajaprobleemidega. Rahuldav väljundi stabiilsus.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus tühjas ruumis===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Vaba ruum, seinad vähemalt 2.5m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
def joonis(timestep, list1,list2,list3,list4):&lt;br /&gt;
    #joonise loomine&lt;br /&gt;
    fig = plt.figure()&lt;br /&gt;
    ax1 = fig.add_subplot(111)&lt;br /&gt;
    &lt;br /&gt;
    ax1.plot(timestep,list1, 'b',label=&amp;quot;L&amp;quot;,marker='+')&lt;br /&gt;
    ax1.plot(timestep,list2,'r',label=&amp;quot;R&amp;quot;,marker='+')&lt;br /&gt;
&lt;br /&gt;
    ax1.plot(timestep,list3,'c', label=&amp;quot;LF&amp;quot;,marker='o')&lt;br /&gt;
    ax1.plot(timestep,list4,'m',label=&amp;quot;RF&amp;quot;,marker='o')&lt;br /&gt;
    &lt;br /&gt;
    ax1.set_xlabel('time (s)')&lt;br /&gt;
    ax1.set_ylabel('distance (cm)', color='g')&lt;br /&gt;
    for tl in ax1.get_yticklabels():&lt;br /&gt;
        tl.set_color('g')&lt;br /&gt;
    &lt;br /&gt;
    plt.legend()&lt;br /&gt;
    plt.show()&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0)&lt;br /&gt;
&lt;br /&gt;
leftValues=[]&lt;br /&gt;
rightValues=[]&lt;br /&gt;
leftValuesF=[]&lt;br /&gt;
rightValuesF=[]&lt;br /&gt;
timestep=[]&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1)&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
	leftValues.append(float(left)*100)&lt;br /&gt;
	rightValues.append(float(right)*100)&lt;br /&gt;
	if(leftD == None):&lt;br /&gt;
		leftD=0&lt;br /&gt;
	if(rightD == None):&lt;br /&gt;
		rightD=0&lt;br /&gt;
	leftValuesF.append(float(leftD)*100)&lt;br /&gt;
	rightValuesF.append(float(rightD)*100)&lt;br /&gt;
	timestep.append(i)&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
joonis(timestep, leftValues,rightValues,leftValuesF,rightValuesF)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljund:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kasutaja@Huginn:~/Desktop$ python NAO_sonarTest_plot.py 172.19.2.79 50&lt;br /&gt;
left: 1.05999994278 right: 1.09000003338&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.59999990463&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.37000000477 right: 1.56999993324&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.22000002861&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.10000002384 right: 1.11000001431&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
...&lt;br /&gt;
left: 1.04999995232 right: 1.25999999046&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
Mean left: 126.299996376&lt;br /&gt;
Mean right: 125.379997134&lt;br /&gt;
Standard deviation left: 31.8472923989&lt;br /&gt;
Standard deviation right: 19.6243602903&lt;br /&gt;
INFO: Destroying broker 'ALProxyBroker'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Viimased arvutused on tehtud cm-tes.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonar_output.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Esineb väga tugev väljundi kõikumine (standardhälve 32 ja 20 cm) samas filtreeritud väärtused ei muutu. Graafik viitab, et vasaku ja parema sonari mõõdetud tulemused on omavahel teatavas korrellatsioonis.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (puitplaat)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, seinad vähemalt 2 m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Puidust plaat mõõtmetega 55 cm x 77 cm liigutatud 30 cm kaupa sonaritele lähemale, numbrid graafiku ülemisel serval tähistavad plaadi kaugust (täpsus ligikaudu 10 cm). Esimesed mõõtmised &amp;gt; 150 cm tehtud ilma plaadita. Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_plaat.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Plaadi väikeste mõõtmete tõttu tuvastatakse see alles vahemaal alla 90 cm. Sellele eelnevatel kõrgustel püsivad vasaku sonari mõõtetulemused stabiiliselt 110 cm piirimail kui parem sonar annab võrdlemisi mürarikka väljundi, mida järgib teataval määral ka talle vastav filtri läbinud väärtus. Kuna mõõtetulemuste saamiseks liigutati plaati NAO ees, siis on võimalik, et lugemid tulevad ümbritsevast keskkonnast ehk antud juhul plaadi hoidja jalgadest. Lisakaja võib põhjustada ka 60 cm alas nähtava filtrite ja töötlemata tulemuste vahelise erinevuse kuna esimene kasutab arvutustes kuni üheksat mõõdetud kaja. Graafikust võib paremal juhul järeldada seda, et sonarid sobivad seinast väiksemate takistuste tuvastamiseks vahemaal alla 50 cm, kus väljund on väiksemas sõltuvuses muust ümbritsevast. Samuti on selles piirkonnas parema ja vasaku sonari tulemused omavahel küllaltki heas lähenduses.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein1.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Taaskord annab vasak sonar vähem mürarikkaid tulemusi kui parem, kuigi  võib öelda, et sein on tuvastatav kõikidel mõõdetud kaugustel. Filtrid LeftObstacleDetected ja RightObstacleDetected hakkavad reaalsuse lähedasi tulemusi andma alles 60 cm piirimail. Sellele eelnev võib aga tekitada probleeme kuna pole kindel, kas tulemus 60 cm tähendab objekti või tuvastuskaugusest väljumist, eelnevad katsed näitavad filtreeritud väärtuste küllaltki juhuslikku asetust suurematel kaugustel ning sellega tuleks kasutamisel arvesta. Viimane annab ka seletuse, miks 'Endless walk' demoprogrammis kasutatavad filtreeritud sonari mõõtetulemused polnud ootuspärased ning tekitasid vaatlusel olematute takistuste tuvastamise vigu. 10 cm on alla sonari kasutamise piiri ning seal saadud lugemid annavad minimaalse võimaliku väljundi.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein, sonaritel kattev plastikriba)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Koos sonari avasi ümbritseva ornamentaalse plastikribaga.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein2.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Graafik ei erine oluliselt sonareid ümbritseva plastikribata saadud tulemustest ning võib järeldada, et selle olemasolu ei mõjuta oluliselt väljundit.&lt;br /&gt;
&lt;br /&gt;
==Mitmekordse kaja väärtused==&lt;br /&gt;
&lt;br /&gt;
NAO Sonar mõõdab kaugusi ka teistele kajadele peale esimese. Mällu salvestatakse 10 väärtust. Järgnev kood prindib ekraanile kõik kümme väärtust ning lisaks nenede põhjal arvutatud 'SonarLeftDetected' väärtuse.&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 1000, 1.0)&lt;br /&gt;
&lt;br /&gt;
time.sleep(10)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
 	time.sleep(2)&lt;br /&gt;
	print &amp;quot;Iteration&amp;quot;,i&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value1&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value2&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value3&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value4&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value5&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value6&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value7&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value8&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value9&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 0.909999966621&lt;br /&gt;
 1.49000000954&lt;br /&gt;
 1.7199999094&lt;br /&gt;
 2.06999993324&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 0.899999976158&lt;br /&gt;
 1.48000001907&lt;br /&gt;
 2.0&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Versioonis 1.10.11 ei eksisteeri mälus enam väärtust &amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, mida esindab väljundis nüüd &amp;quot;None&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud vabasse ruumi: &lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.45999991894&lt;br /&gt;
 1.87999999523&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.44999992847&lt;br /&gt;
 1.86000001431&lt;br /&gt;
 2.22000002861&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tulemustest järeldub, et kui takistused on liiga kaugel tagastab filtreeritud väärtus alati minimaalse mõõteväärtuse, kuigi mõõtetulemused on olemas. Väärtused suuremad kui 2.54 tähendavad suurima tõenäosusega, et niimitmendat kaja ei registreeritud piiratud aja vältel. Samas võib semantiliselt lugeda 'SonarLeftDetected' tulemuse korrektseks, sest nagu nimest järeldub peaks see väärtust esindama takistust, mille tuvastamine liiga kaugelt tekitab liigset andmemüra ning takistusega võib tegeleda kui see robotile reaalselt ette satub.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud ligi poole meetri kauguselt vastu toa nurka:&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.53999996185&lt;br /&gt;
 2.03999996185&lt;br /&gt;
 2.38999986649&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.57999992371&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Mingisugusel põhjusel on lähendalt mõõdetud väärtused filtris olemas, kuid ei ole sarnased erinevate kajade tulemustega, võimalik, et esimese väärtuse kadumine tähendab, et siin esitatakse andmed alates teisest saabunud kajast. Vajalik on testida &amp;quot;value0&amp;quot; olemasolu kui võimalikku asendust.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8420</id>
		<title>SonariProbleem</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8420"/>
		<updated>2011-04-09T17:43:15Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Stabiilsustestid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Filtreeritud väärtused==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;SonarRightDetected&amp;quot; või &amp;quot;SonarLeftDetected&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Samalaadse tulemuse andis ka Pythoni skript. Kui käivitasin [[Python#Näiteprogramm | näiteskripti]] ja suunasin sonarid lakke olid loetud väärtused:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.569999992847&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.579999983311&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Ülaltoodud &amp;quot;SonarRightDetected&amp;quot; väärtused on eelnevalt läbinud filtri (töötluse) ning ei kajasta otseselt seda, mida sonar mõõtis.&lt;br /&gt;
&lt;br /&gt;
==Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevas katses liigutati NAOd mööda tuba ringi viies teda seintest lähemale/kaugemale kokku võeti 100 lugemit igale sonari loetud väärtusele järgneb filtri läbinud väärtus.&lt;br /&gt;
&lt;br /&gt;
Väljundi stabiilsuse ning filtreerimise testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import time&lt;br /&gt;
 import numpy&lt;br /&gt;
 from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
 IP = sys.argv[1] // Käsurea argumendid&lt;br /&gt;
 SAMPLES = sys.argv[2]&lt;br /&gt;
 PORT = 9559&lt;br /&gt;
&lt;br /&gt;
 sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
 mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
 sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0) // Uuenda 500ms tagant, täpsus 1.0&lt;br /&gt;
&lt;br /&gt;
 leftValues=[]&lt;br /&gt;
 rightValues=[]&lt;br /&gt;
&lt;br /&gt;
 for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1) // Oota 1 sekund&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0) // 0 tähendab uusima väärtuse lugemist, otse sonarist saadud väärtus &lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;) // Läbinud filtri&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
	leftValues.append(float(left))&lt;br /&gt;
	rightValues.append(float(right))&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
 print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
 print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
 print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
 print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
 sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljundifail: [[File:NAO_sonarTest_output.txt]]&lt;br /&gt;
&lt;br /&gt;
Väljundis:&lt;br /&gt;
&lt;br /&gt;
 left: 1.66999995708 right: 1.39999997616&lt;br /&gt;
 filter left: 0.389999985695 right: 0.699999988079&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.87999999523 right: 1.40999996662&lt;br /&gt;
 filter left: 0.439999997616 right: 0.649999976158&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.310000002384 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.289999991655 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
&lt;br /&gt;
Väljundist on väga suur erinevus filtreermata ning filtreeritud väärtuste vahel, samuti eksisteerib väljund alati, isegi siis kui lähemalasetsevad objektid on kaugemal kui 1,5m nagu on dokumentatsiooni järgi suurim tuvastuskaugus. Katse lõpus arvutatud keskmine ning standardhälve ei oma selle katse kontekstis erilist tähendust kuna sonarid oli liikumises.&lt;br /&gt;
&lt;br /&gt;
==Stabiilsustestid==&lt;br /&gt;
&lt;br /&gt;
===Standardhälbe arvutamine===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud vastu seina (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Tulemused on arvutatud meetrites.&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 Mean left: 0.239333327611&lt;br /&gt;
 Mean right: 0.239333327611&lt;br /&gt;
 Standard deviation left: 0.00249443959597&lt;br /&gt;
 Standard deviation right: 0.00359011179731&lt;br /&gt;
&lt;br /&gt;
Tulemused: Väljund näitab, et jõutud on minimaalse tuvastuskauguseni, kus kauguse täpne mõõtmine pole enam võimalik, kui takistuse olemasolu võib järeldada. Väljund väga stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.Suunatud ~30cm kauguselt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 Mean left: 0.438333324591&lt;br /&gt;
 Mean right: 0.436999990543&lt;br /&gt;
 Standard deviation left: 0.00582142222363&lt;br /&gt;
 Standard deviation right: 0.00525991948363&lt;br /&gt;
&lt;br /&gt;
Tulemused: Keskmistel mõõtmiskaugustel taaskord küllaltki stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud vabasse ruumi. Takistused üle kahe meetri kaugusel. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62999999523&lt;br /&gt;
 left: 1.62999999523 right: 1.40999996662&lt;br /&gt;
 left: 1.64999997616 right: 1.26999998093&lt;br /&gt;
 left: 1.64999997616 right: 1.78999996185&lt;br /&gt;
 left: 1.64999997616 right: 1.55999994278&lt;br /&gt;
 left: 1.64999997616 right: 1.63999998569&lt;br /&gt;
 left: 1.65999996662 right: 1.65999996662&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.64999997616 right: 1.81999993324&lt;br /&gt;
 left: 1.64999997616 right: 1.83999991417&lt;br /&gt;
 left: 1.65999996662 right: 1.86000001431&lt;br /&gt;
 left: 1.84999990463 right: 1.87999999523&lt;br /&gt;
 left: 1.66999995708 right: 1.84999990463&lt;br /&gt;
 left: 1.65999996662 right: 1.87000000477&lt;br /&gt;
 Mean left: 1.65466664235&lt;br /&gt;
 Mean right: 1.67933330536&lt;br /&gt;
 Standard deviation left: 0.0387928804152&lt;br /&gt;
 Standard deviation right: 0.149620252664&lt;br /&gt;
&lt;br /&gt;
Tulemused: Ei tohiks sellistel kaugustel takistusi tuvastada, kuid testi läbiviimiseks valitud ruumis võib olla tegimist kajaprobleemidega. Rahuldav väljundi stabiilsus.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus tühjas ruumis===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Vaba ruum, seinad vähemalt 2.5m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
def joonis(timestep, list1,list2,list3,list4):&lt;br /&gt;
    #joonise loomine&lt;br /&gt;
    fig = plt.figure()&lt;br /&gt;
    ax1 = fig.add_subplot(111)&lt;br /&gt;
    &lt;br /&gt;
    ax1.plot(timestep,list1, 'b',label=&amp;quot;L&amp;quot;,marker='+')&lt;br /&gt;
    ax1.plot(timestep,list2,'r',label=&amp;quot;R&amp;quot;,marker='+')&lt;br /&gt;
&lt;br /&gt;
    ax1.plot(timestep,list3,'c', label=&amp;quot;LF&amp;quot;,marker='o')&lt;br /&gt;
    ax1.plot(timestep,list4,'m',label=&amp;quot;RF&amp;quot;,marker='o')&lt;br /&gt;
    &lt;br /&gt;
    ax1.set_xlabel('time (s)')&lt;br /&gt;
    ax1.set_ylabel('distance (cm)', color='g')&lt;br /&gt;
    for tl in ax1.get_yticklabels():&lt;br /&gt;
        tl.set_color('g')&lt;br /&gt;
    &lt;br /&gt;
    plt.legend()&lt;br /&gt;
    plt.show()&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0)&lt;br /&gt;
&lt;br /&gt;
leftValues=[]&lt;br /&gt;
rightValues=[]&lt;br /&gt;
leftValuesF=[]&lt;br /&gt;
rightValuesF=[]&lt;br /&gt;
timestep=[]&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1)&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
	leftValues.append(float(left)*100)&lt;br /&gt;
	rightValues.append(float(right)*100)&lt;br /&gt;
	if(leftD == None):&lt;br /&gt;
		leftD=0&lt;br /&gt;
	if(rightD == None):&lt;br /&gt;
		rightD=0&lt;br /&gt;
	leftValuesF.append(float(leftD)*100)&lt;br /&gt;
	rightValuesF.append(float(rightD)*100)&lt;br /&gt;
	timestep.append(i)&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
joonis(timestep, leftValues,rightValues,leftValuesF,rightValuesF)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljund:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kasutaja@Huginn:~/Desktop$ python NAO_sonarTest_plot.py 172.19.2.79 50&lt;br /&gt;
left: 1.05999994278 right: 1.09000003338&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.59999990463&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.37000000477 right: 1.56999993324&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.22000002861&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.10000002384 right: 1.11000001431&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
...&lt;br /&gt;
left: 1.04999995232 right: 1.25999999046&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
Mean left: 126.299996376&lt;br /&gt;
Mean right: 125.379997134&lt;br /&gt;
Standard deviation left: 31.8472923989&lt;br /&gt;
Standard deviation right: 19.6243602903&lt;br /&gt;
INFO: Destroying broker 'ALProxyBroker'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Viimased arvutused on tehtud cm-tes.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonar_output.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Esineb väga tugev väljundi kõikumine (standardhälve 32 ja 20 cm) samas filtreeritud väärtused ei muutu. Graafik viitab, et vasaku ja parema sonari mõõdetud tulemused on omavahel teatavas korrellatsioonis.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (puitplaat)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, seinad vähemalt 2 m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Puidust plaat mõõtmetega 55 cm x 77 cm liigutatud 30 cm kaupa sonaritele lähemale, numbrid graafiku ülemisel serval tähistavad plaadi kaugust (täpsus ligikaudu 10 cm). Esimesed mõõtmised &amp;gt; 150 cm tehtud ilma plaadita. Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_plaat.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Plaadi väikeste mõõtmete tõttu tuvastatakse see alles vahemaal alla 90 cm. Sellele eelnevatel kõrgustel püsivad vasaku sonari mõõtetulemused stabiiliselt 110 cm piirimail kui parem sonar annab võrdlemisi mürarikka väljundi, mida järgib teataval määral ka talle vastav filtri läbinud väärtus. Kuna mõõtetulemuste saamiseks liigutati plaati NAO ees, siis on võimalik, et lugemid tulevad ümbritsevast keskkonnast ehk antud juhul plaadi hoidja jalgadest. Lisakaja võib põhjustada ka 60 cm alas nähtava filtrite ja töötlemata tulemuste vahelise erinevuse kuna esimene kasutab arvutustes kuni üheksat mõõdetud kaja. Graafikust võib paremal juhul järeldada seda, et sonarid sobivad seinast väiksemate takistuste tuvastamiseks vahemaal alla 50 cm, kus väljund on väiksemas sõltuvuses muust ümbritsevast. Samuti on selles piirkonnas parema ja vasaku sonari tulemused omavahel küllaltki heas lähenduses.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein1.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Taaskord annab vasak sonar vähem mürarikkaid tulemusi kui parem, kuigi  võib öelda, et sein on tuvastatav kõikidel mõõdetud kaugustel Filtrid LeftObstacleDetected ja RightObstacleDetected hakkavad reaalsuse lähedasi tuleusi andma alles 60 cm piirimail. Sellele eelnev võib aga tekitada probleeme kuna pole kindel, kas tulemus 60 cm tähendab objekti või tuvastuskaugusest väljumist, eelnevad katsed näitavad filtreeritud väärtuste küllaltki juhuslikku asetust suurematel kaugustel ning sellega tuleks kasutamisel arvesta. Viimane annab ka seletuse, miks 'Endless walk' demoprogrammis kasutatavad filtreeritud sonari mõõtetulemused polnud ootuspärased ning tekitasid vaatlusel olematute takistuste tuvastamise vigu. 10 cm on alla sonari kasutamise piiri ning seal saadud lugemid annavad minimaalse võimaliku väljundi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein, sonaritel kattev plastikriba)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Koos sonari avasi ümbritseva ornamentaalse plastikribaga.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein2.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Graafik ei erine oluliselt sonareid ümbritseva plastikribata saadud tulemustest ning võib järeldada, et selle olemasolu ei mõjuta oluliselt väljundit.&lt;br /&gt;
&lt;br /&gt;
==Mitmekordse kaja väärtused==&lt;br /&gt;
&lt;br /&gt;
NAO Sonar mõõdab kaugusi ka teistele kajadele peale esimese. Mällu salvestatakse 10 väärtust. Järgnev kood prindib ekraanile kõik kümme väärtust ning lisaks nenede põhjal arvutatud 'SonarLeftDetected' väärtuse.&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 1000, 1.0)&lt;br /&gt;
&lt;br /&gt;
time.sleep(10)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
 	time.sleep(2)&lt;br /&gt;
	print &amp;quot;Iteration&amp;quot;,i&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value1&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value2&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value3&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value4&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value5&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value6&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value7&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value8&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value9&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 0.909999966621&lt;br /&gt;
 1.49000000954&lt;br /&gt;
 1.7199999094&lt;br /&gt;
 2.06999993324&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 0.899999976158&lt;br /&gt;
 1.48000001907&lt;br /&gt;
 2.0&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Versioonis 1.10.11 ei eksisteeri mälus enam väärtust &amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, mida esindab väljundis nüüd &amp;quot;None&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud vabasse ruumi: &lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.45999991894&lt;br /&gt;
 1.87999999523&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.44999992847&lt;br /&gt;
 1.86000001431&lt;br /&gt;
 2.22000002861&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tulemustest järeldub, et kui takistused on liiga kaugel tagastab filtreeritud väärtus alati minimaalse mõõteväärtuse, kuigi mõõtetulemused on olemas. Väärtused suuremad kui 2.54 tähendavad suurima tõenäosusega, et niimitmendat kaja ei registreeritud piiratud aja vältel. Samas võib semantiliselt lugeda 'SonarLeftDetected' tulemuse korrektseks, sest nagu nimest järeldub peaks see väärtust esindama takistust, mille tuvastamine liiga kaugelt tekitab liigset andmemüra ning takistusega võib tegeleda kui see robotile reaalselt ette satub.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud ligi poole meetri kauguselt vastu toa nurka:&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.53999996185&lt;br /&gt;
 2.03999996185&lt;br /&gt;
 2.38999986649&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.57999992371&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Mingisugusel põhjusel on lähendalt mõõdetud väärtused filtris olemas, kuid ei ole sarnased erinevate kajade tulemustega, võimalik, et esimese väärtuse kadumine tähendab, et siin esitatakse andmed alates teisest saabunud kajast. Vajalik on testida &amp;quot;value0&amp;quot; olemasolu kui võimalikku asendust.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8419</id>
		<title>SonariProbleem</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8419"/>
		<updated>2011-04-09T17:41:45Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Stabiilsustestid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Filtreeritud väärtused==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;SonarRightDetected&amp;quot; või &amp;quot;SonarLeftDetected&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Samalaadse tulemuse andis ka Pythoni skript. Kui käivitasin [[Python#Näiteprogramm | näiteskripti]] ja suunasin sonarid lakke olid loetud väärtused:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.569999992847&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.579999983311&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Ülaltoodud &amp;quot;SonarRightDetected&amp;quot; väärtused on eelnevalt läbinud filtri (töötluse) ning ei kajasta otseselt seda, mida sonar mõõtis.&lt;br /&gt;
&lt;br /&gt;
==Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevas katses liigutati NAOd mööda tuba ringi viies teda seintest lähemale/kaugemale kokku võeti 100 lugemit igale sonari loetud väärtusele järgneb filtri läbinud väärtus.&lt;br /&gt;
&lt;br /&gt;
Väljundi stabiilsuse ning filtreerimise testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import time&lt;br /&gt;
 import numpy&lt;br /&gt;
 from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
 IP = sys.argv[1] // Käsurea argumendid&lt;br /&gt;
 SAMPLES = sys.argv[2]&lt;br /&gt;
 PORT = 9559&lt;br /&gt;
&lt;br /&gt;
 sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
 mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
 sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0) // Uuenda 500ms tagant, täpsus 1.0&lt;br /&gt;
&lt;br /&gt;
 leftValues=[]&lt;br /&gt;
 rightValues=[]&lt;br /&gt;
&lt;br /&gt;
 for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1) // Oota 1 sekund&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0) // 0 tähendab uusima väärtuse lugemist, otse sonarist saadud väärtus &lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;) // Läbinud filtri&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
	leftValues.append(float(left))&lt;br /&gt;
	rightValues.append(float(right))&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
 print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
 print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
 print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
 print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
 sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljundifail: [[File:NAO_sonarTest_output.txt]]&lt;br /&gt;
&lt;br /&gt;
Väljundis:&lt;br /&gt;
&lt;br /&gt;
 left: 1.66999995708 right: 1.39999997616&lt;br /&gt;
 filter left: 0.389999985695 right: 0.699999988079&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.87999999523 right: 1.40999996662&lt;br /&gt;
 filter left: 0.439999997616 right: 0.649999976158&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.310000002384 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.289999991655 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
&lt;br /&gt;
Väljundist on väga suur erinevus filtreermata ning filtreeritud väärtuste vahel, samuti eksisteerib väljund alati, isegi siis kui lähemalasetsevad objektid on kaugemal kui 1,5m nagu on dokumentatsiooni järgi suurim tuvastuskaugus. Katse lõpus arvutatud keskmine ning standardhälve ei oma selle katse kontekstis erilist tähendust kuna sonarid oli liikumises.&lt;br /&gt;
&lt;br /&gt;
==Stabiilsustestid==&lt;br /&gt;
&lt;br /&gt;
===Standardhälbe arvutamine===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud vastu seina (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 Mean left: 0.239333327611&lt;br /&gt;
 Mean right: 0.239333327611&lt;br /&gt;
 Standard deviation left: 0.00249443959597&lt;br /&gt;
 Standard deviation right: 0.00359011179731&lt;br /&gt;
&lt;br /&gt;
Tulemused: Väljund näitab, et jõutud on minimaalse tuvastuskauguseni, kus kauguse täpne mõõtmine pole enam võimalik, kui takistuse olemasolu võib järeldada. Väljund väga stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud väga lähedalt vastu seina. 30 mõõtmist.Suunatud ~30cm kauguselt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 Mean left: 0.438333324591&lt;br /&gt;
 Mean right: 0.436999990543&lt;br /&gt;
 Standard deviation left: 0.00582142222363&lt;br /&gt;
 Standard deviation right: 0.00525991948363&lt;br /&gt;
&lt;br /&gt;
Tulemused: Keskmistel mõõtmiskaugustel taaskord küllaltki stabiilne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Suunatud vabasse ruumi. Takistused üle kahe meetri kaugusel. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62999999523&lt;br /&gt;
 left: 1.62999999523 right: 1.40999996662&lt;br /&gt;
 left: 1.64999997616 right: 1.26999998093&lt;br /&gt;
 left: 1.64999997616 right: 1.78999996185&lt;br /&gt;
 left: 1.64999997616 right: 1.55999994278&lt;br /&gt;
 left: 1.64999997616 right: 1.63999998569&lt;br /&gt;
 left: 1.65999996662 right: 1.65999996662&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.64999997616 right: 1.81999993324&lt;br /&gt;
 left: 1.64999997616 right: 1.83999991417&lt;br /&gt;
 left: 1.65999996662 right: 1.86000001431&lt;br /&gt;
 left: 1.84999990463 right: 1.87999999523&lt;br /&gt;
 left: 1.66999995708 right: 1.84999990463&lt;br /&gt;
 left: 1.65999996662 right: 1.87000000477&lt;br /&gt;
 Mean left: 1.65466664235&lt;br /&gt;
 Mean right: 1.67933330536&lt;br /&gt;
 Standard deviation left: 0.0387928804152&lt;br /&gt;
 Standard deviation right: 0.149620252664&lt;br /&gt;
&lt;br /&gt;
Tulemused: Ei tohiks sellistel kaugustel takistusi tuvastada, kuid testi läbiviimiseks valitud ruumis võib olla tegimist kajaprobleemidega. Rahuldav väljundi stabiilsus.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus tühjas ruumis===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Vaba ruum, seinad vähemalt 2.5m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
def joonis(timestep, list1,list2,list3,list4):&lt;br /&gt;
    #joonise loomine&lt;br /&gt;
    fig = plt.figure()&lt;br /&gt;
    ax1 = fig.add_subplot(111)&lt;br /&gt;
    &lt;br /&gt;
    ax1.plot(timestep,list1, 'b',label=&amp;quot;L&amp;quot;,marker='+')&lt;br /&gt;
    ax1.plot(timestep,list2,'r',label=&amp;quot;R&amp;quot;,marker='+')&lt;br /&gt;
&lt;br /&gt;
    ax1.plot(timestep,list3,'c', label=&amp;quot;LF&amp;quot;,marker='o')&lt;br /&gt;
    ax1.plot(timestep,list4,'m',label=&amp;quot;RF&amp;quot;,marker='o')&lt;br /&gt;
    &lt;br /&gt;
    ax1.set_xlabel('time (s)')&lt;br /&gt;
    ax1.set_ylabel('distance (cm)', color='g')&lt;br /&gt;
    for tl in ax1.get_yticklabels():&lt;br /&gt;
        tl.set_color('g')&lt;br /&gt;
    &lt;br /&gt;
    plt.legend()&lt;br /&gt;
    plt.show()&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0)&lt;br /&gt;
&lt;br /&gt;
leftValues=[]&lt;br /&gt;
rightValues=[]&lt;br /&gt;
leftValuesF=[]&lt;br /&gt;
rightValuesF=[]&lt;br /&gt;
timestep=[]&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1)&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
	leftValues.append(float(left)*100)&lt;br /&gt;
	rightValues.append(float(right)*100)&lt;br /&gt;
	if(leftD == None):&lt;br /&gt;
		leftD=0&lt;br /&gt;
	if(rightD == None):&lt;br /&gt;
		rightD=0&lt;br /&gt;
	leftValuesF.append(float(leftD)*100)&lt;br /&gt;
	rightValuesF.append(float(rightD)*100)&lt;br /&gt;
	timestep.append(i)&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
joonis(timestep, leftValues,rightValues,leftValuesF,rightValuesF)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljund:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kasutaja@Huginn:~/Desktop$ python NAO_sonarTest_plot.py 172.19.2.79 50&lt;br /&gt;
left: 1.05999994278 right: 1.09000003338&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.59999990463&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.37000000477 right: 1.56999993324&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.22000002861&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.10000002384 right: 1.11000001431&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
...&lt;br /&gt;
left: 1.04999995232 right: 1.25999999046&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
Mean left: 126.299996376&lt;br /&gt;
Mean right: 125.379997134&lt;br /&gt;
Standard deviation left: 31.8472923989&lt;br /&gt;
Standard deviation right: 19.6243602903&lt;br /&gt;
INFO: Destroying broker 'ALProxyBroker'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Viimased arvutused on tehtud cm-tes.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonar_output.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Esineb väga tugev väljundi kõikumine (standardhälve 32 ja 20 cm) samas filtreeritud väärtused ei muutu. Graafik viitab, et vasaku ja parema sonari mõõdetud tulemused on omavahel teatavas korrellatsioonis.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (puitplaat)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, seinad vähemalt 2 m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Puidust plaat mõõtmetega 55 cm x 77 cm liigutatud 30 cm kaupa sonaritele lähemale, numbrid graafiku ülemisel serval tähistavad plaadi kaugust (täpsus ligikaudu 10 cm). Esimesed mõõtmised &amp;gt; 150 cm tehtud ilma plaadita. Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_plaat.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Plaadi väikeste mõõtmete tõttu tuvastatakse see alles vahemaal alla 90 cm. Sellele eelnevatel kõrgustel püsivad vasaku sonari mõõtetulemused stabiiliselt 110 cm piirimail kui parem sonar annab võrdlemisi mürarikka väljundi, mida järgib teataval määral ka talle vastav filtri läbinud väärtus. Kuna mõõtetulemuste saamiseks liigutati plaati NAO ees, siis on võimalik, et lugemid tulevad ümbritsevast keskkonnast ehk antud juhul plaadi hoidja jalgadest. Lisakaja võib põhjustada ka 60 cm alas nähtava filtrite ja töötlemata tulemuste vahelise erinevuse kuna esimene kasutab arvutustes kuni üheksat mõõdetud kaja. Graafikust võib paremal juhul järeldada seda, et sonarid sobivad seinast väiksemate takistuste tuvastamiseks vahemaal alla 50 cm, kus väljund on väiksemas sõltuvuses muust ümbritsevast. Samuti on selles piirkonnas parema ja vasaku sonari tulemused omavahel küllaltki heas lähenduses.&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein1.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Taaskord annab vasak sonar vähem mürarikkaid tulemusi kui parem, kuigi  võib öelda, et sein on tuvastatav kõikidel mõõdetud kaugustel Filtrid LeftObstacleDetected ja RightObstacleDetected hakkavad reaalsuse lähedasi tuleusi andma alles 60 cm piirimail. Sellele eelnev võib aga tekitada probleeme kuna pole kindel, kas tulemus 60 cm tähendab objekti või tuvastuskaugusest väljumist, eelnevad katsed näitavad filtreeritud väärtuste küllaltki juhuslikku asetust suurematel kaugustel ning sellega tuleks kasutamisel arvesta. Viimane annab ka seletuse, miks 'Endless walk' demoprogrammis kasutatavad filtreeritud sonari mõõtetulemused polnud ootuspärased ning tekitasid vaatlusel olematute takistuste tuvastamise vigu. 10 cm on alla sonari kasutamise piiri ning seal saadud lugemid annavad minimaalse võimaliku väljundi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Väljundite võrdlus erinevatel kaugustel (sein, sonaritel kattev plastikriba)===&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Koos sonari avasi ümbritseva ornamentaalse plastikribaga.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein2.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused: Graafik ei erine oluliselt sonareid ümbritseva plastikribata saadud tulemustest ning võib järeldada, et selle olemasolu ei mõjuta oluliselt väljundit.&lt;br /&gt;
&lt;br /&gt;
==Mitmekordse kaja väärtused==&lt;br /&gt;
&lt;br /&gt;
NAO Sonar mõõdab kaugusi ka teistele kajadele peale esimese. Mällu salvestatakse 10 väärtust. Järgnev kood prindib ekraanile kõik kümme väärtust ning lisaks nenede põhjal arvutatud 'SonarLeftDetected' väärtuse.&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 1000, 1.0)&lt;br /&gt;
&lt;br /&gt;
time.sleep(10)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
 	time.sleep(2)&lt;br /&gt;
	print &amp;quot;Iteration&amp;quot;,i&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value1&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value2&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value3&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value4&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value5&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value6&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value7&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value8&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value9&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 0.909999966621&lt;br /&gt;
 1.49000000954&lt;br /&gt;
 1.7199999094&lt;br /&gt;
 2.06999993324&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 0.899999976158&lt;br /&gt;
 1.48000001907&lt;br /&gt;
 2.0&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Versioonis 1.10.11 ei eksisteeri mälus enam väärtust &amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, mida esindab väljundis nüüd &amp;quot;None&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud vabasse ruumi: &lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.45999991894&lt;br /&gt;
 1.87999999523&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.44999992847&lt;br /&gt;
 1.86000001431&lt;br /&gt;
 2.22000002861&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tulemustest järeldub, et kui takistused on liiga kaugel tagastab filtreeritud väärtus alati minimaalse mõõteväärtuse, kuigi mõõtetulemused on olemas. Väärtused suuremad kui 2.54 tähendavad suurima tõenäosusega, et niimitmendat kaja ei registreeritud piiratud aja vältel. Samas võib semantiliselt lugeda 'SonarLeftDetected' tulemuse korrektseks, sest nagu nimest järeldub peaks see väärtust esindama takistust, mille tuvastamine liiga kaugelt tekitab liigset andmemüra ning takistusega võib tegeleda kui see robotile reaalselt ette satub.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud ligi poole meetri kauguselt vastu toa nurka:&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.53999996185&lt;br /&gt;
 2.03999996185&lt;br /&gt;
 2.38999986649&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.57999992371&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Mingisugusel põhjusel on lähendalt mõõdetud väärtused filtris olemas, kuid ei ole sarnased erinevate kajade tulemustega, võimalik, et esimese väärtuse kadumine tähendab, et siin esitatakse andmed alates teisest saabunud kajast. Vajalik on testida &amp;quot;value0&amp;quot; olemasolu kui võimalikku asendust.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=File:NAO_sonarTest_sein2.png&amp;diff=8418</id>
		<title>File:NAO sonarTest sein2.png</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=File:NAO_sonarTest_sein2.png&amp;diff=8418"/>
		<updated>2011-04-09T17:02:07Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=File:NAO_sonarTest_sein1.png&amp;diff=8417</id>
		<title>File:NAO sonarTest sein1.png</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=File:NAO_sonarTest_sein1.png&amp;diff=8417"/>
		<updated>2011-04-09T17:01:38Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=File:NAO_sonarTest_plaat.png&amp;diff=8416</id>
		<title>File:NAO sonarTest plaat.png</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=File:NAO_sonarTest_plaat.png&amp;diff=8416"/>
		<updated>2011-04-09T17:00:56Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8415</id>
		<title>SonariProbleem</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8415"/>
		<updated>2011-04-09T16:59:42Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Stabiilsustestid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Filtreeritud väärtused==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;SonarRightDetected&amp;quot; või &amp;quot;SonarLeftDetected&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Samalaadse tulemuse andis ka Pythoni skript. Kui käivitasin [[Python#Näiteprogramm | näiteskripti]] ja suunasin sonarid lakke olid loetud väärtused:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.569999992847&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.579999983311&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Ülaltoodud &amp;quot;SonarRightDetected&amp;quot; väärtused on eelnevalt läbinud filtri (töötluse) ning ei kajasta otseselt seda, mida sonar mõõtis.&lt;br /&gt;
&lt;br /&gt;
==Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevas katses liigutati NAOd mööda tuba ringi viies teda seintest lähemale/kaugemale kokku võeti 100 lugemit igale sonari loetud väärtusele järgneb filtri läbinud väärtus.&lt;br /&gt;
&lt;br /&gt;
Väljundi stabiilsuse ning filtreerimise testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import time&lt;br /&gt;
 import numpy&lt;br /&gt;
 from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
 IP = sys.argv[1] // Käsurea argumendid&lt;br /&gt;
 SAMPLES = sys.argv[2]&lt;br /&gt;
 PORT = 9559&lt;br /&gt;
&lt;br /&gt;
 sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
 mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
 sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0) // Uuenda 500ms tagant, täpsus 1.0&lt;br /&gt;
&lt;br /&gt;
 leftValues=[]&lt;br /&gt;
 rightValues=[]&lt;br /&gt;
&lt;br /&gt;
 for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1) // Oota 1 sekund&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0) // 0 tähendab uusima väärtuse lugemist, otse sonarist saadud väärtus &lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;) // Läbinud filtri&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
	leftValues.append(float(left))&lt;br /&gt;
	rightValues.append(float(right))&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
 print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
 print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
 print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
 print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
 sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljundifail: [[File:NAO_sonarTest_output.txt]]&lt;br /&gt;
&lt;br /&gt;
Väljundis:&lt;br /&gt;
&lt;br /&gt;
 left: 1.66999995708 right: 1.39999997616&lt;br /&gt;
 filter left: 0.389999985695 right: 0.699999988079&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.87999999523 right: 1.40999996662&lt;br /&gt;
 filter left: 0.439999997616 right: 0.649999976158&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.310000002384 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.289999991655 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
&lt;br /&gt;
Väljundist on väga suur erinevus filtreermata ning filtreeritud väärtuste vahel, samuti eksisteerib väljund alati, isegi siis kui lähemalasetsevad objektid on kaugemal kui 1,5m nagu on dokumentatsiooni järgi suurim tuvastuskaugus. Katse lõpus arvutatud keskmine ning standardhälve ei oma selle katse kontekstis erilist tähendust kuna sonarid oli liikumises.&lt;br /&gt;
&lt;br /&gt;
==Stabiilsustestid==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suunatud väga lähedalt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 Mean left: 0.239333327611&lt;br /&gt;
 Mean right: 0.239333327611&lt;br /&gt;
 Standard deviation left: 0.00249443959597&lt;br /&gt;
 Standard deviation right: 0.00359011179731&lt;br /&gt;
&lt;br /&gt;
Väljund näitab, et jõutud on minimaalse tuvastuskauguseni, kus kauguse täpne mõõtmine pole enam võimalik, kui takistuse olemasolu võib järeldada. Väljund väga stabiilne.&lt;br /&gt;
&lt;br /&gt;
Suunatud ~30cm kauguselt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 Mean left: 0.438333324591&lt;br /&gt;
 Mean right: 0.436999990543&lt;br /&gt;
 Standard deviation left: 0.00582142222363&lt;br /&gt;
 Standard deviation right: 0.00525991948363&lt;br /&gt;
&lt;br /&gt;
Keskmistel mõõtmiskaugustel taaskord küllaltki stabiilne.&lt;br /&gt;
&lt;br /&gt;
Suunatud vabasse ruumi. Takistused üle kahe meetri kaugusel. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62999999523&lt;br /&gt;
 left: 1.62999999523 right: 1.40999996662&lt;br /&gt;
 left: 1.64999997616 right: 1.26999998093&lt;br /&gt;
 left: 1.64999997616 right: 1.78999996185&lt;br /&gt;
 left: 1.64999997616 right: 1.55999994278&lt;br /&gt;
 left: 1.64999997616 right: 1.63999998569&lt;br /&gt;
 left: 1.65999996662 right: 1.65999996662&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.64999997616 right: 1.81999993324&lt;br /&gt;
 left: 1.64999997616 right: 1.83999991417&lt;br /&gt;
 left: 1.65999996662 right: 1.86000001431&lt;br /&gt;
 left: 1.84999990463 right: 1.87999999523&lt;br /&gt;
 left: 1.66999995708 right: 1.84999990463&lt;br /&gt;
 left: 1.65999996662 right: 1.87000000477&lt;br /&gt;
 Mean left: 1.65466664235&lt;br /&gt;
 Mean right: 1.67933330536&lt;br /&gt;
 Standard deviation left: 0.0387928804152&lt;br /&gt;
 Standard deviation right: 0.149620252664&lt;br /&gt;
&lt;br /&gt;
Ei tohiks sellistel kaugustel takistusi tuvastada, kuid testi läbiviimiseks valitud ruumis võib olla tegimist kajaprobleemidega. Rahuldav väljundi stabiilsus.&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Vaba ruum, seinad vähemalt 2.5m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
def joonis(timestep, list1,list2,list3,list4):&lt;br /&gt;
    #joonise loomine&lt;br /&gt;
    fig = plt.figure()&lt;br /&gt;
    ax1 = fig.add_subplot(111)&lt;br /&gt;
    &lt;br /&gt;
    ax1.plot(timestep,list1, 'b',label=&amp;quot;L&amp;quot;,marker='+')&lt;br /&gt;
    ax1.plot(timestep,list2,'r',label=&amp;quot;R&amp;quot;,marker='+')&lt;br /&gt;
&lt;br /&gt;
    ax1.plot(timestep,list3,'c', label=&amp;quot;LF&amp;quot;,marker='o')&lt;br /&gt;
    ax1.plot(timestep,list4,'m',label=&amp;quot;RF&amp;quot;,marker='o')&lt;br /&gt;
    &lt;br /&gt;
    ax1.set_xlabel('time (s)')&lt;br /&gt;
    ax1.set_ylabel('distance (cm)', color='g')&lt;br /&gt;
    for tl in ax1.get_yticklabels():&lt;br /&gt;
        tl.set_color('g')&lt;br /&gt;
    &lt;br /&gt;
    plt.legend()&lt;br /&gt;
    plt.show()&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0)&lt;br /&gt;
&lt;br /&gt;
leftValues=[]&lt;br /&gt;
rightValues=[]&lt;br /&gt;
leftValuesF=[]&lt;br /&gt;
rightValuesF=[]&lt;br /&gt;
timestep=[]&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1)&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
	leftValues.append(float(left)*100)&lt;br /&gt;
	rightValues.append(float(right)*100)&lt;br /&gt;
	if(leftD == None):&lt;br /&gt;
		leftD=0&lt;br /&gt;
	if(rightD == None):&lt;br /&gt;
		rightD=0&lt;br /&gt;
	leftValuesF.append(float(leftD)*100)&lt;br /&gt;
	rightValuesF.append(float(rightD)*100)&lt;br /&gt;
	timestep.append(i)&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
joonis(timestep, leftValues,rightValues,leftValuesF,rightValuesF)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljund:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kasutaja@Huginn:~/Desktop$ python NAO_sonarTest_plot.py 172.19.2.79 50&lt;br /&gt;
left: 1.05999994278 right: 1.09000003338&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.59999990463&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.37000000477 right: 1.56999993324&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.22000002861&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.10000002384 right: 1.11000001431&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
...&lt;br /&gt;
left: 1.04999995232 right: 1.25999999046&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
Mean left: 126.299996376&lt;br /&gt;
Mean right: 125.379997134&lt;br /&gt;
Standard deviation left: 31.8472923989&lt;br /&gt;
Standard deviation right: 19.6243602903&lt;br /&gt;
INFO: Destroying broker 'ALProxyBroker'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Viimased arvutused on tehtud cm-tes.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonar_output.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Esineb väga tugev väljundi kõikumine (standardhälve 32 ja 20 cm) samas filtreeritud väärtused ei muutu. Graafik viitab, et vasaku ja parema sonari mõõdetud tulemused on omavahel teatavas korrellatsioonis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, seinad vähemalt 2 m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Puidust plaat mõõtmetega 55 cm x 77 cm liigutatud 30 cm kaupa sonaritele lähemale, numbrid graafiku ülemisel serval tähistavad plaadi kaugust (täpsus ligikaudu 5 cm). Esimesed mõõtmised &amp;gt; 150 cm tehtud ilma plaadita. Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_plaat.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Sonaritelt on eemaldatud nende avasid ümbritsev plastikriba.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein1.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Keskkond: Tühi ruum, sein&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud seina poole (püstine, seisab)&lt;br /&gt;
&lt;br /&gt;
Testprogramm: -vaata eelmist-&lt;br /&gt;
&lt;br /&gt;
Kirjeldus: Liigutatud 30 cm kaupa seinale lähemale, numbrid graafiku ülemisel serval tähistavad seina kaugust (täpsus ligikaudu 5 cm). Koos sonari avasi ümbritseva ornamentaalse plastikribaga.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonarTest_sein2.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Tulemused:&lt;br /&gt;
&lt;br /&gt;
==Mitmekordse kaja väärtused==&lt;br /&gt;
&lt;br /&gt;
NAO Sonar mõõdab kaugusi ka teistele kajadele peale esimese. Mällu salvestatakse 10 väärtust. Järgnev kood prindib ekraanile kõik kümme väärtust ning lisaks nenede põhjal arvutatud 'SonarLeftDetected' väärtuse.&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 1000, 1.0)&lt;br /&gt;
&lt;br /&gt;
time.sleep(10)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
 	time.sleep(2)&lt;br /&gt;
	print &amp;quot;Iteration&amp;quot;,i&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value1&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value2&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value3&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value4&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value5&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value6&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value7&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value8&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value9&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 0.909999966621&lt;br /&gt;
 1.49000000954&lt;br /&gt;
 1.7199999094&lt;br /&gt;
 2.06999993324&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 0.899999976158&lt;br /&gt;
 1.48000001907&lt;br /&gt;
 2.0&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Versioonis 1.10.11 ei eksisteeri mälus enam väärtust &amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, mida esindab väljundis nüüd &amp;quot;None&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud vabasse ruumi: &lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.45999991894&lt;br /&gt;
 1.87999999523&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.44999992847&lt;br /&gt;
 1.86000001431&lt;br /&gt;
 2.22000002861&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tulemustest järeldub, et kui takistused on liiga kaugel tagastab filtreeritud väärtus alati minimaalse mõõteväärtuse, kuigi mõõtetulemused on olemas. Väärtused suuremad kui 2.54 tähendavad suurima tõenäosusega, et niimitmendat kaja ei registreeritud piiratud aja vältel. Samas võib semantiliselt lugeda 'SonarLeftDetected' tulemuse korrektseks, sest nagu nimest järeldub peaks see väärtust esindama takistust, mille tuvastamine liiga kaugelt tekitab liigset andmemüra ning takistusega võib tegeleda kui see robotile reaalselt ette satub.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud ligi poole meetri kauguselt vastu toa nurka:&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.53999996185&lt;br /&gt;
 2.03999996185&lt;br /&gt;
 2.38999986649&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.57999992371&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Mingisugusel põhjusel on lähendalt mõõdetud väärtused filtris olemas, kuid ei ole sarnased erinevate kajade tulemustega, võimalik, et esimese väärtuse kadumine tähendab, et siin esitatakse andmed alates teisest saabunud kajast. Vajalik on testida &amp;quot;value0&amp;quot; olemasolu kui võimalikku asendust.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=NAO:_Pea_peal_seismine&amp;diff=8333</id>
		<title>NAO: Pea peal seismine</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=NAO:_Pea_peal_seismine&amp;diff=8333"/>
		<updated>2011-03-28T18:23:18Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Ülesanne==&lt;br /&gt;
Panna robot liikuma püstiasendist stabiilsesse pea peal seisu.&lt;br /&gt;
&lt;br /&gt;
==Vahendid==&lt;br /&gt;
Choregraphe, NAOSim&lt;br /&gt;
&lt;br /&gt;
==Lahendus==&lt;br /&gt;
Choregraphe sisseehitatud funktsionaalsuse ärakasutamine&lt;br /&gt;
&lt;br /&gt;
# Seada mootorid tööolekusse (stiffness = 1).&lt;br /&gt;
# Püsti tõusmine (sisseehitatud), kui õnnestus, liikuda edasi punkti 3, vastasel juhul 4&lt;br /&gt;
# Soovitud asendi võtmine. Kasutatud on Animation plokki ning liigeste defineeritud võtmepunkte (motion keyframes). Olulisemad elemendid:&lt;br /&gt;
## Sõrmede 'kokkupigistatud' asendisse viimine nende vigastamise vältimiseks&lt;br /&gt;
## Käed ette kukkumise ohu vähendamiseks&lt;br /&gt;
## Kükitamine&lt;br /&gt;
## Pea maaga kontakti viimine (see võib osutuda reaalsuses liiga kiireks liigutuseks)&lt;br /&gt;
## Jalad võimalikult külgedele, et tuua tasakaal tagasi keha keskossa samal ajal käed lükkavad keha ülespoole&lt;br /&gt;
## Jalgade välja sirutamine&lt;br /&gt;
# Programmi töö lõpp, mootorid säilitavad 'jäikuse'.&lt;br /&gt;
&lt;br /&gt;
==Kood==&lt;br /&gt;
[[File:headStand.crg]]&lt;br /&gt;
&lt;br /&gt;
==Tulemused==&lt;br /&gt;
&lt;br /&gt;
Simulatsioon:&lt;br /&gt;
[[File:NAO_headStand_simulated.mpeg]]&lt;br /&gt;
&lt;br /&gt;
Füüsiline robot: ?&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=File:NAO_headStand_simulated.mpeg&amp;diff=8332</id>
		<title>File:NAO headStand simulated.mpeg</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=File:NAO_headStand_simulated.mpeg&amp;diff=8332"/>
		<updated>2011-03-28T17:56:41Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=File:HeadStand.crg&amp;diff=8331</id>
		<title>File:HeadStand.crg</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=File:HeadStand.crg&amp;diff=8331"/>
		<updated>2011-03-28T17:54:29Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=NAO:_Pea_peal_seismine&amp;diff=8330</id>
		<title>NAO: Pea peal seismine</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=NAO:_Pea_peal_seismine&amp;diff=8330"/>
		<updated>2011-03-28T17:53:46Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: Created page with '==Ülesanne== Panna robot liikuma püstiasendist stabiilsesse pea peal seisu.  ==Vahendid== Choregraphe, NAOSim  ==Kood== File:headStand.crg  ==Tulemused==  Simulatsioon: [[F…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Ülesanne==&lt;br /&gt;
Panna robot liikuma püstiasendist stabiilsesse pea peal seisu.&lt;br /&gt;
&lt;br /&gt;
==Vahendid==&lt;br /&gt;
Choregraphe, NAOSim&lt;br /&gt;
&lt;br /&gt;
==Kood==&lt;br /&gt;
[[File:headStand.crg]]&lt;br /&gt;
&lt;br /&gt;
==Tulemused==&lt;br /&gt;
&lt;br /&gt;
Simulatsioon:&lt;br /&gt;
[[File:NAO_headStand_simulated.mpeg]]&lt;br /&gt;
&lt;br /&gt;
Füüsiline robot: ?&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=NAO&amp;diff=8329</id>
		<title>NAO</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=NAO&amp;diff=8329"/>
		<updated>2011-03-28T17:42:14Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Ülevaade==&lt;br /&gt;
&lt;br /&gt;
===Nao ühendamine arvutiga===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Kui IP saamine õnnestub ütleb NAO oma IP aadressi kui tema kõhul olevat nuppu vajutada. Navigeerides veebibrauseriga &amp;lt;nowiki&amp;gt;http://(NAO IP)&amp;lt;/nowiki&amp;gt; lehele on võimalik muuta mõningaid seadeid ning näha staatuse informatsiooni. Kui ligiduses on traadita võrke peaksid need ilmuma &amp;quot;Networks&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Pärast traadita ühenduse loomist tuleks meelde jätta wireless võrgust saadud IP (&amp;quot;Networks&amp;quot; kuval) ning ühendada lahti ethernet kaabel. Pärast seda kui wireless võrk on korra juba valitud saab NAO ühendada end sellega automaatselt (&amp;quot;Wireless&amp;quot; nimekirjas on võrk märgitud &amp;quot;favorite&amp;quot; = 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).  &lt;br /&gt;
&lt;br /&gt;
===NaoQi===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;nowiki&amp;gt;http://NaoIp:9559/full&amp;lt;/nowiki&amp;gt;, 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.&lt;br /&gt;
   &lt;br /&gt;
NaoQi taaskäivitamiseks tuleb Nao veebikeskonnast valida &amp;quot;Advanced&amp;quot;-&amp;gt;&amp;quot;NaoQi&amp;quot; ning &amp;quot;Restart&amp;quot;, sama tulemuse annab NAO välja- ja sisselülitamine.&lt;br /&gt;
&lt;br /&gt;
===BonJour===&lt;br /&gt;
&lt;br /&gt;
Windows platvormil sobib seadmete nagu NAO võrgust leidmiseks (tavaliselt teised arvutid, printerid jms). Tekib ikoonina Internet Exploreri tööriistaribale.&lt;br /&gt;
&lt;br /&gt;
===Arendus===&lt;br /&gt;
&lt;br /&gt;
[[Choregraphe| Visuaalprogrammeerimine: Choregraphe]]&lt;br /&gt;
&lt;br /&gt;
[[Python| Skriptid: Python]]&lt;br /&gt;
&lt;br /&gt;
[[C++| Programmeerimine: C++]]&lt;br /&gt;
&lt;br /&gt;
====Operatsioonisüsteemide tugi====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! Windows XP 32 bit&lt;br /&gt;
! Windows 7 64 bit&lt;br /&gt;
! Ubuntu 10.10 32 bit&lt;br /&gt;
! Ubuntu 10.10 64 bit&lt;br /&gt;
|-&lt;br /&gt;
! Choregraphe&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| Ei tööta&lt;br /&gt;
|-&lt;br /&gt;
! Python&lt;br /&gt;
| Paigaldatav, töötab&lt;br /&gt;
| Paigaldatav, töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
|-&lt;br /&gt;
! C++, native compiling*&lt;br /&gt;
| Töötab. Vaja Microsoft Visual Studio 2005/2008 kompillaatorit&lt;br /&gt;
| ?&lt;br /&gt;
| Töötab&lt;br /&gt;
| Ei tööta&lt;br /&gt;
|-&lt;br /&gt;
! C++, cross-compiling**&lt;br /&gt;
| Ei toetata&lt;br /&gt;
| Ei toetata&lt;br /&gt;
| Töötab&lt;br /&gt;
| Ei tööta&lt;br /&gt;
|-&lt;br /&gt;
! NaoSim&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| [[NaoSim Linuxis| Paigaldatav]]&lt;br /&gt;
| [[NaoSim Linuxis| Paigaldatav]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;* Koodi kompilleerimine kompilleerivas masinas jooksetamiseks. Kui NAOQi käib kohalikus masinas (väga piiratud kasutusvõimalused)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;** Koodi kompilleerimine võõrale platvormile (NAOle).&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'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.   &lt;br /&gt;
&lt;br /&gt;
===Tähelepanekuid===&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/greendoc/choregraphe/predefined_positions.html&lt;br /&gt;
&lt;br /&gt;
*'''Objektide tuvastamine''' - NAO suudab meelde jätta talle näidatud pilte ja neid hiljem ära tunda. Choreographe sees käib see View-&amp;gt;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.&lt;br /&gt;
&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/greendoc/choregraphe/video-monitor-tuto.html&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/greendoc/choregraphe/creating_movement_with_recording_mode.html&lt;br /&gt;
&lt;br /&gt;
*'''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 &amp;quot;Energy&amp;quot;), 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 &amp;quot;My battery is strong&amp;quot;), 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'''.    &lt;br /&gt;
&lt;br /&gt;
==Võimalused ja piirangud==&lt;br /&gt;
&lt;br /&gt;
===Kommunikatsioon===&lt;br /&gt;
&lt;br /&gt;
'''Bluetooth''' (Riistvara pole veel saadaval)&lt;br /&gt;
* 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.&lt;br /&gt;
* Kasutusalad: Boardiga saab kontrollida muud elektroonikat (digitaalsed, PWM, servo, mootorite kontrollimise väljundid). Väliste sensorite ühendamine, NAO kontrolli all olevad lisaseadmed. &lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/reddoc/bluetooth/bluetooth.html&lt;br /&gt;
&lt;br /&gt;
'''Infrapuna'''&lt;br /&gt;
* Andmevahetus otsenähtavusel. Eelseadistatav veebikeskkonna vahendusel. Soovituslik kasutuspiirkond ligikaudu 15cm NAO silmadest.&lt;br /&gt;
* Kasutusalad: Kahe NAO andmevahetus, IR suhtlust kasutavate seadmete kontrollimine, käskude vastuvõtmine IR puldi kaudu.&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/reddoc/infrared/purpose_description.html&lt;br /&gt;
&lt;br /&gt;
'''WiFi'''&lt;br /&gt;
* Ühendada NAO(d), arvutid samasse kohtvõrku. Suhtlus üle SOAP liidese (kasutajale koodis nähtamatu).&lt;br /&gt;
* 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.&lt;br /&gt;
* E-mail - Choregraphes. Võimaldab suvalisest mailiserveri kontost kirju vastu võtta ning saata.&lt;br /&gt;
* Internet - ?&lt;br /&gt;
&lt;br /&gt;
==Ülesandeid==&lt;br /&gt;
*[[NAO: Pea peal seismine| Pea peal seismine]]&lt;br /&gt;
&lt;br /&gt;
==Jooksvad probleemid==&lt;br /&gt;
&lt;br /&gt;
*'''[[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.&lt;br /&gt;
&lt;br /&gt;
==Linke==&lt;br /&gt;
&lt;br /&gt;
*[http://robocup.aldebaran-robotics.com/docs/site_en/index_doc.html Dokumentatsioon]&lt;br /&gt;
*http://robotzeitgeist.com/tag/aldebaran-robotics&lt;br /&gt;
*http://ognacgnouc.com/&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8328</id>
		<title>SonariProbleem</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8328"/>
		<updated>2011-03-27T16:19:16Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Stabiilsustestid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Filtreeritud väärtused==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;SonarRightDetected&amp;quot; või &amp;quot;SonarLeftDetected&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Samalaadse tulemuse andis ka Pythoni skript. Kui käivitasin [[Python#Näiteprogramm | näiteskripti]] ja suunasin sonarid lakke olid loetud väärtused:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.569999992847&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.579999983311&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Ülaltoodud &amp;quot;SonarRightDetected&amp;quot; väärtused on eelnevalt läbinud filtri (töötluse) ning ei kajasta otseselt seda, mida sonar mõõtis.&lt;br /&gt;
&lt;br /&gt;
==Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevas katses liigutati NAOd mööda tuba ringi viies teda seintest lähemale/kaugemale kokku võeti 100 lugemit igale sonari loetud väärtusele järgneb filtri läbinud väärtus.&lt;br /&gt;
&lt;br /&gt;
Väljundi stabiilsuse ning filtreerimise testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import time&lt;br /&gt;
 import numpy&lt;br /&gt;
 from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
 IP = sys.argv[1] // Käsurea argumendid&lt;br /&gt;
 SAMPLES = sys.argv[2]&lt;br /&gt;
 PORT = 9559&lt;br /&gt;
&lt;br /&gt;
 sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
 mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
 sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0) // Uuenda 500ms tagant, täpsus 1.0&lt;br /&gt;
&lt;br /&gt;
 leftValues=[]&lt;br /&gt;
 rightValues=[]&lt;br /&gt;
&lt;br /&gt;
 for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1) // Oota 1 sekund&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0) // 0 tähendab uusima väärtuse lugemist, otse sonarist saadud väärtus &lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;) // Läbinud filtri&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
	leftValues.append(float(left))&lt;br /&gt;
	rightValues.append(float(right))&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
 print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
 print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
 print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
 print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
 sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljundifail: [[File:NAO_sonarTest_output.txt]]&lt;br /&gt;
&lt;br /&gt;
Väljundis:&lt;br /&gt;
&lt;br /&gt;
 left: 1.66999995708 right: 1.39999997616&lt;br /&gt;
 filter left: 0.389999985695 right: 0.699999988079&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.87999999523 right: 1.40999996662&lt;br /&gt;
 filter left: 0.439999997616 right: 0.649999976158&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.310000002384 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.289999991655 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
&lt;br /&gt;
Väljundist on väga suur erinevus filtreermata ning filtreeritud väärtuste vahel, samuti eksisteerib väljund alati, isegi siis kui lähemalasetsevad objektid on kaugemal kui 1,5m nagu on dokumentatsiooni järgi suurim tuvastuskaugus. Katse lõpus arvutatud keskmine ning standardhälve ei oma selle katse kontekstis erilist tähendust kuna sonarid oli liikumises.&lt;br /&gt;
&lt;br /&gt;
==Stabiilsustestid==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suunatud väga lähedalt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 Mean left: 0.239333327611&lt;br /&gt;
 Mean right: 0.239333327611&lt;br /&gt;
 Standard deviation left: 0.00249443959597&lt;br /&gt;
 Standard deviation right: 0.00359011179731&lt;br /&gt;
&lt;br /&gt;
Väljund näitab, et jõutud on minimaalse tuvastuskauguseni, kus kauguse täpne mõõtmine pole enam võimalik, kui takistuse olemasolu võib järeldada. Väljund väga stabiilne.&lt;br /&gt;
&lt;br /&gt;
Suunatud ~30cm kauguselt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 Mean left: 0.438333324591&lt;br /&gt;
 Mean right: 0.436999990543&lt;br /&gt;
 Standard deviation left: 0.00582142222363&lt;br /&gt;
 Standard deviation right: 0.00525991948363&lt;br /&gt;
&lt;br /&gt;
Keskmistel mõõtmiskaugustel taaskord küllaltki stabiilne.&lt;br /&gt;
&lt;br /&gt;
Suunatud vabasse ruumi. Takistused üle kahe meetri kaugusel. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62999999523&lt;br /&gt;
 left: 1.62999999523 right: 1.40999996662&lt;br /&gt;
 left: 1.64999997616 right: 1.26999998093&lt;br /&gt;
 left: 1.64999997616 right: 1.78999996185&lt;br /&gt;
 left: 1.64999997616 right: 1.55999994278&lt;br /&gt;
 left: 1.64999997616 right: 1.63999998569&lt;br /&gt;
 left: 1.65999996662 right: 1.65999996662&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.64999997616 right: 1.81999993324&lt;br /&gt;
 left: 1.64999997616 right: 1.83999991417&lt;br /&gt;
 left: 1.65999996662 right: 1.86000001431&lt;br /&gt;
 left: 1.84999990463 right: 1.87999999523&lt;br /&gt;
 left: 1.66999995708 right: 1.84999990463&lt;br /&gt;
 left: 1.65999996662 right: 1.87000000477&lt;br /&gt;
 Mean left: 1.65466664235&lt;br /&gt;
 Mean right: 1.67933330536&lt;br /&gt;
 Standard deviation left: 0.0387928804152&lt;br /&gt;
 Standard deviation right: 0.149620252664&lt;br /&gt;
&lt;br /&gt;
Ei tohiks sellistel kaugustel takistusi tuvastada, kuid testi läbiviimiseks valitud ruumis võib olla tegimist kajaprobleemidega. Rahuldav väljundi stabiilsus.&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Vaba ruum, seinad vähemalt 2.5m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
def joonis(timestep, list1,list2,list3,list4):&lt;br /&gt;
    #joonise loomine&lt;br /&gt;
    fig = plt.figure()&lt;br /&gt;
    ax1 = fig.add_subplot(111)&lt;br /&gt;
    &lt;br /&gt;
    ax1.plot(timestep,list1, 'b',label=&amp;quot;L&amp;quot;,marker='+')&lt;br /&gt;
    ax1.plot(timestep,list2,'r',label=&amp;quot;R&amp;quot;,marker='+')&lt;br /&gt;
&lt;br /&gt;
    ax1.plot(timestep,list3,'c', label=&amp;quot;LF&amp;quot;,marker='o')&lt;br /&gt;
    ax1.plot(timestep,list4,'m',label=&amp;quot;RF&amp;quot;,marker='o')&lt;br /&gt;
    &lt;br /&gt;
    ax1.set_xlabel('time (s)')&lt;br /&gt;
    ax1.set_ylabel('distance (cm)', color='g')&lt;br /&gt;
    for tl in ax1.get_yticklabels():&lt;br /&gt;
        tl.set_color('g')&lt;br /&gt;
    &lt;br /&gt;
    plt.legend()&lt;br /&gt;
    plt.show()&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0)&lt;br /&gt;
&lt;br /&gt;
leftValues=[]&lt;br /&gt;
rightValues=[]&lt;br /&gt;
leftValuesF=[]&lt;br /&gt;
rightValuesF=[]&lt;br /&gt;
timestep=[]&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1)&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
	leftValues.append(float(left)*100)&lt;br /&gt;
	rightValues.append(float(right)*100)&lt;br /&gt;
	if(leftD == None):&lt;br /&gt;
		leftD=0&lt;br /&gt;
	if(rightD == None):&lt;br /&gt;
		rightD=0&lt;br /&gt;
	leftValuesF.append(float(leftD)*100)&lt;br /&gt;
	rightValuesF.append(float(rightD)*100)&lt;br /&gt;
	timestep.append(i)&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
joonis(timestep, leftValues,rightValues,leftValuesF,rightValuesF)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljund:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kasutaja@Huginn:~/Desktop$ python NAO_sonarTest_plot.py 172.19.2.79 50&lt;br /&gt;
left: 1.05999994278 right: 1.09000003338&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.59999990463&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.37000000477 right: 1.56999993324&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.22000002861&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.10000002384 right: 1.11000001431&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
...&lt;br /&gt;
left: 1.04999995232 right: 1.25999999046&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
Mean left: 126.299996376&lt;br /&gt;
Mean right: 125.379997134&lt;br /&gt;
Standard deviation left: 31.8472923989&lt;br /&gt;
Standard deviation right: 19.6243602903&lt;br /&gt;
INFO: Destroying broker 'ALProxyBroker'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Viimased arvutused on tehtud cm-tes.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonar_output.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Esineb väga tugev väljundi kõikumine (standardhälve 32 ja 20 cm) samas filtreeritud väärtused ei muutu. Graafik viitab, et vasaku ja parema sonari mõõdetud tulemused on omavahel teatavas korrellatsioonis.&lt;br /&gt;
&lt;br /&gt;
==Mitmekordse kaja väärtused==&lt;br /&gt;
&lt;br /&gt;
NAO Sonar mõõdab kaugusi ka teistele kajadele peale esimese. Mällu salvestatakse 10 väärtust. Järgnev kood prindib ekraanile kõik kümme väärtust ning lisaks nenede põhjal arvutatud 'SonarLeftDetected' väärtuse.&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 1000, 1.0)&lt;br /&gt;
&lt;br /&gt;
time.sleep(10)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
 	time.sleep(2)&lt;br /&gt;
	print &amp;quot;Iteration&amp;quot;,i&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value1&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value2&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value3&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value4&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value5&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value6&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value7&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value8&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value9&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 0.909999966621&lt;br /&gt;
 1.49000000954&lt;br /&gt;
 1.7199999094&lt;br /&gt;
 2.06999993324&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 0.899999976158&lt;br /&gt;
 1.48000001907&lt;br /&gt;
 2.0&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Versioonis 1.10.11 ei eksisteeri mälus enam väärtust &amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, mida esindab väljundis nüüd &amp;quot;None&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud vabasse ruumi: &lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.45999991894&lt;br /&gt;
 1.87999999523&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.44999992847&lt;br /&gt;
 1.86000001431&lt;br /&gt;
 2.22000002861&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tulemustest järeldub, et kui takistused on liiga kaugel tagastab filtreeritud väärtus alati minimaalse mõõteväärtuse, kuigi mõõtetulemused on olemas. Väärtused suuremad kui 2.54 tähendavad suurima tõenäosusega, et niimitmendat kaja ei registreeritud piiratud aja vältel. Samas võib semantiliselt lugeda 'SonarLeftDetected' tulemuse korrektseks, sest nagu nimest järeldub peaks see väärtust esindama takistust, mille tuvastamine liiga kaugelt tekitab liigset andmemüra ning takistusega võib tegeleda kui see robotile reaalselt ette satub.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud ligi poole meetri kauguselt vastu toa nurka:&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.53999996185&lt;br /&gt;
 2.03999996185&lt;br /&gt;
 2.38999986649&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.57999992371&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Mingisugusel põhjusel on lähendalt mõõdetud väärtused filtris olemas, kuid ei ole sarnased erinevate kajade tulemustega, võimalik, et esimese väärtuse kadumine tähendab, et siin esitatakse andmed alates teisest saabunud kajast. Vajalik on testida &amp;quot;value0&amp;quot; olemasolu kui võimalikku asendust.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8327</id>
		<title>SonariProbleem</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8327"/>
		<updated>2011-03-27T16:13:50Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Filtreeritud väärtused==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;SonarRightDetected&amp;quot; või &amp;quot;SonarLeftDetected&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Samalaadse tulemuse andis ka Pythoni skript. Kui käivitasin [[Python#Näiteprogramm | näiteskripti]] ja suunasin sonarid lakke olid loetud väärtused:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.569999992847&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.579999983311&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Ülaltoodud &amp;quot;SonarRightDetected&amp;quot; väärtused on eelnevalt läbinud filtri (töötluse) ning ei kajasta otseselt seda, mida sonar mõõtis.&lt;br /&gt;
&lt;br /&gt;
==Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevas katses liigutati NAOd mööda tuba ringi viies teda seintest lähemale/kaugemale kokku võeti 100 lugemit igale sonari loetud väärtusele järgneb filtri läbinud väärtus.&lt;br /&gt;
&lt;br /&gt;
Väljundi stabiilsuse ning filtreerimise testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import time&lt;br /&gt;
 import numpy&lt;br /&gt;
 from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
 IP = sys.argv[1] // Käsurea argumendid&lt;br /&gt;
 SAMPLES = sys.argv[2]&lt;br /&gt;
 PORT = 9559&lt;br /&gt;
&lt;br /&gt;
 sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
 mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
 sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0) // Uuenda 500ms tagant, täpsus 1.0&lt;br /&gt;
&lt;br /&gt;
 leftValues=[]&lt;br /&gt;
 rightValues=[]&lt;br /&gt;
&lt;br /&gt;
 for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1) // Oota 1 sekund&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0) // 0 tähendab uusima väärtuse lugemist, otse sonarist saadud väärtus &lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;) // Läbinud filtri&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
	leftValues.append(float(left))&lt;br /&gt;
	rightValues.append(float(right))&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
 print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
 print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
 print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
 print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
 sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljundifail: [[File:NAO_sonarTest_output.txt]]&lt;br /&gt;
&lt;br /&gt;
Väljundis:&lt;br /&gt;
&lt;br /&gt;
 left: 1.66999995708 right: 1.39999997616&lt;br /&gt;
 filter left: 0.389999985695 right: 0.699999988079&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.87999999523 right: 1.40999996662&lt;br /&gt;
 filter left: 0.439999997616 right: 0.649999976158&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.310000002384 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.289999991655 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
&lt;br /&gt;
Väljundist on väga suur erinevus filtreermata ning filtreeritud väärtuste vahel, samuti eksisteerib väljund alati, isegi siis kui lähemalasetsevad objektid on kaugemal kui 1,5m nagu on dokumentatsiooni järgi suurim tuvastuskaugus. Katse lõpus arvutatud keskmine ning standardhälve ei oma selle katse kontekstis erilist tähendust kuna sonarid oli liikumises.&lt;br /&gt;
&lt;br /&gt;
==Stabiilsustestid==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suunatud väga lähedalt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 Mean left: 0.239333327611&lt;br /&gt;
 Mean right: 0.239333327611&lt;br /&gt;
 Standard deviation left: 0.00249443959597&lt;br /&gt;
 Standard deviation right: 0.00359011179731&lt;br /&gt;
&lt;br /&gt;
Väljund näitab, et jõutud on minimaalse tuvastuskauguseni, kus kauguse täpne mõõtmine pole enam võimalik, kui takistuse olemasolu võib järeldada. Väljund väga stabiilne.&lt;br /&gt;
&lt;br /&gt;
Suunatud ~30cm kauguselt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 Mean left: 0.438333324591&lt;br /&gt;
 Mean right: 0.436999990543&lt;br /&gt;
 Standard deviation left: 0.00582142222363&lt;br /&gt;
 Standard deviation right: 0.00525991948363&lt;br /&gt;
&lt;br /&gt;
Keskmistel mõõtmiskaugustel taaskord küllaltki stabiilne.&lt;br /&gt;
&lt;br /&gt;
Suunatud vabasse ruumi. Takistused üle kahe meetri kaugusel. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62999999523&lt;br /&gt;
 left: 1.62999999523 right: 1.40999996662&lt;br /&gt;
 left: 1.64999997616 right: 1.26999998093&lt;br /&gt;
 left: 1.64999997616 right: 1.78999996185&lt;br /&gt;
 left: 1.64999997616 right: 1.55999994278&lt;br /&gt;
 left: 1.64999997616 right: 1.63999998569&lt;br /&gt;
 left: 1.65999996662 right: 1.65999996662&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.64999997616 right: 1.81999993324&lt;br /&gt;
 left: 1.64999997616 right: 1.83999991417&lt;br /&gt;
 left: 1.65999996662 right: 1.86000001431&lt;br /&gt;
 left: 1.84999990463 right: 1.87999999523&lt;br /&gt;
 left: 1.66999995708 right: 1.84999990463&lt;br /&gt;
 left: 1.65999996662 right: 1.87000000477&lt;br /&gt;
 Mean left: 1.65466664235&lt;br /&gt;
 Mean right: 1.67933330536&lt;br /&gt;
 Standard deviation left: 0.0387928804152&lt;br /&gt;
 Standard deviation right: 0.149620252664&lt;br /&gt;
&lt;br /&gt;
Ei tohiks sellistel kaugustel takistusi tuvastada, kuid testi läbiviimiseks valitud ruumis võib olla tegimist kajaprobleemidega. Rahuldav väljundi stabiilsus.&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Vaba ruum, seinad vähemalt 2.5m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
def joonis(timestep, list1,list2,list3,list4):&lt;br /&gt;
    #joonise loomine&lt;br /&gt;
    fig = plt.figure()&lt;br /&gt;
    ax1 = fig.add_subplot(111)&lt;br /&gt;
    &lt;br /&gt;
    ax1.plot(timestep,list1, 'b',label=&amp;quot;L&amp;quot;,marker='+')&lt;br /&gt;
    ax1.plot(timestep,list2,'r',label=&amp;quot;R&amp;quot;,marker='+')&lt;br /&gt;
&lt;br /&gt;
    ax1.plot(timestep,list3,'c', label=&amp;quot;LF&amp;quot;,marker='o')&lt;br /&gt;
    ax1.plot(timestep,list4,'m',label=&amp;quot;RF&amp;quot;,marker='o')&lt;br /&gt;
    &lt;br /&gt;
    ax1.set_xlabel('time (s)')&lt;br /&gt;
    ax1.set_ylabel('distance (cm)', color='g')&lt;br /&gt;
    for tl in ax1.get_yticklabels():&lt;br /&gt;
        tl.set_color('g')&lt;br /&gt;
    &lt;br /&gt;
    plt.legend()&lt;br /&gt;
    plt.show()&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0)&lt;br /&gt;
&lt;br /&gt;
leftValues=[]&lt;br /&gt;
rightValues=[]&lt;br /&gt;
leftValuesF=[]&lt;br /&gt;
rightValuesF=[]&lt;br /&gt;
timestep=[]&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1)&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
	leftValues.append(float(left)*100)&lt;br /&gt;
	rightValues.append(float(right)*100)&lt;br /&gt;
	if(leftD == None):&lt;br /&gt;
		leftD=0&lt;br /&gt;
	if(rightD == None):&lt;br /&gt;
		rightD=0&lt;br /&gt;
	leftValuesF.append(float(leftD)*100)&lt;br /&gt;
	rightValuesF.append(float(rightD)*100)&lt;br /&gt;
	timestep.append(i)&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
joonis(timestep, leftValues,rightValues,leftValuesF,rightValuesF)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljund:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kasutaja@Huginn:~/Desktop$ python NAO_sonarTest_plot.py 172.19.2.79 50&lt;br /&gt;
left: 1.05999994278 right: 1.09000003338&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.59999990463&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.37000000477 right: 1.56999993324&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.22000002861&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.10000002384 right: 1.11000001431&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
...&lt;br /&gt;
left: 1.04999995232 right: 1.25999999046&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
Mean left: 126.299996376&lt;br /&gt;
Mean right: 125.379997134&lt;br /&gt;
Standard deviation left: 31.8472923989&lt;br /&gt;
Standard deviation right: 19.6243602903&lt;br /&gt;
INFO: Destroying broker 'ALProxyBroker'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Viimased arvutused on tehtud cm-tes.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonar_output.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Mitmekordse kaja väärtused==&lt;br /&gt;
&lt;br /&gt;
NAO Sonar mõõdab kaugusi ka teistele kajadele peale esimese. Mällu salvestatakse 10 väärtust. Järgnev kood prindib ekraanile kõik kümme väärtust ning lisaks nenede põhjal arvutatud 'SonarLeftDetected' väärtuse.&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 1000, 1.0)&lt;br /&gt;
&lt;br /&gt;
time.sleep(10)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
 	time.sleep(2)&lt;br /&gt;
	print &amp;quot;Iteration&amp;quot;,i&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value1&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value2&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value3&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value4&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value5&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value6&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value7&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value8&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value9&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 0.909999966621&lt;br /&gt;
 1.49000000954&lt;br /&gt;
 1.7199999094&lt;br /&gt;
 2.06999993324&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 0.899999976158&lt;br /&gt;
 1.48000001907&lt;br /&gt;
 2.0&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Versioonis 1.10.11 ei eksisteeri mälus enam väärtust &amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, mida esindab väljundis nüüd &amp;quot;None&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud vabasse ruumi: &lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.45999991894&lt;br /&gt;
 1.87999999523&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.44999992847&lt;br /&gt;
 1.86000001431&lt;br /&gt;
 2.22000002861&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tulemustest järeldub, et kui takistused on liiga kaugel tagastab filtreeritud väärtus alati minimaalse mõõteväärtuse, kuigi mõõtetulemused on olemas. Väärtused suuremad kui 2.54 tähendavad suurima tõenäosusega, et niimitmendat kaja ei registreeritud piiratud aja vältel. Samas võib semantiliselt lugeda 'SonarLeftDetected' tulemuse korrektseks, sest nagu nimest järeldub peaks see väärtust esindama takistust, mille tuvastamine liiga kaugelt tekitab liigset andmemüra ning takistusega võib tegeleda kui see robotile reaalselt ette satub.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud ligi poole meetri kauguselt vastu toa nurka:&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.53999996185&lt;br /&gt;
 2.03999996185&lt;br /&gt;
 2.38999986649&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.57999992371&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Mingisugusel põhjusel on lähendalt mõõdetud väärtused filtris olemas, kuid ei ole sarnased erinevate kajade tulemustega, võimalik, et esimese väärtuse kadumine tähendab, et siin esitatakse andmed alates teisest saabunud kajast. Vajalik on testida &amp;quot;value0&amp;quot; olemasolu kui võimalikku asendust.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8326</id>
		<title>SonariProbleem</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8326"/>
		<updated>2011-03-27T15:51:41Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Filtreeritud väärtused==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;SonarRightDetected&amp;quot; või &amp;quot;SonarLeftDetected&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Samalaadse tulemuse andis ka Pythoni skript. Kui käivitasin [[Python#Näiteprogramm | näiteskripti]] ja suunasin sonarid lakke olid loetud väärtused:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.569999992847&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.579999983311&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Ülaltoodud &amp;quot;SonarRightDetected&amp;quot; väärtused on eelnevalt läbinud filtri (töötluse) ning ei kajasta otseselt seda, mida sonar mõõtis.&lt;br /&gt;
&lt;br /&gt;
==Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevas katses liigutati NAOd mööda tuba ringi viies teda seintest lähemale/kaugemale kokku võeti 100 lugemit igale sonari loetud väärtusele järgneb filtri läbinud väärtus.&lt;br /&gt;
&lt;br /&gt;
Väljundi stabiilsuse ning filtreerimise testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import time&lt;br /&gt;
 import numpy&lt;br /&gt;
 from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
 IP = sys.argv[1] // Käsurea argumendid&lt;br /&gt;
 SAMPLES = sys.argv[2]&lt;br /&gt;
 PORT = 9559&lt;br /&gt;
&lt;br /&gt;
 sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
 mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
 sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0) // Uuenda 500ms tagant, täpsus 1.0&lt;br /&gt;
&lt;br /&gt;
 leftValues=[]&lt;br /&gt;
 rightValues=[]&lt;br /&gt;
&lt;br /&gt;
 for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1) // Oota 1 sekund&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0) // 0 tähendab uusima väärtuse lugemist, otse sonarist saadud väärtus &lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;) // Läbinud filtri&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
	leftValues.append(float(left))&lt;br /&gt;
	rightValues.append(float(right))&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
 print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
 print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
 print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
 print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
 sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljundifail: [[File:NAO_sonarTest_output.txt]]&lt;br /&gt;
&lt;br /&gt;
Väljundis:&lt;br /&gt;
&lt;br /&gt;
 left: 1.66999995708 right: 1.39999997616&lt;br /&gt;
 filter left: 0.389999985695 right: 0.699999988079&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.87999999523 right: 1.40999996662&lt;br /&gt;
 filter left: 0.439999997616 right: 0.649999976158&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.310000002384 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.289999991655 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
&lt;br /&gt;
Väljundist on väga suur erinevus filtreermata ning filtreeritud väärtuste vahel, samuti eksisteerib väljund alati, isegi siis kui lähemalasetsevad objektid on kaugemal kui 1,5m nagu on dokumentatsiooni järgi suurim tuvastuskaugus. Katse lõpus arvutatud keskmine ning standardhälve ei oma selle katse kontekstis erilist tähendust kuna sonarid oli liikumises.&lt;br /&gt;
&lt;br /&gt;
==Stabiilsustestid==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suunatud väga lähedalt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 Mean left: 0.239333327611&lt;br /&gt;
 Mean right: 0.239333327611&lt;br /&gt;
 Standard deviation left: 0.00249443959597&lt;br /&gt;
 Standard deviation right: 0.00359011179731&lt;br /&gt;
&lt;br /&gt;
Väljund näitab, et jõutud on minimaalse tuvastuskauguseni, kus kauguse täpne mõõtmine pole enam võimalik, kui takistuse olemasolu võib järeldada. Väljund väga stabiilne.&lt;br /&gt;
&lt;br /&gt;
Suunatud ~30cm kauguselt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 Mean left: 0.438333324591&lt;br /&gt;
 Mean right: 0.436999990543&lt;br /&gt;
 Standard deviation left: 0.00582142222363&lt;br /&gt;
 Standard deviation right: 0.00525991948363&lt;br /&gt;
&lt;br /&gt;
Keskmistel mõõtmiskaugustel taaskord küllaltki stabiilne.&lt;br /&gt;
&lt;br /&gt;
Suunatud vabasse ruumi. Takistused üle kahe meetri kaugusel. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62999999523&lt;br /&gt;
 left: 1.62999999523 right: 1.40999996662&lt;br /&gt;
 left: 1.64999997616 right: 1.26999998093&lt;br /&gt;
 left: 1.64999997616 right: 1.78999996185&lt;br /&gt;
 left: 1.64999997616 right: 1.55999994278&lt;br /&gt;
 left: 1.64999997616 right: 1.63999998569&lt;br /&gt;
 left: 1.65999996662 right: 1.65999996662&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.64999997616 right: 1.81999993324&lt;br /&gt;
 left: 1.64999997616 right: 1.83999991417&lt;br /&gt;
 left: 1.65999996662 right: 1.86000001431&lt;br /&gt;
 left: 1.84999990463 right: 1.87999999523&lt;br /&gt;
 left: 1.66999995708 right: 1.84999990463&lt;br /&gt;
 left: 1.65999996662 right: 1.87000000477&lt;br /&gt;
 Mean left: 1.65466664235&lt;br /&gt;
 Mean right: 1.67933330536&lt;br /&gt;
 Standard deviation left: 0.0387928804152&lt;br /&gt;
 Standard deviation right: 0.149620252664&lt;br /&gt;
&lt;br /&gt;
Ei tohiks sellistel kaugustel takistusi tuvastada, kuid testi läbiviimiseks valitud ruumis võib olla tegimist kajaprobleemidega. Rahuldav väljundi stabiilsus.&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keskkond: Vaba ruum, seinad vähenalt 2.5m kaugusel&lt;br /&gt;
&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
def joonis(timestep, list1,list2,list3,list4):&lt;br /&gt;
    #joonise loomine&lt;br /&gt;
    fig = plt.figure()&lt;br /&gt;
    ax1 = fig.add_subplot(111)&lt;br /&gt;
    &lt;br /&gt;
    ax1.plot(timestep,list1, 'b',label=&amp;quot;L&amp;quot;,marker='+')&lt;br /&gt;
    ax1.plot(timestep,list2,'r',label=&amp;quot;R&amp;quot;,marker='+')&lt;br /&gt;
&lt;br /&gt;
    ax1.plot(timestep,list3,'c', label=&amp;quot;LF&amp;quot;,marker='o')&lt;br /&gt;
    ax1.plot(timestep,list4,'m',label=&amp;quot;RF&amp;quot;,marker='o')&lt;br /&gt;
    &lt;br /&gt;
    ax1.set_xlabel('time (s)')&lt;br /&gt;
    ax1.set_ylabel('distance (cm)', color='g')&lt;br /&gt;
    for tl in ax1.get_yticklabels():&lt;br /&gt;
        tl.set_color('g')&lt;br /&gt;
    &lt;br /&gt;
    plt.legend()&lt;br /&gt;
    plt.show()&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0)&lt;br /&gt;
&lt;br /&gt;
leftValues=[]&lt;br /&gt;
rightValues=[]&lt;br /&gt;
leftValuesF=[]&lt;br /&gt;
rightValuesF=[]&lt;br /&gt;
timestep=[]&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1)&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
	leftValues.append(float(left)*100)&lt;br /&gt;
	rightValues.append(float(right)*100)&lt;br /&gt;
	if(leftD == None):&lt;br /&gt;
		leftD=0&lt;br /&gt;
	if(rightD == None):&lt;br /&gt;
		rightD=0&lt;br /&gt;
	leftValuesF.append(float(leftD)*100)&lt;br /&gt;
	rightValuesF.append(float(rightD)*100)&lt;br /&gt;
	timestep.append(i)&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
joonis(timestep, leftValues,rightValues,leftValuesF,rightValuesF)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljund:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kasutaja@Huginn:~/Desktop$ python NAO_sonarTest_plot.py 172.19.2.79 50&lt;br /&gt;
left: 1.05999994278 right: 1.09000003338&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.59999990463&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.37000000477 right: 1.56999993324&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.22000002861&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.10000002384 right: 1.11000001431&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
...&lt;br /&gt;
left: 1.04999995232 right: 1.25999999046&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
Mean left: 126.299996376&lt;br /&gt;
Mean right: 125.379997134&lt;br /&gt;
Standard deviation left: 31.8472923989&lt;br /&gt;
Standard deviation right: 19.6243602903&lt;br /&gt;
INFO: Destroying broker 'ALProxyBroker'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Viimased arvutused on tehtud cm-tes.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
&lt;br /&gt;
[[File:NAO_sonar_output.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Mitmekordse kaja väärtused==&lt;br /&gt;
&lt;br /&gt;
NAO Sonar mõõdab kaugusi ka teistele kajadele peale esimese. Mällu salvestatakse 10 väärtust. Järgnev kood prindib ekraanile kõik kümme väärtust ning lisaks nenede põhjal arvutatud 'SonarLeftDetected' väärtuse.&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 1000, 1.0)&lt;br /&gt;
&lt;br /&gt;
time.sleep(10)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
 	time.sleep(2)&lt;br /&gt;
	print &amp;quot;Iteration&amp;quot;,i&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value1&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value2&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value3&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value4&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value5&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value6&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value7&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value8&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value9&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 0.909999966621&lt;br /&gt;
 1.49000000954&lt;br /&gt;
 1.7199999094&lt;br /&gt;
 2.06999993324&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 0.899999976158&lt;br /&gt;
 1.48000001907&lt;br /&gt;
 2.0&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Versioonis 1.10.11 ei eksisteeri mälus enam väärtust &amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, mida esindab väljundis nüüd &amp;quot;None&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud vabasse ruumi: &lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.45999991894&lt;br /&gt;
 1.87999999523&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.44999992847&lt;br /&gt;
 1.86000001431&lt;br /&gt;
 2.22000002861&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tulemustest järeldub, et kui takistused on liiga kaugel tagastab filtreeritud väärtus alati minimaalse mõõteväärtuse, kuigi mõõtetulemused on olemas. Väärtused suuremad kui 2.54 tähendavad suurima tõenäosusega, et niimitmendat kaja ei registreeritud piiratud aja vältel. Samas võib semantiliselt lugeda 'SonarLeftDetected' tulemuse korrektseks, sest nagu nimest järeldub peaks see väärtust esindama takistust, mille tuvastamine liiga kaugelt tekitab liigset andmemüra ning takistusega võib tegeleda kui see robotile reaalselt ette satub.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud ligi poole meetri kauguselt vastu toa nurka:&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.53999996185&lt;br /&gt;
 2.03999996185&lt;br /&gt;
 2.38999986649&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.57999992371&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Mingisugusel põhjusel on lähendalt mõõdetud väärtused filtris olemas, kuid ei ole sarnased erinevate kajade tulemustega, võimalik, et esimese väärtuse kadumine tähendab, et siin esitatakse andmed alates teisest saabunud kajast. Vajalik on testida &amp;quot;value0&amp;quot; olemasolu kui võimalikku asendust.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=File:NAO_sonar_output.png&amp;diff=8325</id>
		<title>File:NAO sonar output.png</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=File:NAO_sonar_output.png&amp;diff=8325"/>
		<updated>2011-03-27T15:40:34Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8324</id>
		<title>SonariProbleem</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=SonariProbleem&amp;diff=8324"/>
		<updated>2011-03-27T15:39:33Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Filtreeritud väärtused==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;SonarRightDetected&amp;quot; või &amp;quot;SonarLeftDetected&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Samalaadse tulemuse andis ka Pythoni skript. Kui käivitasin [[Python#Näiteprogramm | näiteskripti]] ja suunasin sonarid lakke olid loetud väärtused:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarMiddleDetected&amp;quot;)&lt;br /&gt;
 0.264999985695&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.239999994636&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.569999992847&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.680000007153&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print memory.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
 0.579999983311&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Ülaltoodud &amp;quot;SonarRightDetected&amp;quot; väärtused on eelnevalt läbinud filtri (töötluse) ning ei kajasta otseselt seda, mida sonar mõõtis.&lt;br /&gt;
&lt;br /&gt;
==Tegelike sonari väärtuste ning filtreeritud väärtuste võrdlus==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Järgnevas katses liigutati NAOd mööda tuba ringi viies teda seintest lähemale/kaugemale kokku võeti 100 lugemit igale sonari loetud väärtusele järgneb filtri läbinud väärtus.&lt;br /&gt;
&lt;br /&gt;
Väljundi stabiilsuse ning filtreerimise testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import time&lt;br /&gt;
 import numpy&lt;br /&gt;
 from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
 IP = sys.argv[1] // Käsurea argumendid&lt;br /&gt;
 SAMPLES = sys.argv[2]&lt;br /&gt;
 PORT = 9559&lt;br /&gt;
&lt;br /&gt;
 sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
 mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
 sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0) // Uuenda 500ms tagant, täpsus 1.0&lt;br /&gt;
&lt;br /&gt;
 leftValues=[]&lt;br /&gt;
 rightValues=[]&lt;br /&gt;
&lt;br /&gt;
 for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1) // Oota 1 sekund&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0) // 0 tähendab uusima väärtuse lugemist, otse sonarist saadud väärtus &lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;) // Läbinud filtri&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
	leftValues.append(float(left))&lt;br /&gt;
	rightValues.append(float(right))&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
 print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
 print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
 print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
 print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
 sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljundifail: [[File:NAO_sonarTest_output.txt]]&lt;br /&gt;
&lt;br /&gt;
Väljundis:&lt;br /&gt;
&lt;br /&gt;
 left: 1.66999995708 right: 1.39999997616&lt;br /&gt;
 filter left: 0.389999985695 right: 0.699999988079&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.87999999523 right: 1.40999996662&lt;br /&gt;
 filter left: 0.439999997616 right: 0.649999976158&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.310000002384 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.289999991655 right: 0.299999982119&lt;br /&gt;
 filter left: 0.34999999404 right: 0.340000003576&lt;br /&gt;
&lt;br /&gt;
Väljundist on väga suur erinevus filtreermata ning filtreeritud väärtuste vahel, samuti eksisteerib väljund alati, isegi siis kui lähemalasetsevad objektid on kaugemal kui 1,5m nagu on dokumentatsiooni järgi suurim tuvastuskaugus. Katse lõpus arvutatud keskmine ning standardhälve ei oma selle katse kontekstis erilist tähendust kuna sonarid oli liikumises.&lt;br /&gt;
&lt;br /&gt;
==Stabiilsustestid==&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suunatud väga lähedalt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 left: 0.239999994636 right: 0.229999989271&lt;br /&gt;
 left: 0.239999994636 right: 0.239999994636&lt;br /&gt;
 Mean left: 0.239333327611&lt;br /&gt;
 Mean right: 0.239333327611&lt;br /&gt;
 Standard deviation left: 0.00249443959597&lt;br /&gt;
 Standard deviation right: 0.00359011179731&lt;br /&gt;
&lt;br /&gt;
Väljund näitab, et jõutud on minimaalse tuvastuskauguseni, kus kauguse täpne mõõtmine pole enam võimalik, kui takistuse olemasolu võib järeldada. Väljund väga stabiilne.&lt;br /&gt;
&lt;br /&gt;
Suunatud ~30cm kauguselt vastu seina. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 left: 0.42999997735 right: 0.439999997616&lt;br /&gt;
 ...&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.439999997616 right: 0.439999997616&lt;br /&gt;
 left: 0.439999997616 right: 0.42999997735&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 left: 0.449999988079 right: 0.439999997616&lt;br /&gt;
 Mean left: 0.438333324591&lt;br /&gt;
 Mean right: 0.436999990543&lt;br /&gt;
 Standard deviation left: 0.00582142222363&lt;br /&gt;
 Standard deviation right: 0.00525991948363&lt;br /&gt;
&lt;br /&gt;
Keskmistel mõõtmiskaugustel taaskord küllaltki stabiilne.&lt;br /&gt;
&lt;br /&gt;
Suunatud vabasse ruumi. Takistused üle kahe meetri kaugusel. 30 mõõtmist.&lt;br /&gt;
&lt;br /&gt;
 kasutaja@Huginn:~/Desktop$ python NAO_sonarTest.py 172.19.3.202 30&lt;br /&gt;
 INF: Registering module : ALFileManager&lt;br /&gt;
 INF: Registering module : ALNetwork&lt;br /&gt;
 INF: Connection established between 172.19.3.102:54010 and 172.19.3.202:9559&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62000000477&lt;br /&gt;
 left: 1.63999998569 right: 1.62999999523&lt;br /&gt;
 left: 1.62999999523 right: 1.40999996662&lt;br /&gt;
 left: 1.64999997616 right: 1.26999998093&lt;br /&gt;
 left: 1.64999997616 right: 1.78999996185&lt;br /&gt;
 left: 1.64999997616 right: 1.55999994278&lt;br /&gt;
 left: 1.64999997616 right: 1.63999998569&lt;br /&gt;
 left: 1.65999996662 right: 1.65999996662&lt;br /&gt;
 ...&lt;br /&gt;
 left: 1.64999997616 right: 1.81999993324&lt;br /&gt;
 left: 1.64999997616 right: 1.83999991417&lt;br /&gt;
 left: 1.65999996662 right: 1.86000001431&lt;br /&gt;
 left: 1.84999990463 right: 1.87999999523&lt;br /&gt;
 left: 1.66999995708 right: 1.84999990463&lt;br /&gt;
 left: 1.65999996662 right: 1.87000000477&lt;br /&gt;
 Mean left: 1.65466664235&lt;br /&gt;
 Mean right: 1.67933330536&lt;br /&gt;
 Standard deviation left: 0.0387928804152&lt;br /&gt;
 Standard deviation right: 0.149620252664&lt;br /&gt;
&lt;br /&gt;
Ei tohiks sellistel kaugustel takistusi tuvastada, kuid testi läbiviimiseks valitud ruumis võib olla tegimist kajaprobleemidega. Rahuldav väljundi stabiilsus.&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
Keskkond: Vaba ruum, seinad vähenalt 2.5m kaugusel&lt;br /&gt;
Asend: Sonarid suunatud lakke (selili)&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
def joonis(timestep, list1,list2,list3,list4):&lt;br /&gt;
    #joonise loomine&lt;br /&gt;
    fig = plt.figure()&lt;br /&gt;
    ax1 = fig.add_subplot(111)&lt;br /&gt;
    &lt;br /&gt;
    ax1.plot(timestep,list1, 'b',label=&amp;quot;L&amp;quot;,marker='+')&lt;br /&gt;
    ax1.plot(timestep,list2,'r',label=&amp;quot;R&amp;quot;,marker='+')&lt;br /&gt;
&lt;br /&gt;
    ax1.plot(timestep,list3,'c', label=&amp;quot;LF&amp;quot;,marker='o')&lt;br /&gt;
    ax1.plot(timestep,list4,'m',label=&amp;quot;RF&amp;quot;,marker='o')&lt;br /&gt;
    &lt;br /&gt;
    ax1.set_xlabel('time (s)')&lt;br /&gt;
    ax1.set_ylabel('distance (cm)', color='g')&lt;br /&gt;
    for tl in ax1.get_yticklabels():&lt;br /&gt;
        tl.set_color('g')&lt;br /&gt;
    &lt;br /&gt;
    plt.legend()&lt;br /&gt;
    plt.show()&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 500, 1.0)&lt;br /&gt;
&lt;br /&gt;
leftValues=[]&lt;br /&gt;
rightValues=[]&lt;br /&gt;
leftValuesF=[]&lt;br /&gt;
rightValuesF=[]&lt;br /&gt;
timestep=[]&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
	time.sleep(1)&lt;br /&gt;
	left = mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	leftD = mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
	right = mem.getData(&amp;quot;Device/SubDeviceList/US/Right/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	rightD = mem.getData(&amp;quot;SonarRightDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	print &amp;quot;left:&amp;quot;,left,&amp;quot;right:&amp;quot;,right&lt;br /&gt;
	print &amp;quot;filter left:&amp;quot;,leftD,&amp;quot;right:&amp;quot;,rightD&lt;br /&gt;
&lt;br /&gt;
	leftValues.append(float(left)*100)&lt;br /&gt;
	rightValues.append(float(right)*100)&lt;br /&gt;
	if(leftD == None):&lt;br /&gt;
		leftD=0&lt;br /&gt;
	if(rightD == None):&lt;br /&gt;
		rightD=0&lt;br /&gt;
	leftValuesF.append(float(leftD)*100)&lt;br /&gt;
	rightValuesF.append(float(rightD)*100)&lt;br /&gt;
	timestep.append(i)&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Mean left:&amp;quot;,numpy.mean(leftValues)&lt;br /&gt;
print &amp;quot;Mean right:&amp;quot;,numpy.mean(rightValues)&lt;br /&gt;
print &amp;quot;Standard deviation left:&amp;quot;, numpy.std(leftValues)&lt;br /&gt;
print &amp;quot;Standard deviation right:&amp;quot;, numpy.std(rightValues)&lt;br /&gt;
&lt;br /&gt;
joonis(timestep, leftValues,rightValues,leftValuesF,rightValuesF)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väljund:&lt;br /&gt;
&lt;br /&gt;
kasutaja@Huginn:~/Desktop$ python NAO_sonarTest_plot.py 172.19.2.79 50&lt;br /&gt;
left: 1.05999994278 right: 1.09000003338&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.59999990463&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.37000000477 right: 1.56999993324&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.07999992371 right: 1.22000002861&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
left: 1.10000002384 right: 1.11000001431&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
...&lt;br /&gt;
left: 1.04999995232 right: 1.25999999046&lt;br /&gt;
filter left: 0.239999994636 right: 0.34999999404&lt;br /&gt;
Mean left: 126.299996376&lt;br /&gt;
Mean right: 125.379997134&lt;br /&gt;
Standard deviation left: 31.8472923989&lt;br /&gt;
Standard deviation right: 19.6243602903&lt;br /&gt;
INFO: Destroying broker 'ALProxyBroker'&lt;br /&gt;
&lt;br /&gt;
Viimased arvutused on tehtud cm-tes.&lt;br /&gt;
&lt;br /&gt;
Graafik:&lt;br /&gt;
[[File:NAO_sonar_output.png]]&lt;br /&gt;
&lt;br /&gt;
==Mitmekordse kaja väärtused==&lt;br /&gt;
&lt;br /&gt;
NAO Sonar mõõdab kaugusi ka teistele kajadele peale esimese. Mällu salvestatakse 10 väärtust. Järgnev kood prindib ekraanile kõik kümme väärtust ning lisaks nenede põhjal arvutatud 'SonarLeftDetected' väärtuse.&lt;br /&gt;
&lt;br /&gt;
Testprogramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import numpy&lt;br /&gt;
from naoqi import ALProxy&lt;br /&gt;
&lt;br /&gt;
IP = sys.argv[1]&lt;br /&gt;
SAMPLES = sys.argv[2]&lt;br /&gt;
PORT = 9559&lt;br /&gt;
&lt;br /&gt;
sonar=ALProxy(&amp;quot;ALSonar&amp;quot;, IP, PORT)&lt;br /&gt;
mem=ALProxy(&amp;quot;ALMemory&amp;quot;, IP, PORT)&lt;br /&gt;
&lt;br /&gt;
sonar.subscribe(&amp;quot;SonariTest&amp;quot;, 1000, 1.0)&lt;br /&gt;
&lt;br /&gt;
time.sleep(10)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, int(SAMPLES)):&lt;br /&gt;
 	time.sleep(2)&lt;br /&gt;
	print &amp;quot;Iteration&amp;quot;,i&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value1&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value2&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value3&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value4&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value5&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value6&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value7&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value8&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;Device/SubDeviceList/US/Left/Sensor/Value9&amp;quot;, 0)&lt;br /&gt;
	print mem.getData(&amp;quot;SonarLeftDetected&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
sonar.unsubscribe(&amp;quot;SonariTest&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.8.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 0.909999966621&lt;br /&gt;
 1.49000000954&lt;br /&gt;
 1.7199999094&lt;br /&gt;
 2.06999993324&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 0.899999976158&lt;br /&gt;
 1.48000001907&lt;br /&gt;
 2.0&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.239999994636&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tarkvara versioon: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; 1.10.11 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Versioonis 1.10.11 ei eksisteeri mälus enam väärtust &amp;quot;Device/SubDeviceList/US/Left/Sensor/Value&amp;quot;, mida esindab väljundis nüüd &amp;quot;None&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud vabasse ruumi: &lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.45999991894&lt;br /&gt;
 1.87999999523&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.44999992847&lt;br /&gt;
 1.86000001431&lt;br /&gt;
 2.22000002861&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.269999980927&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Tulemustest järeldub, et kui takistused on liiga kaugel tagastab filtreeritud väärtus alati minimaalse mõõteväärtuse, kuigi mõõtetulemused on olemas. Väärtused suuremad kui 2.54 tähendavad suurima tõenäosusega, et niimitmendat kaja ei registreeritud piiratud aja vältel. Samas võib semantiliselt lugeda 'SonarLeftDetected' tulemuse korrektseks, sest nagu nimest järeldub peaks see väärtust esindama takistust, mille tuvastamine liiga kaugelt tekitab liigset andmemüra ning takistusega võib tegeleda kui see robotile reaalselt ette satub.&lt;br /&gt;
&lt;br /&gt;
Sonar suunatud ligi poole meetri kauguselt vastu toa nurka:&lt;br /&gt;
&lt;br /&gt;
 Iteration 0&lt;br /&gt;
 None&lt;br /&gt;
 1.53999996185&lt;br /&gt;
 2.03999996185&lt;br /&gt;
 2.38999986649&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 Iteration 1&lt;br /&gt;
 None&lt;br /&gt;
 1.57999992371&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 2.54999995232&lt;br /&gt;
 0.5&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Mingisugusel põhjusel on lähendalt mõõdetud väärtused filtris olemas, kuid ei ole sarnased erinevate kajade tulemustega, võimalik, et esimese väärtuse kadumine tähendab, et siin esitatakse andmed alates teisest saabunud kajast. Vajalik on testida &amp;quot;value0&amp;quot; olemasolu kui võimalikku asendust.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=NaoSim_Linuxis&amp;diff=8319</id>
		<title>NaoSim Linuxis</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=NaoSim_Linuxis&amp;diff=8319"/>
		<updated>2011-03-21T19:00:36Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: Created page with 'Windowsi versiooni NaoSim tarkvarast on võimalik saada käima ka Linuxis kasutades WINE ühilduvuskihti.  Testkeskkond: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; Ubuntu 10.10, WINE 1.3.15, N…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Windowsi versiooni NaoSim tarkvarast on võimalik saada käima ka Linuxis kasutades WINE ühilduvuskihti.&lt;br /&gt;
&lt;br /&gt;
Testkeskkond: &amp;lt;span style=&amp;quot;color:#009000&amp;quot;&amp;gt; Ubuntu 10.10, WINE 1.3.15, NaoSim 1.10.3, Choregraphe 1.10.10&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Installeerida paketid wine ja winetricks&lt;br /&gt;
* Kasutades winetricksi lisada WINE'le vcrun2008 (MS Visual C++ libraries)&lt;br /&gt;
* Käivitada NaoSim paigaldus&lt;br /&gt;
* Selleks, et NaoSim töötaks on vaja registrisse lisada Choregraphe registreerimiskood, see jõab sinna ainult siis kui Choregraphe ise kävitatakse läbi WINE'i ning kood sisestatakse. Windowsi Choregraphe paigaldamine kasutades WINE ei õnnestunud, kuid Windowsi kettal juba olemas olnud versioon käivitus läbi WINE ideaalselt ning lisas vajalikud koodid WINE Windowsi registrisse.&lt;br /&gt;
&lt;br /&gt;
NaoSim peaks sellega olema töökorras, ning kasutatav koos Linuxi Choregraphe versiooniga, samas tuleb jälgida, et NaoSim kävitatakse enne kui Choregraphe kuna viimane plokeerib NaoSim naoqi jaoks vajalikud pordid. Choregraphe saab ühendada käivitatud simulatsiooni kasutades IPd 127.0.0.1 ning vaikeporti 9559.&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=NAO&amp;diff=8318</id>
		<title>NAO</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=NAO&amp;diff=8318"/>
		<updated>2011-03-21T18:39:05Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Ülevaade==&lt;br /&gt;
&lt;br /&gt;
===Nao ühendamine arvutiga===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Kui IP saamine õnnestub ütleb NAO oma IP aadressi kui tema kõhul olevat nuppu vajutada. Navigeerides veebibrauseriga &amp;lt;nowiki&amp;gt;http://(NAO IP)&amp;lt;/nowiki&amp;gt; lehele on võimalik muuta mõningaid seadeid ning näha staatuse informatsiooni. Kui ligiduses on traadita võrke peaksid need ilmuma &amp;quot;Networks&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Pärast traadita ühenduse loomist tuleks meelde jätta wireless võrgust saadud IP (&amp;quot;Networks&amp;quot; kuval) ning ühendada lahti ethernet kaabel. Pärast seda kui wireless võrk on korra juba valitud saab NAO ühendada end sellega automaatselt (&amp;quot;Wireless&amp;quot; nimekirjas on võrk märgitud &amp;quot;favorite&amp;quot; = 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).  &lt;br /&gt;
&lt;br /&gt;
===NaoQi===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;nowiki&amp;gt;http://NaoIp:9559/full&amp;lt;/nowiki&amp;gt;, 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.&lt;br /&gt;
   &lt;br /&gt;
NaoQi taaskäivitamiseks tuleb Nao veebikeskonnast valida &amp;quot;Advanced&amp;quot;-&amp;gt;&amp;quot;NaoQi&amp;quot; ning &amp;quot;Restart&amp;quot;, sama tulemuse annab NAO välja- ja sisselülitamine.&lt;br /&gt;
&lt;br /&gt;
===BonJour===&lt;br /&gt;
&lt;br /&gt;
Windows platvormil sobib seadmete nagu NAO võrgust leidmiseks (tavaliselt teised arvutid, printerid jms). Tekib ikoonina Internet Exploreri tööriistaribale.&lt;br /&gt;
&lt;br /&gt;
===Arendus===&lt;br /&gt;
&lt;br /&gt;
[[Choregraphe| Visuaalprogrammeerimine: Choregraphe]]&lt;br /&gt;
&lt;br /&gt;
[[Python| Skriptid: Python]]&lt;br /&gt;
&lt;br /&gt;
[[C++| Programmeerimine: C++]]&lt;br /&gt;
&lt;br /&gt;
====Operatsioonisüsteemide tugi====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! Windows XP 32 bit&lt;br /&gt;
! Windows 7 64 bit&lt;br /&gt;
! Ubuntu 10.10 32 bit&lt;br /&gt;
! Ubuntu 10.10 64 bit&lt;br /&gt;
|-&lt;br /&gt;
! Choregraphe&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| Ei tööta&lt;br /&gt;
|-&lt;br /&gt;
! Python&lt;br /&gt;
| Paigaldatav, töötab&lt;br /&gt;
| Paigaldatav, töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
|-&lt;br /&gt;
! C++, native compiling*&lt;br /&gt;
| Töötab. Vaja Microsoft Visual Studio 2005/2008 kompillaatorit&lt;br /&gt;
| ?&lt;br /&gt;
| Töötab&lt;br /&gt;
| Ei tööta&lt;br /&gt;
|-&lt;br /&gt;
! C++, cross-compiling**&lt;br /&gt;
| Ei toetata&lt;br /&gt;
| Ei toetata&lt;br /&gt;
| Töötab&lt;br /&gt;
| Ei tööta&lt;br /&gt;
|-&lt;br /&gt;
! NaoSim&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| [[NaoSim Linuxis| Paigaldatav]]&lt;br /&gt;
| [[NaoSim Linuxis| Paigaldatav]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;* Koodi kompilleerimine kompilleerivas masinas jooksetamiseks. Kui NAOQi käib kohalikus masinas (väga piiratud kasutusvõimalused)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;** Koodi kompilleerimine võõrale platvormile (NAOle).&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'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.   &lt;br /&gt;
&lt;br /&gt;
===Tähelepanekuid===&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/greendoc/choregraphe/predefined_positions.html&lt;br /&gt;
&lt;br /&gt;
*'''Objektide tuvastamine''' - NAO suudab meelde jätta talle näidatud pilte ja neid hiljem ära tunda. Choreographe sees käib see View-&amp;gt;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.&lt;br /&gt;
&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/greendoc/choregraphe/video-monitor-tuto.html&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/greendoc/choregraphe/creating_movement_with_recording_mode.html&lt;br /&gt;
&lt;br /&gt;
*'''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 &amp;quot;Energy&amp;quot;), 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 &amp;quot;My battery is strong&amp;quot;), 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'''.    &lt;br /&gt;
&lt;br /&gt;
==Võimalused ja piirangud==&lt;br /&gt;
&lt;br /&gt;
===Kommunikatsioon===&lt;br /&gt;
&lt;br /&gt;
'''Bluetooth''' (Riistvara pole veel saadaval)&lt;br /&gt;
* 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.&lt;br /&gt;
* Kasutusalad: Boardiga saab kontrollida muud elektroonikat (digitaalsed, PWM, servo, mootorite kontrollimise väljundid). Väliste sensorite ühendamine, NAO kontrolli all olevad lisaseadmed. &lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/reddoc/bluetooth/bluetooth.html&lt;br /&gt;
&lt;br /&gt;
'''Infrapuna'''&lt;br /&gt;
* Andmevahetus otsenähtavusel. Eelseadistatav veebikeskkonna vahendusel. Soovituslik kasutuspiirkond ligikaudu 15cm NAO silmadest.&lt;br /&gt;
* Kasutusalad: Kahe NAO andmevahetus, IR suhtlust kasutavate seadmete kontrollimine, käskude vastuvõtmine IR puldi kaudu.&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/reddoc/infrared/purpose_description.html&lt;br /&gt;
&lt;br /&gt;
'''WiFi'''&lt;br /&gt;
* Ühendada NAO(d), arvutid samasse kohtvõrku. Suhtlus üle SOAP liidese (kasutajale koodis nähtamatu).&lt;br /&gt;
* 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.&lt;br /&gt;
* E-mail - Choregraphes. Võimaldab suvalisest mailiserveri kontost kirju vastu võtta ning saata.&lt;br /&gt;
* Internet - ?&lt;br /&gt;
&lt;br /&gt;
==Jooksvad probleemid==&lt;br /&gt;
&lt;br /&gt;
*'''[[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.&lt;br /&gt;
&lt;br /&gt;
==Linke==&lt;br /&gt;
&lt;br /&gt;
*[http://robocup.aldebaran-robotics.com/docs/site_en/index_doc.html Dokumentatsioon]&lt;br /&gt;
*http://robotzeitgeist.com/tag/aldebaran-robotics&lt;br /&gt;
*http://ognacgnouc.com/&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
	<entry>
		<id>https://ims.ut.ee/index.php?title=NAO&amp;diff=8310</id>
		<title>NAO</title>
		<link rel="alternate" type="text/html" href="https://ims.ut.ee/index.php?title=NAO&amp;diff=8310"/>
		<updated>2011-03-14T19:59:42Z</updated>

		<summary type="html">&lt;p&gt;Siimsundla: /* Võimalused ja piirangud */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Ülevaade==&lt;br /&gt;
&lt;br /&gt;
===Nao ühendamine arvutiga===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Kui IP saamine õnnestub ütleb NAO oma IP aadressi kui tema kõhul olevat nuppu vajutada. Navigeerides veebibrauseriga &amp;lt;nowiki&amp;gt;http://(NAO IP)&amp;lt;/nowiki&amp;gt; lehele on võimalik muuta mõningaid seadeid ning näha staatuse informatsiooni. Kui ligiduses on traadita võrke peaksid need ilmuma &amp;quot;Networks&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
Pärast traadita ühenduse loomist tuleks meelde jätta wireless võrgust saadud IP (&amp;quot;Networks&amp;quot; kuval) ning ühendada lahti ethernet kaabel. Pärast seda kui wireless võrk on korra juba valitud saab NAO ühendada end sellega automaatselt (&amp;quot;Wireless&amp;quot; nimekirjas on võrk märgitud &amp;quot;favorite&amp;quot; = 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).  &lt;br /&gt;
&lt;br /&gt;
===NaoQi===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;nowiki&amp;gt;http://NaoIp:9559/full&amp;lt;/nowiki&amp;gt;, 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.&lt;br /&gt;
   &lt;br /&gt;
NaoQi taaskäivitamiseks tuleb Nao veebikeskonnast valida &amp;quot;Advanced&amp;quot;-&amp;gt;&amp;quot;NaoQi&amp;quot; ning &amp;quot;Restart&amp;quot;, sama tulemuse annab NAO välja- ja sisselülitamine.&lt;br /&gt;
&lt;br /&gt;
===BonJour===&lt;br /&gt;
&lt;br /&gt;
Windows platvormil sobib seadmete nagu NAO võrgust leidmiseks (tavaliselt teised arvutid, printerid jms). Tekib ikoonina Internet Exploreri tööriistaribale.&lt;br /&gt;
&lt;br /&gt;
===Arendus===&lt;br /&gt;
&lt;br /&gt;
[[Choregraphe| Visuaalprogrammeerimine: Choregraphe]]&lt;br /&gt;
&lt;br /&gt;
[[Python| Skriptid: Python]]&lt;br /&gt;
&lt;br /&gt;
[[C++| Programmeerimine: C++]]&lt;br /&gt;
&lt;br /&gt;
====Operatsioonisüsteemide tugi====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! Windows XP 32 bit&lt;br /&gt;
! Windows 7 64 bit&lt;br /&gt;
! Ubuntu 10.10 32 bit&lt;br /&gt;
! Ubuntu 10.10 64 bit&lt;br /&gt;
|-&lt;br /&gt;
! Choregraphe&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| Ei tööta&lt;br /&gt;
|-&lt;br /&gt;
! Python&lt;br /&gt;
| Paigaldatav, töötab&lt;br /&gt;
| Paigaldatav, töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
|-&lt;br /&gt;
! C++, native compiling*&lt;br /&gt;
| Töötab. Vaja Microsoft Visual Studio 2005/2008 kompillaatorit&lt;br /&gt;
| ?&lt;br /&gt;
| Töötab&lt;br /&gt;
| Ei tööta&lt;br /&gt;
|-&lt;br /&gt;
! C++, cross-compiling**&lt;br /&gt;
| Ei toetata&lt;br /&gt;
| Ei toetata&lt;br /&gt;
| Töötab&lt;br /&gt;
| Ei tööta&lt;br /&gt;
|-&lt;br /&gt;
! NaoSim&lt;br /&gt;
| Töötab&lt;br /&gt;
| Töötab&lt;br /&gt;
| Ei toetata&lt;br /&gt;
| Ei toetata&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;* Koodi kompilleerimine kompilleerivas masinas jooksetamiseks. Kui NAOQi käib kohalikus masinas (väga piiratud kasutusvõimalused)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;** Koodi kompilleerimine võõrale platvormile (NAOle).&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'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.   &lt;br /&gt;
&lt;br /&gt;
===Tähelepanekuid===&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/greendoc/choregraphe/predefined_positions.html&lt;br /&gt;
&lt;br /&gt;
*'''Objektide tuvastamine''' - NAO suudab meelde jätta talle näidatud pilte ja neid hiljem ära tunda. Choreographe sees käib see View-&amp;gt;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.&lt;br /&gt;
&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/greendoc/choregraphe/video-monitor-tuto.html&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/greendoc/choregraphe/creating_movement_with_recording_mode.html&lt;br /&gt;
&lt;br /&gt;
*'''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 &amp;quot;Energy&amp;quot;), 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 &amp;quot;My battery is strong&amp;quot;), 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'''.    &lt;br /&gt;
&lt;br /&gt;
==Võimalused ja piirangud==&lt;br /&gt;
&lt;br /&gt;
===Kommunikatsioon===&lt;br /&gt;
&lt;br /&gt;
'''Bluetooth''' (Riistvara pole veel saadaval)&lt;br /&gt;
* 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.&lt;br /&gt;
* Kasutusalad: Boardiga saab kontrollida muud elektroonikat (digitaalsed, PWM, servo, mootorite kontrollimise väljundid). Väliste sensorite ühendamine, NAO kontrolli all olevad lisaseadmed. &lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/reddoc/bluetooth/bluetooth.html&lt;br /&gt;
&lt;br /&gt;
'''Infrapuna'''&lt;br /&gt;
* Andmevahetus otsenähtavusel. Eelseadistatav veebikeskkonna vahendusel. Soovituslik kasutuspiirkond ligikaudu 15cm NAO silmadest.&lt;br /&gt;
* Kasutusalad: Kahe NAO andmevahetus, IR suhtlust kasutavate seadmete kontrollimine, käskude vastuvõtmine IR puldi kaudu.&lt;br /&gt;
http://robocup.aldebaran-robotics.com/docs/site_en/reddoc/infrared/purpose_description.html&lt;br /&gt;
&lt;br /&gt;
'''WiFi'''&lt;br /&gt;
* Ühendada NAO(d), arvutid samasse kohtvõrku. Suhtlus üle SOAP liidese (kasutajale koodis nähtamatu).&lt;br /&gt;
* 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.&lt;br /&gt;
* E-mail - Choregraphes. Võimaldab suvalisest mailiserveri kontost kirju vastu võtta ning saata.&lt;br /&gt;
* Internet - ?&lt;br /&gt;
&lt;br /&gt;
==Jooksvad probleemid==&lt;br /&gt;
&lt;br /&gt;
*'''[[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.&lt;br /&gt;
&lt;br /&gt;
==Linke==&lt;br /&gt;
&lt;br /&gt;
*[http://robocup.aldebaran-robotics.com/docs/site_en/index_doc.html Dokumentatsioon]&lt;br /&gt;
*http://robotzeitgeist.com/tag/aldebaran-robotics&lt;br /&gt;
*http://ognacgnouc.com/&lt;/div&gt;</summary>
		<author><name>Siimsundla</name></author>
	</entry>
</feed>