Raspberry Pi・Arduino・電子工作

2017年6月24日 (土)

”ラズパイで初めての電子工作”買ってみた

Raspberry Piや電子工作に興味はあるものの、Linuxやプログラム言語、電子回路にしり込みして手が出せないという方は多いと思います。特に電子回路、私も最初はさっぱりでした。

そんな人のためにいろいろな本が出てますが、日経BPが出したこの”ラズパイで初めての電子工作”はなかなかいい本じゃないかと思います。

Img_1270

私も、思わず買ってきました。買った理由は後述。

通常、この手の本は分厚いかA4ファイルサイズくらいのムックが多いですけど、この本は薄いB5サイズの扱いやすい書籍。

これくらいなら読んでみようかと思う方は多いかもしれません。

Img_1262

目次です。初心者向けプログラミング&電子工作の書籍としてはほぼ定番の構成。

Img_1264

Raspberry Piの解説ページです。

この書籍、小さくて薄いわりに文字が大きいです。

Img_1265

プログラム言語の主軸はこのScratch。

Pythonもありますが、ほとんどこのScratchでの記述されてます。

子供から大人まで使いやすい言語なので、最初はこれから始めるといいかもしれませんね。

Img_1266

で、私がこの書籍を買った理由はこれ。

なんと、マイクラをScratchで動かしてます。

ブロックをあるパターンで複数個配置するというプログラムですが、子供がマイクラにはまっているだけに、ちょっと気になります。

PC版マイクラでも似たような仕組みはありますが、子供自身にやらせてみると面白いかなぁと思った次第。まあ、うちの子がやれるかどうかは未知数ですけど・・・

Img_1267

他にも温度センサーと連動して動作する扇風機や

Img_1269

人感センサーに反応してScratchのあの猫のキャラが反応するという仕組みまであります。

初心者向けにしては、いろいろできますね。

さすがにScratchではディープラーニングはできないため、画像認識で動くロボットとかは作れそうにありませんが、Scratchと電子工作だけでも結構いろいろやれることがわかります。

子供の夏休みの自由研究ネタによろしいのではないかと。もっとも、こんなコンピュータボードを学校に持ち込んでいいものかはわかりませんけど。

ラズパイで初めての電子工作 (日経BPパソコンベストムック)

2017年6月21日 (水)

Bluetooth体重計+Raspberry Piで毎日の体重を自動でGoogle Fitに記録させる方法

Bluetooth体重計というのも3000円ほどとずいぶん安くなってるようです。

が、その体重計がスマホアプリ対応なものの、毎日の記録を振り返るにはやや不便だったため、Raspberry Piと連携して”Google Fit”にアップし体重管理を行うという事例がQiitaに出ておりました。

3000円の Bluetooth 対応体重計を Raspberry Pi を使って Google Fit に対応させてみた その1 - Qiita

使う機材は”Karafitt”というBluetooth対応体重計に、Raspberry Pi 3。

ただし、上の記事はまだBluetoothを解読したところで終わっており、Raspberry Piとの連携+Google Fitへの記録はこれからのようです。

しかし、体重計に乗る前にいちいちアプリを起動せずに記録が取れるというのは便利ですよね。まさにIoTな活用法です。

私は標準体重を維持し続けているのでいいんですが、妻が・・・身長は私と10cm以上違うのに、体重差はほとんどないということで、子供二人と妻の3人が”成長期”だと自虐ネタにしているほどでして。

妻の”成長”を食い止めるためにも、こういう体重測定の仕組みを導入したいところ。続きが気になります。

Karafitt 体重?体組成計?体脂肪計 スマートスケール 体重 / 体脂肪 / 体の水分 / 推定骨量 / 基礎代謝 / 内臓脂肪 / BMIなど測定可能 Bluetooth対応 iOS / Androidアプリで健康管理 日本語専用アプリ

2017年6月20日 (火)

Raspberry Pi Zeroを内蔵した314GBの”PiDrive Node Zero”

