SPCBase  1.10.0
クラス spc::SPCBase

SPC基底クラス [詳細]

#include <spcbase2.h>

Public メソッド

 SPCBase ()
 コンストラクタ。
virtual ~SPCBase ()
 デストラクタ。
long speak (std::string sentence)
 Palmi に発話させる。
long speak (std::string sentence, spc::SPC_SPEAK_KIND param)
 Palmi に発話させる。
long speakError (std::string sentence)
 エラーが発生したことを Palmi に発話させる。
long waitForAnswer (std::string sentence, spc::SPC_ANSWER &answer)
 Palmi が質問を行い、その質問に対する相手の回答を待ち受ける。
long waitForAnswer (std::string sentence, std::vector< std::string > answerWords, spc::SPC_ANSWER &answer, std::string &recogWord, int &recogIndex)
 Palmi が質問を行い、その質問に対する相手の回答を待ち受ける。
long waitForAnswer (std::string sentence, std::vector< std::string > yesWords, std::vector< std::string > noWords, std::vector< std::string > cancelWords, spc::SPC_ANSWER &answer)
 Palmi が質問を行い、その質問に対する相手の回答を待ち受ける。
long waitForAnswer (std::string sentence, std::vector< std::string > trueWords, std::vector< std::string > falseWords, spc::SPC_ANSWER &answer, std::string &recogWord, int &recogIndex)
 Palmi が質問を行い、その質問に対する相手の回答を待ち受ける。
long waitForAnswer (std::string sentence, spc::SPC_ANSWER &answer, std::string &recog)
 Palmi が質問を行い、その質問に対する相手の回答を待ち受ける。
long waitForAnswer (std::string sentence, std::vector< spc::SPC_CONJUGATION_INFO > conjInfo, std::vector< spc::SPC_USUAL_ANSWER_TYPE > usualAnswer, spc::SPC_ANSWER &answer)
 Palmi が質問を行い、その質問に対する相手の回答を待ち受ける。
long setWaitForAnswerTimeOut (long sec)
 waitForAnswer 関数のタイムアウト時間を設定する。
long setWaitForAnswerSystemResponse (spc::SPC_SYSTEM_RESPONSE_KIND kind, std::string responseStr)
 Palmi が相手の回答を認識した後、最初に発話する文字列を設定する。
long setWaitForAnswerSystemResponse (std::string recogWord, std::string responseStr)
 Palmi が相手の回答を認識した後、最初に発話する文字列を設定する。
long takePicture (std::string filePath)
 Palmi に写真を撮影させる。
long takePicture (spc::SPC_TAKE_PICTURE_KIND kind, std::string filePath)
 Palmi に写真を撮影させる。
long takePicture (spc::SPC_TAKE_PICTURE_KIND kind, spc::SPC_TAKE_PICTURE_ACTION action, std::string filePath)
 Palmi に写真を撮影させる。
long getWalkingMode (bool &walkingMode)
 Palmi が歩けるかどうかを取得する。
long walk (spc::SPC_WALK_TYPE type, long walkparam, float angle)
 Palmi を歩かせる。
long walk (spc::SPC_WALK_TYPE type, long walkparam, float angle, bool sitdown)
 Palmi を歩かせる。
long turn (long direction)
 Palmi を指定された角度に方向転換させる。
long standUp ()
 Palmi を立たせる。
long sitDown ()
 Palmi を座らせる。
long startMotion (std::string filePath)
 Palmi にモーションファイルで定義した動きを再生させる。
long startMotion (std::string filePath, spc::SPC_SYNCMOTION_PARAM syncMotionParam)
 Palmi にモーションファイルで定義した動きを再生させる。
long startMotion (std::string filePath, std::vector< spc::SPC_SYNCMOTION_PARAM > syncMotionParams)
 Palmi にモーションファイルで定義した動きを再生させる。
long getServoInfo (std::vector< spc::SPC_SERVO_INFO > &servoInfos)
 アクチュエーターの情報を取得する。
long getInvalidModeStatus (spc::SPC_SERVO_INVALID_MODE_STATUS &status)
 システム側で停止させているアクチュエーターがあるかどうかを取得する。
long isServoConnection (bool &connection)
 Palmiの アクチュエーターと正常に通信できているかを取得する。
long loadConfig (std::string sectName, std::string confName, std::string &value)
 コンフィグファイルから設定値を取得する。
long startLED (std::string filePath)
 Palmi のスティップリングレンズを点灯させる。
long startLED (std::vector< std::string > vLEDPath, long interval)
 Palmi のスティップリングレンズを点灯させる。
long stopLED ()
 Palmi のスティップリングレンズの点灯を停止する。
long startBackLight (spc::SPC_BACKLIGHT_KIND kind, unsigned long color)
 Palmi のスティップリングレンズ下部の左右の部分を点灯させる。
long stopBackLight ()
 Palmi のスティップリングレンズ下部の左右の部分を点灯を停止する。
long enableNetwork ()
 アプリケーションからネットワークに接続できるようにする。
long disableNetwork ()
 アプリケーションをネットワークから切断する。
long playSound (std::string filePath)
 Palmi が音声ファイルを再生する。
long recordSound (std::string filePath, long sec)
 Palmi に録音させる。
long setActionPOTFluctuation (spc::SPC_ACTION_POT_FLUCTUATION_TYPE action)
 Palmi の頭をさわられたときの、アプリケーションの動作を設定する。
long controlArms (spc::SPC_ARM_TYPE Arms, bool move)
 Palmi の腕の動きを制限する。
long expressFeeling (spc::SPC_FEELING_TYPE feelingType)
 Palmi に感情を表す動きをさせる。
long startTimer (unsigned long interval, unsigned long count, long &timerId)
 タイマーを設定する。
long stopTimer (long timerId)
 タイマーを停止する。
long startNeckControl ()
 アプリケーションで Palmi の首を動かせるようにする。
long stopNeckControl ()
 Palmi の首を自動で動くようにする。
long moveNeck (spc::SPC_MOVE_NECK_PARAM param)
 Palmi の首を動かす。
long moveNeckRelative (spc::SPC_MOVE_NECK_PARAM param)
 Palmi の首を動かす。
long lookFront (long execTime)
 Palmi に正面を向かせる。
long moveArm (spc::SPC_MOVE_ARM_PARAM param)
 Palmi の腕を動かす。
long getBatteryStatus (spc::SPC_BATTERY_STATUS &status)
 Palmi のバッテリーの状態を取得する。
long getPoseStatus (spc::SPC_POSE_STATUS_KIND &pose)
 Palmi の現在の姿勢を取得する。
long setVolume (long volume)
 Palmi のスピーカーの音量を設定する。
long getVolume (long &volume)
 Palmi のスピーカーの音量を取得する。
long getDataDirPath (std::string &dirPath)
 アプリケーションに必要なファイルがあるディレクトリパスを取得する。
long getDiskUsage (float &diskInfo)
 Palmi 全体でのディスクの使用率を取得する。
long getDiskFreeSize (float &diskInfo)
 Palmi が使用しているディスクの空き容量を取得する。
long getAppDiskUsage (float &diskInfo)
 アプリケーションが使用しているディスクの容量を取得する。
long mountUSB ()
 Palmi に取り付けた USB メモリーを使用できるようにする。
long getUSBDirPath (std::string &dirPath)
 USB メモリーのディレクトリパスを取得する。
long getUSBFreeSize (float &diskInfo)
 USB メモリーの空き容量を取得する。
long umountUSB ()
 Palmi に取り付けた USB メモリーを取り外せるようにする。
long mountMicroSD ()
 Palmi に取り付けた microSD カードを使用できるようにする。
long getMicroSDDirPath (std::string &dirPath)
 microSD カードのディレクトリパスを取得する。
long getMicroSDFreeSize (float &diskInfo)
 microSDカードの空き容量を取得する。
long umountMicroSD ()
 Palmi に取り付けた microSD カードを取り外せるようにする。
long exitComponent ()
 アプリケーションを終了する。
virtual void onInitialize ()
 アプリケーション開始イベント。
void onFaceCatch (std::string name)
 顔認識イベント。
virtual void onFaceDrop ()
 顔認識不可イベント。
virtual void onPOTFluctuationCatch ()
 POTセンサーイベント。
virtual void onTimer (long timerId)
 タイマーイベント。
virtual void onFinalize ()
 アプリケーション終了イベント。

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 
)

Palmi の腕の動きを制限する。

  • Palmi が発話やモーションを再生する際に、腕を動かすか、動かさないか を設定する。
  • この設定は、この関数で再度設定するまで有効である。
