Raspberry Pi と深層学習で作る自動走行ラジコンカー

深層学習を使って自動走行するラジコンカーを Raspberry Pi で作ったお話です

深層学習を使って自動走行するラジコンカーを Raspberry Pi で作ったお話です
 ikath
 2019-07-26

概要

Raspbeey Pi に学習させたモデルを搭載して、道路の左車線を自動で走行するラジコンカーです。今回は直線のみを対象にし、道路からはみ出さないように設計しました。見た目が戦車だったので停止時に物体検出して自作砲台(3Dプリンターで作成)から輪ゴムを発射するオプションも加えてみました。

「理工学のすすめ」の発表資料はこちら(PDF)です。

Raspbeey Pi で深層学習により自動走行するラジコンカーの外見

完成形

Raspbeey Pi で深層学習により自動走行するラジコンカーの概要

全体の流れのイメージ

開発環境

  1. Raspberry Pi 3B raspbian 9.4
  2. Jupyter Notebook 4.4.0
  3. Python 3.5.3
  4. TensorFlow 1.11.0
  5. OpenCV 3.4.4

行ったこと

  1. ラジコンの製作
    1. Devastator タンク型モバイルプラットフォームの組み立て
  2. OS (raspbian) のインストール
  3. Raspberry Pi の環境構築
    1. SSH の設定や IP アドレスの固定、その他必要なフレームワークのインストールなど
  4. 3Dプリンタの使用
    1. 砲台やモータドライバを固定するための土台づくり
  5. プログラミング(Python)
    1. ラジコンの制御(サーボモータ、DCモータ)
    2. CNN による画像の分類
    3. 物体検出(Tiny-YOLOv3)
  6. データセットの収集
    1. 前進、右折、左折の3クラスの画像取集
  7. モデルの作成

全体の流れ(フローチャート)

Raspbeey Pi で深層学習により自動走行するラジコンカーの動作の流れ

全体の流れ(フローチャート)

今回、停止は手動で行っています。何かしらをトリガーにして停止の処理も自動でできるようにしたいですね。

アーキテクチャ

Raspbeey Pi で深層学習により自動走行するラジコンカーの内部アーキテクチャ

内部アーキテクチャ

Raspbeey Pi で深層学習により自動走行するラジコンカーの外部アーキテクチャ

外部アーキテクチャ

内部と外部の2段構想になっています。ラズパイは内部と外部で同様のものです。カメラは道路を撮影する用と物体を検出する用の2つに分けてました。サーボモータは片方を砲台の向きを変えるための、もう片方を輪ゴムを発射させるように分けました。

学習モデルの作成

NVIDIA DIGITSを使ってモデルを作成しました。道路からはみ出さないようにする進むには、前進と右折と左折の3パターンが必要なので、その時の状況に合わせてコースからそれぞれデータを取得します。画像は全体で1300枚程用意して、トレーニング画像とバリデーション画像の割合を8:2としました。ネットワークはラズパイに搭載するということもありLeNetを採用しています。

Raspbeey Pi で深層学習により自動走行するラジコンカーに学習させる画像

アノテーション

結果



 公開日時: 2019-05-30
 タグ: deep-learning  python  IoT 
ikath icon image
 ikath

名前は ikath と言います。情報系の大学生です。

 Twitter
サイト内検索

Google カスタム検索を利用してサイト内の記事をキーワードで検索できます。

サイト内検索

Google カスタム検索を利用してサイト内の記事をキーワードで検索できます。