1年ちょっと前にRaspberry Pi用314GB HDD「PiDrive」というのが出ましたけど、そのPiDriveにRaspberry Pi Zeroを内蔵しちゃったモデルというのが出ているようです。

ラズベリーパイの調理法 WDLabs PiDrive Node Zero - Pi Zero と WD ハードディスクによる IoT エッジノードサーバー

その名”PiDrive Node Zero”。お値段は日本のAmazonでは1.1万円ほどで販売中。

基板ムキムキな製品ですが、HDDを外付けするよりはスリムなRaspberry Piキットです。

単体でサーバーとして稼働させることも可能ですが、Wi-Fi内蔵のRaspberry Pi Zero Wではないため、別途無線LANドングルなどが必要です。

Raspberry Pi + PX-S1UD V2.0で地デジ予約録画環境(TS抜き)で録画サーバーとして使ったり、離れた施設の監視用のサーバーとして使うなどの利用が考えられますね。Raspberry Piの欠点であるストレージ容量の少なさはある程度解消されてますし。でも、できれば500GBくらいは欲しいですよね。円周率(Pi)”3.14”にちなんだ容量のままというのもあまり合理的とは言えませんし。

ところで、Raspberry Pi Wの国内販売がなかなか始まりませんね。

【未発売】Raspberry Pi Zero W - スイッチサイエンス

3月には発売といわれていたのに、6月中現在でもまだ発売されてません。何か問題があるんでしょうかね?個人的にはこれにHDDを一体化してほしいです。

WDLabs PiDrive Node Zero - オールインワン Raspberry Pi Zero IoT エッジノードサーバー

持ち主について回るクーラーボックス”Follow Me Cooler”

TensorFlowで「松本城」にすり寄ってくる自動運転カーよりもずっと単純で、それでいてちゃんとついてきてくれるクーラーボックスを作ってしまった人がいます。

Make an Autonomous "Follow Me" Cooler - Hackster.io

その名も”Follow Me Cooler”。Arduinoとジャイロ、加速度、GPSセンサー、そしてスマホだけで作り上げたそうです。

作り方が上のリンク先にて公開されており、だれでもこのクーラーボックス台車を作ることが可能。Arduinoのコードも公開されてます。

どうやら、スマホの位置情報と、GPSの位置情報とを比較し、そのずれ分を移動するという仕組みのようです。

このため、持ち主とこのクーラーボックスとの間の障害物をよけることは不可能。上の動画でもそういう場面が出てきます。

これを応用して先の「松本城カー」を改良すれば、もう少しましなものが作れそう。ちょっと研究してみようと思ってます。

低速の自動運転カーを作りたいと思っている方は、きっとこのサイトは参考になると思います。

Arduino エントリーキット(Uno版)- Physical Computing Lab

2017年6月19日 (月)

新型真空管”KORG Nutube”を使ったラジオ

そういえばKORGの”Nutube”という新しい真空管が出てますが、この真空管を使ったラジオが発売されるそうです。

KORGの次世代真空管「Nutube」を使ったラジオキット。「電子工作マガジン」連動企画 - AV Watch

電波新聞社の「電子工作マガジン2017年夏号」と連動して発売されるこのキット、お値段はキットが15,800円ほど、完成品が17,800円程度とのこと。発売は6月19日。

真ん中に見える四角いのが真空管。あまり真空管に見えませんが、ちゃんと増幅もできるれっきとした真空管だそうです。

真空管というと消費電力が多そうなイメージですが、このKORG Nutubeは比較的電力消費の少ない今どきの真空管。アルカリ電池一本で10時間持つそうなので、本当に電力消費は少な目のようです。

ちょっと外観はいまいちなデザインですが、中はしびれますねぇ。いかにも真空管!!というデザインではありませんが、渋い雰囲気は感じます。

せめてアンプだったらちょっと買ってみてもいいかなぁと思ったんですが、そういうのも出さないんでしょうかね?

ADDP1707K 電子工作マガジン 2017年 夏号連動企画 ハイブリッド・ラジオ・レシーバー 部品キット

2017年6月13日 (火)

