SPC  1.7.0
クラス spc::SPCBase

SPC基底クラス [詳細]

#include <spcbase.h>

Public メソッド

 SPCBase ()
 コンストラクタ
virtual ~SPCBase ()
 デストラクタ
long speak (std::string sentence)
 発話要求
long speak (std::string sentence, spc::SPC_SPEAK_KIND param)
 発話要求(腕動作指定)
long waitForAnswer (std::string sentence, spc::SPC_ANSWER &answer)
 質問要求(Yes/No)
long waitForAnswer (std::string sentence, std::vector< spc::SPC_CONJUGATION_INFO > conjInfo, std::vector< spc::SPC_USUAL_ANSWER_TYPE > usualAnswer, spc::SPC_ANSWER &answer)
 質問要求(YesNo)
long waitForAnswer (std::string sentence, std::vector< std::string > yesWords, std::vector< std::string > noWords, std::vector< std::string > cancelWords, spc::SPC_ANSWER &answer)
 質問要求(YesNo拡張)
long waitForAnswer (std::string sentence, std::vector< std::string > answerWords, spc::SPC_ANSWER &answer, std::string &recogWord, int &recogIndex)
 質問要求(回答項目設定)
long waitForAnswer (std::string sentence, std::vector< std::string > trueWords, std::vector< std::string > falseWords, spc::SPC_ANSWER &answer, std::string &recogWord, int &recogIndex)
 質問要求(正解・不正解)
long waitForAnswer (std::string sentence, spc::SPC_ANSWER &answer, std::string &recog)
 質問要求(自由回答)
long setWaitForAnswerTimeOut (long sec)
 質問要求タイムアウト時間設定
long takePicture (std::string filePath)
 写真撮影要求
long getWalkingMode (bool &walkingMode)
 歩行モード取得要求
long setWalkingMode (bool walkingMode)
 歩行モード設定要求
long walk (spc::SPC_WALK_TYPE type, long walkparam, float angle)
 歩行要求
long walk (spc::SPC_WALK_TYPE type, long walkparam, float angle, bool sitdown)
 歩行要求(歩行後の動作設定可能)
long turn (long direction)
 方向転換要求
long stepping (long stepTime)
 足踏み要求
long standUp ()
 立ち上がる
long sitDown ()
 座る
long makeMotion (std::string filePath)
 モーション実行要求
long makeMotion (std::string filePath, bool useLowerServo, bool finMotion, spc::SPC_SYNCMOTION_TYPE syncMotionType, std::string syncMotionParam)
 モーション実行要求(別動作との同時実行)
long makeMotion (std::string filePath, bool useLowerServo, bool finMotion, std::vector< spc::SPC_SYNCMOTION_TYPE > syncMotionType, std::vector< std::string > syncMotionParam)
 モーション実行要求(別動作との同時実行:複数動作対応)
long makeMotion (std::string filePath, bool useLowerServo, bool finMotion, std::vector< spc::SPC_SYNCMOTION_TYPE > syncMotionType, std::vector< std::string > syncMotionParam, bool loopMotion)
 モーション実行要求(別動作との同時実行:複数動作対応、モーション再実行対応)
long makeDanceMotion (std::string filePath, bool useLowerServo, bool finMotion, std::vector< spc::SPC_SYNCMOTION_TYPE > syncMotionType, std::vector< std::string > syncMotionParam)
 ダンス用モーション実行要求(別動作との同時実行:複数動作対応)
long getServoInfo (std::vector< spc::SPC_SERVO_INFO > &servoInfos)
 サーボ情報の取得
long getInvalidModeStatus (spc::SPC_SERVO_INVALID_MODE_STATUS &status)
 サーボ無効化状態の取得
long isServoConnection (bool &connection)
 サーボ通信可能状態の取得
long loadConfig (std::string sectName, std::string confName, std::string &value)
 アプリケーションコンフィグファイル読み込み要求
long loadConfig (std::string appName, std::string sectName, std::string confName, std::string &value)
 アプリケーションコンフィグファイル読み込み要求(アプリケーション名指定)
long startDetectMovingObject (float speed=1.0)
 動体検知開始要求
long stopDetectMovingObject ()
 動体検知終了要求
long startLED (std::string filePath)
 LED点灯要求
long startLED (std::string filePathMicOn, std::string filePathMicOff)
 LED点灯要求(音声認識可能時、音声認識不可能時の自動切り替え)
long startLED (std::vector< std::string > vLEDPath, long interval)
 LEDの連続表示
long stopLED ()
 LED消灯要求
long enableNetwork ()
 ネットワーク有効化要求
long disableNetwork ()
 ネットワーク有効化完了要求
long playSound (std::string filePath)
 サウンドファイル再生要求
long recordSound (std::string filePath, long sec)
 録音要求
long setActionPSDFluctuation (spc::SPC_ACTION_PSD_FLUCTUATION_TYPE action)
 PSD変動検知時の動作設定
long controlArms (spc::SPC_ARM_TYPE Arms, bool move)
 腕の動作指定要求
long startWaitShakeHand ()
 握手検知の開始要求
long stopWaitShakeHand ()
 握手検知の終了要求
long expressFeeling (spc::SPC_FEELING_TYPE feelingType)
 感情動作要求
long startTimer (unsigned long interval, unsigned long count, long &timerId)
 タイマー開始要求
long stopTimer (long timerId)
 タイマー停止要求
long startNeckControl ()
 首制御開始要求
long stopNeckControl ()
 首制御終了要求
long moveNeck (spc::SPC_MOVE_NECK_PARAM param)
 首動作要求
long lookFront (long execTime)
 正面を向く
long moveArm (spc::SPC_MOVE_ARM_PARAM param)
 腕動作要求
long getBatteryStatus (spc::SPC_BATTERY_STATUS &status)
 バッテリー状態の取得要求
long getPoseStatus (spc::SPC_POSE_STATUS_KIND &pose)
 姿勢取得要求
long setVolume (long volume)
 音量設定要求
long getVolume (long &volume)
 音量取得要求
long getDataDirPath (std::string &dirPath)
 アプリケーションプロパティ格納ディレクトリの取得
long getDiskUsage (float &diskInfo)
 ディスクの使用率取得
long getDiskFreeSize (float &diskInfo)
 ディスク空き容量取得要求
long getAppDiskUsage (float &diskInfo)
 自アプリケーションのディスク使用量取得
long getAppDiskUsage (std::string appName, float &diskInfo)
 指定アプリケーションのディスク使用量取得
long exitComponent ()
 アプリケーション終了要求
virtual void onInitialize ()
 アプリケーション初期化イベント
virtual void onFinalize ()
 アプリケーション終了イベント
virtual void onFaceCatch (std::string name, bool owner)
 顔認識イベント
virtual void onFaceDrop ()
 顔認識不可イベント
virtual void onKnownPlace (spc::SPC_PLACE place)
 現在位置認識イベント
virtual void onMovingObjectCatch (float speed, spc::SPC_MOVING_OBJECT_DIRECTION direction)
 動体検知イベント
virtual void onPSDFluctuationCatch ()
 PSD変動イベント
virtual void onHandShakeCatch (spc::SPC_ARM_TYPE hand)
 握手検知イベント
virtual void onTimer (long timerId)
 タイマーイベント

Static Public メソッド

static long setLogLevel (spc::SPC_LOG_LEVEL logLevel)
 ログレベル設定要求
static long outputLog (spc::SPC_LOG_LEVEL logLevel, std::string filename, std::string fncname, long line, const char *format,...)
 ログ出力要求

説明

SPC基底クラス


関数

long spc::SPCBase::controlArms ( spc::SPC_ARM_TYPE  Arms,
bool  move 
)

腕の動作指定要求

