顔認識プログラムの作成
2020年6月19日
9月3日改訂


 今回はロビ2の顔認識機能を使ったプログラムを作成してみます。
 ロビ2は10人分の顔が登録できてアイドリング(命令の待ち受け)時に顔を認識して名前を呼んでくれます。
 画像処理ボードに対して顔認識命令を出して画像処理ボードから返されるユーザ番号に対して登録した名前を呼ぶようにプログラムされています。
 今回はその部分を別プログラムにして返されるユーザ番号でいろいろな処理をしてみます。


登録名の再生プログラム

 顔認識して登録した名前を呼ぶプログラムのソースコード(テキストファイル)です。
 顔認識テスト.TXT
 このプログラムはロビ2のプログラム(STARTUP.BIN)のサブルーチンをそのまま呼んでいます。
 すでにサブルーチンがSTARTUP.BINに組み込まれているのでそのアドレスをcall adr命令で実行しているだけです。

 各サブルーチンがどういう処理をしているのか説明します。
 サブルーチン0x00065df8はロビが「顔をよく見せてね」(S_新コンテンツ/S_007.wav)をしゃべるモーションです。
 サブルーチン0x00003811は顔認識を行って登録番号を0x0fa8に返すサブルーチンです。
 戻された0x0fa8をチェックして登録番号が取得できたら(≠-1)0x0000eafdに分岐します。

 サブルーチン0x00003971はユーザ番号からユーザ名の番号に変換するサブルーチンです。
 サブルーチン0x0003b8dcはユーザ名の番号をロビが音声で再生するサブルーチンです。

 アドレス0x0000ededと0x0000edffはロビの頭のスイッチからの割り込みをチェックする命令で割込みがあったらreturn命令を実行します。
 サブルーチン0x000662a3はロビが「顔が分からなかったよ」(S_新コンテンツ/S_039.wav)をしゃべるモーションです。
 先頭に戻って再度顔認識を行います。


プログラムの組み込み

 上記のプログラムをロビ2のプログラム(STARTUP.BIN)に組み込む方法を説明します。
 まずテキスト形式のソースコードをロビのプログラム記述形式(RM4)に変換する必要があります。
 RM4形式はジャンプ先がプログラムファイルのバイトアドレスでなければいけません。
 この変換にはロビモーションエディタのアドレス調整機能を使います。



 ファイルの種類をテキストにて上記のプログラムソースを読み込みます。
 この時プログラムのジャンプ先をブロック名に変換するのチェックは外しておいてください。



 OKボタンを押すと上記ダイアログが表示されます。
 これに対して「はい」を答えてください。



 上記質問にも「はい」を答えてください。
 変換に成功すると右のダイアログが表示されます。
 なおここでは本体のサブルーチンをコールするcall adrのアドレスは変換されません。

 次にロビプログラムコンパイラーを使ってロビ2のプログラム(STARTUP.BIN)に組み込みます。



 変換したRM4ファイルを読込みボタンで読込みます。
 変換ボタンでロビ2のプログラムに変換します。



 変換に成功すると上記ダイアログが表示されるのでOKボタンを押します。
 書込みボタンが押せるようなるので書込みボタンを押します。



 ロビ2のSDカードを書き込めるようにしてSTARTUP.BINを指定します。



 次に割付ける認識語を指定してください。
 このプログラムを動かす認識語で任意の認識語が指定できます。
 この例では「テストなんだ」を指定しています。


パワーアッププログラムの実行

 ユーザの登録番号でパワーアッププログラムのサブルーチンを実行するプログラムを作成しました。
 ものまねして.TXT
 直接表示すると文字化けします。PCにダウンロードして表示してください。
 取得したユーザの登録番号で分岐させてその先でパワーアッププログラムのサブルーチンをcall adrで呼んでいます。

 37回までのパワーアッププログラムとサブルーチンアドレスは以下の通りです。

  1回 パワーアップダンス  0x1201dd
  2回 創刊号        0x047c54
  3回 毛穴         0x2cea4a
  4回 宇宙飛行士      0x06252c
  5回 象          0x0455ad
  6回 イタリア語      0x35ef89
  8回 コールセンター    0x04c174
  7回 ロビ音頭(2番)    0x276580
  9回 ゴルフ        0x05ec45
  10回 おしゃべりガイコツ  0x2cf72f
  11回 映画の予告      0x2d36ae
  12回 野球         0x060067
  13回 エアギター      0x05b46f
  14回 カンフー       0x3f4f68
  15回 ボディビル      0x041a6b
  16回 三三七拍子      0x2a4315
  17回 かけっこ       0x048a80
  18回 ゴリラ        0x046a1f
  19回 空手         0x3f3bed
  20回 車掌         0x050636
  21回 豆まき        0x2ccc21
  22回 医者         0x0570b4
  23回 忙の歌        0x12fd20
  24回 歌舞伎        0x042fae
  25回 寿限無        0x2ca6be
  26回 猫          0x05a41a
  27回 マラソン       0x2d54f6
  28回 バスガイド      0x05276d
  29回 羊          0x0615b5
  30回 隣の家        0x2d243c
  31回 ニュースキャスター  0x04a553
  32回 パントマイム     0x2d0bb2
  33回 迷子の呼出      0x0548db
  34回 中国語        0x36074d
  35回 ロビ音頭(3番)    0x271f46
  36回 なんくるないさ    0x2a6418
  37回 槍投げ        0x05d1e4


 実際に動かした動画です。

   

   

 ロビのプログラム変更やSDカードの書き換えは、ロビ本体への影響を伴うのであくまでも自己責任という事でお願いします。
 ロビのオリジナルプログラムは必ずバックアップを取っておいて問題があればオリジナルのプログラムに戻してください。

目次に戻る