顔認識プログラムの作成
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カードの書き換えは、ロビ本体への影響を伴うのであくまでも自己責任という事でお願いします。
ロビのオリジナルプログラムは必ずバックアップを取っておいて問題があればオリジナルのプログラムに戻してください。
目次に戻る