言語切り替え

文字を認識して動くラジコン

今回やること

紙に書かれた文字を認識して動くラジコンを作ります。

必要なもの

組み立て方

以下の表や図のように配線します。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 文字を掲げた場所に向かう

完成したプログラム