引数:
[in]Arms制御する腕の指定。SPC_ARM_LEFT で左腕、SPC_ARM_RIGHT で右腕、SPC_ARM_BOTH で両腕を制御する。
[in]move動作フラグ。trueを指定すると腕が動き、falseを指定すると腕が動かなくなる。
戻り値:
0正常終了
0以外処理失敗
 // 左腕の動作を止める
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 controlArms(SPC_ARM_LEFT, false);

 // 発話させる(Palmi の右腕だけ動作する)
 speak("こんにちは、パルミーです");

 // 左腕を動くようにする
 controlArms(SPC_ARM_LEFT, true);

アプリケーションをネットワークから切断する。

  • enableNetwork 関数でネットワークを使用した場合は、この関数をアプリケーション終了時に呼び出すこと。
戻り値:
0正常終了
0以外処理失敗

アプリケーションからネットワークに接続できるようにする。

  • この関数の呼び出し後、アプリケーションからネットワークを使用する Linux のコマンド( wget, curl 等)が使用できるようになる。
  • この関数を使用した場合、disableNetwork 関数を呼び出し、ネットワークへの接続を終了すること。
戻り値:
0正常終了
0以外処理失敗

アプリケーションを終了する。

  • この関数の呼び出し後、onFinalize 関数が呼び出され、アプリケーションは終了する。
戻り値:
0正常終了
0以外処理失敗

Palmi に感情を表す動きをさせる。

引数:
[in]feelingType動作の種別。詳細は spc::SPC_FEELING_TYPE を参照のこと。
戻り値:
0正常終了
0以外処理失敗
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 // 喜びを表現した動作をさせる。
 expressFeeling(SPC_FEELING_JOY);
long spc::SPCBase::getAppDiskUsage ( float &  diskInfo)

アプリケーションが使用しているディスクの容量を取得する。

  • システムが破壊される可能性があるため、1つのアプリケーションで使用できる容量は100 MB (メガバイト) に制限されている。
引数:
[out]diskInfoディスク使用量。単位は MB (メガバイト)。
戻り値:
0正常終了
0以外処理失敗

Palmi のバッテリーの状態を取得する。

引数:
[out]statusバッテリーの状態。詳細は spc::SPC_BATTERY_STATUS を参照のこと。
戻り値:
0正常終了
0以外処理失敗
long spc::SPCBase::getDataDirPath ( std::string &  dirPath)

アプリケーションに必要なファイルがあるディレクトリパスを取得する。

  • このディレクトリに、コンフィグファイルや、Visial Studio で seeddata ディレクトリに追加したファイルが保存されている。
引数:
[out]dirPathディレクトリパス。
戻り値:
0正常終了
0以外処理失敗
long spc::SPCBase::getDiskFreeSize ( float &  diskInfo)

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

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

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

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

システム側で停止させているアクチュエーターがあるかどうかを取得する。

引数:
[out]statusアクチュエーターの情報。
停止させているアクチュエーターがある場合は spc::SPC_SERVO_INVALID_MODE_STATUS_NON (=0) 以外の値が返る。
詳細は spc::SPC_SERVO_INVALID_MODE_STATUS を参照のこと。
覚え書き:
システム側で停止させているアクチュエーターは、発話やモーションをさせても動作しない。
戻り値:
0正常終了
0以外処理失敗
long spc::SPCBase::getMicroSDDirPath ( std::string &  dirPath)

microSD カードのディレクトリパスを取得する。

  • この関数で取得したディレクトリパス上でファイルを読み書きすること。
  • microSD カードに読み書きする場合は、必ずこの関数でパスを取得すること。
引数:
[out]dirPathmicroSD カードの 「_PALMI_/アプリ名」 ディレクトリへのパス。
覚え書き:
アプリケーションから microSD カードを使用する場合は、最初に mountMicroSD 関数を呼び出すこと。
戻り値:
0正常終了
上記以外処理失敗
参照:
mountMicroSD()
long spc::SPCBase::getMicroSDFreeSize ( float &  diskInfo)

microSDカードの空き容量を取得する。

  • この関数は、mountMicroSD 関数の後に呼び出すこと。
引数:
[out]diskInfomicroSD カードの空き容量。単位は MB (メガバイト)。
戻り値:
0正常終了
-2mountMicroSD 関数を呼び出す前に、この関数を呼び出した。
上記以外処理失敗
参照:
mountMicroSD()

Palmi の現在の姿勢を取得する。

引数:
[out]posePalmiの現在の姿勢。詳細は spc::SPC_POSE_STATUS_KIND を参照のこと。
戻り値:
0正常終了
0以外処理失敗
long spc::SPCBase::getServoInfo ( std::vector< spc::SPC_SERVO_INFO > &  servoInfos)

アクチュエーターの情報を取得する。

引数:
[out]servoInfosアクチュエーターの情報。詳細は spc::SPC_SERVO_INFO を参照のこと。
アクチュエーターのID( spc::SPC_SERVO_INFO:servoId )と、アクチュエーターの位置の対応は、
Palmi Garden の "Palmi Motion Editorガイド"を参照のこと。
戻り値:
0正常終了
0以外処理失敗
long spc::SPCBase::getUSBDirPath ( std::string &  dirPath)

USB メモリーのディレクトリパスを取得する。

  • この関数で取得したパス上でファイルを読み書きすること。
  • USBメモリー に読み書きする場合は、必ずこの関数でパスを取得すること。
引数:
[out]dirPathUSB メモリーの 「_PALMI_/アプリ名」 ディレクトリへのパス。
覚え書き:
アプリケーションから USB メモリーを使用する場合は、最初に mountUSB 関数を呼び出すこと。
戻り値:
0正常終了
上記以外処理失敗
long spc::SPCBase::getUSBFreeSize ( float &  diskInfo)

USB メモリーの空き容量を取得する。

  • この関数を呼び出す前に、mountUSB 関数を呼び出すこと。
引数:
[out]diskInfoUSB メモリーの空き容量。単位は MB (メガバイト)
戻り値:
0正常終了
-2mountUSB 関数を呼び出す前に、この関数を呼び出した。
上記以外処理失敗
long spc::SPCBase::getVolume ( long &  volume)

Palmi のスピーカーの音量を取得する。

引数:
[out]volume音量設定値。0(最小)~15(最大)が格納される。
戻り値:
0正常終了
0以外処理失敗
参照:
setVolume(long volume)
long spc::SPCBase::getWalkingMode ( bool &  walkingMode)

Palmi が歩けるかどうかを取得する。

引数:
[out]walkingMode歩ける場合は true、歩けない場合は false を格納する。
戻り値:
0正常終了
0以外処理失敗
long spc::SPCBase::isServoConnection ( bool &  connection)

Palmiの アクチュエーターと正常に通信できているかを取得する。

引数:
[out]connection現在のアクチュエーター通信状態。
通信が正常の場合は true が格納される。
通信ができていないアクチュエーターがある場合は false が格納される。
戻り値:
0正常終了
0以外処理失敗
long spc::SPCBase::loadConfig ( std::string  sectName,
std::string  confName,
std::string &  value 
)

コンフィグファイルから設定値を取得する。

  • コンフィグファイルに関しては、Palmi Garden の "Palmi Application Development Add-on Kit for Visual Studio ユーザーズガイド"を参照のこと。
引数:
[in]sectNameセクション名(大分類名)
[in]confName設定項目名(小分類名)
[out]value設定値
戻り値:
0正常終了
0以外処理失敗
 // コンフィグファイルから設定値を取得するサンプルプログラム
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 std::string value;

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

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

Palmi に正面を向かせる。

  • Palmi が正面を向くまでの時間を指定する。
引数:
[in]execTimePalmiが正面を向くまでの時間。単位はミリ秒。
戻り値:
0正常終了
0以外処理失敗
 // Palmi が1秒で正面を向く
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 lookFront(1000);

Palmi に取り付けた microSD カードを使用できるようにする。

  • この関数を呼び出すと、microSD カードに自動で「_PALMI_/アプリ名」というディレクトリが作成される(既に存在する場合は作成しない)。
  • getMicroSDDirPath 関数で取得したパスに対して読み書きすること。
