• Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • HOME
  • Arduino
    • Arduino初心者編
    • Arduino基礎編
    • Arduino応用編
    • Arduino実践編
  • Raspberry Pi
  • microbit
  • XBee
  • Scratch
  • Contact Us
  • Privacy Policy

STEMSHIP

ものづくりを通して、科学を学ぼう!

現在の場所:ホーム / Raspberry Pi / Raspberry Pi はじめてのドンキーカーをおもちゃのラジコンで作る

Raspberry Pi はじめてのドンキーカーをおもちゃのラジコンで作る

2020年5月25日 by STEMSHIP コメントを書く

ドンキーカーがどのようなものか触ってみたい・作ってみたいと思っても、キットを買うとコストが高くつきます。まずは、おもちゃのラジコンとラズパイで安価なドンキーカーを作成して動かしてみました。初めて作る過程で、参考にした物、つまずいた点などを紹介します。

ドンキーカーとは

ドンキーカーは、いわゆるAIカーの1種です。AIカーは、自律走行する車です。最も基礎的なAIカーは、人間が操作して走らせたときの周囲の状況を画像として保存し、機械学習させることで自律走行ができます。ドンキーカーは、オープンソースなので、誰でも無料で使用することができ、プログラムを改造して、オリジナルのAIカーを作ることができます。どのようなものか、こちらのサイトで確認してみてください。

ドンキーカーの作成は、3Dプリンタでボディを作るところから始まりますが、なかなかそんな環境を持っている人はいないと思います。そこで、Fabo StoreやRobocar Storeでキットが販売されています。お値段は約3万円です。気軽に始めるには、ちょっと高いですね。。

ドンキーカー以外のAIカーは、Amazonの「AWS DeepRacer」, NVIDIAの「JetRacer」,「JetBot」などがあります。

シミュレーション

ドンキーカーを作成する前に、自分のパソコン環境でドンキーカーのソフトが動作することを確認する意味も込めて、ドンキーカーのシミュレーション機能で遊んでみました。参考にさせていただいたのは、以下のサイトです。

  • http://docs.donkeycar.com/guide/simulator/
  • https://www.youtube.com/watch?v=wqQMmHVT8qw

上記サイトは英語なので、英語が厳しい方は下記サイトを参考にしてください。ただし、ドンキーカーのソフトは頻繁にアップデートされているので、手順が変わることがあります。

  • https://coolerking.github.io/donkeycar_jpdocs/guide/simulator/
  • https://faboplatform.github.io/DonkeyDocs/3.Simulator/2.sim/
  • Donkey Carを組み立てる前にシミュレーターで楽しんでみる Donkey Car 3.1.0編

ドンキーカーの作成

ドンキーカーを安く作る方法について色々調べた結果、Google_Homerさんの「たぶん最安、オモチャのRCカーを利用し2800円でDonkey AI Carの車体をつくる方法」が一番安そうだったので、この方法で作成しました。使用した部材は下記のとおりです。

部品商品名価格[円]
ラジコンCCP バクソーハガンマ2300
ラズパイ本体Raspberry Pi4 ModelB 4GB 技適対応品7300
カメラRaspberry Pi Camera Module V23300
パン・チルトキットPan Tilt HAT
(今回はカメラの固定用に使うだけです。)
920
360°回転サーボ 2個SG90-HV750
サーボ制御ボードSparkFun Pi Servo HAT (PCA9685)1500
バッテリAnker Power Core Fusion 50002900
SDカードSamsung EVO Plus 32GB microSDHC MB-MC32GA/ECO 国内正規保証品1000
コントローラロジクール ワイヤレスゲームパッド F7101900
USBケーブルUGREEN USB Type C L字 ケーブル 0.5m700

ラジコンのボディカバーを取り外して、モータ線(赤、黒)と基板が接続されているところを切断して、基板を取り外した写真は以下です。

ラジコンのDCモータをサーボモータとして制御するために、SG90-HVの制御基板を取り外して使用します。ラジコンの後輪側のモータがスロットル(前進、後進)なので、これをサーボ制御ボード(PCA9685)のチャネル0に接続します。同様に、ラジコンの前輪側のモータがステアリング(左右旋回)なので、これをチャネル1に接続します。以下の写真では、チャネル2、3とカメラパン・チルトのサーボモータが配線されていますが、今回は使用しないので、無視して構いません。

配線ができたら、あとはラズパイを車体に載せるだけです。両面テープで張り合わせて、最後にビニールテープでグルッと巻いて固定しました。注意点は、カメラがバンパーより前に出ないようにすること。前方衝突したときに、カメラが壊れないように搭載位置調整します。

ハードの作成が終われば、次はソフトの設定を行います。こちらも公式サイトに詳しい手順が書いてあります。注意すべき点は、機械学習を行うPCにインストールしたソフトと、ドンキーカーにインストールするソフトのバージョンは合わせておかないと、余計なトラブルの元になります。

  • http://docs.donkeycar.com/guide/install_software/

ドンキーカーの機械学習

機械学習を始める前に、キャリブレーションを行いました。これが思っていたよりも大変でした。正確にキャリブレーションをするためには、左右旋回の回転半径が同じになるようにするのですが、それ以前に、空中で左右にステアリングを切った際に、その角度を目視確認で同等程度にすることでさえ難しかったです。