腕のトルクを制御することで、PALROの腕の動作を制御する。 腕のトルクをONにすると腕が動作し、OFFにすると発話やモーション実行時に腕の動作を行わなくなる。 この設定は、本関数で再度設定を行うまで有効である。

引数:
[in]Arms腕の指定
[in]move腕のサーボののトルク設定。trueでトルクをON、falseでトルクをOFFにする。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.2以降
 // 左腕の動作を停止する
 controlArms(SPC_ARM_LEFT, false);

 // 発話する(右腕だけ動作する)
 speak("こんにちは、パルロです");

 // 左腕の動作を再開する
 controlArms(SPC_ARM_LEFT, true);

ネットワーク有効化完了要求

アプリケーションから無線LAN接続の終了を宣言する。
ただし、他のアプリケーションでも無線LANを使用している場合、本関数をコールしてもPALROはネットワークから切断されない。

戻り値:
0正常終了
0以外処理失敗

ネットワーク有効化要求

無線LANへの接続を開始する。

戻り値:
0正常終了
0以外処理失敗

アプリケーション終了要求

アプリケーションを終了する。本関数の実行後、onFinalize関数がコールされ、アプリケーションは終了する。

戻り値:
0正常終了
0以外処理失敗

感情動作要求

PALROの感情を表すための動作を行う

引数:
[in]feelingType感情の種別
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.2以降
 // 喜びの感情を表現する
 expressFeeling(SPC_FEELING_JOY);
long spc::SPCBase::getAppDiskUsage ( float &  diskInfo)

自アプリケーションのディスク使用量取得

呼び出し元アプリケーションのディスク使用量を取得する。

引数:
[out]diskInfo自アプリケーションディスク使用量容量。単位はMB(メガバイト)
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
long spc::SPCBase::getAppDiskUsage ( std::string  appName,
float &  diskInfo 
)

指定アプリケーションのディスク使用量取得

指定したアプリケーションのディスク使用量を取得する。

引数:
[in]appNameアプリケーション名
[out]diskInfo指定アプリケーションディスク使用量容量。単位はMB(メガバイト)
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降

バッテリー状態の取得要求

引数:
[out]statusバッテリーの状態
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
long spc::SPCBase::getDataDirPath ( std::string &  dirPath)

アプリケーションプロパティ格納ディレクトリの取得

アプリケーションプロパティのインストール先ディレクトリ(データディレクトリ)を取得する。
このディレクトリには「PALROアプリケーションスタジオ」-「インストール」の「アプリケーションプロパティの保存フォルダー」で指定した場所にあるファイルが格納される。
取得できるパスは /usr/palro/etc/apl/(アプリケーション名) 。

引数:
[out]dirPathディレクトリパス
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
long spc::SPCBase::getDiskFreeSize ( float &  diskInfo)

ディスク空き容量取得要求

PALROが使用しているディスクの空き容量を取得する。

引数:
[out]diskInfoディスク空き容量。単位はMB(メガバイト)
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
long spc::SPCBase::getDiskUsage ( float &  diskInfo)

ディスクの使用率取得

PALRO全体でのディスクの使用率を取得する

引数:
[out]diskInfoディスクの使用率。単位はパーセント
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降

サーボ無効化状態の取得

熱上昇等の理由により、システム側で停止しているサーボがあるかどうかを取得する。

引数:
[out]statusサーボ無効化情報
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降

姿勢取得要求

現在の姿勢を取得する。

引数:
[out]pose現在の姿勢
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
long spc::SPCBase::getServoInfo ( std::vector< spc::SPC_SERVO_INFO > &  servoInfos)

サーボ情報の取得

サーボ情報を取得する。サーボ位置とサーボIDの対応は、
PALRO Gardenの 【 デベロッパー 】 - 【 ドキュメント 】 の " PALRO Motion Editor ガイド " を参照のこと。

引数:
[out]servoInfosサーボ情報
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
long spc::SPCBase::getVolume ( long &  volume)

音量取得要求

現在の音量を取得する

引数:
[out]volume音量設定値。0(最小)~15(最大)が返される。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
参照:
setVolume(long volume)
long spc::SPCBase::getWalkingMode ( bool &  walkingMode)

歩行モード取得要求

現在の歩行モードを取得する。

引数:
[out]walkingMode現在の歩行モード。 歩行可能モードの場合はtrue、 歩行禁止モードの場合はfalseが返る。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
参照:
setWalkingMode(bool walkingMode);
long spc::SPCBase::isServoConnection ( bool &  connection)

サーボ通信可能状態の取得

全身のサーボと正常に通信できているかを取得する。

引数:
[out]connection現在のサーボ通信可能状態。 全身のサーボ通信が正常の場合は true。 サーボ通信の異常がある場合は false。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
long spc::SPCBase::loadConfig ( std::string  sectName,
std::string  confName,
std::string &  value 
)

アプリケーションコンフィグファイル読み込み要求

呼び出し元アプリケーションのアプリケーションコンフィグファイルから値の読み込みを行う。
アプリケーションコンフィグファイルの内容に関しては、PALRO Gardenの 【 デベロッパー 】 - 【 ドキュメント 】 の " アプリケーション開発ガイド " を参照のこと。

引数:
[in]sectNameセクション名(大分類名)
[in]confName設定項目名(小分類名)
[out]value設定値
戻り値:
0正常終了
0以外処理失敗
 // アプリケーションコンフィグファイルから設定値を読み出すサンプル
 std::string value;

 // セクション名 common, 設定項目名 count に記載された値を取得する
 loadConfig("common", "count", value);

 // 取得した値をログに出力する
 setLogLevel(SPC_LOG_LEVEL_DEBUG);
 SPC_LOG_DEBUG("取得した値: %s", value.c_str());
long spc::SPCBase::loadConfig ( std::string  appName,
std::string  sectName,
std::string  confName,
std::string &  value 
)

アプリケーションコンフィグファイル読み込み要求(アプリケーション名指定)

アプリケーションコンフィグファイルから設定値の読み込みを行う。他アプリケーションの設定値を取得する場合に使用する。
アプリケーションコンフィグファイルの内容に関しては、PALRO Gardenの 【 デベロッパー 】 - 【 ドキュメント 】 の " アプリケーション開発ガイド " を参照のこと。

引数:
[in]appNameアプリケーション名
[in]sectNameセクション名(大分類名)
[in]confName設定項目名(小分類名)
[out]value設定値
戻り値:
0正常終了
0以外処理失敗
 // アプリケーションコンフィグファイルから設定値を読み出すサンプル
 std::string value;

 // SampleComponentという名前のアプリケーションのコンフィグファイルから情報を読み出す
 // セクション名 common, 設定項目名 count に記載された値を取得する
 loadConfig("SampleComponent", "common", "count", value);

 // 取得した値をログに出力する
 setLogLevel(SPC_LOG_LEVEL_DEBUG);
 SPC_LOG_DEBUG("取得した値: %s", value.c_str());
long spc::SPCBase::lookFront ( long  execTime)

正面を向く

実行時間を指定し、首を正面に向ける

引数:
[in]execTime実行時間。単位はミリ秒。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
 // 1秒かけて正面を向く
 lookFront(1000);
long spc::SPCBase::makeDanceMotion ( std::string  filePath,
bool  useLowerServo,
bool  finMotion,
std::vector< spc::SPC_SYNCMOTION_TYPE syncMotionType,
std::vector< std::string >  syncMotionParam 
)

ダンス用モーション実行要求(別動作との同時実行:複数動作対応)

モーションと同時に指定した動作を行う。同時に実行する動作に複数の指定が可能。 同時動作の指定とパラメータの対応は指定順とする。 なお、サーボの動作でエラーが発生した場合、本関数もエラーで終了する。