戻り値:
0正常終了
-2microSD カードが取り付けられていない、もしくは認識できない
-3microSD カードのマウントに失敗した
上記以外処理失敗
覚え書き:
この関数を使用した場合は、アプリケーション終了する前に、umountMicroSD 関数を呼び出すこと。
参照:
getMicroSDDirPath()
umountMicroSD()
 // 写真を microSD カードに保存するサンプル
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 long lRtn;

 // microSD カードを使用できるようにする
 lRtn = mountMicroSD();
 if(lRtn != 0){
        speak("マイクロエスディーカードが使用できません");
        exitComponent();
        return;
 }

 // microSD カードのマウント先を取得する
 std::string sdDir;
 getMicroSDDirPath(sdDir);

 // Palmiが写真を撮影し、microSDカードに保存する
 // ※ getMicroSDDirPathで取得したディレクトリにファイルを書き込むことで
 // ※ microSDカードへの保存ができる
 std::string picFilePath = sdDir + "/Picture.jpg";
 lRtn = takePicture(SPC_TAKE_PICTURE_NORMAL_JPG, picFilePath);
 if(lRtn != 0){
         speak("写真撮影ができませんでした");
 }

 // microSD カードを取り外せるようにする。
 // mountMicroSD 関数で microSD カードを使用した場合は、必ずこの関数を呼び出すこと。
 umountMicroSD();

Palmi に取り付けた USB メモリーを使用できるようにする。

  • この関数を呼び出すと、USB メモリーに自動で「_PALMI_/アプリ名」というディレクトリが作成される(既に存在する場合は作成しない)。
  • getUSBDirPath 関数で取得したパスに対して読み書きすること。
戻り値:
0正常終了
-2USB メモリーが取り付けられていない、もしくは認識できない
-3USB メモリーのマウントに失敗した
上記以外処理失敗
覚え書き:
この関数を使用した場合は、アプリケーション終了時に、umountUSB 関数を実行すること。
参照:
getUSBDirPath()
umountUSB()
 // 写真を USB メモリーに保存するサンプル
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 long lRtn;

 // USB メモリーを使用できるようにする
 lRtn = mountUSB();
 if(lRtn != 0){
        speak("USBメモリーが使用できません");
        exitComponent();
        return;
 }

 // USB メモリーのパスを取得する
 std::string usbDir;
 getUSBDirPath(usbDir);

 // Palmiが写真を撮影し、USBメモリーに保存する
 // ※ getUSBDirPath 関数で取得したパスにファイルを書き込むことで
 // ※ USB メモリーへの写真の保存ができる
 std::string picFilePath = usbDir + "/Picture.jpg";
 lRtn = takePicture(SPC_TAKE_PICTURE_NORMAL_JPG, picFilePath);
 if(lRtn != 0){
         speak("写真撮影ができませんでした");
 }

 // USB メモリーを取り外せるようにする。
 // mountUSB 関数で USB メモリーを使用した場合は、必ずこの関数を呼び出すこと。
 umountUSB();

Palmi の腕を動かす。

  • 角度の指定を、絶対値で指定する。
引数:
[in]param腕のアクチュエーターの角度や動作時間。詳細は spc::SPC_MOVE_ARM_PARAM を参照のこと。
設定可能な角度については、Palmi Garden の "Palmi Motion Editorガイド"を参照のこと。
戻り値:
0正常終了
0以外処理失敗
 // Palmi の腕を動かすサンプルプログラム
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 SPC_MOVE_ARM_PARAM param;

 // 腕の動作パラメータを設定する。
 // (この例では、1秒で右腕を上げる)
 param.leftShoulderPitch = 0;
 param.leftShoulderRoll = 0;
 param.leftElbowRoll = 0;
 param.leftElbowYaw = 0;
 param.rightShoulderPitch = -180;
 param.rightShoulderRoll = 0;
 param.rightElbowRoll = 0;
 param.rightElbowYaw = 0;
 
 param.execTime = 1000;

 // Palmi の腕を動かす。
 moveArm(param);

Palmi の首を動かす。

  • 角度の指定を、絶対値で指定する。
引数:
[in]param首のアクチュエーターの角度や動作時間。詳細は spc::SPC_MOVE_NECK_PARAM を参照のこと。
設定可能な角度については、Palmi Garden の "Palmi Motion Editorガイド"を参照のこと。
戻り値:
0正常終了
0以外処理失敗
覚え書き:
この関数を呼び出す前に、startNeckControl 関数を呼び出すこと。
 // Palmiの首を動かすサンプルプログラム
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 SPC_MOVE_NECK_PARAM param;

 // アプリケーションで Palmi の首を動かせるようにする。
 startNeckControl();

 // 首の動作パラメータを設定する。
 // (この例では、1秒かけて左を向く)
 param.hAngle = 60.0;
 param.vAngle = -30.0;
 param.execTime = 1000;

 // Palmiの首を動かす
 moveNeck(param);

 // 5秒停止
 sleep(5);

 // Palmiが首を自動で動かすようにする。
 stopNeckControl();

Palmi の首を動かす。

  • 角度の指定を、現在からの相対値で指定する。
引数:
[in]param首のアクチュエーターの角度や動作時間。詳細は spc::SPC_MOVE_NECK_PARAM を参照のこと。
設定可能な角度については、Palmi Garden の "Palmi Motion Editorガイド"を参照のこと。
戻り値:
0正常終了
0以外処理失敗
 // Palmiの首を動かすサンプルプログラム
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 SPC_MOVE_NECK_PARAM param;

 // アプリケーションで Palmi の首を動かせるようにする。
 startNeckControl();

 // 首の動作パラメータを設定する。
 // (この例では、現在の位置から10度左を向く)
 param.hAngle = 0.0;
 param.vAngle = -10.0;
 param.execTime = 1000;

 // Palni の首を動かす
 moveNeckRelative(param);

 // 5秒停止
 sleep(5);

 // Palmiが首を自動で動かすようにする。
 stopNeckControl();
void spc::SPCBase::onFaceCatch ( std::string  name)

顔認識イベント。

  • Palmiが顔を見つけた場合に呼び出される。
引数:
[in]name認識した個人の登録名(全角カタカナ)。個人未確定の場合は空白文字列。
virtual void spc::SPCBase::onFaceDrop ( ) [virtual]

顔認識不可イベント。

  • Palmiが顔を見失った場合に呼び出される。
virtual void spc::SPCBase::onFinalize ( ) [virtual]

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

  • アプリケーションの終了時に呼び出される。
virtual void spc::SPCBase::onInitialize ( ) [virtual]

アプリケーション開始イベント。

  • アプリケーションの開始時に呼び出される。
virtual void spc::SPCBase::onPOTFluctuationCatch ( ) [virtual]

POTセンサーイベント。

  • Palmiの頭部をさわった時に呼び出される。
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]

ログを出力する

  • アプリケーションのログは、Visual Studio の 【 Palmi 】 - 【 ログビューア 】 で見ることができる。
  • この関数を、より簡単に使用するためのマクロが定義されているので、そちらの利用を推奨する。詳細はサンプルプログラムを参照のこと。
引数:
[in]logLevelログレベル。この設定値が setLogLevel 関数で設定された値以上である場合、実際にログの書き込みが行われる。
[in]filenameログ出力元のファイル名
[in]fncnameログ出力元の関数名
[in]lineログ出力位置のファイル行数
[in]format書き込み文字列の書式。printf関数と同様に指定する。
戻り値:
0正常終了
0以外処理失敗
覚え書き:
アプリケーションの起動時には、ログレベルは spc::SPC_LOG_LEVEL_INFO (=4)に設定されている。
参照:
setLogLevel(spc::SPC_LOG_LEVEL logLevel)
SPC_LOG_FATAL, SPC_LOG_ERROR
 // マクロを使用したログ出力サンプル
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 // ログレベルを設定する
 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)

Palmi が音声ファイルを再生する。

  • 再生する音声ファイルを指定する。
  • 再生可能な音声ファイルの形式は、WAVファイル、MP3ファイルである。
引数:
[in]filePath音声ファイルのパス
戻り値:
0正常終了
0以外処理失敗
 // 音声ファイルを再生するサンプルプログラム
 // (このファイルは、アプリケーションと一緒にインストールしたもの)
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 std::string dirPath;

 // 必要なファイルが保存されているディレクトリを取得する
 getDataDirPath(dirPath);

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

Palmi に録音させる。

  • Palmiは、マイクに入力された音声を wav ファイルに録音する(サンプリングレートは16KHz固定)。
