Python

From Intelligent Materials and Systems Lab

Testkeskkond: Ubuntu 10.04 32 bit (bash shell)

Näiteprogramm

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

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

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

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

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

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

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

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

NaoQi kohalikus masinas

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