猟犬ポインターのロボットを作る
本サイトに投稿した「Pointer Robot With Raspberry Pi and Arduino」の日本語版です(現状は骨子のみですが...)。
【動画 1】概要
:
英語版(*) の方をChromeやFirefox等のブラウザで開いてGoogle翻訳すると、実用上ほぼ問題ない日本語で読むことができます。今後、こちらの日本語版の方も完成に向けて進めて行く予定ですが、お急ぎの方は英語版の方をご覧ください。
なお、英語版は「マウクロ-コントローラ・コンテスト」にエントリーしてます。気に入っていただけたら、記事最後の「Vote Now!」をクリックして投票頂けると幸いです。
(*) 英語版はこちら (This is shared in English.)
:
ラズベリーパイとArduinoを補完活用する
誤解を恐れず言うと、Raspberry Piはマイクロ・コントローラーというより小型パソコン。
苦手な作業もある。
例えばPWMを使ったサーボの制御は面倒だし、音声処理を並列して行う場合は更に困難。
Arduinoとの補完的な利用で自由度が広がる
- ラズベリーパイ:画像や音声のリアルタイム処理のように多くのリソースを要する作業
- Arduino:ラズベリーパイの作業結果を受けて周辺機器を制御
:
ラズベリーパイをセットアップする
工作の再現性を確保するために、OS(Raspbian)のクリーン・インストールから作業を開始する
:
カメラとマイクを準備する
安価で十分な性能を持つロジクール製のマイク付きのUSBカメラ「C270」を使う。
:
OpenCVをインストールしてカラー・トラッキングを試す
まず画像解析ソフトの「OpenCV」をラズベリーパイにインストールする。
後述の音声解析ソフトのインストールに比べるとずっと簡単。
【動画 2】カラー・トラッキング
:
サンプル・ファイルを2つダウンロードする。
- 単純なプレビュー画面
- カラー・トラックキング機能付き
それぞれ実行する。
:
小型サーボでUSBカメラの2軸雲台を作る
安価な小型サーボ「SG90」を2つ使って2軸のカメラ雲台を作る。
特別なフレームは使わず、付属のサーボ・ホーンとカメラを下記の材料で基盤に接続。
- 両面テープ(もしくは接着剤)
- 輪ゴム
- 結束バンド(もしくは針金)
:
Arduinoで2軸雲台を制御する
添付の配線図を見て配線を行う。
Arduinoのサンプル・スケッチをダウンロードして、Arduino NANO(もしくは安価な互換品)にアップロードする。
動作のテストを行う。
:
言語解析ソフト「Julius」をインストールする
日本語の言語解析ソフトJuliusをラズベリーパイにインストールする。
作業手順は講談社の「実例で学ぶRaspberry Pi電子工作」(金丸隆志 著)の補足解説サイトに準じる。
:
Raspberry Piの音声入力を設定する
ホーム・ディレクトリの「.bashrc」を編集する。
音声設定ファイルをダウンロードしてホーム・ディレクトリにコピーする。
コピーしたファイルの名称を「.asoundrc」に変更する。
「Alsamixer」でサウンドカードの設定を確認、変更する。
:
Downloads
辞書ファイルをダウンロードして試してみる
ポインター・ロボット制御用の辞書ファイルをダウンロードして内容を確認する。
Juliusの聞き取り設定ファイルを書き換えて、ダウンロードした辞書ファイルを参照するよう修正する。
聞き取りを試してみる。
【動画 3】Juliusによる音声認識の試行
:
Downloads
配線を完成する
ロボットの胴体基盤にモータ、ギアボックス、車輪を取り付けて配線を完成させる。
ラズベリーパイのVNC(リモート・デスクトップ機能)を有効化して不要なケーブルを外す。
:
ロボットを起動する
新たなサンプル・ファイルを2つダウンロードしてホーム・ディレクトリに移す。
ロボットを起動して、音声制御に従うように準備する。
:
ロボットを音声で制御する
ロボットを音声指示で制御する。
【動画 4】音声指示でロボットを動かす
:
ロボットを猟犬ポインターにする
自動追尾用のプログラムを追加実行する。
音声指示 ⇔ 自動追尾のシームレスな実行を確認する。
【動画 5】音声指示で獲物を自動追尾させる
:
応用を考える
応用
- カメラを本来の横向き(ランドスケープ)に取り付ける
- ターゲットを音声指示で切り替える
- ロボットをポインター犬から愛玩犬に変更する
- ロボットをいたずら好きな猫に変更する
- ロボットに顔を付ける
- 機材を学研のミニビーストに移植する
【動画 6】改善と発展
:
部品リスト
材料
- ラズベリーパイ 3:Pi Zeroはうまく動作しない
- マイクロSDカード:16GB(8GBでは容量不足)
- Arduino:NANO(もしくは同等品)
- レベルコンバータ:Arduino 5VとPi 3.3Vを仲介
- マイク付きUSBカメラ:ここではLogitech C270を使用
- サーボモータ:SG90(2個)
- モータドライバ:L298N
- DCモータ:下記ギアボックスに2個付属(ノイズ抑制コンデンサの取付けが望ましい)
- ギアボックス:タミヤ製のダブルギアボックス(減速比は344.2:1)
- ホイール:タミヤ製のナロータイヤセット
- キャスタホイール:ロボットの後部に取り付ける3つ目の車輪
- プレート:ロボットの躯体(タミヤ製のユニバーサルプレート(大))
- バッテリ(1):DC5V(Pi 3とArduinoに十分な電流を供給)
- バッテリ(2):DC5V(2つのDCモーターと2つのサーボ用に電流を供給)
- ジャンパーケーブル
- ブレッドボード
- USBケーブル:電源用
- HDMIケーブル:ラズベリーパイのセットアップ用
- LANケーブル:ラズベリーパイのセットアップ用
- オレンジ色のボール:ターゲット