# AIBO Remote Framework (for ERS-7) 仕様

2004/10/21

# 1.概要

> AIBO Remote Framework は、AIBO と PC をネットワーク接続し、PC 上からAIBOを制御するソフトウェア開発環境である。AIBOマインド2が動作するAIBO(ERS-7)で利用できる。アプリケーション開発者は、AIBO Remote Framework 内で用意されている、AIBO Remote Framework API を使用することで、PC 上から AIBO の制御が行える。AIBO Remote Framework (for ERS-7) は、PC と AIBO(ERS-7) を接続しデータの送受信を実現するためのライブラリを提供する。
> 本文章は、AIBO Remote Framework API について記述するものであり、はじめに、AIBO Remote Framework API の全体的像を示した後に、具体的な API に関して記述する。

# 2.構成

## 2.1 モジュール構成

> 本章では、AIBO Remote Framework の構成について記述する。アプリケーションから、AIBO に接続する際に存在する PC 上ソフトウェアのモジュール構成は、

> - アプリケーション - AIBO Remote Framework API を使用したアプリケーション
> - AIBO Remote Framework - 本ライブラリ
> - VirtualAIBO Server - AIBO と AIBO Remote Framework の通信を中継するプログラム

> の3つからなっている(図 2.1 参照）。

※ 赤の点線で囲った部分が AIBO Remote Framework の部分

図 2.1 AIBO Remote Framework 構成

> AIBO と PC 側アプリケーションは多対多の関係を形成することができる。その際に AIBO と PC 間の接続を中継するサーバーは１つである。
> AIBO Remote Framework API は、

> - VAIBOClient.dll − AIBO への接続、切断。FTP, Sensor, Image, Audio といった AIBO 内のサービスの処理。AIBO へ歩行、姿勢変更、等の命令を行う。以下 VAIBOClient.dll を VirtualAIBO Server に対して VirtualAIBO Client と呼ぶ。

> - AIBO3D.DLL − AIBO の 3D 描画に関する処理。

> - CPCInfo.DLL − AIBO のハードウェア構成（ロボットデザイン）の取得。

> - VAIBOUPnP.DLL − UPnPによるAIBOの検索。

> - VAIBOTTS.dll − TTS(Text to Speech)エンジンを使った音声再生、Waveデータ出力。

> の４つの DLL から構成されている。これらの DLL と AIBO までのモジュール構成を図 2.2 のブロック図に示す。

図 2.2 モジュール構成ブロック図

## 2.2 機能一覧

> AIBO Remote Framework が提供する機能一覧を以下に記す。

> ■ AIBO とのネットワーク接続/切断
> PC と AIBO のネットワーク接続を実現する。接続は、AIBO の IP アドレスを指定する。

> ■ VirtualAIBO Server のロック/アンロック
> 複数アプリケーション間の排他制御のため、VirtualAIBO Serverの制御権を占有（ロック）できる。

> ■ 各種サービスの制御
> AIBO 内の各種サービスの開始/停止の制御を行う。サービスには、FTP、Sensor、Image、Audio 送受信 がある。また、各種サービスの状態を確認することもできる。各種サービスが開始されていないと、それらのサービスに関連する API は動作しない。サービスの状態を確認しサービスを開始させる必要がある。

> ■ セマンティクスデータ取得
> セマンティクスデータを取得できる。セマンティックス(SemID)の一覧は、SemID.h ヘッダーファイルで定義されている。いくつかのセマンティックスは、SubInfo 情報を伴う。SunInfo は Semantics.txtで説明する。

> ■ FTP 制御
> AIBO Remote Framework で提供する FTP は、MMFTP(メモリマップド FTP)で、転送されたデータはメモリー上に保存される。PC 上のコンテンツ(MOTION、AUDIO、LED)を AIBO 側で再生するときに MMFTP を使用し、データを転送後、コンテンツを再生させる。メモリスティック内のファイルは、AIBO Remote Framework では置き換えることはできない。

> ■ Sensor データ取得
> Sensor のデータを取得することができる。

> ■ Image データ取得
> AIBO に取り付けられているカメラが捕らえた映像を取得することができる。（仕組みに関しては、「3.2.1 イメージデータの受信」にて説明する）

> ■ カメラ設定
> AIBO に取り付けられているカメラのプロパティー(露出、シャッタースピード、AE(Auto Exposure)、AWB(Auto White Balance))設定が行える。
> ■ Audio データ送受信
> PC 側でキャプチャしたオーディオデータを AIBO 側へ転送し、AIBO に取り付けられているスピーカーより再生することができる。（仕組みに関しては、「3.2.2 オーディオデータの送信」にて説明する）また、AIBO に取り付けられているマイクロフォンが受信したオーディオデータを PC 側で取得することができる。（仕組みに関しては、「3.2.3 オーディオデータの受信」にて説明する）

> ■ 動作制御
> 大/中/小レベル分類（LMSコマンド）によるモーション再生コマンドの送信、または MWCID による AIBO 制御用コマンドの送信が行える。AIBO の代表的な動作「歩行、姿勢設定、頭角度変更、キック、ヘディング」は専用の API から実行できる。

> ■ 操作制御権管理
> 内部制御モード、リモートモードの操作制御権の切り替えが行える。内部制御モードにおいては、PC 側からのコマンド送信による制御(例えば、首角度変更や歩行命令)はできない。ただし、AIBO から送られるデータに関しては、リモートモード同様に取得することができる。

> ■ 自律系制御
> 各種自律系サービスの開始/停止の制御（音声認識、動体認識、顔検出、顔認識、ビジュアルパターン認識、物体認識(TR)、崖認識、自己充電）。

> ■ 3D 表示
> Direct X を使用した AIBO の 3D 表示が行える。

> ■ UPnP 検索
> UPnP(Universal Plug and Play) を使用して AIBO の検索を行える。

> ■ TTS
> TTS(Text to Speech)エンジンを使用して文字列を音声変換し再生、またはWaveデータとして出力できる。

> ■ その他
> ・バッテリーレベルの取得
> ・切断時モードの変更
> ・モーション停止(実行モーションの途中停止)
> ・Local IP アドレス取得
> ・AIBO 内部時計設定
> ・AIBO の MAC アドレス取得
> ・User ID/Password の設定

# 3．VirtualAIBO Client

## 3.1 メッセージ通知

### 3.1.1 VirtualAIBO Client - VirtualAIBO Server 間

> AIBO Remote Framework API 中の VirtualAIBO Client と VirtualAIBO Server 間の同期は Windows メッセージを使用してデータのやり取りが行われる。前節で説明したブロック図中の VAIBOClient.DLL と VAIBOServer 間の太線の矢印が Windowsメッセージを示している。VirtualAIBO Server から受け取った Windows メッセージに対して VirtualAIBO Client はアプリケーションへ返すウインドウメッセージを生成し送信することとなる。その送られる内容は次節に示す。

### 3.1.2 アプリケーション - VirtualAIBO Client 間

> VirtualAIBO Client からアプリケーションへは下記の Windows メッセージにより通知が行われる。

> > (1) WM_VAIBO_CONNECT
> > 説明　　　　：　ネットワーク通信確立通知
> > wParam　　：　上位ワード AIBO ID 下位ワード 0
> > lParam　　 ：　0
> > (2) WM_VAIBO_DISCONNECT
> > 説明　　　　：　ネットワーク通信切断通知
> > wParam　　：　上位ワード AIBO ID 下位ワード 0
> > lParam　　 ：　0
> > (3) WM_VAIBO_REMOTE_NOTIFY
> > 説明　　　　：　Internal/External制御の切り替え完了通知
> > wParam　　：　上位ワード AIBO ID 下位ワード 0
> > lParam　　 ：　0 Internal制御 1 External制御
> > (4) WM_VAIBO_SEMANTICS
> > 説明　　　　：　セマンティクスメッセージ受信通知
> > wParam　　：　セマンティクスメッセージの種類
> > ・上位ワードは、 AIBO ID。
> > ・下位ワードは、
> > SEM_STATUS　　　　　　　　// 状態遷移通知
> > SEM_START　　　　　　　　 // 開始通知
> > SEM_DONE　　　 　　　　　 // 終了通知
> > SEM_ERROR　　 　　　　　　// エラー通知
> > SEM_RESULT　　　　　　　　// 結果通知
> > SEM_FINISHED　　　　　　　// 自己充電・骨咥え終了通知
> > lParam　　 ：　メッセージデータ（VAIBODef.hにて規定）
> > (注意) SEM_STATUS, SEM_RESULT, または SEM_FINISHED のセマンティクスメッセージ を処理中に結果終了を待つVAIBOクラスの関数を呼び出してはいけません。 結果を返すには、現在実行中のセマンティクスメッセージを処理する関数から リターンする必要がありますが、その中の関数で結果待ちをするので、 プログラムがデッドロックし、処理が継続できなくなります。
> > 以下の2つの関数(SendCmd, SetRobotObjectMode)は結果終了を待つので、このプログラムは デッドロックします。
> > // Dead Lock Sample
> > // CVAIBO *m_pVAibo
> > // ON_REGISTERED_MESSAGE(WM_VAIBO_SEMANTICS, OnVAIBOSemantics)
> > LRESULT CBaseClientDlg::OnVAIBOSemantics( WPARAM wParam, LPARAM lParam )
> > {
> > if ( semState == SEM_RESULT )
> > {
> > m_pVAibo->SendCmd( APPCMD_IMAGE_PLAY, TRUE);
> > m_pVAibo->SetRobotObjectMode(eRobotObjectRecognizeObjectPink, eRobotObjectModeStart );
> > }
> > }
> > (5) WM_VAIBO_INPUT_SEMANTICS
> > 説明　　　　：　インプットセマンティクス受信通知
> > VAIBO::GetInputSemantics()をコールしてデータを取得する
> > wParam　　：　上位ワード AIBO ID 下位ワード 0
> > lParam　　 ：　0
> > (6) WM_VAIBO_SENSOR_DATA
> > 説明　　　　：　センサーデータ受信通知
> > wParam　　：　上位ワードが AIBO ID。下位ワードは、センサーデータの個数。
> > lParam　　 ：　SensorRec構造体配列のポインタ
> > (7) WM_VAIBO_PRODUCTID
> > 説明　　　　：　プロダクトID受信通知
> > VAIBO::GetProductID()をコールしてデータを取得する
> > wParam　　：　上位ワード AIBO ID 下位ワード 0
> > lParam　　 ：　0

> > (8) WM_VAIBO_BATTERY_LVL
> > 説明　　　　：　バッテリー残量変化通知
> > wParam　　：　上位ワード AIBO ID 下位ワード 0
> > lParam　　 ：　バッテリー残量

> > (9) WM_MMFTP_SENDING
> > 説明　　　　：　FTPファイル送信経過通知
> > wParam　　：　上位ワード AIBO ID 下位ワード 0
> > lParam　　 ：　転送したデータサイズ

> > (10) WM_IMAGETP_UPDATE
> > 説明　　　　：　イメージデータ更新通知
> > VAIBO::ImageGetData()をコールしてJPEGデータを取得する
> > wParam　　：　上位ワード AIBO ID 下位ワード 0
> > lParam　　 ：　受信したデータサイズ

> > (11) WM_AUDIOTP_UPDATE
> > 説明　　　　：　オーディオデータ更新通知
> > VAIBO::AudioGetData()をコールしてPCMデータを取得する
> > wParam　　：　上位ワード AIBO ID 下位ワード 0
> > lParam　　 ：　受信したデータサイズ

> > (12) WM_VAIBO_CLIENT_UPDATE
> > 説明　　　　：　サーバー接続クライアント増減時に通知
> > wParam　　：　上位ワードは、 AIBO ID。下位ワードは、 1(増加) or 0(減少)。
> > lParam　　 ：　クライアントのウィンドウハンドル

> > (13) WM_VAIBO_LOCK
> > 説明　　　　：　サーバーのロック状態が変化した時に通知
> > wParam　　：　上位ワード AIBO ID 下位ワード 0
> > lParam　　 ：　1(Lock) or 0(UnLock)

## 3.2 共有メモリ

> AIBO からのイメージデータ受信、オーディオデータの送受信、その他サーバー情報蓄積情報(サーバーウインドウハンドル、センサー、姿勢、状態、バッテリーレベル、セマンティクス 等)は共有メモリを使用してデータのやり取りが行われる機構となっている。共有メモリの種類は、イメージ、オーディオ受信、オーディオ送信、サーバー情報の４つであり、イメージ、オーディオ受信、オーディオ送信の共有メモリは、VirtualAIBO Server 起動時に AIBO の接続最大数 16 個分がキー名を変えつくられる。

### 3.2.1 イメージデータの受信

> (1) VirtualAIBO Server は、AIBO から受け取ったイメージデータを一旦共有メモリ(Key:VAIBOImageObject*)に格納する。
> (2) データが格納されると VirtualAIBO Server は更新通知メッセージを VirtualAIBO Client に送付する。
> (3) VirtualAIBO Client は、それをトリガーとして共有メモリ(Key:VAIBOImageObject*)を参照することでデータを得る。
> (4) データ取得後 VirtualAIBO Client は、アプリケーションに対して、更新通知メッセージ(WM_IMAGETP_UPDATE) を送付する。
> (5) 更新通知メッセージ(WM_IMAGETP_UPDATE)メッセージを受け取ったアプリケーションは、API(VAIBO::ImageGetData)コールにてイメージデータの取得をしアプリケーション側でそのデータを描画することができる。また、API(VAIBO::ImageSetWindowHandle) で描画用のウインドウハンドルを渡し描画を自動的にVirtualAIBO Client に行わせることもできる。

> ※ VAIBOImageObject* の "*" は、AIBO の接続 ID (1 〜 16) が入る。

### 3.2.2 オーディオデータの送信

> (1) AIBO に PC でキャプチャーしたオーディオデータを送信するには、 VirtualAIBO Client の API(AudioSendData) をコールする。
> (2) コールされた VirtualAIBO Client は、一旦共有メモリ(Key:VAIBOAudioSendObject*)にデータを格納する。
> (3) VirtualAIBO Client はデータを格納したら、VirtualAIBO Server へ更新通知メッセージを発行する。
> (4) 更新通知を受け取った Virtual AIBO Server は、それをトリガーとして共有メモリ(Key:VAIBOAudioSendObject*)よりデータを参照し AIBO へ送信を行う。

> ※ VAIBOAudioSendObject* の "*" は、AIBO の接続 ID (1 〜 16) が入る。

### 3.2.3 オーディオデータの受信

> (1) VirtualAIBO Server は、AIBO から受け取ったオーディオを一旦共有メモリ(Key:VAIBOAudioRecvObject*)に格納する。
> (2) データが格納されると VirtualAIBO Server は更新通知メッセージを Virtual AIBO Client に送付する。
> (3) VirtualAIBO Client は、それをトリガーとして共有メモリ(Key:VAIBOAudioRecvObject*)を 参照する。
> (4) データ取得後に VirtualAIBO Client は、アプリケーションに、更新通知メッセージ(WM_AUDIOTP_UPDATE) を送付する。
> (5) 更新通知メッセージ(WM_AUDIOTP_UPDATE)を受け取ったアプリケーションは、API(VAIBO::AudioGetData)コールにてオーディオデータの取得をしアプリケーション側でそのデータを処理することができる。

> ※ VAIBOAudioRecvObject* の "*" は、AIBO の接続 ID (1 〜 16) が入る。

### 3.2.4 その他情報の取得

> サーバー情報蓄積情報(サーバーウインドウハンドル、センサー、姿勢、状態、バッテリーレベル、セマンティクス等)においても上記イメージ、オーディオと同様に共有メモリを使用して VirtualAIBO Server と VirtualAIBO Client の間でデータ共有が行われている。アプリケーション側は、イメージ、オーディオの場合と同様に API コールにより、その返り値もしくは、引数に設定したポインタよりデータの取得を行う機構となっている。

# 4. API 一覧

## 4.1 VAIBOClient

> API 名称 | 機能
> CVAIBO::CVAIBO | コンストラクタ
> CVAIBO::~CVAIBO | デストラクタ
> CVAIBO::Connect | AIBO とのネットワーク接続を開始する。
> CVAIBO::Disconnect | AIBO とのネットワーク接続の切断
> CVAIBO::SetLock | サーバーのロック／アンロック
> CVAIBO::GetProductID | AIBO のプロダクト ID 取得
> CVAIBO::GetRemoteMACAddress | AIBO の MAC アドレス 取得
> CVAIBO::GetRobotDesign | AIBO のロボットデザイン取得
> CVAIBO::RequestNetService | ネットワークサービスのリクエスト
> CVAIBO::SendCmd | AIBO 制御用コマンド送信
> CVAIBO::PlayMotion | 大・中・小・レベルによる分類コマンドの再生
> CVAIBO::PlayMotionWithAngle | 角度指定付きの大・中・小・レベルによる分類コマンドの再生
> CVAIBO::IsConnect | サーバーのネットワーク接続状態取得
> CVAIBO::IsLock | サーバーのロック状態取得
> CVAIBO::GetStateSensorTP | SensorTP の Open/Close 状態取得
> CVAIBO::GetStateImageTP | ImageTP の Open/Close 状態取得
> CVAIBO::GetStateAudioTP | AudioTP の Open/Close 状態取得
> CVAIBO::GetStateNetAudio | NetAudio の Open/Close 状態
> CVAIBO::IsFTPOpen | FTP の Open/Close 状態取得
> CVAIBO::GetInputSemantics | セマンティクスデータ取得
> CVAIBO::GetSemInfo | セマンティクス情報取得
> CVAIBO::SensorTransferStart | SensorTP のデータ送信開始
> CVAIBO::SensorTransferStop | SensorTP のデータ送信停止
> CVAIBO::SensorGetData | SensorTP のデータ取得
> CVAIBO::SensorGetSkipRate | SensorTP のスキップレート取得
> CVAIBO::SensorSetSkipRate | SensorTP のスキップレート設定
> CVAIBO::ImageInit | Image オブジェクト初期化
> CVAIBO::ImageOpen | Image の受信開始
> CVAIBO::ImageClose | Image の受信終了
> CVAIBO::ImagePause | Image データ処理一時停止
> CVAIBO::ImageResume | Image データ処理再開
> CVAIBO::ImageGetData | Image データ取得
> CVAIBO::ImageSetWindowHandle | 動画表示ウインドウ設定
> CVAIBO::ImageOutputCaptureData | スチール写真撮影
> CVAIBO::ImageGetFrameRate | Image フレームレート取得
> CVAIBO::CameraSetModeDefault | カメラモードの自動設定
> CVAIBO::CameraSetModeManual | カメラモードのマニュアル設定
> CVAIBO::CameraSetParamExposure | カメラパラメータ、露出設定
> CVAIBO::CameraSetParamShutterSpeed | カメラパラメータ、シャッタースピード設定
> CVAIBO::CameraSetModeAEAWB | AE(Auto Exposure),AWB(Auto White Balance)設定
> CVAIBO::AudioInit | Audio に関するオブジェクトの初期化
> CVAIBO::AudioGetOpen | オーディオデータの受信開始
> CVAIBO::AudioSendOpen | AudioStream 再生用通信ポートのオープン
> CVAIBO::AudioSendSetMode | AudioMode 変更
> CVAIBO::AudioClose | 通信ポートをクローズして、受信を終了する
> CVAIBO::AudioGetData | Audio データを取得
> CVAIBO::AudioSendData | AudioStream 再生データの転送
> CVAIBO::AudioSendWAVFile | AudioStream 再生データ(ファイル)の転送
> CVAIBO::AudioSendPlay | オーディオストリームの再生開始処理
> CVAIBO::AudioSendStop | オーディオストリームの停止処理
> CVAIBO::FTPMMSendWAVFile | WAVE ファイルを送信する
> CVAIBO::FTPMMSendMWCFile | MMFTP による MWC ファイルの転送
> CVAIBO::FTPMMSendMOTIONFile | MMFTP による MOTION ファイルの転送
> CVAIBO::FTPMMSendAUDIOFile | MMFTP による AUDIO ファイルの転送
> CVAIBO::FTPMMSendLEDFile | MMFTP による LED ファイルの転送
> CVAIBO::UpdateContents | コンテンツアップデート
> CVAIBO::PlayContents | コンテンツ再生
> CVAIBO::DoKick | キック
> CVAIBO::DoHeader | ヘディング
> CVAIBO::DoWalking | 歩行
> CVAIBO::DoApproach | target指定歩行
> CVAIBO::DoGetOffStation | ステーションからの立ち上がり
> CVAIBO::SetPosture | 姿勢設定
> CVAIBO::GetPosture | 姿勢取得
> CVAIBO::GetStatus | AIBO のカレント状態を取得する
> CVAIBO::ChangeHeadAngle | 頭を移動コマンドを送信する
> CVAIBO::TurnBody | 体旋回
> CVAIBO::MotionStop | モーション停止
> CVAIBO::GetBatteryLevel | バッテリーレベルの取得
> CVAIBO::SetBatteryLevelNotify | バッテリ残量の通知、非通知設定
> CVAIBO::ExternalControl | コントロール権取得
> CVAIBO::InternalControl | コントロール権開放
> CVAIBO::ChangeDisconnectMode | 切断時モード変更
> CVAIBO::SetRobotObjectMode | 自律系サービス開始・終了
> CVAIBO::SetClock | AIBO 内部時計設定
> CVAIBO::IsControlReady | AIBO のコントロール可能状態を確認
> CVAIBO::IsRemote | AIBO がリモート制御状態かどうかの確認
> CVAIBO::SetObserverWnd | メッセージ取得ウインドウ追加
> CVAIBO::GetLocalIPAddress | Local IP アドレスの取得
> CVAIBO::GetLastCmdID | 発行済みCmdIDの取得
> CVAIBO::GetRobotObject | AIBO側オブジェクト動作状態の取得
> CVAIBO::GetProtocolVersion | 各サービスのプロトコルバージョンの取得
> CVAIBO::DoRobotFunction | AIBO側機能の実行
> CVAIBO::StopRobotFunction | AIBO側機能の実行停止
> CVAIBO::VPRSetMode | VPRモードの設定
> CVAIBO::VPRTrainModel | VPRモデルの学習
> CVAIBO::VPRRemoveModel | VPRモデルの削除
> CVAIBO::VPRQueryModel | VPRモデル登録状態の問い合わせ
> CVAIBO::VPRGetImage | VPR登録モデル画像ファイル名の取得
> CVAIBO::SetVolume | Volume の設定
> CVAIBO::RequestVolume | Volume の取得
> CVAIBO::SetUserIdPwd | ユーザーID, Password の設定
> CVAIBO::GetUserIdPwd | ユーザーID, Password の取得
> CATPDirectSound::CATPDirectSound | コンストラクタ
> CATPDirectSound::~CATPDirectSound | デストラクタ
> CATPDirectSound::Init | クラスの初期化
> CATPDirectSound::StartPlay | オーディオ再生の開始
> CATPDirectSound::EndPlay | オーディオ再生の終了
> CATPDirectSound::PlayWaveData | Waveデータの再生
> CATPDirectSound::StartCapture | オーディオキャプチャの開始
> CATPDirectSound::EndCapture | オーディオキャプチャの終了

> ヘッダー:CVAIBO クラスは、VAIBO.h 内で定義。 CATPDirectSound クラスは、ATPDirectSound.h 内で宣言。
> インポートライブラリ:VAIBOClient.lib, を使用。
> ※ VAIBOClient 内で、ijl15.dll を使用します。

## 4.2 VAIBO3D

> API Name | Function
> CAIBO3D::CAIBO3D | コンストラクタ
> CAIBO3D::~CAIBO3D | デストラクタ
> CAIBO3D::Create3D | AIBO 3Dオブジェクト作成
> CAIBO3D::Show | AIBO 3Dオブジェクトの表示、非表示の切り替え
> CAIBO3D::HomePosition | AIBO 3Dオブジェクトをホームポジションに移動
> CAIBO3D::RotateBody | AIBO 3Dオブジェクトの回転
> CAIBO3D::GetBodyAngle | AIBO 3Dオブジェクトの回転角度の取得
> CAIBO3D::Set3DPosture | AIBO 3Dオブジェクトの姿勢の設定
> CAIBO3D::MoveAIBOAnimation | AIBO 3Dオブジェクトの移動アニメーション
> CAIBO3D::RotateAIBOAnimation | AIBO 3Dオブジェクトの回転アニメーション
> CAIBO3D::PlayAnimation | AIBO 3Dオブジェクトのモーションのアニメーションの開始
> CAIBO3D::StopAnimation | AIBO 3Dオブジェクトのモーションのアニメーションの終了
> CAIBO3D::ClearTrack | 軌跡情報の消去
> CAIBO3D::DrawTrack | 軌跡の描画
> CAIBO3D::RotateJoint | AIBO 3Dオブジェクトの各関節を回転
> CAIBO3D::SetColor | AIBO 3Dオブジェクトの各関節のマテリアル色の設定
> CAIBO3D::GetColor | AIBO 3Dオブジェクトの各関節のマテリアル色の取得
> CAIBO3D::MoveCamera | カメラの移動
> CAIBO3D::ZoomCamera | カメラのズーム
> CAIBO3D::RotateCamera | カメラの回転
> CAIBO3D::GetCameraPos | カメラ位置の取得
> CAIBO3D::GetCameraAngle | カメラ回転角度の取得
> CAIBO3D::SetLight | ライト色の設定
> CAIBO3D::SetFloorTexture | 床面テクスチャの読み込み
> CAIBO3D::SetBackTexture | 背景テクスチャの読み込み
> CAIBO3D::DeleteFloorTexture | 床面テクスチャの削除
> CAIBO3D::DeleteBackTexture | 背景テクスチャの削除
> CAIBO3D::SetLocalRotationX | AIBO 3Dオブジェクトのローカル座標Ｘ軸回転
> CAIBO3D::SetLocalRotationY | AIBO 3Dオブジェクトのローカル座標Ｙ軸回転
> CAIBO3D::SetLocalRotationZ | AIBO 3Dオブジェクトのローカル座標Ｚ軸回転
> CAIBO3D::SetLocalRotation | AIBO 3Dオブジェクトのローカル座標回転
> CAIBO3D::SetLocalTransfer | AIBO 3Dオブジェクトのローカル座標平行移動
> CAIBO3D::GetLocalRotation | AIBO 3Dオブジェクトのローカル座標回転量の取得
> CAIBO3D::GetLocalTransfer | AIBO 3Dオブジェクトのローカル座標平行移動量の取得
> CAIBO3D::ShowCopyModel | AIBO 3Dオブジェクトのコピーモデルの表示、非表示の切り替え
> CAIBO3D::IsShowCopyModel | AIBO 3Dオブジェクトのコピーモデルの表示、非表示情報の取得
> CAIBO3D::SetCopyModelRotationX | AIBO 3Dオブジェクトのコピーモデルのローカル座標Ｘ軸回転
> CAIBO3D::SetCopyModelRotationY | AIBO 3Dオブジェクトのコピーモデルのローカル座標Ｙ軸回転
> CAIBO3D::SetCopyModelRotationZ | AIBO 3Dオブジェクトのコピーモデルのローカル座標Ｚ軸回転
> CAIBO3D::SetCopyModelRotation | AIBO 3Dオブジェクトのコピーモデルのローカル座標回転
> CAIBO3D::SetCopyModelTransfer | AIBO 3Dオブジェクトのコピーモデルのローカル座標平行移動
> CAIBO3D::GetCopyModelRotation | AIBO 3Dオブジェクトのコピーモデルのローカル座標回転量の取得
> CAIBO3D::GetCopyModelTransfer | AIBO 3Dオブジェクトのコピーモデルのローカル座標平行移動量の取得
> CAIBO3D::IsShowDrawText2D | 2Dテキストの表示フラグの取得
> CAIBO3D::ShowDrawText2D | 2Dテキストの表示、非表示の切り替え
> CAIBO3D::CreateDrawText2DSurface | 2Dテキストの表示用サーフェイスの作成
> CAIBO3D::SetDrawText2DString | 2Dテキストの表示用文字列の登録
> CAIBO3D::SetDrawText2DString | 2Dテキストの表示用文字列の登録
> CAIBO3D::SetDrawText2DFont | 2Dテキストの表示用フォントの登録
> CAIBO3D::SetDrawText2DColor | 2Dテキストの表示カラーの設定
> CAIBO3D::SetDrawText2DBackColor | 2Dテキストの背景カラーの設定
> CAIBO3D::SetDrawText2DBackTransparent | 2Dテキストの背景透過の設定
> CAIBO3D::SetDrawText2DDrawArea | 2Dテキストの表示範囲の設定
> CAIBO3D::IsShowDrawText3D | 3Dテキストの表示フラグの取得
> CAIBO3D::ShowDrawText3D | 3Dテキストの表示、非表示の切り替え
> CAIBO3D::CreateDrawText3DSurface | 3Dテキストの表示用サーフェイスの作成
> CAIBO3D::SetDrawText3DString | 3Dテキストの表示用文字列の登録
> CAIBO3D::SetDrawText3DFont | 3Dテキストの表示用フォントの登録
> CAIBO3D::SetDrawText3DColor | 3Dテキストの表示カラーの設定
> CAIBO3D::SetDrawText3DBackColor | 3Dテキストの背景カラーの設定
> CAIBO3D::SetDrawText3DBackTransparent | 3Dテキストの背景透過の設定
> CAIBO3D::SetDrawText3DBasePoint | 3Dテキストの表示位置の基点座標の設定
> CAIBO3D::SetDrawText3DDrawArea | 3Dテキストの表示範囲の設定
> CAIBO3D::GetVersion | バージョン情報取得

> ヘッダー:AIBO3D.h 内で宣言。
> インポートライブラリ:AIBO3D.lib を使用。

## 4.3 CPCINFO

> API 名称 | 機能
> CCpcInfo::CCpcInfo | コンストラクタ
> CCpcInfo::~CCpcInfo | デストラクタ
> CCpcInfo::GetJointArray | 関節ID配列の取得
> CCpcInfo::GetSensorArray | Primitive Locator ID とセンサー情報の対応テーブルの取得
> CCpcInfo::GetPrimitiveLocator | Primitive Locator の取得

> ヘッダー:CpcInfo.h 内で宣言。
> インポートライブラリ:CpcInfo.lib を使用。

## 4.4 VAIBOUPnP

> API 名称 | 機能
> DiscoveryAIBOByUPnP | UPnP で AIBO の検索を行う

> ヘッダー:VAIBOUPnPClient.h 内で宣言。
> インポートライブラリ:VAIBOUPnP.lib を使用。

## 4.5 VAIBOTTS

> API 名称 | 機能
> CVAIBOTTS::Init | ライブラリの初期化
> CVAIBOTTS::End | ライブラリの終了
> CVAIBOTTS::GetTTSEngineNum | TTSエンジンの個数の取得
> CVAIBOTTS::GetTTSEngineName | TTSエンジンの名前の取得
> CVAIBOTTS::GetTTSEngineKind | TTSエンジンの種別の取得
> CVAIBOTTS::GetVoiceEngine | カレントのTTSエンジンの取得
> CVAIBOTTS::SetVoiceEngine | カレントのTTSエンジンの設定
> CVAIBOTTS::Speak | 文字列をTTS変換して再生
> CVAIBOTTS::MakeWaveFile | 文字列をTTS変換してWAVEファイルを出力
> CVAIBOTTS::MakePcmData | 文字列をTTS変換してPCMデータを出力
> CVAIBOTTS::SetVoiceSpeed | VOICEのスピードの設定
> CVAIBOTTS::SetVoicePitch | VOICEのピッチの設定
> CVAIBOTTS::SetVoiceAccent | VOICEのアクセントの設定
> CVAIBOTTS::SetVoiceVolume | VOICEのボリュームの設定
> CVAIBOTTS::SetOutputFormat | 出力PCMデータフォーマットの設定
> CVAIBOTTS::GetVoiceSpeed | VOICEのスピードの取得
> CVAIBOTTS::GetVoicePitch | VOICEのピッチの取得
> CVAIBOTTS::GetVoiceAccent | VOICEのアクセントの取得
> CVAIBOTTS::GetVoiceVolume | VOICEのボリュームの取得
> CVAIBOTTS::GetOutputFormat | 出力PCMデータフォーマットの取得
> CVAIBOTTS::GetWordNumInLexicon | 辞書登録語句数の取得
> CVAIBOTTS::GetWordInLexicon | 辞書登録語句の取得
> CVAIBOTTS::GetPronunciationInLexicon | 辞書登録語句の発音の取得
> CVAIBOTTS::GetPartInLexicon | 辞書登録語句の品詞の取得
> CVAIBOTTS::AddWordInLexicon | 辞書に新規語句の登録
> CVAIBOTTS::DeleteWordInLexicon | 辞書登録語句の削除

> ヘッダー:VAIBOTTS.h内で宣言。
> インポートライブラリ:VAIBOTTS.libを使用。

> ※ CAIBOTTS 内で、ssnykp.dll, sony_tts_dll.dll, ssnykp.dll, udlib.dll, posattr.dll, uwkanjidll.dll を使用します。