引数:
[in]filePathモーションファイル名(フルパス)
[in]useLowerServo下半身制御フラグ。上半身のみ使用するモーションの場合はfalse。立ち上がるモーションなど、PALROの下半身を使用する場合はtrue。
[in]finMotionモーション実行後に姿勢を戻すかどうか。戻す場合はtrue。
[in]syncMotionTypeモーションと同時に実行する動作を指定する。モーションのみ実行する場合は SPC_SYNCMOTION_NON を指定する。
[in]syncMotionParamモーションと同時に実行する動作のパラメータ。
syncMotionTypeにSPC_SYNCMOTION_SPEAK を指定した場合は発話する文字列、
SPC_SYNCMOTION_SOUND を指定した場合は再生する音声ファイルパス(フルパス)、
SPC_SYNCMOTION_LED を指定した場合はPALROモーションファイルのパス(フルパス)を指定する。
SPC_SYNCMOTION_NON を指定した場合は無視される。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
 // モーションと音声ファイルの再生とLEDの表示を同時に実行する
 // (モーションファイル, LEDファイルは、アプリケーションと一緒にインストールしたものとする)
 // (本関数は、ダンス用のため、サーボ動作でエラーが起きた場合は動作を停止する)
 std::string dirPath;
 std::vector<spc::SPC_SYNCMOTION_TYPE> syncMotionType;
 std::vector<std::string> syncMotionParam;

 // アプリケーションコンフィグが保存されているディレクトリを取得する
 getDataDirPath(dirPath);

 // モーション実行のパラメータを設定する
 syncMotionType.push_back(SPC_SYNCMOTION_SOUND); // 音声再生
 syncMotionType.push_back(SPC_SYNCMOTION_LED);   // LED表示
 syncMotionParam.push_back(dirPath + "/sample.wav"); // 音声再生のパラメータ(音声ファイル名)
 syncMotionParam.push_back(dirPath + "/sample.led"); // LED表示のパラメータ(LEDファイル名)

 // モーションと発話を同時に実行する
 makeDanceMotion(dirPath + "/sample.act",  // モーションファイル名を指定する
                 false,                    // 下半身を使用しない
                 false,                    // 元に戻さない
                 syncMotionType,           // モーションと同時に実行する動作
                 syncMotionParam           // 動作のパラメータ
                 );
long spc::SPCBase::makeMotion ( std::string  filePath)

モーション実行要求

指定したモーションファイルに記述された動作を行う。
モーションファイルは「PALROワークショップ」を使用して「PALROアプリケーションスタジオ」を起動し「モーションエディター」で作成する。

引数:
[in]filePathモーションファイル名(フルパス)
戻り値:
0正常終了
0以外処理失敗
 // sample.actというモーションファイルを実行する
 // (モーションファイルは、アプリケーションと一緒にインストールしたものとする)
 std::string dirPath;

 // アプリケーションコンフィグが保存されているディレクトリを取得する
 getDataDirPath(dirPath);

 // モーションを実行する
 makeMotion(dirPath + "/sample.act");
long spc::SPCBase::makeMotion ( std::string  filePath,
bool  useLowerServo,
bool  finMotion,
spc::SPC_SYNCMOTION_TYPE  syncMotionType,
std::string  syncMotionParam 
)

モーション実行要求(別動作との同時実行)

モーションと同時に指定した動作を行う。
また、モーション実行後の動作の指定や、モーションのみ実行することも可能。

引数:
[in]filePathモーションファイル名(フルパス)
[in]useLowerServo下半身制御フラグ。上半身のみ使用するモーションの場合はfalse。立ち上がるモーションなど、PALROの下半身を使用する場合はtrue。
[in]finMotionモーション実行後に姿勢を戻すかどうか。戻す場合はtrue。
[in]syncMotionTypeモーションと同時に実行する動作を指定する。モーションのみ実行する場合は SPC_SYNCMOTION_NON を指定する。
[in]syncMotionParamモーションと同時に実行する動作のパラメータ。
syncMotionTypeにSPC_SYNCMOTION_SPEAK を指定した場合は発話する文字列、
SPC_SYNCMOTION_SOUND を指定した場合は再生する音声ファイルパス(フルパス)、
SPC_SYNCMOTION_LED を指定した場合はPALROモーションファイルのパス(フルパス)を指定する。
SPC_SYNCMOTION_NON を指定した場合は無視される。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.2以降
 // モーションと発話を同時に実行する
 // (モーションファイルは、アプリケーションと一緒にインストールしたものとする)
 std::string dirPath;

 // アプリケーションコンフィグが保存されているディレクトリを取得する
 getDataDirPath(dirPath);

 // モーションと発話を同時に実行する
 makeMotion(dirPath + "/sample.act",             // モーションファイル名を指定する
            false,                               // 下半身を使用しない
            false,                               // 元に戻さない
            SPC_SYNCMOTION_SPEAK,                // モーションと同時に実行する動作。今回は発話を指定する
            "モーションと発話を同時に実行します" // 発話内容
            );
long spc::SPCBase::makeMotion ( std::string  filePath,
bool  useLowerServo,
bool  finMotion,
std::vector< spc::SPC_SYNCMOTION_TYPE syncMotionType,
std::vector< std::string >  syncMotionParam 
)

モーション実行要求(別動作との同時実行:複数動作対応)

モーションと同時に指定した動作を行う。同時に実行する動作に複数の指定が可能。 なお、同時動作の指定とパラメータの対応は指定順とする。

引数:
[in]filePathモーションファイル名(フルパス)
[in]useLowerServo下半身制御フラグ。上半身のみ使用するモーションの場合はfalse。立ち上がるモーションなど、PALROの下半身を使用する場合はtrue。
[in]finMotionモーション実行後に姿勢を戻すかどうか。戻す場合はtrue。
[in]syncMotionTypeモーションと同時に実行する動作を指定する。モーションのみ実行する場合は SPC_SYNCMOTION_NON を指定する。
[in]syncMotionParamモーションと同時に実行する動作のパラメータ。
syncMotionTypeにSPC_SYNCMOTION_SPEAK を指定した場合は発話する文字列、
SPC_SYNCMOTION_SOUND を指定した場合は再生する音声ファイルパス(フルパス)、
SPC_SYNCMOTION_LED を指定した場合はPALROモーションファイルのパス(フルパス)を指定する。
SPC_SYNCMOTION_NON を指定した場合は無視される。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.2以降
 // モーションと発話とLEDの表示を同時に実行する
 // (モーションファイル, LEDファイルは、アプリケーションと一緒にインストールしたものとする)
 std::string dirPath;
 std::vector<spc::SPC_SYNCMOTION_TYPE> syncMotionType;
 std::vector<std::string> syncMotionParam;

 // アプリケーションコンフィグが保存されているディレクトリを取得する
 getDataDirPath(dirPath);

 // モーション実行のパラメータを設定する
 syncMotionType.push_back(SPC_SYNCMOTION_SPEAK); // 発話
 syncMotionType.push_back(SPC_SYNCMOTION_LED);   // LED表示
 syncMotionParam.push_back("モーションと発話とLED表示を同時に実行します"); // 発話のパラメータ(発話内容)
 syncMotionParam.push_back(dirPath + "/sample.led");                       // LED表示のパラメータ(LEDファイル名)

 // モーションと発話を同時に実行する
 makeMotion(dirPath + "/sample.act",  // モーションファイル名
            false,                    // 下半身を使用しない
            false,                    // モーション実行後、姿勢を元に戻さない
            syncMotionType,           // モーションと同時に実行する動作
            syncMotionParam           // 動作のパラメータ
            );
