Top > セットアップから開発まで > 特技を作ろう(プログラミング) > サンプルアプリケーション

サンプルアプリケーション

顔を見つけたらあいさつをするプログラムを紹介します。
「顔検出イベント」が発生したタイミングで Palmi が名前を呼んでくれるサンプルです。
知っている人の顔を見つけたら、「こんにちは○○さん」とあいさつをします。知らない人の顔を見つけたら、「どなたかわかりませんが、こんにちは」とあいさつします。
Palmi を持ち上げたり、頭にさわった場合は、アプリケーションを終了します。



SPC no Sample Program.gifPmG_sample_program1.png

/**
* @file SpcSample.cpp
* @brief SPCサンプルアプリケーション
*
* @note 本サンプルプログラムの最終行にある変数宣言は非常に重要です。
* SPCは、「spcApp」と言う固定の変数に対して処理を行うように作られています。
*/

#include <spc/spcbase2.h>
#include <stdlib.h>

/**
* 顔検出イベントを使用したサンプルです。
*
* 顔検出イベントで通知された名前を記憶し、呼びかけます。
* 顔認識ができなくなった場合にも、顔検出イベントで通知された名前で呼びかけを行います。
* Palmiの頭に触ったり、Palmiを持ち上げたりすると、アプリケーションは終了します。
*
*/
class SpcSample : spc::SPCBase {

private:

  • std::string face_catch_name;
  • bool m_bExecCallback;

public:

  • /**
  • * @brief SPC起動時に呼び出されるインタフェース。
  • */
  • void onInitialize() {
    • long result;
    • face_catch_name = "";
    • m_bExecCallback = true;
    • // 発話は必須ではありませんが、アプリケーション起動確認のために発話させています。
    • result = speak("サンプルアプリケーションを起動しました");
    • m_bExecCallback = false;
  • }
  • /**
  • * @brief 人の顔を検出した際に呼び出されるインタフェース
  • *
  • * @param name 認識した個人の登録名(全角カタカナ). 個人未確定の場合は空白文字列
  • *
  • */
  • void onFaceCatch(std::string name) {
    • long result;
    • std::string str;
    • if(m_bExecCallback == false){
      • // コールバックが二重で動作しないようにしています
      • m_bExecCallback = true;
      • /*
      • * 顔識別結果の登録名が格納されている場合は、登録名で呼びかけます。
      • */
      • if(name != ""){ // 登録者の場合
        • // 発話内容組み立て
        • face_catch_name = name + "さん";
        • str = + "こんにちは、" + face_catch_name;
      • }
      • else{ // 未知の人の場合
        • face_catch_name = "あのー";
        • str = "どなたかわかりませんが、こんにちわ";
      • }
      • // 発話API呼び出し
      • result = speak(str);
      • m_bExecCallback = false;
    • }
  • }
  • /**
  • * @brief Palmiが顔を見失った際に呼び出されるインタフェース
  • *
  • * 顔検出が行われた後であれば、顔検出で設定した呼び名を発話します。
  • */
  • void onFaceDrop() {
    • if(m_bExecCallback == false){
      • // コールバックが二重で動作しないようにしています
      • m_bExecCallback = true;
      • if(face_catch_name != ""){
        • long result;
        • // 発話API呼び出し
        • result = speak(face_catch_name);
        • result = speak("どこですかー?");
        • face_catch_name = "";
      • }
      • m_bExecCallback = false;
    • }
  • }

};

// SPCアプリケーションインスタンス生成
SpcSample spcApp;

※このプログラムは、特技のサンプル(あいさつ)です。
 その他(質問をする、スティップリングレンズを表示する、モーションをする、
 タイマーを使用する、歩くのサンプルを用意しています)

サンプルソース