micro:Maqueenをきびきび走らせることができましたが、
ただ走るだけでは障害物に衝突してしまいます。
ここでは、micro:Maqueenに「自動ブレーキ」機能を組み込んでみましょう。
プロジェクト「自動ブレーキ」
前方に人や障害物があったとき、自動車を停車させ事故を防ぐ「自動ブレーキ」システムが登場し普及が進んでいます。
micro:Maqueenでも、計測した結果をもとに動きを変えるプログラムの基本を学び、自動ブレーキを実現しましょう。
このプロジェクトで解決したい課題
このプロジェクト「自動ブレーキ」では、次の課題の解決に挑戦します。
micro:Maqueenに「自動ブレーキ」機能を組み込み、
前方の障害物にぶつからないようにしよう!
具体的には、次のイラストのようなことができるしくみとプログラムを考えます。
プロジェクトの考え方
「自動ブレーキ」の基本
自動車の「自動ブレーキ」については、『人を支えるコンピューターとプログラム』でも紹介しています。
運転する人が危険を感じて自動車を止めるための「認識→判断→操作」といった一連の情報処理の機能を、micro:Maqueenに組み込むことで、「自動ブレーキ」機能を実現します。
「自動ブレーキ」実現に必要なもの
「自動ブレーキ」の情報処理を人に代わって行うために必要な装置等を確認しましょう。
距離をはかる「入力装置」・・超音波距離センサー
micro:Mqaueenの前面にある二個の円筒がついている部品が「超音波距離センサー」です。「超音波」というのは人の耳では聞き取れないくらい「高い音」のことです。このセンサーでは超音波を使って対象物までの距離を測定することができます。
判断する「処理装置」・・・micro:bit
コンピューターは「条件によって、処理する内容を変える」ことができます。センサーからのデータによって動きを変える判断をmicro:bitにさせてみます。
車体を進める・止める「出力装置」・・・モーター
本物の自動車のブレーキにはタイヤの動きを強制的に止めるしくみがありますが、micro:Maqueenではモーターの回転を止めることで「ブレーキ」としています。
プログラムの設計
MakeCodeエディターにmicro:Maqueen専用の拡張機能を組み込むと、超音波距離センサーを使って距離をはかるブロックが追加されます。このブロックを使うと、前方の対象物までの距離を「cm」単位で測定できますので、一定距離を基準に「進む・停止する」の判断をすると、自動ブレーキ機能が実現できそうです。
仮に、ブレーキをかける対象物までの距離を20cmとして考えて見ましょう。
「20(cm)未満という条件を満たすとき」「条件を満たさないとき」といった条件によって、行う処理を変えることを「条件分岐(ぶんき)」といいます。分岐によってどんなことをすればよいか決めてから、プログラミングを始めます。
「自動ブレーキ」では、条件によってどんなことをすればよいか、考えてみましょう。※この図がヒントになるかも?
プログラミング
目標物までの距離を測る
最初に、超音波距離センサーで対象物までの距離を測定するプログラムをつくって、センサーのはたらきを確かめましょう。
次のプログラムは作成途中のものです。「編集」ボタンを押してMakeCodeエディターを起動し、「超音波センサー計測値」ブロックを適切な位置に配置して完成させてください。
距離によって処理内容を変える(条件分岐)
超音波センサーの測定値によって、micro:bitに表示される「顔」が変わるプログラムをつくって、条件分岐を確かめましょう。
センサーに対象物が近づいたとき「驚いた顔」、そうでないときは「ニコ顔」が表示されるようにプログラムを完成させましょう。
完成したプログラムは、次の「自動ブレーキ~作成中」のひな型と同じです。
自動ブレーキ
距離によって動きを変える「条件分岐」ができたならば、「モーター駆動」「モーター停止」ブロックも加えて、micro:Mqaueenを動くようにしてみましょう。
対象物に近づいたときはどうしますか? まだ近づいていないときはどうしますか?
※安全運転のため、モーターの速さは「150」程度にしてください。
完成したプログラム例はこちら。
チャレンジプロジェクト
障害物回避
「自動ブレーキ」は障害物を見つけたときに止まる動作をしましたが、障害物を見つけたら旋回するようにプログラムを改造すると、障害物を回避しながら走る続けるようになります。このような「障害物回避」プログラムにも挑戦してみましょう!
高性能な「自動ブレーキ」
「障害物を見つけたら止まる」ではなく、「障害物を見つけたら、まず減速。さらに近づいたら停止」と「段階的な自動ブレーキ」にも挑戦してみましょう!
超音波距離センサーについて
超音波を使って障害物を見つける「超音波センサー」は何かに似ていませんか?
暗闇の中でも障害物にあたらずに飛び回るコウモリや、水中でもエサを見つけることができるイルカは超音波を使っている動物として有名です。
超音波も音の一種で、空気中では1秒間に約340mの速さで伝わっていきます(気温等によって変わります。また水中では1秒間に1500m進みます)。
超音波を発してから反射波が戻ってくるまでの時間で距離を測る原理は、超音波センサーと全く同じです。
私たちの暮らしの中でも、自動車のバックセンサーなどで使われています。