引数:
[in]filePath作成する wav ファイルのパス
[in]sec録音する長さ(秒)
戻り値:
0正常終了
0以外処理失敗
覚え書き:
この関数を呼び出すと、Palmi が「録音してもいいですか?」と質問する。
質問に対して Yes に分類される回答が無い場合、Palmi は録音を行わない。
 // マイクの音声をrec.wavとして保存する
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 std::string dirPath;

 // アプリケーションに必要なファイルが保存されているディレクトリを取得する
 getDataDirPath(dirPath);

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

 // 保存したファイルは、USB メモリーや microSD カードに保存できる。
 // 詳細は mountUSB 関数や mountMicroSD 関数を詳細のこと。

Palmi の頭をさわられたときの、アプリケーションの動作を設定する。

引数:
[in]action設定値。spc::SPC_ONLY_NOTYFY_POT_FLUCTUATION を設定した場合は、Palmiが頭をさわられたとき、onPOTFluctuationCatch 関数が呼ばれる。
spc::SPC_NOTYFY_AND_CANCEL_POT_FLUCTUATION を設定した場合は、実行していた動作がキャンセルされ、onPOTFluctuationCatch 関数が呼ばれる。
spc::SPC_EXIT_COMPONENT_POT_FLUCTUATION を設定した場合は、アプリケーションが終了する(デフォルト設定)。
spc::SPC_NOT_NOTYFY_POT_FLUCTUATION を設定した場合は、何も行わない。
戻り値:
0正常終了
0以外処理失敗
参照:
onPOTFluctuationCatch()
 // Palmi の頭に手をおくと、アプリケーションが終了するようにする
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 setActionPOTFluctuation(SPC_EXIT_COMPONENT_POT_FLUCTUATION);
static long spc::SPCBase::setLogLevel ( spc::SPC_LOG_LEVEL  logLevel) [static]

アプリケーションのログレベルを設定する。

必要のないログを表示させない場合に使用する。

引数:
[in]logLevelログレベル
設定できる値については spc::SPC_LOG_LEVEL を参照のこと
覚え書き:
アプリケーションの起動時には、ログレベルは spc::SPC_LOG_LEVEL_INFO (=4)に設定されている。
戻り値:
0正常終了
0以外処理失敗
参照:
outputLog(spc::SPC_LOG_LEVEL logLevel, std::string filename, std::string fncname, long line, const char* format, ...)
long spc::SPCBase::setVolume ( long  volume)

Palmi のスピーカーの音量を設定する。

引数:
[in]volume音量設定値。0(最小)~15(最大)で指定する。
戻り値:
0正常終了
0以外処理失敗
参照:
getVolume(long& volume)
 // Palmi の音量を少し上げるサンプルプログラム
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 long lRtn, volume;

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

Palmi が相手の回答を認識した後、最初に発話する文字列を設定する。

  • waitForAnswer 関数で、Yes, No または「やめる」を認識した後、最初に発話する文字列を設定する.
  • Palmi が指定された文字列を自動的に発話する。
引数:
[in]kindPalmi が発話する条件を設定する。
spc::SPC_SYSTEM_RESPONSE_YES を指定すると、Yes に分類される回答を認識したとき、
spc::SPC_SYSTEM_RESPONSE_NO を指定すると、No に分類される回答を認識したとき、
spc::SPC_SYSTEM_RESPONSE_CANCEL を指定すると、「やめる」を認識したときに、responseStr で指定した文字列を発話する。
spc::SPC_SYSTEM_RESPONSE_DEFAULT を指定した場合は、システムで決められた文字列を発話する。
spc::SPC_SYSTEM_RESPONSE_NON を指定すると、何も発話しない。(デフォルト設定)
[in]responseStrkind で指定された条件を満たした場合に、Palmi が発話する文字列。
戻り値:
0正常終了
0以外処理失敗
覚え書き:
waitForAnswer 関数の呼び出し後は、この関数で行った設定はクリアされ、spc::SPC_SYSTEM_RESPONSE_NON (何も発話しない)状態に戻る。
 // setWaitForAnswerSystemResponse 関数のサンプル
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 SPC_ANSWER answer;
 std::string recog;

 // Palmi が発話する文字列を設定する
 setWaitForAnswerSystemResponse(spc::SPC_SYSTEM_RESPONSE_YES, "よかったんですね");    // 相手の回答が Yes に分類されたとき「よかったんですね」と発話する
 setWaitForAnswerSystemResponse(spc::SPC_SYSTEM_RESPONSE_NO, "だめだったたんですね"); // 相手の回答が No に分類されたとき「だめだったんですね」と発話する
 setWaitForAnswerSystemResponse(spc::SPC_SYSTEM_RESPONSE_CANCEL, "やめるんですね");   // 相手の回答が「やめる」であったとき「やめるんですね」と発話する

 // Palmiが 質問をする
 long rtn;
 rtn = waitForAnswer("準備はいいですか?", answer);
 if(rtn != 0){
  // waitForAnswerの処理失敗
  speakError("質問できませんでした");

  // アプリケーションの終了
  exitComponent();
  return;
 }
 switch(answer){
   case spc::SPC_ANSWER_YES:
     // ここに、相手の回答が Yes に分類された場合の処理を記述する
     // この時、Palmi は「よかったんですね」という発話を行う
     break;
 
   case spc::SPC_ANSWER_NO:
     // ここに、相手の回答が No に分類された場合の処理を記述する
     // この時、Palmi は「だめだったんですね」という発話を行う
     break;
  
   case spc::SPC_ANSWER_CANCEL:
     // ここに、相手の回答が「やめる」であった場合の処理を記述する。
     // この時、Palmi は「やめるんですね」という発話を行う
     break;
 
   case spc::SPC_ANSWER_TIMEOUT:
     // ここに、相手からの回答が無いなどで、タイムアウトした場合の処理を記述する
     break;

   default:
     break;
 }
long spc::SPCBase::setWaitForAnswerSystemResponse ( std::string  recogWord,
std::string  responseStr 
)

Palmi が相手の回答を認識した後、最初に発話する文字列を設定する。

  • waitForAnswer 関数で待ち受ける言葉を相手が回答した場合、最初に発話する文字列を設定する。
  • Palmi が指定された文字列を自動的に発話する。
引数:
[in]recogWord相手の回答。全角カタカナで指定する。
Palmi がこの言葉を認識すると、responseStr で指定された文字列を発話する。
[in]responseStrPalmi が発話する文字列。
戻り値:
0正常終了
0以外処理失敗
覚え書き:
waitForAnswer 関数の呼び出し後は、この関数で行った設定はクリアされ、spc::SPC_SYSTEM_RESPONSE_NON (何も発話しない)状態に戻る。
 // setWaitForAnswerSystemResponse 関数のサンプル
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 SPC_ANSWER answer;
 std::vector<std::string> answerWords;
 std::string recogWord;
 int recogIndex;

 // 待ち受ける言葉を全角カタカナで追加する
 answerWords.push_back("リンゴ");
 answerWords.push_back("バナナ");
 answerWords.push_back("ミカン");

 // Palmi が発話する文字列を設定する
 setWaitForAnswerSystemResponse("リンゴ", "リンゴですね");
 setWaitForAnswerSystemResponse("バナナ", "バナナですね");
 setWaitForAnswerSystemResponse("ミカン", "ミカンですね");

 // Palmi が質問をする
 long rtn;
 rtn = waitForAnswer("リンゴ。バナナ。ミカン。どれが好きですか?",
                     answerWords,
                     answer,
                     recogWord,
                     recogIndex);
 if(rtn != 0){
   // waitForAnswerの処理失敗
   speakError("質問できませんでした");

   // アプリケーションの終了
   exitComponent();
   return;
 }
 switch(answer){
   case SPC_ANSWER_RECOGEND:
     // ここに、相手の回答が「リンゴ」「バナナ」「ミカン」のいずれかであった場合の処理を記述する
     // 相手の回答は、recogWord、および answerWords[recogIndex] で取得できる
     // なお、このブロックに来る前に「リンゴですね」「バナナですね」等の、setWaitForAnswerSystemResponse 関数で設定した文字列が発話される。
     break;

   case SPC_ANSWER_CANCEL:
     // ここに、相手の回答が「やめる」であった場合の処理を記述する
     break;

   case SPC_ANSWER_TIMEOUT:
     // ここに、相手の回答が無いなどで、タイムアウトした場合の処理を記述する
     break;

   default:
     break;
 }

waitForAnswer 関数のタイムアウト時間を設定する。

引数:
[in]sec設定するタイムアウト時間(秒)
一度設定すると、その後の waitForAnswer 関数の呼び出し全てで有効になる。
0を設定した場合、システムで決められたデフォルトの値(16秒)に設定される。
戻り値:
0正常終了
0以外処理失敗
 // waitForAnswer 関数のタイムアウトを20秒に設定する
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 setWaitForAnswerTimeOut(20);