long spc::SPCBase::makeMotion ( std::string  filePath,
bool  useLowerServo,
bool  finMotion,
std::vector< spc::SPC_SYNCMOTION_TYPE syncMotionType,
std::vector< std::string >  syncMotionParam,
bool  loopMotion 
)

モーション実行要求(別動作との同時実行:複数動作対応、モーション再実行対応)

モーションと同時に指定した動作を行う。同時に実行する動作に複数の指定が可能。 モーションと同時実行する発話・音声再生が終了した時点でモーションを中断する。 発話・音声再生が1回のモーション実行より長い場合、再度モーションを実行する。 なお、同時動作の指定とパラメータの対応は指定順とする。

引数:
[in]filePathモーションファイル名(フルパス)
[in]useLowerServo下半身制御フラグ。上半身のみ使用するモーションの場合はfalse。立ち上がるモーションなど、PALROの下半身を使用する場合はtrue。
[in]finMotionモーション実行後に姿勢を戻すかどうか。戻す場合はtrue。
[in]syncMotionTypeモーションと同時に実行する動作を指定する。モーションのみ実行する場合は SPC_SYNCMOTION_NON を指定する。
[in]syncMotionParamモーションと同時に実行する動作のパラメータ。
syncMotionTypeにSPC_SYNCMOTION_SPEAK を指定した場合は発話する文字列、
SPC_SYNCMOTION_SOUND を指定した場合は再生する音声ファイルパス(フルパス)、
SPC_SYNCMOTION_LED を指定した場合はPALROモーションファイルのパス(フルパス)を指定する。
SPC_SYNCMOTION_NON を指定した場合は無視される。
[in]loopMotiontrueに設定した場合は、モーションよりも発話または音声再生が長い場合、再度モーションを実行し、終了時点でモーションも終了する。
syncMotionTypeにSPC_SYNCMOTION_SPEAKまたはSPC_SYNCMOTION_SOUNDの設定が無い場合はこの設定は使用されない。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
 // モーションと発話とLEDの表示を同時に実行する
 // (モーションファイル, LEDファイルは、アプリケーションと一緒にインストールしたものとする)
 std::string dirPath;
 std::vector<spc::SPC_SYNCMOTION_TYPE> syncMotionType;
 std::vector<std::string> syncMotionParam;

 // アプリケーションコンフィグが保存されているディレクトリを取得する
 getDataDirPath(dirPath);

 // モーション実行のパラメータを設定する
 syncMotionType.push_back(SPC_SYNCMOTION_SPEAK); // 発話
 syncMotionType.push_back(SPC_SYNCMOTION_LED);   // LED表示
 syncMotionParam.push_back("モーションと発話とLED表示を同時に実行します"); // 発話のパラメータ(発話内容)
 syncMotionParam.push_back(dirPath + "/sample.led");                       // LED表示のパラメータ(LEDファイル名)

 // モーションと発話を同時に実行する
 makeMotion(dirPath + "/sample.act",  // モーションファイル名
            false,                    // 下半身を使用しない
            false,                    // モーション実行後、姿勢を元に戻さない
            syncMotionType,           // モーションと同時に実行する動作
            syncMotionParam,          // 動作のパラメータ
            true                      // 発話よりモーションが先に終了した場合、再度モーションを実行する
            );

腕動作要求

角度と時間を指定し、腕を動かす。
設定可能な角度は、PALRO Gardenの 【 デベロッパー 】 - 【 ドキュメント 】 の " PALRO Motion Editor ガイド " を参照のこと。

引数:
[in]param腕動作パラメータ
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
 // 腕を動作させるサンプル
 SPC_MOVE_ARM_PARAM param;

 // 腕動作パラメータ。1秒かけて右腕を上げる
 param.leftShoulderPitch = 0;
 param.leftShoulderRoll = 0;
 param.leftElbow = 0;
 param.rightShoulderPitch = -180;
 param.rightShoulderRoll = 0;
 param.rightElbow = 0;
 param.execTime = 1000;

 // 腕動作実行
 moveArm(param);

首動作要求

角度と時間を指定し、首を動かす。
設定可能な角度は、PALRO Gardenの 【 デベロッパー 】 - 【 ドキュメント 】 の " PALRO Motion Editor ガイド " を参照のこと。
なお、startNeckControl関数を実行していない場合、本関数の終了後、首は自動的に動きだすので注意すること。

引数:
[in]param首動作パラメータ
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
 // 首を動かすサンプル
 SPC_MOVE_NECK_PARAM param;

 // アプリケーション側で首動作を行う
 startNeckControl();

 // 動作パラメータ。1秒かけて左を向く
 param.hAngle = 60.0;
 param.vAngle = -30.0;
 param.execTime = 1000;

 // 首動作実行
 moveNeck(param);

 // 5秒停止
 sleep(5);

 // アプリケーション側での首動作終了
 stopNeckControl();
virtual void spc::SPCBase::onFaceCatch ( std::string  name,
bool  owner 
) [virtual]

顔認識イベント

PALROが顔を認識した場合にコールされる

引数:
[in]name認識した個人の登録名(全角カタカナ)。個人未確定の場合は空白文字列。
[in]owner認識した個人がPALROのオーナーであるかどうか。オーナーの場合はtrue。
virtual void spc::SPCBase::onFaceDrop ( ) [virtual]

顔認識不可イベント

顔認識ができなくなった(PALROが顔を見失った)場合にコールされる

virtual void spc::SPCBase::onFinalize ( ) [virtual]

アプリケーション終了イベント

アプリケーションの終了時にコールされる

virtual void spc::SPCBase::onHandShakeCatch ( spc::SPC_ARM_TYPE  hand) [virtual]

握手検知イベント

握手(腕を握られた)ことを検知した場合にコールされる

引数:
[in]hand握手を検知した腕の箇所
virtual void spc::SPCBase::onInitialize ( ) [virtual]

アプリケーション初期化イベント

アプリケーションの実行開始時にコールされる

virtual void spc::SPCBase::onKnownPlace ( spc::SPC_PLACE  place) [virtual]

現在位置認識イベント

現在位置が知っている場所である場合にコールされる

引数:
[in]place認識した場所
virtual void spc::SPCBase::onMovingObjectCatch ( float  speed,
spc::SPC_MOVING_OBJECT_DIRECTION  direction 
) [virtual]

動体検知イベント

動体を検知した場合に呼び出される

引数:
[in]speed検知した動体の速度
[in]direction検知した動体の方向
virtual void spc::SPCBase::onPSDFluctuationCatch ( ) [virtual]

PSD変動イベント

PSDセンサーの値に変動があった場合にコールされる

virtual void spc::SPCBase::onTimer ( long  timerId) [virtual]

タイマーイベント

startTimer関数で設定した時間が経過した場合にコールされる

引数:
[in]timerIdstartTimer関数で取得したタイマーID
static long spc::SPCBase::outputLog ( spc::SPC_LOG_LEVEL  logLevel,
std::string  filename,
std::string  fncname,
long  line,
const char *  format,
  ... 
) [static]

ログ出力要求

アプリケーションログへの出力を行う。 アプリケーションログの確認および取得は「PALROアプリケーションスタジオ」の「アプリケーションログ」で行う。 なお、本関数をより簡易に使用するためのマクロが定義されているので、そちらの利用を推奨する。