自然な韻律で応答してくれる技術”HEARTalk”が使える基板

Raspberry PiやArduinoで使える基板ですが、音声合成とはちょっと違ったコンセプトの基板です。

ヤマハの自然応答技術「HEARTalk」を使い、あらかじめ録音したデータの韻律を変えて応答してくれるという回路が、スイッチサイエンスから発売された模様です。

ASCII.jp:自然な韻律で音声返答する「HEARTalk」が誰でも使える自作基板が発売

発売元:HEARTalk™ UU-001 - スイッチサイエンス

で、その”HEARTalk”という技術は何ぞやというのは、こちらの動画をご覧ください。

ただ「うん」「はい」という単純な受け答えでも、確かに韻律次第では自然に聞こえますね。不思議~

よく考えてみれば、私も普段やってますね、こういう会話。しかも、韻律が最悪なパターンで・・・ちょっと反省。これ買って、受け答え専用に使おうかなぁ。

Raspberry Pi3 Model B ボード&ケースセット 3ple Decker対応 (Element14版, Clear)-Physical Computing Lab

2017年6月 2日 (金)

ネットで話題のあの”謎装置”を再現

セルフのガソリンスタンドって、まったく無人というわけではないんですよね。

中に人がいて、給油開始前に中の人がカメラで安全を確認し、スイッチをタップしないと給油できない仕組みになってるようです。見たことはありませんが。

私のよく行くスタンドは、時々反応が鈍くて30秒以上待たされることがありますが(一度あまりに遅いのでインターホンを押しちゃったことあり)、あれは要するになかなかスイッチをタップしてくれなかったようです。寝てたのかな?

それはともかく、タップするだけの機能なら機械にやらせてしまえという人も現れたようですが、これは明らかな消防法違反。先日とあるガススタでの摘発ニュースが流れてました。

セルフ式ガソリンスタンドで不正が発覚、無人で給油許可ボタンを押し続ける機械を自作していた! : オレ的ゲーム速報@刃

さてここで登場した「謎の機械」をArduinoで作ってしまった人がいます。

ネットで話題になった『謎の装置』を作ってみた | オモコロ

といっても、ただ画面をぱしばしタップするだけの機械ですから、大したつくりではないですが・・・

ただ、応用できそうな気がしたのでちょっと紹介。

もちろん、ガススタでの使用はダメ!絶対ダメ!!

TensorFlow+Raspberry Piあたりと組み合わせれば、留守の自宅や駐車中の車にやばそうな人が来たら何となく人の気配を作り出す装置なんか作れないものかと、ちょっと考えてしまいました。窓の裏からこつこつとやるだけで、なんとなくちょっと入りづらくなりますよね。

特に私の周囲は車上荒らしが多いのですが、暗闇を狙われることが多いんですよね。

防犯装置もあるんですが、案外誤作動が多くて鳴っても出てこないこと多いんです。

そんな時、暗闇の車内から突然がつんがつんと音がすれば、本当の意味での防犯装置になりそうです。そんな装置、普通はないですからね。意表はつけます。

たったこの程度の機能の機械でも、良くも悪くも使えるんですよね。ほんと、機械は”人”次第です。

Arduinoをはじめよう 互換キット UNO R3対応互換ボード 初心者専用実験キット 基本部品セット20 in 1 (Arduino学習キット基本版)

2017年5月30日 (火)

テトリス専用端末”Tetris MicroCard”

テトリス専用端末”Tetris MicroCard”が秋葉原のツクモパソコン本店IIで販売されてるそうです。

どこでもテトリスが遊べる!カードサイズのゲーム機「Tetris MicroCard」が販売中 - AKIBA PC Hotline!

要するにこの筐体は「Arduboy」がベースなわけですが、Arduboyと違って書き換えは不能。ちなみにお値段は税込み6,999円。ちょっと高いですね。

といっても、昔はあれほどよく見かけたキーホルダー型のテトリスというのはもう売られていないらしいので、常にテトリスを持ち歩きたいという方はこれくらいしか選択肢がなさそうです。