Palmi を座らせる。

戻り値:
0正常終了
0以外処理失敗
long spc::SPCBase::speak ( std::string  sentence)

Palmi に発話させる。

引数:
[in]sentence発話させる文字列
戻り値:
0正常終了
0以外処理失敗
覚え書き:
この関数では、Palmi が発話中、自動的に腕を動かす。
 // Palmiが 「こんにちは」と発話する
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 speak("こんにちは");
long spc::SPCBase::speak ( std::string  sentence,
spc::SPC_SPEAK_KIND  param 
)

Palmi に発話させる。

  • 発話中の腕の動作を指定する。
引数:
[in]sentence発話する文字列。
[in]param発話中の腕の動作。
SPC_SPEAK_NORMALの場合、発話中に腕を動かし、発話後に腕を戻す。
SPC_SPEAK_SIMPLEの場合、発話中に腕を動かし、発話後に腕を戻さず、その位置で停止する。
SPC_SPEAK_NOT_MOVE_ARMの場合は、腕を動かさずに発話する。
戻り値:
0正常終了
0以外処理失敗
 // Palmiが 腕を動かさずに「こんにちは」と発話する
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 speak("こんにちは", spc::SPC_SPEAK_NOT_MOVE_ARM);
long spc::SPCBase::speakError ( std::string  sentence)

エラーが発生したことを Palmi に発話させる。

  • 特別なモーションを再生しながら発話する。
引数:
[in]sentence発話する文字列。
戻り値:
0正常終了
0以外処理失敗
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 speakError("ごめんなさい。今は、できません。");

Palmi を立たせる。

戻り値:
0正常終了
0以外処理失敗
long spc::SPCBase::startBackLight ( spc::SPC_BACKLIGHT_KIND  kind,
unsigned long  color 
)

Palmi のスティップリングレンズ下部の左右の部分を点灯させる。

引数:
[in]kind動作の指定。
spc::SPC_BACKLIGHT_KIND_ON でバックライトを点灯させる。
spc::SPC_BACKLIGHT_KIND_OFF で、直前に指定したバックライトの設定を取り消す。
[in]color点灯させるバックライトの色をRGB(それぞれ0から255まで)で指定する。
いくつかの色は定義済である。 spc::SPC_BACKLIGHT_COLOR_RED, spc::SPC_BACKLIGHT_COLOR_GREEN, spc::SPC_BACKLIGHT_COLOR_BLUE などを参照のこと。
参照:
SPC_BACKLIGHT_COLOR_RED
SPC_BACKLIGHT_COLOR_GREEN
SPC_BACKLIGHT_COLOR_BLUE
戻り値:
0正常終了
0以外処理失敗
long spc::SPCBase::startLED ( std::string  filePath)

Palmi のスティップリングレンズを点灯させる。

  • スティップリングレンズファイルを指定し、スティップリングレンズを点灯させる。
  • スティップリングレンズファイルは Visial Studio の 【 Palmi 】 - 【 スティップリングレンズパターン エディター 】 で作成する。
引数:
[in]filePathスティップリングレンズファイルのパス
戻り値:
0正常終了
0以外処理失敗
覚え書き:
終了する場合は、stopLED 関数を呼び出す。
参照:
stopLED()
 // sample.ledというファイルに基づき、スティップリングレンズを点灯する
 // (スティップリングレンズファイルは、アプリケーションと一緒にインストールしたもの)
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 std::string dirPath;

 // アプリケーションに必要なファイルが保存されているディレクトリを取得する
 getDataDirPath(dirPath);

 // スティップリングレンズを点灯させる。
 startLED(dirPath + "/sample.led");
long spc::SPCBase::startLED ( std::vector< std::string >  vLEDPath,
long  interval 
)

Palmi のスティップリングレンズを点灯させる。

  • Palmi のスティップリングレンズを、一定間隔で切り替えて表示させる。
引数:
[in]vLEDPath表示するスティップリングレンズファイルのパス
[in]intervalスティップリングレンズの表示間隔。単位はミリ秒
戻り値:
0正常終了
0以外処理失敗
覚え書き:
終了する場合は、stopLED 関数を呼び出す。
参照:
stopLED()
 // スティップリングレンズの連続表示
 // (スティップリングレンズファイルは、アプリケーションと一緒にインストールしたもの)
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 std::vector<std::string> vLEDPath;
 std::string dirPath;

 // アプリケーションに必要なファイルが保存されているディレクトリを取得する
 getDataDirPath(dirPath);

 // 表示するスティップリングレンズファイルのパスを、表示順に格納する
 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");

 // 指定したスティップリングレンズパターンを、500ミリ秒間隔で表示させる
 startLED(vLEDPath, 500);

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

 // StartLED 関数で行ったスティップリングレンズ表示を終了させる
 stopLED();
long spc::SPCBase::startMotion ( std::string  filePath)

Palmi にモーションファイルで定義した動きを再生させる。

  • Palmi モーションファイルは Visial Studio の 【 Palmi 】 - 【 Palmi Motion Editor 】 で作成する。
引数:
[in]filePathモーションファイルのパス
戻り値:
0正常終了
0以外処理失敗
 // sample.actに定義されたモーションを再生する
 // (モーションファイルは、アプリケーションと一緒にインストールしたもの)
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 std::string dirPath;

 // アプリケーションに必要なファイルが保存されているディレクトリを取得する
 getDataDirPath(dirPath);

 // モーションを再生する
 startMotion(dirPath + "/sample.act");
long spc::SPCBase::startMotion ( std::string  filePath,
spc::SPC_SYNCMOTION_PARAM  syncMotionParam 
)

Palmi にモーションファイルで定義した動きを再生させる。

  • 発話や音声ファイルの再生と同時に動作する。
引数:
[in]filePathモーションファイルのパス
[in]syncMotionParamモーションと同時に実行する動作。
発話をさせたい場合は、syncMotionParam の type に spc::SPC_SYNCMOTION_SPEAK を指定し、param に 発話させる文字列を指定する。
音声を再生させたい場合は、type の spc::SPC_SYNCMOTION_SOUND を指定し、param に音声ファイルのパスを指定する。
スティップリングレンズの表示をさせたい場合は、type に spc::SPC_SYNCMOTION_LED を指定し、param にスティップリングレンズファイルのパスを指定する。
モーションのみ実行する場合は、type に spc::SPC_SYNCMOTION_NON を指定し、param に空文字を設定する。
何も設定しない場合は、モーションだけが行われる。
戻り値:
0正常終了
0以外処理失敗
 // Palmi がモーションと発話を同時に実行する
 // (モーションファイルは、アプリケーションと一緒にインストールしたもの)
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 std::string dirPath;
 spc::SPC_SYNCMOTION_PARAM syncMotionParam;

 // 必要なファイル(モーションファイルなど)が保存されているディレクトリを取得する
 getDataDirPath(dirPath);

 // モーションと同時に行わせる動作を指定する
 syncMotionParam.type = SPC_SYNCMOTION_SPEAK;   // 発話させる
 syncMotionParam.param = "モーションと発話を同時に実行します"; // 発話させる文字列

 // Palmi がモーションと発話を同時に行う
 startMotion(dirPath + "/sample.act",            // モーションファイル
             syncMotionParam,              // モーションと同時に実行する動作
             );
long spc::SPCBase::startMotion ( std::string  filePath,
std::vector< spc::SPC_SYNCMOTION_PARAM syncMotionParams 
)

Palmi にモーションファイルで定義した動きを再生させる。

  • 発話や音声ファイルの再生と同時に動作する。
