SPC
1.7.0
|
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以外 | 処理失敗 |
// 左腕の動作を停止する controlArms(SPC_ARM_LEFT, false); // 発話する(右腕だけ動作する) speak("こんにちは、パルロです"); // 左腕の動作を再開する controlArms(SPC_ARM_LEFT, true);
long spc::SPCBase::disableNetwork | ( | ) |
ネットワーク有効化完了要求
アプリケーションから無線LAN接続の終了を宣言する。
ただし、他のアプリケーションでも無線LANを使用している場合、本関数をコールしてもPALROはネットワークから切断されない。
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::enableNetwork | ( | ) |
ネットワーク有効化要求
無線LANへの接続を開始する。
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::exitComponent | ( | ) |
アプリケーション終了要求
アプリケーションを終了する。本関数の実行後、onFinalize関数がコールされ、アプリケーションは終了する。
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::expressFeeling | ( | spc::SPC_FEELING_TYPE | feelingType | ) |
感情動作要求
PALROの感情を表すための動作を行う
[in] | feelingType | 感情の種別 |
0 | 正常終了 |
0以外 | 処理失敗 |
// 喜びの感情を表現する expressFeeling(SPC_FEELING_JOY);
long spc::SPCBase::getAppDiskUsage | ( | float & | diskInfo | ) |
自アプリケーションのディスク使用量取得
呼び出し元アプリケーションのディスク使用量を取得する。
[out] | diskInfo | 自アプリケーションディスク使用量容量。単位はMB(メガバイト) |
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::getAppDiskUsage | ( | std::string | appName, |
float & | diskInfo | ||
) |
指定アプリケーションのディスク使用量取得
指定したアプリケーションのディスク使用量を取得する。
[in] | appName | アプリケーション名 |
[out] | diskInfo | 指定アプリケーションディスク使用量容量。単位はMB(メガバイト) |
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::getBatteryStatus | ( | spc::SPC_BATTERY_STATUS & | status | ) |
バッテリー状態の取得要求
[out] | status | バッテリーの状態 |
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::getDataDirPath | ( | std::string & | dirPath | ) |
アプリケーションプロパティ格納ディレクトリの取得
アプリケーションプロパティのインストール先ディレクトリ(データディレクトリ)を取得する。
このディレクトリには「PALROアプリケーションスタジオ」-「インストール」の「アプリケーションプロパティの保存フォルダー」で指定した場所にあるファイルが格納される。
取得できるパスは /usr/palro/etc/apl/(アプリケーション名) 。
[out] | dirPath | ディレクトリパス |
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::getDiskFreeSize | ( | float & | diskInfo | ) |
ディスク空き容量取得要求
PALROが使用しているディスクの空き容量を取得する。
[out] | diskInfo | ディスク空き容量。単位はMB(メガバイト) |
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::getDiskUsage | ( | float & | diskInfo | ) |
ディスクの使用率取得
PALRO全体でのディスクの使用率を取得する
[out] | diskInfo | ディスクの使用率。単位はパーセント |
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::getInvalidModeStatus | ( | spc::SPC_SERVO_INVALID_MODE_STATUS & | status | ) |
サーボ無効化状態の取得
熱上昇等の理由により、システム側で停止しているサーボがあるかどうかを取得する。
[out] | status | サーボ無効化情報 |
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::getPoseStatus | ( | spc::SPC_POSE_STATUS_KIND & | pose | ) |
姿勢取得要求
現在の姿勢を取得する。
[out] | pose | 現在の姿勢 |
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::getServoInfo | ( | std::vector< spc::SPC_SERVO_INFO > & | servoInfos | ) |
サーボ情報の取得
サーボ情報を取得する。サーボ位置とサーボIDの対応は、
PALRO Gardenの 【 デベロッパー 】 - 【 ドキュメント 】 の " PALRO Motion Editor ガイド " を参照のこと。
[out] | servoInfos | サーボ情報 |
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::getVolume | ( | long & | volume | ) |
音量取得要求
現在の音量を取得する
[out] | volume | 音量設定値。0(最小)~15(最大)が返される。 |
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::getWalkingMode | ( | bool & | walkingMode | ) |
歩行モード取得要求
現在の歩行モードを取得する。
[out] | walkingMode | 現在の歩行モード。 歩行可能モードの場合はtrue、 歩行禁止モードの場合はfalseが返る。 |
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::isServoConnection | ( | bool & | connection | ) |
サーボ通信可能状態の取得
全身のサーボと正常に通信できているかを取得する。
[out] | connection | 現在のサーボ通信可能状態。 全身のサーボ通信が正常の場合は true。 サーボ通信の異常がある場合は false。 |
0 | 正常終了 |
0以外 | 処理失敗 |
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以外 | 処理失敗 |
// 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以外 | 処理失敗 |
// モーションと音声ファイルの再生と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以外 | 処理失敗 |
// モーションと発話を同時に実行する // (モーションファイルは、アプリケーションと一緒にインストールしたものとする) 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以外 | 処理失敗 |
// モーションと発話と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] | loopMotion | trueに設定した場合は、モーションよりも発話または音声再生が長い場合、再度モーションを実行し、終了時点でモーションも終了する。 syncMotionTypeにSPC_SYNCMOTION_SPEAKまたはSPC_SYNCMOTION_SOUNDの設定が無い場合はこの設定は使用されない。 |
0 | 正常終了 |
0以外 | 処理失敗 |
// モーションと発話と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 // 発話よりモーションが先に終了した場合、再度モーションを実行する );
long spc::SPCBase::moveArm | ( | spc::SPC_MOVE_ARM_PARAM | param | ) |
腕動作要求
角度と時間を指定し、腕を動かす。
設定可能な角度は、PALRO Gardenの 【 デベロッパー 】 - 【 ドキュメント 】 の " PALRO Motion Editor ガイド " を参照のこと。
[in] | param | 腕動作パラメータ |
0 | 正常終了 |
0以外 | 処理失敗 |
// 腕を動作させるサンプル 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);
long spc::SPCBase::moveNeck | ( | spc::SPC_MOVE_NECK_PARAM | param | ) |
首動作要求
角度と時間を指定し、首を動かす。
設定可能な角度は、PALRO Gardenの 【 デベロッパー 】 - 【 ドキュメント 】 の " PALRO Motion Editor ガイド " を参照のこと。
なお、startNeckControl関数を実行していない場合、本関数の終了後、首は自動的に動きだすので注意すること。
[in] | param | 首動作パラメータ |
0 | 正常終了 |
0以外 | 処理失敗 |
// 首を動かすサンプル 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] | timerId | startTimer関数で取得したタイマー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以外 | 処理失敗 |
// マクロを使用したログ出力サンプル // ログレベルを設定する 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 | ) |
サウンドファイル再生要求
指定された音声ファイルを再生する。再生可能な形式は以下の通り。
[in] | filePath | 音声ファイル(フルパス) |
0 | 正常終了 |
0以外 | 処理失敗 |
// 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以外 | 処理失敗 |
// マイクからの音声を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以外 | 処理失敗 |
// PSDの変動を検知した際にアプリケーションを終了させる // (PALROの左耳と口元を覆うと、アプリケーションは終了する) setActionPSDFluctuation(SPC_EXIT_COMPONENT_PSD_FLUCTUATION);
static long spc::SPCBase::setLogLevel | ( | spc::SPC_LOG_LEVEL | logLevel | ) | [static] |
ログレベル設定要求
アプリケーションのログレベルを設定する。 設定したログレベル以上のログが、アプリケーションログに出力される。
[in] | logLevel | ログレベル |
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::setVolume | ( | long | volume | ) |
音量設定要求
音量を設定する
[in] | volume | 音量設定値。0(最小)~15(最大)で指定する。 |
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::setWaitForAnswerTimeOut | ( | long | sec | ) |
質問要求タイムアウト時間設定
質問要求(waitForAnswer)のタイムアウト時間を設定する。
[in] | sec | 設定するタイムアウト時間(秒)。 一度設定すると、その後の質問動作全てで有効になる。0を設定した場合、システムで決められたデフォルトの値に設定される。 |
0 | 正常終了 |
0以外 | 処理失敗 |
// 質問要求のタイムアウトを20秒に設定する setWaitForAnswerTimeOut(20);
long spc::SPCBase::setWalkingMode | ( | bool | walkingMode | ) |
歩行モード設定要求
歩行モードを設定する。 歩行禁止モードを解除することができるため、本関数を使用したアプリケーションを作成する場合は注意すること。
[in] | walkingMode | 設定する歩行モード。 歩行可能モードの場合はtrue、 歩行禁止モードの場合はfalseを設定する。 |
0 | 正常終了 |
0以外 | 処理失敗 |
// 歩行可能モードにするサンプル bool walkingMode; // 現在の歩行モードを取得 getWalkingMode(walkingMode); if(walkingMode == false){ // 現在歩行禁止モードなら、歩行可能モードにする setWalkingMode(true); }
long spc::SPCBase::sitDown | ( | ) |
座る
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::speak | ( | std::string | sentence | ) |
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以外 | 処理失敗 |
// 腕を動かさずに「こんにちは」と発話する speak("こんにちは", spc::SPC_SPEAK_NOT_MOVE_ARM);
long spc::SPCBase::standUp | ( | ) |
立ち上がる
0 | 正常終了 |
0以外 | 処理失敗 |
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以外 | 処理失敗 |
long spc::SPCBase::startLED | ( | std::string | filePath | ) |
LED点灯要求
指定されたLEDデータファイルに基づき、顔のLEDを点灯する。
LEDデータファイルは「PALROワークショップ」を使用して「PALROアプリケーションスタジオ」を起動し「LED表示のテスト」で作成する。
終了する場合は、stopLED関数をコールする。
[in] | filePath | LEDデータファイル名(フルパス) |
0 | 正常終了 |
0以外 | 処理失敗 |
// 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以外 | 処理失敗 |
// 質問中など音声認識可能な時は、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] | interval | LEDの表示間隔。単位はミリ秒。 |
0 | 正常終了 |
0以外 | 処理失敗 |
// 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();
long spc::SPCBase::startNeckControl | ( | ) |
首制御開始要求
アプリケーション側で首動作の制御を開始する。 首動作の制御を終了する際には、stopNeckControl関数を実行すること。
0 | 正常終了 |
0以外 | 処理失敗 |
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以外 | 処理失敗 |
long spc::SPCBase::startWaitShakeHand | ( | ) |
握手検知の開始要求
握手(腕を握られたかどうか)の検知を開始する。 本関数を使用する場合、あらかじめcontrolArms関数を使用し腕の動作を停止させる必要がある。 また、握手が検知された場合、onHandShakeCatch関数がコールされる。
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::stepping | ( | long | stepTime | ) |
足踏み要求
指定された時間、その場で足踏みを行う。
周りの障害物等の状況により、途中で足踏みを停止する場合がある。
なお、歩行禁止モードである場合、ACアダプターが接続されている場合は、足踏みを行わない。
[in] | stepTime | 足踏み時間。単位は秒。 |
0 | 正常終了 |
0以外 | 処理失敗 |
// その場で5秒足踏みをする stepping(5);
long spc::SPCBase::stopDetectMovingObject | ( | ) |
動体検知終了要求
動体の検知を終了する
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::stopLED | ( | ) |
LED消灯要求
startLED関数で点灯したLEDを終了する。
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::stopNeckControl | ( | ) |
首制御終了要求
アプリケーション側での首動作の制御を終了する。 本関数の実行後、首が自動的に動くようになる。
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::stopTimer | ( | long | timerId | ) |
タイマー停止要求
実行中のタイマーを停止する。
[in] | timerId | startTimer関数で取得したタイマーID。0を指定した場合には、全てのタイマーを停止する。 |
0 | 正常終了 |
0以外 | 処理失敗 |
long spc::SPCBase::stopWaitShakeHand | ( | ) |
握手検知の終了要求
握手(腕を握られたかどうか)の検知を終了する。
0 | 正常終了 |
0以外 | 処理失敗 |
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以外 | 処理失敗 |
// 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(正常終了)の場合のみ有効 |
// 「はい」「いいえ」の他、「伝えて」「伝えないで」、および「いいよ」「やだ」を認識する 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以外 | 処理失敗 |
// リンゴ、ミカン、バナナのいずれかを認識する 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以外 | 処理失敗 |
// 正解および不正解と判定する単語を指定して質問する 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 | 現在使用不可 |
上記以外 | 処理失敗 |
// 自由回答のサンプル 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以外 | 処理失敗 |
// 正面に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以外 | 処理失敗 |
// 正面に5歩歩く。歩行した後も座らない walk(spc::SPC_WALK_TYPE_STEPS, 5, 0.0, false);