👻

【卒業研究】ArduinoとCNNによるAI自動運転RCカーの開発

に公開

GitHub
コード、設計資料、学習コード、シミュレータ/実機用制御スクリプトは以下のリポジトリで公開しています。
https://github.com/hyeon-marina/autonomous-car-ai-

📄 Qiitaにも概要をまとめました👇
https://qiita.com/hyeon/items/05d1b6d8900b3ff5a2bf


はじめに

本記事では、私が2023年の卒業研究として取り組んだ「AI自動運転RCカー」の開発プロセスと技術的工夫を紹介します。
本プロジェクトでは、組み込み開発と人工知能を組み合わせ、実機ベースでのリアルタイム制御を実現することを目的としました。
Arduinoを用いたハードウェア制御、PythonとCNNによる学習・推論、そしてDonkeyCarシミュレータによるテストという流れで構成されています。

プロジェクト概要

  • 開発期間: 2023年3月 − 12月
  • 研究テーマ: 組込みAIを用いたリアルタイム自動運転制御
  • 使用技術: Arduino, Python, OpenCV, TensorFlow (CNN)
  • 使用環境: DonkeyCarシミュレータ + RCカー実機

システム構成

  • Arduino UNO(DCモーター、サーボモーター制御)
  • Raspberry Pi(カメラ映像取得と推論)
  • Pythonによるデータ収集、学習、制御ロジック
  • CNNによる画像分類モデル

実装内容

  1. データ収集

ジョイスティックでRCカーを手動操作しながら、前方カメラの映像とステアリング操作データを収集しました。収集したデータは画像と操作ラベルのペアで保存し、教師あり学習に用いました。

  1. CNNモデルの学習

画像を前処理(グレースケール変換・リサイズ)した後、CNN(畳み込みニューラルネットワーク)を使用してモデルを学習しました。モデルは方向ラベル(左・直進・右)を分類できるよう設計されています。

  1. 自動運転制御

学習済みモデルを実装し、リアルタイムにカメラ映像を入力として処理し、ステアリングの制御出力を生成することで、自動運転を実現しました。推論はRaspberry Pi上で実行され、Arduinoを通じてモーター制御を行います。

  1. Arduinoによるモーター制御

DCモーター制御にはPWM信号を使用し、速度と回転方向を制御。
サーボモーター制御では、指定角度への正確な回転を行いました。Arduino側のコードはGitHubにて公開しています。


結果と評価

  • DonkeyCarシミュレータにおいて、モデルは安定した走行ラインを維持することに成功。
  • 実機環境でも、一定条件下で自動運転が可能となり、シンプルな構成でのAI制御の有効性を確認できました。

技術的工夫と課題

  • モデルの軽量化と高速推論のため、CNN構造をシンプルに設計
  • Canny Edge検出とROI(注目領域)によるノイズ除去
  • 学習データの多様性向上(夜間/カーブ/逆光シーンなど)
  • 実機でのモーター制御のタイムラグ補正

おわりに

この卒業研究では、AIと組み込み技術の融合を実体験し、設計から実装、テストまで一貫して開発を行いました。
特に、センサーデータとAI推論結果をリアルタイムで統合し、実機の挙動を制御するという応用的な経験が得られたことは、今後のエンジニア人生において大きな財産となります。
将来は、日本の大手IT企業でAIや制御技術を活かしたプロダクト開発に携わりたいと考えています。

Discussion