引数:
[in]filePathモーションファイルのパス
[in]syncMotionParamsモーションと同時に実行する動作。複数設定が可能。
発話をさせたい場合は、syncMotionParam の type に spc::SPC_SYNCMOTION_SPEAK を指定し、param に 発話させる文字列を指定する。
音声を再生させたい場合は、type の spc::SPC_SYNCMOTION_SOUND を指定した場合は、param に音声ファイルのパスを指定する。
スティップリングレンズの表示をさせたい場合は、type に spc::SPC_SYNCMOTION_LED を指定し、param にスティップリングレンズファイルのパスを指定する。
モーションのみ再生する場合は、type に spc::SPC_SYNCMOTION_NON を指定し、param に空文字を設定する。 syncMotionParams が空であった場合は、モーションだけ再生する。
戻り値:
0正常終了
0以外処理失敗
 // Palmi がモーション、発話、およびスティップリングレンズ表示を同時に実行する
 // (モーションファイル, スティップリングレンズファイルは、アプリケーションと一緒にインストールしたもの)
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 std::string dirPath;
 SPC_SYNCMOTION_PARAM motionParam;
 std::vector<SPC_SYNCMOTION_PARAM> vMotionParams;

 // 必要なファイル(モーションファイルなど)が保存されているディレクトリを取得する
 getDataDirPath(dirPath);


 // モーションと同時に行う動作を設定する

 // 発話させる文字列を設定する
 motionParam.type = SPC_SYNCMOTION_SPEAK;
 motionParam.param = "モーションと発話とスティップリングレンズ表示を同時に実行します";
 vMotionParams.push_back(motionParam);

 // 表示させるスティップリングレンズを設定する
 motionParam.type = SPC_SYNCMOTION_LED;
 motionParam.param = dirPath + "/sample.led";
 vMotionParams.push_back(motionParam);
                                     
 // Palmi がモーション、発話、スティップリングレンズの表示を同時に行う
 startMotion(dirPath + "/sample.act",  // モーションファイル名
             vMotionParams,            // モーションと同時に実行する動作
             );

アプリケーションで Palmi の首を動かせるようにする。

  • moveNeck 関数で Palmi の首を動かす場合は、この関数を呼び出す。
  • Palmi の首を自動で動くように戻す場合は、stopNeckControl 関数を呼び出す。
戻り値:
0正常終了
0以外処理失敗
参照:
stopNeckControl()
moveNeck(spc::SPC_MOVE_NECK_PARAM param)
覚え書き:
Palmi は、人を探す、顔を追跡するなどを行っているため、首が常に動いている状態である。
この関数は、その首の動きを止めて、アプリケーションが首を動かせるようにするものである。
long spc::SPCBase::startTimer ( unsigned long  interval,
unsigned long  count,
long &  timerId 
)

タイマーを設定する。

  • この関数の呼び出し後、指定した時間が経過したときに、onTimer 関数が呼び出される。
  • タイマーを停止する場合は、stopTimer 関数を呼び出す。
  • タイマーは複数の設定が可能である。
引数:
[in]intervalタイマーを発生させる間隔。単位はミリ秒。
[in]countタイマーを発生させる回数。0を指定すると無限回。
[out]timerIdタイマーのID。タイマーを停止する際、stopTimer 関数にこのIDを渡す。
戻り値:
0正常終了
0以外処理失敗
参照:
onTimer(long timerId)
stopTimer(long timerId)

Palmi のスティップリングレンズ下部の左右の部分を点灯を停止する。

startBackLight 関数で行った制御を終了する。

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

Palmi のスティップリングレンズの点灯を停止する。

  • startLED 関数で変更したスティップリングレンズの表示を元に戻す。
戻り値:
0正常終了
0以外処理失敗

Palmi の首を自動で動くようにする。

  • startNeckControl 関数を呼び出し後、moveNeck 関数で Palmi の首を動かさない場合は、この関数を呼び出す。
戻り値:
0正常終了
0以外処理失敗
参照:
moveNeck(spc::SPC_MOVE_NECK_PARAM param)
long spc::SPCBase::stopTimer ( long  timerId)

タイマーを停止する。

引数:
[in]timerIdstartTimer 関数で取得したタイマーID。
0を指定した場合には、全てのタイマーを停止する。
戻り値:
0正常終了
0以外処理失敗
long spc::SPCBase::takePicture ( std::string  filePath)

Palmi に写真を撮影させる。

引数:
[in]filePath保存する画像ファイルのパス
戻り値:
0正常終了
0以外処理失敗
覚え書き:
この関数を呼び出すと、Palmi が「写真を撮ってもいいですか?」という質問を自動で行う。
ここで Yes に分類される回答がない場合、Palmi は写真撮影を行わない。
 // Palmi が写真を撮影するサンプルプログラム
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 std::string dirPath, filePath;

 // アプリケーションに必要なファイルが保存されているディレクトリを取得する
 getDataDirPath(dirPath);

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

 // 保存したファイルは、USB メモリーや microSD カードに保存できる
 // 詳細は mountUSB 関数や mountMicroSD 関数を詳細のこと
long spc::SPCBase::takePicture ( spc::SPC_TAKE_PICTURE_KIND  kind,
std::string  filePath 
)

Palmi に写真を撮影させる。

  • 撮影する画像の大きさを指定する。
覚え書き:
この関数を呼び出すと、Palmi が「写真を撮ってもいいですか?」という質問を自動で行う。
ここで Yes に分類される回答がない場合、Palmi は写真撮影を行わない。
引数:
[in]kind画像の大きさ。詳細は spc::SPC_TAKE_PICTURE_KIND を参照のこと。
[in]filePath保存する画像ファイルのパス
戻り値:
0正常終了
0以外処理失敗
参照:
spc::SPC_TAKE_PICTURE_KIND
 // 写真を撮影するサンプルプログラム
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 std::string dirPath, filePath;

 // アプリケーションに必要なファイルが保存されているディレクトリを取得する
 getDataDirPath(dirPath);

 // カメラからの画像を「sample.jpg」と言う名前で
 // コンフィグファイルが保存されているディレクトリに保存する
 filePath = dirPath + "/sample.jpg";
 takePicture(SPC_TAKE_PICTURE_LARGE_JPG, filePath);     // 大きいサイズで撮影する

 // 保存したファイルは、USB メモリーや microSD カードに保存できる
 // 詳細は mountUSB 関数や mountMicroSD 関数を詳細のこと
long spc::SPCBase::takePicture ( spc::SPC_TAKE_PICTURE_KIND  kind,
spc::SPC_TAKE_PICTURE_ACTION  action,
std::string  filePath 
)

Palmi に写真を撮影させる。

  • 撮影する画像の大きさを指定する。
  • 撮影するときの Palmi の動作を指定する
引数:
[in]kind画像の大きさ。詳細は spc::SPC_TAKE_PICTURE_KIND を参照のこと。
[in]actionPalmi が 写真を撮影するときの動作。
spc::SPC_TAKE_PICTURE_ACTION_NORMAL を指定した場合は、撮影前に Palmi が 「写真を撮ってもいいですか?」 という質問を自動で行う。
spc::SPC_TAKE_PICTURE_ACTION_NO_QUESTION を指定した場合は、質問を行わない。
[in]filePath保存する画像ファイルのパス
戻り値:
0正常終了
0以外処理失敗
参照:
spc::SPC_TAKE_PICTURE_KIND
spc::SPC_TAKE_PICTURE_ACTION
 // 写真を撮影するサンプルプログラム
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 std::string dirPath, filePath;

 // アプリケーションに必要なファイルが保存されているディレクトリを取得する
 getDataDirPath(dirPath);

 // カメラからの画像を「sample.jpg」と言う名前で
 // コンフィグファイルが保存されているディレクトリに保存する
 filePath = dirPath + "/sample.jpg";
 takePicture(SPC_TAKE_PICTURE_LARGE_JPG, SPC_TAKE_PICTURE_ACTION_NO_QUESTION, filePath);        // 大きいサイズで撮影する、かつ撮影前の質問を行わない

 // 保存したファイルは、USB メモリーや microSD カードに保存できる
 // 詳細は mountUSB 関数や mountMicroSD 関数を詳細のこと
long spc::SPCBase::turn ( long  direction)

Palmi を指定された角度に方向転換させる。

  • 周りの障害物等の状況により、途中で方向転換を停止する場合がある。
  • 熱が上がっているときやバッテリー残量が低下しているなど歩行できない場合、ACアダプターが接続されている場合は、方向転換を行わない。
引数:
[in]direction方向転換する角度。-90 <= direction <= 90 で指定。正の角度を指定した場合、Palmi から見て左方向に方向転換する。
戻り値:
0正常終了
0以外処理失敗
 // Palmi からみて左30度の方向に向きを変える
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;
 
 turn(30);

Palmi に取り付けた microSD カードを取り外せるようにする。

  • mountMicroSD 関数で microSD カードを使用した場合は、この関数をアプリケーション終了時に呼び出すこと。
戻り値:
0正常終了
上記以外処理失敗
参照:
mountMicroSD();

Palmi に取り付けた USB メモリーを取り外せるようにする。

  • mountUSB 関数で USB メモリーを使用した場合は、この関数をアプリケーション終了時に呼び出すこと。
戻り値:
0正常終了
上記以外処理失敗
参照:
mountUSB();
long spc::SPCBase::waitForAnswer ( std::string  sentence,
spc::SPC_ANSWER answer 
)

Palmi が質問を行い、その質問に対する相手の回答を待ち受ける。

  • 質問文を指定する。

YesかNoかを問う場合に使用する。

引数:
[in]sentencePalmi が発話する質問文。
この文に推奨語尾を使用すると、「はい」「いいえ」以外に、「いいよ。」「そうです。」「知ってる。」「思う。」など、
待ち受ける言葉が自動的に生成される。
推奨語尾は以下のとおりです。
ありますか? ありましたか? していますか? しましたか? できていますか?
できましたか? できますか? ですか? どうですか? しますか?
見ましたか? 見ますか? 思いましたか? 思いますか? 知っていましたか?
知っていますか? 聞きましたか? 聞きますか? 飽きてしまいましたか? 当たっていましたか?
あっていますか? いいですか? いいですね? いい天気でしたね? いい天気ですね?
いかがですか? 同じですか? お元気でしたか? お出かけしましたか? お知らせしましょうか?
お伝えしましょうか? お友達とお話をしましたか? かけるんですか? くれるのですね? くれるのですか?
ことは、ありますか? このまま続けますか? しそうですか? してしまうんですか? するんですか?
沢山ありますか? たくさんの方がいますか? だめですか? つまらないですか? でいいですか?
でいいですね? でいいんですか? ですよね? ではないですか? どくんですか?
なりそうですか? なるんですよね? なんですね? 話しかけてくれましたか? びっくりしましたか?
もう一度やりますか? もう少し待ちますか? やめちゃうんですか? やめてしまうんですか? よかったですか?
よくありますか? よく見ますか? よく聴きますか? よろしいですか? わかりましたか?
わかりますか? をしましょうか? 飲みましたか? 飲みますか? 押してくれましたか?
確認するんですか? 覚えていますか? 覚えてもらえますか? 覚えるんですか? 楽しいですか?
楽しみにしていますか? 寒いですか? 寒かったですね? 感じていますか? 感じますか?
間違えていますか? 間違えてしまいましたか? 気になりますか? 気を付けていますか? 強いですか?
教えてもらえますか? 興味がありますか? 興味はありますか? 驚きましたか? 経験がありますか?
経験はありますか? 繋ぐんですか? 決まっていますか? 健康ですか? 見えますか?
見てくれましたか? 見てしまいますか? 見てみましょうか? 見てもらえますか? 言いますか?
言いましたか? 言えますか? 向くんですか? 好きですか? 更新するんですか?
行きましたか? 行きますか? 行ったんですか? 行ってみたいですか? 再生しますか?
撮っても、いいですか? 撮るんですか? しまいますか? 使いますか? 思いをしましたか?
思い出せますか? 思っていますか? 止めますか? 試してみましょう。いいですか? 試しても、いいですか?
持っていますか? 撮れていますか? 準備していますか? 暑いですねぇ? 暑かったですねぇ?
勝負してもらえますか? 詳しいですか? あげるんですか? 条件は必要ですか? 食べていますか?
食べましたか? 食べますか? 信じていますか? 信じますか? 心がけていますか?
設定を行いますか? 送りますか? 続けてもいいですか? 多いですか? 体を動かしましょう。いいですか?
大丈夫ですか? 暖かいですね? 暖かかったですね? 知りたいですか? 置いていますか?
注意していますか? 調べますか? 頂けますか? 痛いですか? 伝えるんですか?
当たりましたか? 答えてもらえますか? 答えるんですか? 読みましょうか? 読みますか?
読むんですか? 買いたいですか? 買いましたか? 買いますか? 疲れてますか?
美味しいのですか? 必要ですか? 聞いていましたか? 聞いてもらえますか? 聞いてもらっても、いいですか?
聞こえてますか? 変えますか? 忘れるんですか? 忙しいのですか? 忙しかったのですか?
本当ですか? 面白かったですか? 遊んでもらえますか? 踊りましょうか? 踊るんですか?
利用していますか? 利用しましたか? 話すんですか? 話をしてもらえますか? ですね?
引数:
[out]answer処理結果。戻り値が0(正常終了)の場合のみ有効
戻り値:
0正常終了
0以外処理失敗
 // YesかNoかを回答してもらうサンプルプログラム
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 SPC_ANSWER answer;

 // 質問をする
 long rtn;
 rtn = waitForAnswer("準備はできましたか?", answer);
 if(rtn != 0){
   // waitForAnswerの処理失敗
   speakError("質問できませんでした");

   // アプリケーションの終了
   exitComponent();
   return;
 }
 switch(answer){
   case SPC_ANSWER_YES:
     // ここに、相手の回答が Yes に分類された場合の処理を記述する
     break;

   case SPC_ANSWER_NO:
     // ここに、相手の回答が No に分類された場合の処理を記述する
    break;

   case SPC_ANSWER_CANCEL:
     // ここに、相手の回答が「やめる」であった場合の処理を記述する
     break;

   case SPC_ANSWER_TIMEOUT:
     // ここに、相手の回答が無いなどで、タイムアウトした場合の処理を記述する
     break;

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

Palmi が質問を行い、その質問に対する相手の回答を待ち受ける。

  • 質問文を指定する。
  • 待ち受ける言葉を指定する。
引数:
[in]sentencePalmi が発話する質問文。
[in]answerWordsPalmi が待ち受ける言葉(全角カタカナで設定する)。
また、言葉の前に「p=○|」(○は実数)を付加することで、音声認識の優先度を調整できる。
優先度は-20.0(最小)〜+20.0(最大)で指定する。詳細は後述のサンプルを参考のこと。
[out]answer処理結果。戻り値が0(正常終了)の場合のみ有効。相手が answerWords に指定した言葉を回答した場合、spc::SPC_ANSWER_RECOGEND が格納される。
[out]recogWord相手の回答した言葉(全角カタカナで格納される)。処理結果(answer)が SPC_ANSWER_RECOGEND の場合のみ有効。
[out]recogIndex相手の回答した言葉( recogWord )に対する、answerWords のインデックス値。詳細は後述のサンプルを参考のこと。
覚え書き:
answerWords には、全角カタカナで3文字~10文字の単語を指定すること。
ただし、音を伸ばす文字(「ー」)や、拗音(「ャュョ」などの文字)はカウントしない。
また、待ち受ける言葉に以下のようなメリハリのある言葉を指定すると、Palmiが認識しやすくなる。
・ 母音の変化が多い。
・ 「ガ行」「ザ行」「ダ行」「バ行」など、音の特徴の多い濁音文字が使われている。
・ 「カ行」「サ行」「ナ行」「ハ行」など、音の特徴が少ない文字が使われていない。または少ない。
・ 「ウ段」など、音の特徴が少ない文字が使われていない。または少ない。

Palmi に標準搭載されているコミュニケーションワードを例にすると
・ メリハリの多い言葉: 「立ち上がって」「伝言」「バッテリー」「自己診断」「今何時」など
・ メリハリの少ない言葉:「おはよう」「システム」など
戻り値:
0正常終了
0以外処理失敗
 // リンゴ、ミカン、バナナのいずれかを認識するサンプルプログラム
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 SPC_ANSWER answer;
 std::vector<std::string> answerWords;
 std::string recogWord;
 int recogIndex;

 // 待ち受ける言葉を全角カタカナで追加する
 answerWords.push_back("リンゴ");
 answerWords.push_back("バナナ");
 answerWords.push_back("ミカン");

 // Palmiが質問をする
 long rtn;
 rtn = waitForAnswer("リンゴ。バナナ。ミカン。どれが好きですか?",
                     answerWords,
                     answer,
                     recogWord,
                     recogIndex);
 if(rtn != 0){
   // waitForAnswerの処理失敗
   speakError("質問できませんでした");

   // アプリケーションの終了
   exitComponent();
   return;
 }
 switch(answer){
   case SPC_ANSWER_RECOGEND:
     // ここに、相手の回答が「リンゴ」「バナナ」「ミカン」のいずれかであった場合の処理を記述する
     // 相手の回答は、recogWord、および answerWords[recogIndex] で取得できる
     break;

   case SPC_ANSWER_CANCEL:
     // ここに、相手の回答が「やめる」であった場合の処理を記述する
     break;

   case SPC_ANSWER_TIMEOUT:
     // ここに、相手の回答が無いなどで、タイムアウトした場合の処理を記述する
     break;

   default:
     break;
 }
 // それぞれの言葉に対して、音声認識の優先度を設定するサンプル
 // (リンゴ、ミカン、バナナのいずれかを認識する)
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 SPC_ANSWER answer;
 std::vector<std::string> answerWords;
 std::string recogWord;
 int recogIndex;

 // 待ち受ける言葉を全角カタカナで追加する
 // 優先度は、言葉の前に「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の処理失敗
   speakError("質問できませんでした");

   // アプリケーションの終了
   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 >  yesWords,
std::vector< std::string >  noWords,
std::vector< std::string >  cancelWords,
spc::SPC_ANSWER answer 
)

