NAOqi / コレグラフ APIモジュール一覧（ver. 2.3.0）

NAOqi / コレグラフ APIモジュール一覧

Creation Date : 2015/5/26
Last Modified Date : 2015/5/26
 [robot start inc.](http://robotstart.co.jp/ "robot start inc.")

【2.3】とあるものは、ver.2.3.0 から追加されたセンサーです。

------------------------------------------------------------------------------
#▼Core（コアモジュール）

##■ALBehaviorManager（行動管理）
このモジュールはロボットの行動を管理します。以下のことができます。

* ロード、スタート、ストップの行動
* デフォルトの操作を管理する
* 行動についての情報をゲットする.

いくつかの行動は「デフォルト」としてマークされます。デフォルトの行動はNAOqiが起動した時に自動的にスタートします。ALBehaviorManagerを起動時や停止時ににどのような行動をするかを追加または削除できます。

##■ALConnectionManager（接続管理）
このモジュールにはネットワークの設定変更、作成、プロパティ取得などのコマンドが用意されています。

* 利用可能なネットワークサービスをリストアップ。
* ネットワークサービスに接続します。
* ネットワークサービスを作成します。（無線LANアクセスポイントとBluetooth PANサポートしています）
* 利用可能なネットワーク技術をリストアップ。
* ネットワークサービスを構成します。

このモジュールのネットワーク関連サービスはオープンソースのソフトウェアConnManに基づいて作られています。無線LANサービスは、WPA Supplicantによって処理されます。 BluetoothサービスをするBlueZによって処理されます。

##■ALExpressionWatcher（式の照会）　【2.3】
このモジュールを使用すると、通知または条件式の妥当性を照会することができます。

他のイベントの組み合わせに基づいてより高次のイベントを作成したい場合には、このモジュールが有用です。

ALExpressionWatcherは、複雑な非同期時間ベースのコードを実装することなく、複雑な事象の組み合わせを作成することができます。

##■ALExtractor（エクストラクター）
このモジュールは、視覚及び知覚モジュールの基本クラスとして使用されます。

##■ALKnowledge　（データ管理）【2.3】
このモジュールは、Tripletの形でデータを管理することができます

##■ALMemory（メモリ）
このモジュールはロボットのハードウェア構成に関連するすべてのキー情報を格納するために使用される集中型のメモリです。具体的には、アクチュエータとセンサの現在の状態を提供します。

##■ALModule（モジュール）
このモジュールは、ユーザモジュールのサービス提供や、そのメソッドを支援するためのベースクラスとして使用します。

##■ALMood　（感情認識）【2.3】
このモジュールは、人や雰囲気の感情を読み取ります。このモジュールは人の感情と雰囲気を出力に合成します。また、将来のロボットの感情状態を提供することができます。

##■ALNotificationManager（通知管理）
このジュールは、ロボット上の通知を管理するために使います。通知とは、ロボットシステムまたはアプリケーションによってエンドユーザに送信されたショートメッセージです。
アプリケーションが通知を送信する場合は以下の通りです。

* 保留中の通知のリストに追加されます。
* ユーザーは、保留中の通知があることを通知され、ロボットに読ませることができます。
通知は以下の場合、リストから削除されます。
* 通知が読まれるか
* 通知がすでに有効でない場合、例えば、アプリケーションによって除去された時。

##■ALPreferenceManager（設環境定管理）
このモジュールはロボットの環境設定を管理することを可能にします。ロボットの設定は、ロボットとアルデバランクラウドの両方のデータベースに格納されます。このモジュールは異なるコピー間の整合性を保証します。

##■ALResourceManager（リソース管理）
このモジュールはリソースを管理する方法を提供します。モーター、マイク、LED、CPU、剛性パラメータ、カメラ、ボールなどの使用についてリソース指定できます。

* あなたが必要なリソースを使用することを避ける別の行動
* LED、サウンドなどの動きを同期する
* 別の行動中に特定のアクションを実行します。（例えば歩く動作を停止する前に適切に歩くのを停止するなど。）

リソースのヒエラルキーはリソース設定に従います。すべてのリソースに対応する所有者を確認するにはコレグラフを使用して、リソースビューアパネルを起動してくだださい。

##■ALStore（ストア）
このモジュールはアルデバランストアからアプリケーションを取得するために使用します。

##■ALSystem（システム）
このモジュールは、シャットダウンまたは再起動などのシステムの制御を行います。

##■ALVisionExtractors（視覚エクストラクター）
このモジュールは、視覚と知覚モジュールの基本クラスとして使用されます。

##■ALTabletService（タブレットサービス）
このモジュールはタブレットの操作を可能にします。タブレットブラウザとNAOqi上で実行されているWebアプリケーションとの間のシグナルブリッジとなります。

* ウェブアプリケーションをロードする。
* 動画を再生する。
* タブレット自体（WIFI、明るさ）を管理する。

##■ALUserInfo（ユーザデータ管理）【2.3】
このモジュールは、ユーザに関するデータ（edit, read, check existence, remove）を管理することができます。

##■ALUserSession（ユーザーセッション）
（これは製作途中のAPI。）
このモジュールはアクティブなユーザの状態、およびそのデータへのバインディングを管理します。

* オープンセッションにおける現在のロボットを使っているユーザーの状態と、ロボットが現在追跡しているユーザに焦点を当てます。
* 複数のプロバイダ間でユーザデータへのアクセスが可能です。データは、ユーザ識別情報、ユーザ情報、ユーザ認証のために使われます。
* データは、必要に応じてロボットが永続的に使うか、使わないかを決めることができます。
* 各データプロバイダは、何をクラウドにアップロードするかの方針を決めることができます。

##■ALWorldRepresentation（世界表現）
このモジュールは、一般的なオブジェクトに関するデータの長期保存のために使われます。高レベルの空間データのクエリを作成したい場合は、このモジュールを使います。

##■PackageManager（パッケージ管理）
このモジュールは、アプリのインストールやインストールされたアプリケーションパッケージを管理することができます。パッケージはアルデバランストアでアプリケーションを公開するために使用されるバイナリ形式です。

* ファイル形式は.pkg（パッケージ）の拡張子を持つ圧縮ファイルです。
* zipファイルには、マニフェストファイルを含める必要があります。
* マニフェストは明確なスキーマに従ったXMLファイルです。

##■ServiceManager（サービス管理）【2.3】
サービスの管理（開始、停止、状態）を行います。

------------------------------------------------------------------------------
#▼Interaction engines　【2.3】

##■ALAutonomousLife（オートノマスライフ）
このモジュールはロボットの電源がONの間、稼働し続けます。

* ALBasicAwarenessとALMotionのアイドルサービスによって、ロボットは生きているように見えます。
* 特定の起動トリガー条件が満たされると、自動的にスタートします。
* 一度に実行・フォーカスされるのは１つのアクティビティだけとなります。
* オートノマスライフイクルは、4つの状態があります。（インタラクティブ、ソリタリー、セーフガード、ディスエイブル）

##■ALAutonomousMoves（オートノマスムーブ）
このモジュールはロボットが自律的に行う微妙な動きを可能にします。
表情豊かなリスニングを有効にすると、ロボットは人間の話を聞いているような動きを行います。

##■ALBasicAwareness（基本的な意識）
このモジュールは、ロボットが人とのアイコンタクトを保つためのものです。

##■ALDialog（ダイアログ）
このモジュールは、ルールに基づいたリスト形式の書式を使ってロボットと人間が会話を簡単にやりとりできるようにするものです。

------------------------------------------------------------------------------
#▼Motion（モーション）

##■ALAnimationPlayer（アニメーションプレーヤー）　【2.3】
このモジュールは、アニメーションを開始することができます。アニメーションタグやロボットの現在の姿勢に応じて、アニメーションを開始する方法を持つことを目的としています。

##■ALMotion（モーション）
このモジュールは、ロボットの簡単に動きを作るための方法を提供します。制御方法として以下の4つのグループがあります。

* 関節の硬直（基本的にモーターのオン·オフ）
* 関節位置（補間、反応性制御）
* 歩行（距離や速度制御、世界の位置など）
* 直交座標空間におけるロボットエフェクター（逆運動学、全身の制約）

また、このモジュールは自己衝突回避、外部衝突回避、落下マネージャー、スマート剛性と診断効果のようないくつかの「反射神経」を実装しています。

##■ALNavigation（ナビゲーション）
このモジュールは、ロボットがユーザーに衝突しないように安全性を確保します。
（NAO）
ロボットはまだ障害物を避けることができませんが、障害物がそのセキュリティゾーンに入るとすぐに停止または慎重に移動することができる。
（Pepperのみ）
PepperはいくつかのモードでALNavigationのAPIを使用することがあります。

##■ALRecharge（充電）
（Pepperのみ）
Pepperが充電ステーションを探して、自動的に充電するためにその上にドッキングして、安全に去ることをユーザーに許可します。Pepperが充電ステーションにドッキングしている間、全ての動きが無効になります。充電ステーションを離れるとき、自動的に再度有効にされます。これらの操作中、このモジュールは開発者に進捗状況と現在の状況をフォローするための方法を提供します。

##■ALRobotPosture（ロボットの姿勢）
このモジュールはロボットが事前に定義してあるポーズをとらせることが可能になります。

* あなたが自律アプリケーションを実行したい場合は、常にALRobotPostureProxy:: goToPosture（）を選択してください。
* ロボットを操作するときのショートカットに素早く姿勢に到達したい場合は、ALRobotPostureProxy:: applyPosture（）を使用することができます。

ロボットは現在の姿勢からある姿勢への目標姿勢への経路を自動的に計算して姿勢変化します。動作速度は選択可能です。

------------------------------------------------------------------------------
#▼Audio（オーディオ）

##■ALAnimatedSpeech（アニメーションスピーチ）
このモジュールは、表現力豊かな方法でロボットが話をすることができるにします。デフォルトで、このモジュールを使ってロボットに何かを言わせるとき、ロボットは身振り手振りで発声します。

* テキストに自分で注釈を付けることによって、より複雑なスピーチを作成することができます。
* ボディランゲージを無効にすることもできます。

##■ALAudioDevice（オーディオデバイス）
このモジュールはロボットのオーディオ入力（マイク）と出力（スピーカー）へのアクセスを可能にします。

##■ALAudioPlayer（オーディオプレイヤー）
このモジュールは複数のオーディオファイル形式および関連共通の機能（再生、一時停止、停止、ループ等）の再生サービスを提供します。音の出力はロボットのラウドスピーカーから行われます。

##■ALAudioRecorder（オーディオレコーダー）
（ロボット必須）
このモジュールはロボットのマイクからの信号を録音し、「WAV」と「OGG」のファイル形式で保存します。

##■ALSoundDetection（音の検出）
このモジュールは、入力オーディオバッファ内の意味のある音を検出します。この検出は、オーディオ信号のレベルと同様に、音の任意の種類などに振る舞います。

##■ALSoundLocalization（音源の位方向握）
このモジュールは、ロボットが聞き取った音源の方向を特定します。（NAOとPepperはマイクの位置が違うため、パフォーマンス、精度に差が出る可能性があります。）

##■ALSpeechRecognition（音声認識）
（ロボット必須）
このモジュールは、ロボットに複数の言語で、事前に定義された単語やフレーズを認識する能力を提供します。

##■ALTextToSpeech（テキスト読み上げ）
このモジュールはロボットが話すことができるようにするものです。text-to-speechエンジンにテキストが送信されると、音声合成され、その結果はロボットのスピーカに送信されます。

##■ALVoiceEmotionAnalysis（音声感情分析）
（Pepperのみ）
このモジュールは、話し手の声を分析し、どんな感情を持っていたかを識別するモジュールです。

------------------------------------------------------------------------------
#▼Vision（視覚）

##■ALBacklightingDetection（バックライトの検出）
このモジュールは、カメラによる画像が逆光でないかどうかをチェックします。光源（例えばウィンドウ）と観測されたシーンの間に高いコントラストがある場合などを検出できます。

##■ALBarcodeReader（バーコードリーダー）
このモジュールは、カメラからの画像をスキャンしバーコードを探します。バーコードが画像で検出された場合、このモジュールは画像をキャプチャーします。

##■ALCloseObjectDetection（近接物体の検出）
（3Dセンサーとロボット必須）
このモジュールは、直接3Dセンサで検出されるにはロボットに近すぎるような対象物を検出することができます。

##■ALColorBlobDetection（色の検出）
このモジュールは、高速2Dビジョンベースのカラーブロブ検出を行います。色の画素、オブジェクトの最小サイズなどを指定して実行できます。

##■ALDarknessDetection（暗さの検出）
このモジュールは、ロボットが暗い環境にいるかどうかを確認することができます。ロボットがその周囲の環境が暗いと（闇値すなわちしきい値よりも大きい）ことを初めて検出した場合にこのイベントが発生します。

##■ALLandmarkDetection（ランドマークの検出）
このモジュールは、ロボット上で理解される特別なランドマークを認識するものです。

##■ALLocalization（位置の特定）
このモジュールは、室内環境でのロボット位置特定のために使われます。

##■ALMovementDetection（移動の検出）
このモジュールは、ロボットの視野内の動きを検出することができます。検出は、利用可能な最善のカメラを使用しています。（深度カメラまたはRGBカメラ）

##■ALPhotoCapture（写真撮影）
このモジュールは、ロボットのカメラを使用して写真を撮影し、画像ファイルをディスク上に保存するものです。

##■ALRedBallDetection（赤いボールの検出）
このモジュールは、赤いボールを検出します。

##■ALSegmentation3D（3Dの映像からオブジェクトを抽出）
（3Dセンサーとロボット必須）
このモジュールは、同じ深さのブロブの中で、奥行き画像のセグメンテーションを実行して、ロボットの視野内に存在するオブジェクトを抽出します。また、指定した距離で、ロボットの頭部、ブロブで、追跡したり、単にカメラに関して最も近いブロブを追跡することができます。

##■ALVideoDevice（ビデオ装置）
このモジュールは、動画を画像に効率的な方法でRGB変換します。

##■ALVideoRecorder（動画撮影）
このモジュールは、ロボットのカメラを使用して動画を録画し、動画ファイルをディスク上に保存するものです。

##■ALVisionRecognition（視覚認識）
このモジュールは、ロボットみた視覚を認識するものです。見たことがない画像か、見たことがある画像かを把握することができる視覚モジュールです。

##■ALVisualCompass（視覚的なコンパス）
このモジュールは、Y軸・Z軸に沿って所定の参照画像と比較することで、ロボットの現在の回転角度を把握するために使います。モジュールはロボットのボディ全体だけでなく、その頭を使って認識します。つまりロボットが立ったまま頭を動かした場合でも、偏差角度は変化しません。

##■ALVisualSpaceHistory（視覚空間の履歴）
このモジュールは、ヘッド位置のタイムスタンプ付きのマップを構築するために、ロボットの頭の動きを追跡します。ロボットがあらゆる方向に対しても空間認識を行うことができます。

------------------------------------------------------------------------------
#▼People Perception（人間の検知）

##■ALEngagementZones（エンゲージメントゾーン）
このモジュールはボットに関する空間の位置とエンゲージメントゾーンの概念を使用して、検出された人々と、その動きを分類することができます。どの辺りに人がいるかを把握するために使います。

##■ALFaceCharacteristics（顔の特徴）
このモジュールは年齢や性別の推定を行い、いくつかの追加情報を更新します。人が笑顔かどうかなど、顔の表情を検出します。各値に関連付けられた0と1の間の信頼スコアが提供されますが、0は、推定値が「非常に低い」で、1が「非常に高い」ことを意味します。これにより、最も信頼性の高い情報のみを使うなどができます。

##■ALFaceDetection（顔の検出）
このモジュールは、ロボットの正面にある表情を検出・認識する視覚モジュールです。

##■ALGazeAnalysis（視線分析）
このモジュールは、人間がロボットを見ているかどうかを知るために使われます。人物の顔を検出し、その方向性を把握することで、人間がロボットを見ているか否かを検出することが可能になります。

##■ALPeoplePerception（人間の知覚）
このモジュールは、ロボットの周りの人々を追跡し、それらについての基本的な情報を提供します。RGBカメラと3Dセンサーから視覚情報を収集します。いったん人が検出されると、取得された属性は常にこのモジュールによって更新されます。

##■ALSittingPeopleDetection（座っている人の検出）
このモジュールは、人間が立っているか、椅子に座っているかを判断します。注意点として、ロボットは地上に置いてある必要があります。そうでない場合、閾値をセットして補正する必要があります。また背の低い人と座っている人の区別は困難です。

##■ALWavingDetection（手を振る人の検出）
（3Dセンサーとロボット必須）
このモジュールは、ロボットの前にいる人間が手を振っているかどうかを検出することができます。

------------------------------------------------------------------------------
#▼Sensors & LEDs（センサーとLED）

##■ALBattery（バッテリー）
このモジュールは、ロボットのバッテリーに関連するイベントを出力するためにあります。バッテリー残量が少なくなったことをユーザーに警告するためなどに使います。BatteryLowイベントが発生すると、ロボットが座っているなら数分、ロボットが歩いているなら30秒で残量がなくなる可能性があります。

##■ALBodyTemperature（ボディの温度）
このモジュールは、ハードウェアの一部が過熱されて、限界の温度に到達している時にイベントを発生させます。

* アクチュエーター
* CPU
* バッテリー

##■ALChestButton（胸のボタン）
このモジュールはボットの胸のボタンに関連するイベントを通知します。ボタンの押され方としてシングル、ダブル、トリプルクリックを検出します。

* シングルクリックで、ロボットは自分の名前、IPアドレス、すべての待機通知をしゃべります。
* ダブルクリックで、関節の剛性が解除されます。

##■ALFsr（FSR圧力センサー）
このモジュールは足の接触（4つのFSRを持っています）が変化したときにイベントを通知します。

* 地面上に少なくとも1つの足が接地している場合、Trueの値になります。
* 地面に足が接地していない場合、Falseの値になります。

##■ALInfrared（赤外線通信）
（ロボット必須）
このモジュールはロボットとのIR（赤外線）通信を可能にします。これには3つの異なる目的があります。

* ロボットをリモートコントロールします。
* ロボットを設定して、リモートコントロールからの指令を受け付けます。
* いくつかのロボットを一緒に通信させます。

ロボットが相互に通信するためにこの赤外線を使用するより、Wi-Fiを使ったほうがより大きな範囲とスループットがあり、ロボットの視線の制限もなく通信が可能になるため、この用途での赤外線通信は推奨されません。

##■ALLaser（レーザー）
このモジュールは、レーザーヘッド（オプション）によって得られたデータを格納します。このモジュールは完全に自律的に作動し、解像度は0.0063ラジアン（0.36度）、データ更新は100ms毎になっています。

##■ALLeds（LED）
このモジュールでは、ロボットのLEDを制御することができます。
LEDの設定、輝度調整、フェードなどを提供しています。

##■ALSensors（センサー）
このモジュールは、ロボットのセンサーに対応したイベントを発生させます。ALMemory内のセンサデータを取得し、それを処理し、状況に応じたイベントを発生させる仕組みになっています。

##■ALSonar（超音波センサー）
このモジュールは、ロボットのセンサーに対応したイベントを発生させます。ALMemory内のセンサデータを取得し、それを処理し、状況に応じたイベントを発生させる仕組みになっています。

##■ALTactileGesture　【2.3】
このモジュールは、ロボット頭部センサーの触覚ジェスチャーを管理します。
このモジュールは以下のことが可能となります。

* ヘッドセンサーで触覚ジェスターを検出
* qi.SignalsとALMemory eventsを経由したジェスチャーを触覚への応答
* 新しい触覚ジェスチャーを作成

##■ALTouch（タッチ）
このジュールはロボットをタッチするたびに、イベントを生成します。イベントはタッチステータスとして体の部分などをリストします。これらのセンサの目的は、ロボットが接触されたか否かを決定することにあります。

------------------------------------------------------------------------------
#▼Trackers（追跡）

##■ALTracker（追跡）
このモジュールは追跡のために頭のみ・全身・移動などの手段を用いて、ターゲっト（赤いボール・顔・ランドマークなど）をロボットが追跡することを可能にします。このモジュールの主な目標は、カメラの中央で、ロボットのビューターゲットをキープするために、目標検出と動きの間にブリッジを確立することです。

------------------------------------------------------------------------------
#▼Diagnosis（診断）

##■ALDiagnosis（診断）
このジュールは、ハードウェア障害（主に電気的な接続）があるかどうかを、ロボットが検出することを可能にします。

------------------------------------------------------------------------------
#▼DCM（デバイス通信マネージャー）

##■DCM（デバイス通信マネージャー）
DCMは音の入出力とカメラを除く、ロボット（基板、センサー、アクチュエーター）のほぼすべての電子機器でのコミュニケーションを担当するモジュールで、NAOqiの一部です。あらゆるパーツと通信することができるため、細かい制御を行うために使います。

------------------------------------------------------------------------------
#~~▼Deprecated（廃止されたモジュール）~~

##~~■ALAudioSourceLocalization（音源方向特定）~~
（このモジュールは廃止されました。）
~~このモジュールはロボットが聞きとった音の方向を特定します。~~

##~~■ALFaceTracker（顔追跡）~~
（このモジュールは廃止されました。）
~~このモジュールは顔を追跡します。~~

##~~■ALLogger（ロガー）~~
（このモジュールは廃止されました。）
~~このモジュールは、ロボットのエラー、警告などの情報を記録することができます。出力はカスタマイズすることができます。~~

##~~■ALLauncher（ランチャー）~~
（このモジュールは廃止されました。）
~~このモジュールは、プログラム実行のための読み込みや、読み込まれているかを確認することができます。~~

##~~■ALMotionRecorder（モーション記録）~~
（このモジュールは廃止されました。）
~~ロボットのポーズを記録するモジュールです。~~

##~~■ALPreferences（環境設定）~~
（このモジュールは廃止されました。）
~~ロボットのポーズを記録するモジュールです。~~

##~~■ALRedBallTracker（赤いボールの追跡）~~
（このモジュールは廃止されました。）
~~このモジュールはALModule APIからのメソッドを継承し、赤いボールを追いかけます。~~

##~~■ALRobotPose（ロボットの姿勢）~~
（このモジュールは廃止されました。）
~~このモジュールは、いくつかのセンサを監視し、ロボットの現在の姿勢を認識しようとします。~~

------------------------------------------------