LoginSignup
4
2

More than 3 years have passed since last update.

Raspberry Piを使って自動走行するラジコンカーを作ってみた

Last updated at Posted at 2019-04-22

はじめに

端から端まで説明しようとすると大変長い記事になってしまうと思ったので、今回は全体を大まかに紹介します。細かいところについては別の記事に分けて書いていきます。また、記事を書くのもIoTに関しても初心者同然ですのでぜひアドバイス・ご意見をお聞かせください。

概要

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

[完成形]
rcar.png
  

[全体の流れのイメージ]
image.png

開発環境

  • Raspberry Pi 3B raspbian 9.4
  • Jupyter Notebook 4.4.0
  • Python 3.5.3
  • TensorFlow 1.11.0
  • OpenCV 3.4.4

行ったこと

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

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

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

アーキテクチャ

[内部]
architecture1.png

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

学習モデルの作成

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

dataset.jpg

結果

https://youtu.be/1bVmcZxtD7E
detection.png

最後に

皆さんのご意見をぜひ聞かせてください!
あと、Twitter始めました。
フォローよろしくお願いします!!

追記

ブログの方でも紹介しています。
こちらもぜひよろしくお願いします。
Raspberry Pi と深層学習で作る自動走行ラジコンカー - Revel Tech Blog

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2