Palmi が質問を行い、その質問に対する相手の回答を待ち受ける。

  • Yes や No に分類される言葉を指定する。
引数:
[in]sentencePalmi が発話する質問文
[in]yesWordsYes に分類される言葉を指定する(全角カタカナで設定、複数設定可)
[in]noWordsNo に分類される言葉を指定する(全角カタカナで設定、複数設定可)
[in]cancelWords「やめる」と同様に、処理を中断する言葉を指定する(全角カタカナで設定、複数設定可)
[out]answer処理結果。戻り値が0(正常終了)の場合のみ有効
戻り値:
0正常終了
0以外処理失敗
 // 「オッケー」という言葉を、Yes として認識するサンプルプログラム
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;
                  
 SPC_ANSWER answer;
 std::vector<std::string> yesWords, noWords, cancelWords;

 // Yes に分類される言葉を全角カタカナで追加する
 yesWords.push_back("オッケー");

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

 // 質問をさせる
 // 相手が「はい」または「オッケー」と回答した場合、answer に SPC_ANSWER_YES が返る
 long rtn;
 rtn = waitForAnswer("用意はいいですか?",
                     yesWords,
                     noWords,
                     cancelWords,
                     answer);
 if(rtn != 0){
   // waitForAnswer処理失敗
   speakError("質問できませんでした");

   // アプリケーションの終了
   exitComponent();
   return;
 }
 switch(answer){
   case SPC_ANSWER_YES:
     // ここに、相手が Yes に分類される、または「オッケー」と回答した場合の処理を記述する
     break;

   case SPC_ANSWER_NO:
     // ここに、相手が No に分類される回答した場合の処理を記述する
    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 
)

Palmi が質問を行い、その質問に対する相手の回答を待ち受ける。

  • 正解および不正解に分類する言葉を指定する。
引数:
[in]sentencePalmi が発話する質問文。
[in]trueWords正解として指定する言葉(全角カタカナで設定、複数設定可)。
[in]falseWords不正解として指定する言葉(全角カタカナで設定、複数設定可)。
[out]answer処理結果。戻り値が0(正常終了)の場合のみ有効。
正解に指定した言葉を認識した場合は spc::SPC_ANSWER_TRUE
不正解に指定した言葉を認識した場合は spc::SPC_ANSWER_FALSE が格納される。
[out]recogWord認識した言葉。処理結果( answer )が SPC_ANSWER_TRUE または spc::SPC_ANSWER_FALSE の場合のみ有効。
[out]recogIndex認識した言葉のインデックス値。処理結果( answer )が spc::SPC_ANSWER_TRUE または spc::SPC_ANSWER_FALSE の場合のみ有効。
spc::SPC_ANSWER_TRUE なら trueWords 内、 spc::SPC_ANSWER_FALSE の場合は falseWords 内のインデックス値が格納される。
戻り値:
0正常終了
0以外処理失敗
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 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("ビル");

 // Palmi が質問をする
 long rtn;
 rtn = waitForAnswer("丸いものの名前を言ってください",
                     trueWords,
                     falseWords,
                     answer,
                     recogWord,
                     recogIndex);
 if(rtn != 0){
   // waitForAnswer 関数の処理失敗
   speakError("質問できませんでした");

   // アプリケーションの終了
   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 
)

Palmi が質問を行い、その質問に対する相手の回答を待ち受ける。

  • 待ち受ける言葉を指定せずに、質問する。
引数:
[in]sentencePalmi が発話する質問文。
[out]answer処理結果。戻り値が0(正常終了)の場合のみ有効。相手の回答を受けた場合、spc::SPC_ANSWER_FREE_WORD が格納される。
[out]recogPalmiが受けた回答。ひらがな・カタカナ・漢字等が混ざった文字列が格納される。
処理結果(answer) の値が SPC_ANSWER_FREE_WORD (自由回答) の場合に有効。
戻り値:
0正常終了
-2現在使用不可
上記以外処理失敗
覚え書き:
戻り値が-2 (使用不可) の場合、システムにより本機能の使用が制限されている。
 // 待ち受ける言葉を指定せずに、質問をさせるサンプルプログラム
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 SPC_ANSWER answer;
 std::string recog;

 // Palmi が質問をする
 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;

   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 
)

Palmi が質問を行い、その質問に対する相手の回答を待ち受ける。

  • システムが定義している活用形や回答を使用することができる。
引数:
[in]sentencePalmi が発話する質問文。
[in]conjInfo認識する言葉の活用情報。最大5個まで指定可。詳細は spc::SPC_CONJUGATION_INFO を参照のこと。
[in]usualAnswerシステムで定義している回答を使用する場合に指定する。複数指定可。詳細はspc::SPC_USUAL_ANSWER_TYPE を参照のこと。
[out]answer処理結果。戻り値が0(正常終了)の場合のみ有効。詳細は spc::SPC_ANSWER を参照のこと。
戻り値:
0 正常終了
0以外 処理失敗
 // 「はい」「いいえ」の他、「伝えて」「伝えないで」、および「いいよ」「やだ」を認識するサンプルプログラム
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 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(1);
 usualAnswer[0] = SPC_USUAL_ANSWER_PERMISSION;    // 「いいよ」をYes, 「やだ」をNoとして認識する

 // 質問をする
 long rtn;
 rtn = waitForAnswer("お伝えしましょうか?", conjInfo, usualAnswer, answer);
 if(rtn != 0){
   // waitForAnswer処理失敗
   speakError("質問できませんでした");

   // アプリケーションの終了
   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::walk ( spc::SPC_WALK_TYPE  type,
long  walkparam,
float  angle 
)

Palmi を歩かせる。

  • 歩く歩数、または距離を指定する。
  • 周りの障害物等の状況により、途中で歩行を停止する場合がある。
  • 熱が上がっているときやバッテリー残量が低下しているなど歩行できない場合、および AC アダプターが接続されている場合は、Palmi は歩かない。
引数:
[in]type歩行の種別。
spc::SPC_WALK_TYPE_STEPSspc::SPC_WALK_TYPE_DISTANCE を指定する。
[in]walkparam歩行のパラメータ。
type に spc::SPC_WALK_TYPE_STEPS を指定した場合は、Palmi に歩かせる歩数、
spc::SPC_WALK_TYPE_DISTANCE を指定した場合は、Palmi に歩かせる距離(mm)を指定する。
[in]angle歩行中に旋回する角度。現在無効。
戻り値:
0正常終了
0以外処理失敗
参照:
getWalkingMode(bool &walkingMode);
 // Palmi が前に5歩歩く
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 walk(spc::SPC_WALK_TYPE_STEPS, 5, 0.0);
long spc::SPCBase::walk ( spc::SPC_WALK_TYPE  type,
long  walkparam,
float  angle,
bool  sitdown 
)

Palmi を歩かせる。

  • 歩く歩数、または距離を指定する。
  • 歩いた後、Palmiに座らせるかどうかを指定する。
  • 周りの障害物等の状況により、途中で歩行を停止する場合がある。
  • 熱が上がっているときやバッテリー残量が低下しているなど歩行できない場合、および AC アダプターが接続されている場合は、Palmi は歩かない。
引数:
[in]type歩行の種別。
spc::SPC_WALK_TYPE_STEPSspc::SPC_WALK_TYPE_DISTANCE を指定する。
[in]walkparam歩行のパラメータ。
type に spc::SPC_WALK_TYPE_STEPS を指定した場合は歩数、
spc::SPC_WALK_TYPE_DISTANCE を指定した場合は歩行する距離(mm)を指定する。
[in]angle歩行中に旋回する角度。現在無効。
[in]sitdown歩行後に座らせるかどうかを指定。true で座らせる。false の場合は座らせない。
戻り値:
0正常終了
0以外処理失敗
参照:
getWalkingMode(bool &walkingMode);
 // Palmi が前に5歩歩き、歩いた後も座らない
 // サンプルを使用するには、プログラム内に以下の記述を追加してください。
 // using namespace spc;

 walk(spc::SPC_WALK_TYPE_STEPS, 5, 0.0, false);

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