そういえば、テトリスのX1版を持ってました。多分、今でも持っていると思いますが、X1版があるということはつまり20年以上前に流行ったゲームなんですよね。未だに愛されてるというのもなかなかすごいことです。

ただテトリスをやりすぎると、机の引き出しの中身やカバンの中を隙無く詰めこむようになったり、電車や人混みの空いている隙間に入り込みたくなったりして実生活に影響が出始めるので、ご注意を。

LEDライト テトリスライト 照明【TETRIS LED light】TETRIS照明 7色のブロック 組み立て自由 テトリス ブロック USB おもちゃ スポットライト デスクライト プレゼント ギフト 人気 インテリア

2017年5月24日 (水)

TensorFlowで「松本城」にすり寄ってくる自動運転カー作ってみた

前回「TensorFlowで顔めがけて近づいてくる車を作ってみた」のやつは、検出された顔がカバンちゃん似だろうとフェネック似だろうと「そこに顔があるから」と見境なく突っ込んでくるという、まるで登山家の名言を地で行く車でしたが。

今回は対象を識別して、特定のものに接近するやつを作ってみました。いかにも「人工知能」って感じの電子工作です。

いろいろ考えたんですが、既存の教師データを用いるのが簡単だろうということで「TensorFlowで”日本のお城”を識別させてみた: EeePCの軌跡」の時に使ったお城の写真を使うことにしました。

ただ、カメラ映像ってのは明るい/暗い、ノイズの有無がある ので、既存の教師データから明るい画像、暗めの画像、ノイズ付き画像などを作って画像を増やしてみました。

そんな画像を作り出すコードは以下の記事を参考に

機械学習のデータセット画像枚数を増やす方法 - Qiita

こういうのを作りました。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import cv2
import numpy as np
import sys
import os

# ヒストグラム均一化
def equalizeHistRGB(src):

    RGB = cv2.split(src)
    Blue   = RGB[0]
    Green = RGB[1]
    Red    = RGB[2]
    for i in range(3):
        cv2.equalizeHist(RGB[i])

    img_hist = cv2.merge([RGB[0],RGB[1], RGB[2]])
    return img_hist
# ガウシアンノイズ
def addGaussianNoise(src):
    row,col,ch= src.shape
    mean = 0
    var = 0.1
    sigma = 15
    gauss = np.random.normal(mean,sigma,(row,col,ch))
    gauss = gauss.reshape(row,col,ch)
    noisy = src + gauss
   
    return noisy

# salt&pepperノイズ
def addSaltPepperNoise(src):
    row,col,ch = src.shape
    s_vs_p = 0.5
    amount = 0.004
    out = src.copy()
    # Salt mode
    num_salt = np.ceil(amount * src.size * s_vs_p)
    coords = [np.random.randint(0, i-1 , int(num_salt))
                 for i in src.shape]
    out[coords[:-1]] = (255,255,255)

    # Pepper mode
    num_pepper = np.ceil(amount* src.size * (1. - s_vs_p))
    coords = [np.random.randint(0, i-1 , int(num_pepper))
             for i in src.shape]
    out[coords[:-1]] = (0,0,0)
    return out

if __name__ == '__main__':
    # ルックアップテーブルの生成
    min_table = 50
    max_table = 205
    diff_table = max_table - min_table
    gamma1 = 0.75
    gamma2 = 1.5

    LUT_HC = np.arange(256, dtype = 'uint8' )
    LUT_LC = np.arange(256, dtype = 'uint8' )
    LUT_G1 = np.arange(256, dtype = 'uint8' )
    LUT_G2 = np.arange(256, dtype = 'uint8' )

    LUTs = []

    # 平滑化用
    average_square = (10,10)

    # ハイコントラストLUT作成
    for i in range(0, min_table):
        LUT_HC[i] = 0
               
    for i in range(min_table, max_table):
        LUT_HC[i] = 255 * (i - min_table) / diff_table
                                 
    for i in range(max_table, 255):
        LUT_HC[i] = 255

    # その他LUT作成
    for i in range(256):
        LUT_LC[i] = min_table + i * (diff_table) / 255
        LUT_G1[i] = 255 * pow(float(i) / 255, 1.0 / gamma1)
        LUT_G2[i] = 255 * pow(float(i) / 255, 1.0 / gamma2)

    LUTs.append(LUT_HC)
    LUTs.append(LUT_LC)
    LUTs.append(LUT_G1)
    LUTs.append(LUT_G2)

    # 画像の読み込み

    file_list = os.listdir('./jpg/')
    for file in file_list:
      img_src = cv2.imread('./jpg/' + file)
      trans_img = []
      trans_img.append(img_src)
   
    # LUT変換
      for i, LUT in enumerate(LUTs):
          trans_img.append( cv2.LUT(img_src, LUT))

    # 平滑化      
      #trans_img.append(cv2.blur(img_src, average_square)) 
   
    # ヒストグラム均一化
      trans_img.append(equalizeHistRGB(img_src))

    # ノイズ付加
      trans_img.append(addGaussianNoise(img_src))
      trans_img.append(addSaltPepperNoise(img_src))

    # 反転
      #flip_img = []
      #for img in trans_img:
      #    flip_img.append(cv2.flip(img, 1))
      #trans_img.extend(flip_img)

    # 保存
      if not os.path.exists("trans_images"):
          os.mkdir("trans_images")
   
      base =  os.path.splitext(file)[0] + "_"
      img_src.astype(np.float64)

      for i, img in enumerate(trans_img):
         
          cv2.imwrite("trans_images/" + base + str(i) + ".jpg" ,img)

これを使うと明暗画像やノイズの入った画像、ピンボケ気味の画像、それらを反転した画像が作られ、結果1枚の画像が18枚に増えます(ただし、このコードでは「反転」をコメントアウトしてるため9枚 理由は後述)。

つまり、当初 全383枚だったお城の写真が一気に6894枚に!

となるはずだったんですが、ここで問題発生!!

なんとうちのGeForce GTX 1050がメモリオーバーを起こしちゃったようで、妙なエラーをはいて動かなくなってしまいました。

画像を3700枚程度まで減らすと動いたため、メモリ不足だと推測しています。

やっぱり安いボードはこういうところがボトルネックになりますね。やはり8GB搭載した1080あたりが欲しい・・・

とりあえず「反転」をコメントアウトし、枚数を9倍(3447枚)に抑えておきました。

これを使ってTensorFlowコードで学習。

また、カメラ映像の中から「お城」部分を切り出す判別器は以下の記事のとおり作成。

TensorFlowで”日本のお城”を識別させてみた: EeePCの軌跡

これで準備完了。

続いて、目標となるお城の写真を準備。

Img_1383

A4で6枚入るように印刷し切り取り、百均で買ってきた札立てに張り付けて作成。

このブログ、百均に頼ってばかりです。セリア、ダイソーに足を向けて寝られませんね。

この写真のうち「松本城」を目標に接近するようプログラムしました。

なぜ「松本城」なのか?ですが、私の苗字とは関係なく、ただ単にこの中で最も識別率が高かったからという理由だけです。

ちなみに私の作った学習器はどういうわけか「迷ったら岡崎城!」と思うようにしているらしく、岡崎城の誤認識率が異常に高いです。

・・・てことで、岡崎城にすり寄るマシーンだけは作れそうにありません。家康公ゆかりのいいお城なんですけどねぇ。

Img_2885

写真を並べて(ここでは左から2番目)

Img_2886

「松本城めがけて走るカー」を置き、いざスタート!

Img_2887

たどたどしく動きながら

Img_2888

だんだんと「松本城」に接近

Img_2889

20cmほどのところで予定通り停止。成功です!

Img_2890

今度は一番左に配置して再びGo!!

Img_2892

最終的にはご覧のとおり、たどり着いてくれました。

よく似てる写真(熊本城)もあるんですが、全く見向きもしませんね。「松本城」一筋です。

Img_2894

なお、松本城の写真だけを引きはがすと

Img_2895

ついてきます。けなげ~。

Img_2896

なんだか「松本城」が死ぬほど好きなワンちゃんのような感じ。なぜか愛着がわきますね。

丸いつぶらな瞳がよりかわいさを誘います・・・が、あれは目ではなくて超音波センサーなんですけどね。

なお、彼の”眼”(カメラ)にはこう見えてます。

Cnnautocar01

たまに誤認識、検出ミスはありますが、大体の写真を識別していることがわかりますね。

(この画像では右から2番目に目標)

Cnnautocar02

20cm付近ではこの大きさになります。もう彼の眼には「松本城」だけしか見えない状態。めろめろです。

動画も載せておきます。実際にはこんな感じの動き。

徐々にほふく前進して迫っていくような慎重な動きですが、確実に目標に向かってます。

ようやく今回で”人工知能”ぽいものを作ることができました。

もっとも、これが一体何の役に立つのか!?といわれると何とも言えませんが・・・

ただ、この工作の製作目的は”デモンストレーション”なので、個人的には満足のいく出来でしょうか。

そういえば、前回書き忘れましたが、Arduinoとモーターの間には「DRV8835」というモータードライブがついてます。

ここで使われてる電子部品は、Raspberry PiとPiカメラ、Arduino UNO互換ボード、DRV8835、タミヤのロボットリモコンキット、超音波センサーHC-SR04、乾電池とモバイルバッテリー。

そんなに派手な部品は使用しておりませんが、人工知能と結びつけばこんなものも作れるってことで。

なお、これだけみると動作は一見完璧なようですが、実は夜になるとうまく動作してくれないという問題を抱えてます。

Img_2874

部屋の明かりが悪いのか、カメラセンサーがダサいのかわかりませんが、写真がちょっと暗くなるとすべて”岡崎城”に見えてしまうようです。

Img_2872

そこでこういうものを使って

Img_2868

照らしてやるとようやく「松本城」に気付いてくれました。

なんだか光で誘導しているように見えますが、ほかのお城の写真を照らしても見向きもしないので、やはり彼は「松本城」一筋です。

ちょっと面倒さに負けてコード・回路図を作っておりませんが、もし需要あればアップします。要望はコメントまで。

ラズベリーパイ3 (Raspberry Pi 3B made in JAPAN) 技適対応 日本製   5.1V/2.5A ラズベリー財団公式アダプタ 【本体 アダプタ セット品】

タミヤ 楽しい工作シリーズ No.162 リモコンロボット製作セット タイヤタイプ (70162)

デュアルモータードライバDRV8835

2017年5月21日 (日)

TensorFlowで顔めがけて近づいてくる車を作ってみた

久しぶりのRaspberry Pi電子工作です。

せっかくディープラーニングを勉強中ってことで、ちょっとAIっぽいものを作ってみました。

Img_2842

ずいぶん不細工な車ですが、これでも”人工知能”搭載カーです。

さて、まずベースとなる車ですが、このキットを使いました。

Img_09411

なんとなく勢いで買ってみたものの、使わずじまいでしまい込んでいたタミヤのリモコンロボットキットです。

Img_1366

先の連休中にこれをせっせと

Img_1367

組み立てて

Img_2843

百均のタッパーとRaspberry Pi 3にカメラモジュール、超音波センサーHC-SR04など、あまりものと安物で製作。

こんな時のために、気になる部品は買っておくものですね。

ちなみに、車そのものはArduino UNO互換ボードで制御。ArduinoとRaspberry PiとはUSBで接続。

ちなみに動作プログラムはこちらの記事を参考に作りました。

Arduinoでラジコン戦車 その1 – Nu

余談ですが、こちらの記事は以前私が作ったRaspberry Piレーダーを見てこのリモコンを作ったそうです。それを今度は私が参考にして・・・電子工作の世界のめぐりあわせって面白いですよね。

さて、ここでちょっと問題発生。

Raspberry Pi 3のX Windowが立ち上がらなくなっちゃいまして、VNC経由でカメラ画像を表示できなくなってしまいました。

このため、OSを再インストール。当然、TensorFlowも入れ直し。

OSはこちら(Download Raspbian for Raspberry Pi)から入手。

TensorFlowですが、tensorflow-on-raspberry-piを見てPython 2.7用をインストールしました。

$ wget https://github.com/samjabrahams/tensorflow-on-raspberry-pi/releases/download/v1.1.0/tensorflow-1.1.0-cp27-none-linux_armv7l.whl
$ sudo pip install tensorflow-1.1.0-cp27-none-linux_armv7l.whl

このコマンドで、依存するライブラリも一緒に入ります。

今回の再インストールで、Raspberry PiのTensorFlowも1.0以上になりました。

TensorFlowを1.0にあげると、一ついいことがありまして。

それはWindows版TensorFlowの学習データがそのままRaspberry Piでも使えるようになったこと。

これは大きな前進。Raspberry Piの活用が捗ります。

てことで、Raspberry PiでもWindows版と同じPython 3.Xを使いたいところですが、OpenCVがうまく入らないんですよね・・・

OpenCVは

$ sudo apt-get install libopencv-dev
$ sudo apt-get install python-opencv

とやれば入ります(ただしPython 2.7のみ動作、OpenCVのバージョンは2.x)。

今のところこれで支障はないので、このままいきます。

さて、ここでようやくRaspberry Pi側のプログラムです。

具体的にはけものフレンズの動画からフレンズさんの顔を検出するやつを無理やり作ってみた: EeePCの軌跡で使った物体検出のプログラムを流用しました。

アルゴリズム的には

(1) カメラ画像から、LBP特徴で顔検出させる

(2) ”けもフレ”認識でどんなフレンズなのかを判別

(3) 顔認識した位置に向かって車両を動作

カメラに映った顔の位置が右寄りなら右側に、左寄りなら左寄りに動くよう、Raspberry PiからArduinoに通信を送って制御させてます。

超音波センサーは前方に障害物がないかを測定しており、20cm以内に何かあったら動かなくなるようにしてます。

ところで実はこのプログラム、(2)で何を検知しようが、結果にかかわらず顔検出した場所に向かって動作するようにしたため、(2)の処理は今回まったく意味がありません。

いずれ(2)で意味のある学習データに置き換える予定のため、とりあえず動作速度を確認するためにあえてTensorFlowを動かしているというだけです。

当然、TensorFlow部分を抜いて、OpenCVだけにした方がもっと早く動作するはず。

てことで、恥ずかしいので今回もコードを載せませんが・・・いずれちゃんとした動作ができるようになったら、公開するつもり。

Image2

VNCでRaspberry Piのデスクトップを表示。

上のちっこい画像の中で寝そべっているのが私です。

Img_2840

この顔めがけて、このRaspberry Piカーが接近してくるんですが。

この動画のとおり、結構遅いです・・・1秒に一度、きゅっと動作しては1秒間は停止して確認、また1秒ほど動作しては確認・・・匍匐前進のような動作ですが、Raspberry Pi 3+Pythonなのでこの辺りが限界のようです。

Img_2846

このタミヤのキット、左右輪が別々のモーターで動いているんですが、回転速度がバラバラのため、直進させると右側に回ってしまいます。

プログラム的にちょっと左寄りに回るようにして無理やり直進させました。

今回は検出した場所にただ向かうだけの車を作りましたが。

ある物体はよけて、ある物体には向かうという、そういう車にする予定です。

問題は、その物体に何を使おうかというところですが・・・現在思案中。

ところで、なんでこんなものを作っているのか?

ちょっと会社で、こういうものが作れると何かと便利なことがありまして。

今はこれを実用的なものに作りかえようとしております。

今後、自動運転とは言いませんが、”プチ自動運転”っぽい車を作りあげる予定。乞うご期待。

Raspberry Pi 3 MODEL B

タミヤ 楽しい工作シリーズ No.162 リモコンロボット製作セット タイヤタイプ (70162)

より以前の記事一覧

当ブログ内検索

  • カスタム検索

スポンサード リンク

ブログ村

無料ブログはココログ