引数:
[in]logLevelログレベル。この設定値がsetLogLevelで設定された値以上である場合、実際にログの書き込みが行われる。
[in]filenameログ出力元のファイル名
[in]fncnameログ出力元の関数名
[in]lineログ出力位置のファイル行数
[in]format書き込み文字列の書式。printf関数と同様に指定する。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.2以降
参照:
setLogLevel(spc::SPC_LOG_LEVEL logLevel)
 // マクロを使用したログ出力サンプル

 // ログレベルを設定する
 setLogLevel(spc::SPC_LOG_LEVEL_INFO);

 SPC_LOG_ERROR("ERRORレベルのログです");  // このログは出力される
 SPC_LOG_INFO("INFOレベルのログです");    // このログは出力される
 SPC_LOG_DEBUG("DEBUGレベルのログです");  // このログは出力されない

 // ログレベルを変更する
 setLogLevel(spc::SPC_LOG_LEVEL_ERROR);

 SPC_LOG_ERROR("ERRORレベルのログです");  // このログは出力される
 SPC_LOG_INFO("INFOレベルのログです");    // このログは出力されない
 SPC_LOG_DEBUG("DEBUGレベルのログです");  // このログは出力されない
long spc::SPCBase::playSound ( std::string  filePath)

サウンドファイル再生要求

指定された音声ファイルを再生する。再生可能な形式は以下の通り。

  • WAVファイル
  • MP3ファイル
引数:
[in]filePath音声ファイル(フルパス)
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.2以降
 // sample.wavを再生する
 // (このファイルは、アプリケーションと一緒にインストールしたものとする)
 std::string dirPath;

 // アプリケーションコンフィグが保存されているディレクトリを取得する
 getDataDirPath(dirPath);

 // 音声を再生する
 playSound(dirPath + "/sample.wav");
long spc::SPCBase::recordSound ( std::string  filePath,
long  sec 
)

録音要求

マイクからの音声をファイルとして保存する。録音形式はwavのみ(サンプリングレートは16KHz)。

引数:
[in]filePath録音ファイル(フルパス)
[in]sec録音する長さ(秒)
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.5.2以降
 // マイクからの音声をrec.wavとして保存する
 
 std::string dirPath;

 // アプリケーションコンフィグが保存されているディレクトリを取得する
 getDataDirPath(dirPath);

 // 音声を録音する(15秒)
 recordSound(dirPath + "/rec.wav", 15);

PSD変動検知時の動作設定

PSDの変動を検知した際、その通知を行う(onPSDFluctuationCatchをコールする)か、また実行中の動作をキャンセルするかの設定を行う。

引数:
[in]action設定値。SPC_NOT_NOTYFY_PSD_FLUCTUATION を設定した場合は、onPSDFluctuationCatchがコールされなくなる。
SPC_ONLY_NOTYFY_PSD_FLUCTUATION を設定した場合は、onPSDFluctuationCatchがコールされるようになる。
SPC_NOTYFY_AND_CANCEL_PSD_FLUCTUATION を設定した場合は、PSD検知時の実行中の動作をキャンセルし、onPSDFluctuationCatchをコールする。
SPC_EXIT_COMPONENT_PSD_FLUCTUATION を設定した場合は、PSD検知時にアプリケーションを終了させる(デフォルト設定)。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.2以降
参照:
onPSDFluctuationCatch()
 // PSDの変動を検知した際にアプリケーションを終了させる
 // (PALROの左耳と口元を覆うと、アプリケーションは終了する)
 setActionPSDFluctuation(SPC_EXIT_COMPONENT_PSD_FLUCTUATION);
static long spc::SPCBase::setLogLevel ( spc::SPC_LOG_LEVEL  logLevel) [static]

ログレベル設定要求

アプリケーションのログレベルを設定する。 設定したログレベル以上のログが、アプリケーションログに出力される。

引数:
[in]logLevelログレベル
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.2以降
参照:
outputLog(spc::SPC_LOG_LEVEL logLevel, std::string filename, std::string fncname, long line, const char* format, ...)
long spc::SPCBase::setVolume ( long  volume)

音量設定要求

音量を設定する

引数:
[in]volume音量設定値。0(最小)~15(最大)で指定する。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
参照:
getVolume(long& volume)
 // 現在の音量から少し上げるサンプル
 long lRtn, volume;

 // 現在の音量を取得する
 lRtn = getVolume(volume);
 if(lRtn == 0){
   if(volume < 15){     // 最大音量ではない
     // 現在の音量より大きくする
     setVolume(volume + 1);
   }
 }

質問要求タイムアウト時間設定

質問要求(waitForAnswer)のタイムアウト時間を設定する。

引数:
[in]sec設定するタイムアウト時間(秒)。 一度設定すると、その後の質問動作全てで有効になる。0を設定した場合、システムで決められたデフォルトの値に設定される。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.2以降
 // 質問要求のタイムアウトを20秒に設定する
 setWaitForAnswerTimeOut(20);
long spc::SPCBase::setWalkingMode ( bool  walkingMode)

歩行モード設定要求

歩行モードを設定する。 歩行禁止モードを解除することができるため、本関数を使用したアプリケーションを作成する場合は注意すること。

引数:
[in]walkingMode設定する歩行モード。 歩行可能モードの場合はtrue、 歩行禁止モードの場合はfalseを設定する。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
参照:
getWalkingMode(bool &walkingMode);
 // 歩行可能モードにするサンプル
 bool walkingMode;

 // 現在の歩行モードを取得
 getWalkingMode(walkingMode);
 if(walkingMode == false){
   // 現在歩行禁止モードなら、歩行可能モードにする
   setWalkingMode(true);
 }

座る

戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.2以降
long spc::SPCBase::speak ( std::string  sentence)

発話要求

指定した文字列を発話する

引数:
[in]sentence発話する文字列
戻り値:
0正常終了
0以外処理失敗
 // 「こんにちは」と発話する
 speak("こんにちは");
long spc::SPCBase::speak ( std::string  sentence,
spc::SPC_SPEAK_KIND  param 
)

発話要求(腕動作指定)

指定した文字列を発話する

引数:
[in]sentence発話する文字列。
[in]param発話中の腕の動作。
SPC_SPEAK_NORMALの場合、発話中腕を動かし、発話後は腕を戻す。
SPC_SPEAK_SIMPLEの場合、発話中に腕を動かし、終了後元には戻さない。
SPC_SPEAK_NOT_MOVE_ARMの場合は、腕を動かさずに発話する。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
 // 腕を動かさずに「こんにちは」と発話する
 speak("こんにちは", spc::SPC_SPEAK_NOT_MOVE_ARM);

立ち上がる

戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.2以降
long spc::SPCBase::startDetectMovingObject ( float  speed = 1.0)

動体検知開始要求

指定した速度以上の動体を検知する。動体を検知した場合、onCatchMovingObject関数がコールされる。

引数:
[in]speed動体の速度。速度がこの値よりも大きい動体を検知する。 なお、設定する値の目安として、SPC_MOVINGOBJECT_SPEED_FAST、SPC_MOVINGOBJECT_SPEED_MID、SPC_MOVINGOBJECT_SPEED_SLOW を定義している。 全ての動体を検知したい場合は、SPC_MOVINGOBJECT_SPEED_ALL を設定する。
戻り値:
0正常終了
0以外処理失敗
参照:
onMovingObjectCatch(float speed, spc::SPC_MOVING_OBJECT_DIRECTION direction)
stopDetectMovingObject()
long spc::SPCBase::startLED ( std::string  filePath)

LED点灯要求

指定されたLEDデータファイルに基づき、顔のLEDを点灯する。
LEDデータファイルは「PALROワークショップ」を使用して「PALROアプリケーションスタジオ」を起動し「LED表示のテスト」で作成する。
終了する場合は、stopLED関数をコールする。

引数:
[in]filePathLEDデータファイル名(フルパス)
戻り値:
0正常終了
0以外処理失敗
参照:
stopLED()
 // sample.ledというファイルで指定されたLEDを点灯する
 // (LEDデータファイルは、アプリケーションと一緒にインストールしたものとする)
 std::string dirPath;

 // アプリケーションコンフィグが保存されているディレクトリを取得する
 getDataDirPath(dirPath);

 // LEDを点灯する
 startLED(dirPath + "/sample.led");
long spc::SPCBase::startLED ( std::string  filePathMicOn,
std::string  filePathMicOff 
)

LED点灯要求(音声認識可能時、音声認識不可能時の自動切り替え)

音声認識の状態に応じた顔のLEDを点灯する。
質問中など、音声が入力できる状態では filePathMicOn で指定したLED、
音声入力できない状態では filePathMicOff で指定したLEDを、システムが自動的に点灯する。
これにより、ユーザー側へ明示的に音声入力待ちであることを示すことができる。
LEDデータファイルは「PALROワークショップ」を使用して「PALROアプリケーションスタジオ」を起動し「LED表示のテスト」で作成する。
終了する場合は、stopLED関数をコールする。

引数:
[in]filePathMicOn音声認識可能時に表示するLEDデータファイル名(フルパス)
[in]filePathMicOff音声認識不可能時に表示するLEDデータファイル名(フルパス)
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.2以降
参照:
stopLED()
 // 質問中など音声認識可能な時は、sample1.led,
 // 音声認識ができないときは sample2.ledで指定されたLEDを点灯する。
 // (LEDデータファイルは、アプリケーションと一緒にインストールしたものとする)
 std::string dirPath;

 // アプリケーションコンフィグが保存されているディレクトリを取得する
 getDataDirPath(dirPath);

 // LEDを点灯する
 // この時点でsample2.ledで指定したLEDが点灯する
 startLED(dirPath + "/sample1.led", dirPath + "/sample2.led");

 // 質問をする。
 // 質問文の発話後、音声認識が可能になったタイミングで
 // sample1.ledで指定したLEDが点灯する
 SPC_ANSWER answer;
 waitForAnswer("質問しても、いいですか?", answer);
long spc::SPCBase::startLED ( std::vector< std::string >  vLEDPath,
long  interval 
)

LEDの連続表示

指定されたLEDを一定間隔で切り替えて表示する。 終了する場合は、stopLED関数をコールする。

引数:
[in]vLEDPath表示するLEDファイルのパス(フルパス)。
[in]intervalLEDの表示間隔。単位はミリ秒。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
参照:
stopLED()
 // LEDの連続表示
 // (LEDデータファイルは、アプリケーションと一緒にインストールしたものとする)
 std::vector<std::string> vLEDPath;
 std::string dirPath;

 // アプリケーションコンフィグが保存されているディレクトリを取得する
 getDataDirPath(dirPath);

 // 表示するLEDデータファイルのパスを、表示順に格納する
 vLEDPath.push_back(dirPath + "/sample1.led");
 vLEDPath.push_back(dirPath + "/sample2.led");
 vLEDPath.push_back(dirPath + "/sample3.led");
 vLEDPath.push_back(dirPath + "/sample4.led");
 vLEDPath.push_back(dirPath + "/sample5.led");

 // sample1.led ~ sample5.ledで指定されたLEDを
 // 500ミリ秒間隔で表示する
 startLED(vLEDPath, 500);

 // 5秒スリープ
 sleep(5);

 // StartLEDで指定したLED表示を終了
 stopLED();

首制御開始要求

アプリケーション側で首動作の制御を開始する。 首動作の制御を終了する際には、stopNeckControl関数を実行すること。

戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
参照:
stopNeckControl()
moveNeck(spc::SPC_MOVE_NECK_PARAM param)
long spc::SPCBase::startTimer ( unsigned long  interval,
unsigned long  count,
long &  timerId 
)

タイマー開始要求

タイマーを開始する。 本関数実行後に指定時間が経過した場合、onTimer関数がコールされる。 タイマーを停止する場合は、stopTimer関数を使用する。 また、タイマーは複数設定可能である。

引数:
[in]intervalタイマーイベントを発生させる間隔。単位はミリ秒。
[in]countタイマーイベントを発生させる回数。0を指定すると無限回。
[out]timerIdタイマーID。stopTimer関数でタイマを停止する際に使用する。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
参照:
onTimer(long timerId)
stopTimer(long timerId)

握手検知の開始要求

握手(腕を握られたかどうか)の検知を開始する。 本関数を使用する場合、あらかじめcontrolArms関数を使用し腕の動作を停止させる必要がある。 また、握手が検知された場合、onHandShakeCatch関数がコールされる。

戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.2以降
参照:
controlArms(spc::SPC_ARM_TYPE Arms, bool move)
onHandShakeCatch(spc::SPC_ARM_TYPE hand)
stopWaitShakeHand()
long spc::SPCBase::stepping ( long  stepTime)

足踏み要求

指定された時間、その場で足踏みを行う。
周りの障害物等の状況により、途中で足踏みを停止する場合がある。
なお、歩行禁止モードである場合、ACアダプターが接続されている場合は、足踏みを行わない。

引数:
[in]stepTime足踏み時間。単位は秒。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
 // その場で5秒足踏みをする
 stepping(5);

動体検知終了要求

動体の検知を終了する

戻り値:
0正常終了
0以外処理失敗

LED消灯要求

startLED関数で点灯したLEDを終了する。

戻り値:
0正常終了
0以外処理失敗

首制御終了要求

アプリケーション側での首動作の制御を終了する。 本関数の実行後、首が自動的に動くようになる。

戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
参照:
moveNeck(spc::SPC_MOVE_NECK_PARAM param)
long spc::SPCBase::stopTimer ( long  timerId)

タイマー停止要求

実行中のタイマーを停止する。

引数:
[in]timerIdstartTimer関数で取得したタイマーID。0を指定した場合には、全てのタイマーを停止する。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降

握手検知の終了要求

握手(腕を握られたかどうか)の検知を終了する。

戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.2以降
long spc::SPCBase::takePicture ( std::string  filePath)

写真撮影要求

カメラからの画像をJPG画像として保存する

引数:
[in]filePath画像の保存先(フルパス)
戻り値:
0正常終了
0以外処理失敗
 // 写真を撮影するサンプル
 std::string dirPath, filePath;

 // アプリケーションコンフィグが保存されているディレクトリを取得する
 getDataDirPath(dirPath);

 // カメラからの画像を「sample.jpg」と言う名前で
 // アプリケーションコンフィグが保存されているディレクトリに保存する
 filePath = dirPath + "/sample.jpg";
 takePicture(filePath);

 // 保存したファイルは、Linuxのrcpコマンドやscpコマンドで
 // 別のコンピュータに転送するとよい。
 // その際は、enableNetwork()関数で、無線LANの使用を宣言すること
long spc::SPCBase::turn ( long  direction)

方向転換要求

指定された角度に方向転換を行う。
周りの障害物等の状況により、途中で方向転換を停止する場合がある。
なお、歩行禁止モードである場合、ACアダプターが接続されている場合は、方向転換を行わない。

引数:
[in]direction方向転換する角度。-90 <= direction <= 90 で指定。正の角度を指定した場合、PALROから見て左方向に方向転換する。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.4以降
 // PALROからみて左30度の方向に向きを変える
 turn(30);
long spc::SPCBase::waitForAnswer ( std::string  sentence,
spc::SPC_ANSWER answer 
)

質問要求(Yes/No)

「はい」「いいえ」「やめる」で回答する質問をする

引数:
[in]sentence発話する質問文
[out]answer処理結果。戻り値が0(正常終了)の場合のみ有効
戻り値:
0正常終了
0以外処理失敗
 // 質問処理のサンプル
 SPC_ANSWER answer;

 // 質問をする
 long rtn;
 rtn = waitForAnswer("準備はいいですか?", answer);
 if(rtn != 0){
   // waitForAnswer処理失敗
   // アプリケーションの終了
   exitComponent();
   return;
 }
 switch(answer){
   case SPC_ANSWER_YES:
     // ここに「はい」を認識したときの処理を記述する
     break;

   case SPC_ANSWER_NO:
     // ここに「いいえ」を認識したときの処理を記述する
    break;

   case SPC_ANSWER_CANCEL:
     // ここに「やめる」を認識したときの処理を記述する
     break;

   case SPC_ANSWER_TIMEOUT:
     // ここに質問がタイムアウトしたときの処理を記述する
     break;
   default:
     break;
 }
long spc::SPCBase::waitForAnswer ( std::string  sentence,
std::vector< spc::SPC_CONJUGATION_INFO conjInfo,
std::vector< spc::SPC_USUAL_ANSWER_TYPE usualAnswer,
spc::SPC_ANSWER answer 
)

質問要求(YesNo)

「はい」「いいえ」「やめる」に加え、回答として認識する単語を指定する

引数:
[in]sentence発話する質問文。
[in]conjInfo認識する単語の情報。最大5個まで指定可。
[in]usualAnswerシステムで定義している回答を使用する場合に指定する。複数指定可。
[out]answer処理結果。戻り値が0(正常終了)の場合のみ有効
戻り値:
0 正常終了
0以外 処理失敗
覚え書き:
後述の質問要求(YesNo拡張) より、精度のよい音声認識が可能である。
バージョン:
Sapie3.5以降
 // 「はい」「いいえ」の他、「伝えて」「伝えないで」、および「いいよ」「やだ」を認識する

 std::vector<spc::SPC_CONJUGATION_INFO> conjInfo;
 std::vector<spc::SPC_USUAL_ANSWER_TYPE> usualAnswer;
 SPC_ANSWER answer;

 // 質問のパラメータを設定
 conjInfo.resize(1);
 conjInfo[0].base = "ツタエ";                     // 基本部分(全角カタカナで記述する)
 conjInfo[0].suffix = SPC_SUFFIX_SA_I_SITE;       // "ツタエ" + "テ"をYes, "ツタエ" + "ナイデ"をNoとして指定する。

 usualAnswer.resize(0);
 usualAnswer[0] = SPC_USUAL_ANSWER_PERMISSION;    // 「いいよ」をYes, 「やだ」をNoとして認識する。

 // 質問をする
 long rtn;
 rtn = waitForAnswer("お伝えしましょうか?", conjInfo, usualAnswer, answer);
 if(rtn != 0){
   // waitForAnswer処理失敗
   // アプリケーションの終了
   exitComponent();
   return;
 }
 switch(answer){
   case SPC_ANSWER_YES:
     //「はい」「伝えて」「いいよ」を認識した場合、SPC_ANSWER_YESが返る
     break;

   case SPC_ANSWER_NO:
     //「いいえ」「伝えないで」「だめ」を認識した場合、SPC_ANSWER_NOが返る
    break;

   case SPC_ANSWER_CANCEL:
     //「やめる」を認識した場合、SPC_ANSWER_CANCELが返る
     break;

   case SPC_ANSWER_TIMEOUT:
     //質問がタイムアウトした場合、SPC_ANSWER_TIMEOUTが返る
     break;

   default:
     break;
 }
long spc::SPCBase::waitForAnswer ( std::string  sentence,
std::vector< std::string >  yesWords,
std::vector< std::string >  noWords,
std::vector< std::string >  cancelWords,
spc::SPC_ANSWER answer 
)

質問要求(YesNo拡張)

「はい」「いいえ」「やめる」と同様に認識させる単語を設定して質問する

引数:
[in]sentence発話する質問文
[in]yesWords「はい」と同様に認識させる単語(全角カタカナで設定、複数設定可)
[in]noWords「いいえ」と同様に認識させる単語(全角カタカナで設定、複数設定可)
[in]cancelWords「やめる」と同様に認識させる単語(全角カタカナで設定、複数設定可)
[out]answer処理結果。戻り値が0(正常終了)の場合のみ有効
戻り値:
0正常終了
0以外処理失敗
 // 「オッケー」という回答を認識するサンプル
 SPC_ANSWER answer;
 std::vector<std::string> yesWords, noWords, cancelWords;
 int recogIndex;

 // 認識したい言葉を全角カタカナで追加する
 yesWords.push_back("オッケー");

 // 「いいえ」「やめる」は通常通り
 noWords.clear();
 cancelWords.clear();

 // 質問をする
 // 今回の例では「はい」または「オッケー」と認識した場合
 // answerにSPC_ANSWER_YESが返る
 long rtn;
 rtn = waitForAnswer("用意はいいですか?",
                     yesWords,
                     noWords,
                     cancelWords,
                     answer);
long spc::SPCBase::waitForAnswer ( std::string  sentence,
std::vector< std::string >  answerWords,
spc::SPC_ANSWER answer,
std::string &  recogWord,
int &  recogIndex 
)

質問要求(回答項目設定)

回答する単語を指定して質問を行う

引数:
[in]sentence発話する質問文
[in]answerWords回答として指定する単語(全角カタカナで設定)。単語の前に「p=○|」(○は実数)を付加することで、各単語の音声認識のしやすさを調整できる(Sapie3.5β以降)。詳細は後述のサンプルを参考のこと。
[out]answer処理結果。戻り値が0(正常終了)の場合のみ有効
[out]recogWord認識した単語。処理結果が SPC_ANSWER_RECOGEND の場合のみ有効(全角カタカナ)
[out]recogIndex認識した単語のanswerWords内インデックス値
戻り値:
0正常終了
0以外処理失敗
覚え書き:
Sapie3.5β以降では、「やめる」を認識した場合、answerWordsの設定に関係なく answerに SPC_ANSWER_CANCEL が返る。
 // リンゴ、ミカン、バナナのいずれかを認識する
 SPC_ANSWER answer;
 std::vector<std::string> answerWords;
 std::string recogWord;
 int recogIndex;

 // 認識したい言葉を全角カタカナで追加する
 answerWords.push_back("リンゴ");
 answerWords.push_back("バナナ");
 answerWords.push_back("ミカン");

 // 質問をする
 long rtn;
 rtn = waitForAnswer("リンゴ。バナナ。ミカン。どれが好きですか?",
                     answerWords,
                     answer,
                     recogWord,
                     recogIndex);
 if(rtn != 0){
   // waitForAnswer処理失敗
   // アプリケーションの終了
   exitComponent();
   return;
 }
 switch(answer){
   case SPC_ANSWER_RECOGEND:
     // ここに質問が正常終了した場合の処理を記述する
     // 認識した単語は、recogWord、および answerWords[recogIndex] で取得できる
     break;

   case SPC_ANSWER_CANCEL:
     // ここに「やめる」を認識した時の処理を記述する
     break;

   case SPC_ANSWER_TIMEOUT:
     // ここに質問処理がタイムアウトした時の処理を記述する
     break;

   default:
     break;
 }
 // 各単語に対して音声認識のしやすさを設定するサンプル(Sapie3.5以降で使用可能)
 // (リンゴ、ミカン、バナナのいずれかを認識する)
 SPC_ANSWER answer;
 std::vector<std::string> answerWords;
 std::string recogWord;
 int recogIndex;

 // 認識したい言葉を全角カタカナで追加し、
 // 音声認識のしやすさを設定する(Sapie3.5β以降)
 // 単語の前に「p=○|」(○は実数)をつけることで調節する。
 // この値が大きい(正の数)ほど、単語の認識がされにくくなり、小さい(負の数)ほど、認識されやすくなる。

 answerWords.push_back("p=10.0|リンゴ");  // 正の値を設定したため、「リンゴ」は認識しづらくなる
 answerWords.push_back("p=-30.0|バナナ"); // 負の値を設定したため、「バナナ」は認識しやすくなる
 answerWords.push_back("ミカン");

 // 質問をする
 long rtn;
 rtn = waitForAnswer("リンゴ。バナナ。ミカン。どれが好きですか?",
                     answerWords,
                     answer,
                     recogWord,
                     recogIndex);
 if(rtn != 0){
   // waitForAnswer処理失敗
   // アプリケーションの終了
   exitComponent();
   return;
 }
 switch(answer){
   case SPC_ANSWER_RECOGEND:
     // ここに質問が正常終了した場合の処理を記述する
     // 認識した単語は、recogWord で取得できる
     // ※ answerWords[recogIndex] として認識した単語を取得する場合、設定した[p=○|]部分がそのまま返されるため注意すること
     break;

   case SPC_ANSWER_CANCEL:
     // ここに「やめる」を認識した時の処理を記述する
     break;

   case SPC_ANSWER_TIMEOUT:
     // ここに質問処理がタイムアウトした時の処理を記述する
     break;

   default:
     break;
 }
