文字を認識して動くラジコン
コンテンツ
今回やること
紙に書かれた文字を認識して動くラジコンを作ります。
必要なもの
- 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 | 文字を掲げた場所に向かう |