読者です 読者をやめる 読者になる 読者になる

機械学習でロボット制御してみた(2) EV3 & TensorFlow

MachineLearning MINDSTORMS EV3 Robot 機械学習 TensorFlow

 

前回の

機械学習でロボット制御してみた - 広く浅い高校生のブログ

は2クラス識別で色を判定していましたが今回は多クラス識別で色判定を行おうと思います。そこで今回はtensorflow を使おうと思います!

 本当便利でした。pythonのバージョンは3.5です。

 

方法

方法は前回とほとんど変わりません。

 

マインドストームでそれぞれの色、200個ずつデータを取ります。

              ↓

そのデータをmacに送る

              ↓

Pythonで学習プログラムを動かす

                                                  ↓

学習結果をEV3のプログラムに反映させる

 

 

プログラム

 

 

分類系の問題では、評価関数で交差エントロピーを使うのが普通らしいのですが、正答率があまり上がらなかったので二乗誤差を使うと正答率が97%まで上がりました。

 

今回使ったファイルをgithubに上げました。是非試してみてください。

GitHub - MisakiMa/exampleMachineLearning

機械学習でロボット制御してみた

機械学習 EV3 Robot MachineLearning MINDSTORMS

 

python,機械学習、初心者です。間違いなどあるかもしれませんがよろしくお願いします。

 

動機

部活でマインドストームのEV3を使ってロボット制御しています。そこで、色を検知して制御をしているのですが誤検知したり検知できなかったりするので、そこで今何かと話題の機械学習をすることにしました。

 

方法

色は線形分離で分けることができるので(多分)、単純パーセプトロンを使って区別をしようと思います。流石にマインドストームで学習するのは厳しいのでMacで学習をします。センサーはハイテクニック社のカラーセンサーを使います。

 

マインドストームでポジティブとネガティブのデータを100個取る

              

そのデータをmacに送る

              

Pythonで学習プログラムを動かす

                                                 

学習結果をEV3のプログラムに反映させる

 

というのが大まかなEV3で機械学習を使ったプログラムを実行する流れです。この方法なら、処理速度の心配もないと思います。

 

プログラム

こちらのサイトを参考にしました。

qiita.com

RGBで分類するので、3次元で考えます。2次元だと線で分類しますが3次元は面で分類するという考え方になります。

 

 

結果

 

Color Result
空中 Black,Blue
White White
Black Black
Green Green
Red Red
Yellow Yellow
Blue Blue

 

大体合ってますが空中でBlueが出るのは嫌なので、Negativeデータに空中のRGBを追加します。

Color Result
空中 Black
White White
Black Black
Green Green
Red Red
Yellow Yellow
Blue Blue

完璧です!

 

感想

すごい!が一番最初の感想です。ロボットを制御しているとWhiteとRedの間の部分の色とかも検知したい時があるので、機械学習をすればできそうな気がします。また、色だけではなく他の部分でも応用ができそうです。なので、今後は機械学習を使ったライントレースなどに挑戦したいと思います。

 

参考サイト

 

パーセプトロンの学習規則をPythonで実装 - Qiita

pythonでcsvを読む方法 - 標準ライブラリ, pandas, numpy - minus9d's diary

 

 

 

 

 

 

 

 

 

myThingsとunityでユニティちゃんが天気を教えてくれるものを作ってみました。

ユニティちゃん myThings Unity

 最近HoloLensなどで何かと話題なVR,AR,MRに興味を持ち、またunityとmyThingsを組み合わせたものをあまりみたことがなかったので作ってみようと思いました。

 

youtu.be

 

© Unity Technologies Japan/UCL

 

サーバーはazureを使っています。 

 こちらのサイトを参考にさせていただきました。

tips.hecomi.com

tips.hecomi.com

adarapata.hatenablog.com

 

 

ユニティちゃんとMMD4MecanimMMD4Mecanim-LipSync-Pluginを使わせていただきました。

  

  

 

f:id:mswim2000189:20170206112751j:plain

 

この作品はユニティちゃんライセンス条項の元に提供されています。

 

 

 

 

自動の窓

f:id:mswim2000189:20161029101101j:plain

 

AzureのサーバーにmyThingsからの天気の情報を送り、その状態をESPr Oneがwifi経由でhttps通信で取得し、窓を開け閉めする。また、Swiftで書いたIOSアプリで、リアルタイムの窓の状態をアニメーションで確認することができる。