• 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

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

現在の場所:ホーム / Arduino / Arduino番外編 / 「ELEGOO UNO R3スマートロボットカーV3.0+」で障害物回避(自動運転)をやってみた

「ELEGOO UNO R3スマートロボットカーV3.0+」で障害物回避(自動運転)をやってみた

2019年10月26日 by STEMSHIP 1 コメント

先日、子供がArduinoで何か作りたいと言うので、ELEGOOのスマートロボットカーを購入しました。小学校低学年でも2~3時間で組み立てることができました。プログラムは書き込まれた状態で出荷されているため、組み立てたらすぐに遊ぶことができます。どのような仕組みで動いているのか、簡単に説明したいと思います。

1.障害物回避(自動運転)の動作について

自動車業界のトレンドとして、自動運転があります。自動運転にはいくつかレベルがあり、現在はレベル1やレベル2の機能が搭載された車が増えてきています。その内の「衝突被害軽減ブレーキ」と「障害物回避」の機能を簡素化しておもちゃの車に搭載したのが、今回の作成物です。

次は、障害物を避けるモード。顔をフリフリしながら、頑張って脱出しました!#Arduino #自動運転 pic.twitter.com/XFHZCDPcoo

— STEMSHIP (@stemship) October 19, 2019

2.回路構成

この機能を構成するための主なパーツは下記のとおりです。

  • 超音波センサ(HC-SR04)
  • サーボ(SG90)
  • モータドライバ(L298N)
  • DCモータ4個
  • Arduino-UNO-R3

超音波センサとサーボの使用方法については、以前の記事で紹介していますので、基本的な使用方法についてはそちらを参照してください。

  • ArduinoでSTEM教育​ 基礎編:超音波センサ
  • ArduinoでSTEM教育​ 基礎編:サーボ

実際の車では、障害物を検知するために、ミリ波レーダ・赤外線レーザ・ステレオカメラが使用されています(wikipedia:衝突被害軽減ブレーキ)。今回のキットでは、安価に実現するために超音波センサ(HC-SR04)を使用しています。この製品仕様は、測定可能距離が2cm~400cmで、測定角度範囲が30度となっており、ある程度指向性を持っていることが特徴です。

障害物を検知して止まるだけであれば、前方の障害物のみを常時測定していれば良いのですが、回避するためには周囲の状況も把握する必要があります。実際の車をよく見てみると、車の前方と後方の左右にセンサが取り付けられています。同様に、おもちゃの車では超音波センサを複数使用することで実現できますが、値段が高くなってしまいます。今回のキットでは、1つの超音波センサを使用して、それをサーボモータで動かすことで、周囲の障害物の有無を検知しています。

3.プログラム構成

プログラムの流れは下記のフローチャートのとおりです。

電源を入れると前方の障害物までの距離を測定し、その値が閾値よりも大きければ、一定期間直進します。一方、その値が閾値以下である場合は、サーボを動かして右側の障害物までの距離を測定します。次に反対方向にサーボを動かして左側の障害物までの距離を測定します。その結果、左右ともに障害物がある場合は後退し、左右どちらか(もしくはどちらも)障害物までの距離が遠い場合は、より遠い方に旋回します。

障害物回避プログラムのフローチャート

非常に簡単なプログラムですが、ページ先頭で示した動画のように、それなりに機能しています。ただし、超音波センサは測定ばらつきがあるため、障害物があるにも関わらず、そちらの方向に旋回してしまうことがありました。これを軽減するためには、複数回測定してフィルターで処理をする方法が考えられます。具体的なフィルターの記述方法については、別の記事で紹介したいと思います。

Filed Under: Arduino番外編 関連タグ:ELEGOO

Reader Interactions

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

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

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

最初のサイドバー

CONTACT US

  • Facebook
  • Twitter
  • Youtube

More to See

microbit:画像の表示・作成・オフセット・スクロール・変数保存の方法

2021年1月13日 By STEMSHIP

microbit:文字列の長さ・結合・比較・切取・位置・数値変換の方法

2021年1月6日 By STEMSHIP

XBee無線ネットワーク:XBeeワイヤレスチャットルームを作る

2020年12月30日 By STEMSHIP

XBee無線ネットワーク:MicroPythonについて

2020年12月23日 By STEMSHIP

XBee無線ネットワーク:ターミナルソフトウェアからXBeeモジュールの設定を変更する

2020年12月16日 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 (6)
  • ものづくり教育 (2)
  • 子供の教育 (2)
  • 科学 (6)
  • 算数 (5)

Tags

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

Footer

最近の投稿

  • microbit:エッジコネクタを使用して外部入出力を制御する方法1
  • microbit:画像の表示・作成・オフセット・スクロール・変数保存の方法
  • microbit:文字列の長さ・結合・比較・切取・位置・数値変換の方法
  • XBee無線ネットワーク:XBeeワイヤレスチャットルームを作る
  • XBee無線ネットワーク:MicroPythonについて

タグ

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

Search

2021年1月
月 火 水 木 金 土 日
 123
45678910
11121314151617
18192021222324
25262728293031
« 12月    

Copyright © 2021 · STEMSHIP.COM