また、実際に床において走らせてみると、カーブで横転することが多々ありました。原因は、バッテリーを車体の上に載せたので、車両の重心が高くなっていること、スピードが早すぎること、ステアリング角度がキツすぎることです。それを踏まえた上で、以下の通りとしました。

この設定で、部屋の中で作ったコースを10周ぐらい走行し、データを集めました。機械学習はGoogle ColabでGPUを使用すれば早く終わるのですが、私が試した環境下では、学習結果をドンキーカーに書き込んでも、直進はすれども曲がらずという状態でした。そのため、仕方なく、非力なノートPCで学習させました。かかった時間は1時間12分。。。グラフィックボード搭載PCであれば、数分で終わると思います。

機械学習をするためのデータは、dataフォルダにあります。何度もやり直していると、フォルダが複数あると思います。必要なフォルダをPC側のdataフォルダにコピーします。そして、以下の機械学習のコマンドを実行します。。

python manage.py train --tub ./data/tub_39_20-05-23 --model ./models/mypilot.h5

学習結果は、modelsフォルダ内にmypilot.h5という先程指定した名前であります。これをラズパイのmodelsフォルダにコピーします。

ドンキーカーの自動走行

それでは、学習後のドンキーカーを走らせます。下記のコマンドで、学習結果を読み込みます。

python manage.py drive --model  ./models/mypilot.h5

そして、以下のように、ラズパイのIPアドレスとポート番号8887を指定して、「Mode & Pilot」という項目を「Local Pilot」にすると、自動走行が開始されます。

http://192.168.1.20:8887/drive

一応学習して走行しましたが、カーブで曲がりきれずにコースアウトしたり、カーブで停止することが多々ありました。原因は以下が考えられます。

  • 私のお手本走行が下手(これが第一要因)
  • スピードを抑えているため、タイヤを旋回するときの路面負荷が大きく、ステアリングモータのトルクが足りないことがある。(細かいステアリング制御ができない)
  • コースが狭すぎる

ということで、広い場所で試してみたいのですが、なかなか良い場所がありません。また、ノートPCが非力なため、機械学習の時間が長すぎます。新しくパソコンを買ってからリベンジしたいと思います。

最後に

子どもたちは、ドンキーカーが自律走行することにあまり関心を示しませんでしたが、搭載したカメラの映像をパソコン上で見ながら、パソコンからドンキーカーを操作するという遊びを楽しんでいました。テレビゲームと現実世界が融合したような感覚なのかもしれません。

Filed Under: Raspberry Pi 関連タグ:カメラ, ラジコン

Reader Interactions

コメントを残す コメントをキャンセル

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

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

最初のサイドバー

CONTACT US

  • Facebook
  • Twitter
  • Youtube

More to See

Arduinoベースのセンサノード:XBeeデータ収集ノードの製作

2021年9月27日 By STEMSHIP

Arduinoベースのセンサノード:Arduinoを使った温度センサの作製

2021年9月21日 By STEMSHIP

XBeeモジュールとBMP280センサを使用してデータ収集する

2021年5月31日 By STEMSHIP

XBeeモジュールでMicroPythonを使ってセンサを読み取る

2021年5月24日 By STEMSHIP

XBeeモジュールでセンサを読み取る:センサノードの設定と測定

2021年5月17日 By STEMSHIP

カテゴリー

  • Arduino (44)
    • Arduino初心者編 (15)
    • Arduino基礎編 (11)
    • Arduino実践編 (4)
    • Arduino応用編 (11)
    • Arduino番外編 (3)
  • MakeyMakey (1)
  • microbit (11)
  • Raspberry Pi (13)
  • Scratch (6)
  • STEM教育 (5)
  • XBee (15)
  • ものづくり教育 (2)
  • 子供の教育 (2)
  • 科学 (6)
  • 算数 (5)

Tags

BLE DCモータ EEPROM ELEGOO ESP32 ESP8266 IoT LCD LED makeymakey MQTT Node-RED scratch STEM教育 WiFi XBee アニメーション オンラインゲーム カメラ クローン ゲーム コスチュームの変更 サーボモータ ステッピングモータ ステートマシン スピーカ タイマー ピンポン ブロック定義 ペン ライントレース ラジコン リスト 分数 割り込み 実験 工作 幼児 当たり判定 温度センサ 無線通信 物理 角度制御 重力 音楽

Footer

最近の投稿

  • Arduinoベースのセンサノード:スケッチ(プログラム)の作製
  • Arduinoベースのセンサノード:XBeeデータ収集ノードの製作
  • Arduinoベースのセンサノード:Arduinoを使った温度センサの作製
  • XBeeモジュールとBMP280センサを使用してデータ収集する
  • XBeeモジュールでMicroPythonを使ってセンサを読み取る

タグ

BLE DCモータ EEPROM ELEGOO ESP32 ESP8266 IoT LCD LED makeymakey MQTT Node-RED scratch STEM教育 WiFi XBee アニメーション オンラインゲーム カメラ クローン ゲーム コスチュームの変更 サーボモータ ステッピングモータ ステートマシン スピーカ タイマー ピンポン ブロック定義 ペン ライントレース ラジコン リスト 分数 割り込み 実験 工作 幼児 当たり判定 温度センサ 無線通信 物理 角度制御 重力 音楽

Search

2023年3月
月 火 水 木 金 土 日
 12345
6789101112
13141516171819
20212223242526
2728293031  
« 10月    

Copyright © 2023 · STEMSHIP.COM