long spc::SPCBase::waitForAnswer ( std::string  sentence,
std::vector< std::string >  trueWords,
std::vector< std::string >  falseWords,
spc::SPC_ANSWER answer,
std::string &  recogWord,
int &  recogIndex 
)

質問要求(正解・不正解)

回答として正解および不正解と判定する単語を指定した質問を行う。

引数:
[in]sentence発話する質問文
[in]trueWords正解として指定する単語(全角カタカナで設定、複数設定可)
[in]falseWords不正解として指定する単語(全角カタカナで設定、複数設定可)
[out]answer処理結果。戻り値が0(正常終了)の場合のみ有効。
正解に指定した単語を認識した場合は SPC_ANSWER_TRUE、
不正解に指定した単語を認識した場合は SPC_ANSWER_FALSE、
それ以外の単語を認識した場合は SPC_ANSWER_UNKNOWN が返される。
[out]recogWord認識した単語。処理結果が SPC_ANSWER_TRUE または SPC_ANSWER_FALSE の場合のみ有効。
[out]recogIndex認識した単語のインデックス値。処理結果が SPC_ANSWER_TRUE または SPC_ANSWER_FALSE の場合のみ有効。
SPC_ANSWER_TRUE なら trueWords内、SPC_ANSWER_FALSE の場合は falseWords内のインデックス値が返される。
戻り値:
0正常終了
0以外処理失敗
バージョン:
Sapie3.2以降
覚え書き:
Sapie3.5以降では、「やめる」を認識した場合、trueWords、falseWordsの設定に関係なく answerに SPC_ANSWER_CANCEL が返る。
 // 正解および不正解と判定する単語を指定して質問する
 std::vector<std::string> trueWords,falseWords;
 SPC_ANSWER answer;
 std::string recogWord;
 int recogIndex;

 // 正解とする単語を追加
 trueWords.push_back("ミカン");
 trueWords.push_back("ボール");

 // 不正解とする単語を追加
 falseWords.push_back("サイコロ");
 falseWords.push_back("ビル");

 // 質問を実行する
 long rtn;
 rtn = waitForAnswer("丸いものの名前を言ってください",
                     trueWords,
                     falseWords,
                     answer,
                     recogWord,
                     recogIndex);
 if(rtn != 0){
   // waitForAnswer処理失敗
   // アプリケーションの終了
   exitComponent();
   return;
 }
 switch(answer){
   case SPC_ANSWER_TRUE:
     // 正解に指定した単語を認識した場合
     // この例では「ミカン」または「ボール」と認識した
     break;

   case SPC_ANSWER_FALSE:
     // 不正解に指定した単語を認識した場合
     // この例では「サイコロ」または「ビル」と認識した
     break;

   case SPC_ANSWER_CANCEL:
     // 「やめる」を認識した
     break;

   case SPC_ANSWER_TIMEOUT:
     // 質問がタイムアウトした
     break;

   default:
     break;
 }
long spc::SPCBase::waitForAnswer ( std::string  sentence,
spc::SPC_ANSWER answer,
std::string &  recog 
)

質問要求(自由回答)

特定の言葉を指定せず音声認識を行う。

引数:
[in]sentence発話する質問文。
[out]answer処理結果。戻り値が0(正常終了)の場合のみ有効。
[out]recog認識した文字列。ひらがな・カタカナ・漢字等が混ざった文字列が格納される。
answer の値が SPC_ANSWER_FREE_WORD (自由回答) の場合に有効。
戻り値:
0正常終了
-2現在使用不可
上記以外処理失敗
覚え書き:
戻り値が-2 (使用不可) の場合、システムにより本機能の使用が制限されている。
その際はACアダプターを接続して実行すること。
バージョン:
Sapie3.5以降
 // 自由回答のサンプル
 SPC_ANSWER answer;
 std::string recog;

 // 質問をする
 long rtn;
 rtn = waitForAnswer("なにが好きですか?", answer, recog);
 if(rtn != 0){
   // waitForAnswer処理失敗
   // アプリケーションの終了
   exitComponent();
   return;
 }
 switch(answer){
   case SPC_ANSWER_FREE_WORD:
     // 自由回答を認識した
     // 認識結果は recog に格納される。
     break;

   case SPC_ANSWER_TIMEOUT:
     // 質問がタイムアウトした
     break;

   case SPC_ANSWER_RETRYOUT:
     // 質問を再確認したが回答が聞き取れなかった
     break;

   default:
     break;
 }
long spc::SPCBase::walk ( spc::SPC_WALK_TYPE  type,
long  walkparam,
float  angle 
)

歩行要求

指定された歩数または距離を歩行する。
周りの障害物等の状況により、途中で歩行を停止する場合がある。
なお、歩行禁止モードである場合、ACアダプターが接続されている場合は、歩行を行わない。

引数:
[in]type歩行タイプ
[in]walkparam歩行パラメータ。
歩行タイプに SPC_WALK_TYPE_STEPS を指定した場合は歩数、
SPC_WALK_TYPE_DISTANCE を指定した場合は歩行する距離(mm)を指定する
[in]angle歩行中に旋回する角度。-180.0 < angle < 180.0 で指定。正の角度を指定した場合、PALROから見て左方向に旋回する。
戻り値:
0正常終了
0以外処理失敗
参照:
getWalkingMode(bool &walkingMode);
setWalkingMode(bool walkingMode);
 // 正面に5歩歩く
 walk(spc::SPC_WALK_TYPE_STEPS, 5, 0.0);
long spc::SPCBase::walk ( spc::SPC_WALK_TYPE  type,
long  walkparam,
float  angle,
bool  sitdown 
)

歩行要求(歩行後の動作設定可能)

指定された歩数または距離を歩行する。
周りの障害物等の状況により、途中で歩行を停止する場合がある。
なお、歩行禁止モードである場合、ACアダプターが接続されている場合は、歩行を行わない。

引数:
[in]type歩行タイプ
[in]walkparam歩行パラメータ。
歩行タイプに SPC_WALK_TYPE_STEPS を指定した場合は歩数、
SPC_WALK_TYPE_DISTANCE を指定した場合は歩行する距離(mm)を指定する。
[in]angle歩行中に旋回する角度。-180.0 < angle < 180.0 で指定。正の角度を指定した場合、PALROから見て左方向に旋回する。
[in]sitdown歩行後に座るかどうかを指定。trueで歩行後に座る。falseの場合は座らない。
戻り値:
0正常終了
0以外処理失敗
参照:
getWalkingMode(bool &walkingMode);
setWalkingMode(bool walkingMode);
 // 正面に5歩歩く。歩行した後も座らない
 walk(spc::SPC_WALK_TYPE_STEPS, 5, 0.0, false);

このクラスの説明は次のファイルから生成されました: