機械学習で障害物を避けてみる #ML2Scratch #ev3

AI Car

巷では、AWS DeepRacerDonkey CarJetBotといった機械学習を使った自走ラジコンが盛り上がっているようです。

というわけで、機械学習(TensorFlow.js)とScratchをつなげる拡張機能ML2Scratchでも似たようなことができないか、お正月休みに試してみました。

この投稿をInstagramで見る

Norifumi Ogawa 小川 智史(@ogaworks)がシェアした投稿

見た目やスピードやスムーズさ等諸々はさておき、とりあえず障害物を避けて自走してくれました😆

道具

  • ノートPC(chromeでML2Scratchを動かす)
  • USBカメラ(ML2Scratchの画像入力に使う)
  • LEGO mindstorms EV3とモーターで作った自走車両

動作の概要

車両は、(ノートパソコンが重そうなので)左右2個ずつ(計4個)のEV3 Lモーターで移動する構造にしました。動作的には、「左折」と「右折」の組み合わせで、前進・後退と方向転換をしています。

  • 前進:「左折」と「右折」を同時に実行
  • 方向転換:「後退」の後に「左折」を実行

ML2Scratchを使った機械学習の概要

今回、ML2Scratchでは以下の2パターンのラベル付けをしました。

ラベル1(= 床の上に障害物がない状態)

板の模様や角度、光の当たり方が違った色々な見え方の床を含めるように意識しながら100枚弱ラベル付けしました。方向転換が可能な範囲で端に障害物がちらっと映る画像も含めました。

このラベルと同様と判断された場合は、車両を前進させます。

ラベル2(= 床の上に障害物がある状態)

障害物を検知して避ける場合用に学習させます。画像の上部に床以外の何かが映った状態です。こちらもだいたい100枚弱ラベル付けしました。

このパターンと判断された場合は、(車体の幅が大きくてそのまま方向転換したら障害物に引っかかるので)一旦車両をバックさせてから左折させています。

もう少し手間をかけるなら、「障害物が右側にある」「障害物が左側にある」を別々に学習させて、回避動作を左右に分けてもいいと思います。

ScratchのEV3拡張

Scratchには、LEGO EV3をコントロールする拡張機能が元々有るので、それを使いました。

ただ、モーターを動かすために用意されているブロックには「こちら向きに○秒間回す」といったものしかありません。回転数や角度の指定、回しっぱなしなどができません。EV3自体は色々なことができるだけに、拡張機能自体はちょっと物足りない感じです。

これと、ML2Scratchを組み合わせてざっとこんな感じになりました。

方向転換時は内輪を逆回転させるようにすれば、後退する必要なくもう少し奥まで突っ込めるのかな?とか、もう少しうまく制御できそうですが、まずは動かしてみるということで。

感想

障害物なし、有りで各100枚弱のラベル付けによる学習ですが、意外にうまく障害物を避けながら自走してくれました。

ほほーと思ったのは、障害物の学習画像に含まれていなかった障害物(例えばこの場合は学習していないカラーボックス)でも、しっかり「障害物あり」と判断して避けたのには感動しました。

今回は、車両の上にPCをドカッと載っけて走りましたが、AndroidスマホがWifi接続でPCのカメラにできるそうなので、それを使えば、PCは切り離してもっとシンプルな機械学習車両が組み立てられそうです。

Scratchは公式の拡張機能や独自拡張を組み合わせると、できることがどんどん増えるから、なかなか奥が深いですね。

というわけで、今年もちょこちょこと「やってみた」「作ってみた」をアウトプットしていきたいと思います!😆


投稿日

カテゴリー:

投稿者:

タグ:

コメント

“機械学習で障害物を避けてみる #ML2Scratch #ev3” への1件のコメント

  1. 株式会社れんくるのアバター

    はじめまして。突然で失礼します。
    スクラッチ+機械の記事とても興味深く拝見させていただきました。

    「だれでも(お子様でも)簡単に無料でスマホ・アプリ(ゲームも)をDIY(自作)できる! 無料アプリ[AppMakerDIY] リリース!」 のお知らせです(プレスリリース)
    スクラッチにスマホのセンサーや機能を付け加えることのできるアプリです。より実践的なプログラム体験が可能となります。
    機械学習も取り入れられることがわかったため、よりおもしろいアプリが作れそうです!
    ぜひとも何らかの機会にご利用・ご紹介いただければ幸いです。

    —-
    だれでも簡単に無料でスマホ・アプリをDIY(自作)できる!
    [AppMakerDIY] Android版(無料・iOS版未定)がリリースされました!
    https://play.google.com/store/apps/details?id=com.Renkul.AppMakerDIY

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください