Aldebaran NAO のRTコンポーネントです.Python版のOpenRTM-aistとPython版のnaoqiの両方に依存しています.
インストール
naoq-sdk-pythonのインストール
NAOのSDK (Python版) をインストールします.Aldebaran Roboticsが提供するマニュアルを参照してください.上手くインストールできていれば,下記のコンソール操作でエラーが出ないはずです.
$ python (これでインタラクティブシェルを起動) >>> import naoqi
RTミドルウエアのインストール
Python版のOpenRTM-aistをインストールする必要があります.
公式ウェブサイトからインストーラをダウンロードするか,ソースコードからインストールします.
上手くインストールできていれば,下記のコンソール操作でエラーが出ないはずです.
$ python (これでインタラクティブシェルを起動) >>> import OpenRTM_aist
PILのインストール
Python Imaging Libraryを以下のウェブサイトからインストールします.
http://www.pythonware.com/products/pil/
NAO RTC本体
以下のウェブサイトからコードをダウンロードします.Download Zipでアーカイブしてダウンロードできます.gitに慣れている人は,gitでダウンロードすることをお勧めします.
https://github.com/ogata-lab/NAO
最初にIDLファイルをコンパイルするために,idlcompile.shかidlcompile.batを実行する必要があります.これで準備完了.
実行方法
$ python NAO.py
で実行します.RTCが実行できましたか?
RTCの概要
RTCのインターフェースで受け取った命令を,naoqiの枠組みを使ってNAOに送信,またはその逆を行うことで,OpenRTM-aist対応のRTコンポーネントからNAOを操作することが出来ます.
インターフェース
DataInPorts
なし
DataOutPorts
camera
RTC.CameraImage型.NAOのカメラの画像.
audio
RTC.TimedOctetSeq型.NAOのマイクから取得した音声
jointAngle
RTC.TimedDoubleSeq型.現在の関節角度
bumper
RTC.TimedBooleanSeq型.足についている接触センサの値.(左足左側,左足右側,右足左側,右足右側,という並び)
touch
RTC.TimedBooleanSeq型.頭部および両腕の接触センサの値.(頭部後側,頭部中心,頭部前側,左手後部,左手中央,左手前部,右手後部,右手中央,右手前部,という並び)
sonar
RTC.TimedBooleanSeq型.胸にある超音波センサの値.(左,右,という並び)
ServicePorts
NAO_srv
インターフェース一覧です.
- ALMotion
- ALTestToSpeech
- ALVideoDevice
- ALMemory
- ALBehaviorSelector
- ALLeds
このサービスポートはNAO専用のミドルウエアであるnaoqiに含まれるモジュールのインターフェースに準拠しています.詳しい使い方はNAOのAPIマニュアルを参照してください.
IDLファイル (NAO.idl)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | module ssr { struct ActuatorPosition { string name; float position; // [rad] }; typedef sequence<ActuatorPosition> ActuatorPositionSeq; struct ActuatorPositionArray { ActuatorPositionSeq data; float fractionSpeed; }; struct StringArray { sequence<string> data; }; struct FloatArray { sequence<float> data; }; struct BoolArray { sequence<boolean> data; }; struct LongArray { sequence<long> data; }; interface ALMotion { void setAngles(in StringArray name, in FloatArray value, in float fractionSpeed); FloatArray getAngles(in StringArray name, in boolean useSensors); void openHane(in string name); void closeHand(in string name); void setStiffness(in StringArray name, in FloatArray stiffnesses); FloatArray getStiffness(in StringArray name); void rest(); void wakeUp(); void moveTo(in float x, in float y, in float theta); void moveToward(in float vx, in float vy, in float vtheta); FloatArray getRobotPosition(); FloatArray getRobotVelocity(); void stopMove(); boolean moveIsActive(); void waitUntilMoveIsFinished(); void moveInit(); void setWalkArmEnabled(in boolean leftArmEnable, in boolean rightArmEnable); BoolArray getWalkArmEnabled(); FloatArray getPosition(in string name, in long space, in boolean useSensors); void setPosition(in string name, in long space, in FloatArray position, in float fractionMaxSpeed, in long axisMask); void setTransform(in string name, in long space, in FloatArray transform, in float fractionMaxSpeed, in long axisMask); FloatArray getTransform(in string name, in long space, in boolean useSensorValues); }; interface ALTextToSpeech { void say(in string stringToSay); void setVolume(in float volume); float getVolume(); void setLanguage(in string language); string getLanguage(); StringArray getAvailableLanguages(); }; interface ALBehaviorManager { StringArray getInstalledBehaviors(); StringArray getRunningBehaviors(); boolean isBehaviorInstalled(in string name); boolean isBehaviorRunning(in string name); void runBehavior(in string name); void stopAllBehaviors(); void stopBehavior(in string name); }; interface ALMemory { void insertLongData(in string name, in long value); void insertFloatData(in string name, in long value); void insertStringData(in string name, in string value); void insertoLongArrayData(in string name, in LongArray value); void insertoFloatArrayData(in string name, in FloatArray value); void insertoStringArrayData(in string name, in StringArray value); long getLongData(in string name); float getFloatData(in string name); string getStringData(in string name); LongArray getLongArrayData(in string name); FloatArray getFloatArrayData(in string name); StringArray getStringArrayData(in string name); }; interface ALVideoDevice { long getCameraModel(in long index); long getFrameRate(in long index); long getResolution(in long index); long getColorSpace(in long index); boolean setCameraParameter(in long id, in long value); long getCameraParameter(in long id); boolean setCameraParameterToDefault(in long id); }; interface ALLeds { void fade(in string name, in float intensity, in float duration); void fadeRGB(in string name, in long rgb, in float duration); }; }; |
コンフィグレーション
ipaddress
NAOのIPアドレス(もしくはホスト名).onActivate時に接続します.nao.localなど,bonjourの名前を指定することが出来ます.
port
NAOのポート番号です.一般的には9559です.
enable_camera
カメラのON/OFFです.1とすればONです.onActivate時にのみ評価されます.
enable_audio
音声のON/OFFです.1とすればONです.onActivate時にのみ評価されます.