文字を認識して動くラジコン
コンテンツ
今回やること
紙に書かれた文字を認識して動くラジコンを作ります。
必要なもの
- obniz Board
- DCモーター x2
- タイヤ x2
- スマートフォン
- ラジコンカー
組み立て方
以下の表や図のように配線します。DCモーターを取り付ける向きによってタイヤの回転方向が変わるため、適宜調整してください。
| obniz | DCモーター |
|---|---|
| 0 | 左側のDCモーター OUT1 |
| 1 | 左側のDCモーター OUT2 |
| 10 | 右側のDCモーター OUT2 |
| 11 | 右側のDCモーター OUT1 |

DCモーターにタイヤを取り付け、ラジコンの車体を作ります。obnizやobnizの電源用バッテリー、スマートフォンを固定できるように作ると良いでしょう。
プログラム
Google Cloud APIのAPIキーを取得する
このアプリにはGoogleCloudAPIのAPIキーが必要なので取得しましょう。
① Google Cloud Platform のコンソール画面に行き、APIとサービスよりライブラリを選択します。
② APIライブラリの検索画面が出るので vision と検索します。
③ Cloud Vision API を選択します。
④ 有効にするボタンを押します。
⑤ 有効化ができたらAPIとサービスのダッシュボードに戻り、認証情報を選択します。
⑥ 認証情報を作成からAPIキーを選択します。
⑦ 表示されたAPIキーはHTMLにコピーして使います。実行時にHTMLのこちらにコピーしてからスタートボタンを押してください。
Google Cloud Vision APIを使う
Google Cloud Vision APIは、POSTリクエストで画像を送信することによって、画像の解析が行えるAPIです。様々な画像解析のバリエーションがありますが、今回は文字認識APIを利用します。
この際、画像はBase64形式にエンコードする必要があります。
以下のコードはGoogle Cloud Vision APIへのリクエストを送る部分を記述します。画像のエンコードに関しての詳細は完成したプログラムを参照してください。
var base64Img = BASE64_IMAGE;
// get API key
var apiKey = document.getElementById("google_api_key").value;
var body = {
"requests": [{
"image": { "content": base64Img },
"features": [
{ "type": "LABEL_DETECTION" },
{ "type": "TEXT_DETECTION", "maxResults": 1 }
]
}]
};
//request to google api
fetch("https://vision.googleapis.com/v1/images:annotate?key=" + apiKey,
{
body: JSON.stringify(body),
method: 'POST',
headers: { 'Content-Type': 'application/json' }
}
).then(function (response) {
// process for the response
})...
文字列と動きの対応
この記事のプログラムで反応する文字列と動きの対応表です。
| 文字 | 動き |
|---|---|
| 進, すすめ, go | 前進する |
| 後, バック, back | 後退する |
| 止, とまれ, stop | 止まる |
| 右, みぎ, right | 右を向く |
| 左, ひだり, left | 左を向く |
| こっち, こちら, here | 文字を掲げた場所に向かう |