CodeZine(コードジン)

特集ページ一覧

LEGOの赤外線を使った自動走行で「曲がる」プログラミングに挑戦しよう

LEGOで始めるIoTプログラミング 第4回

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2020/03/19 11:00

 本連載では、筆者が小学生の娘と一緒に実際にLEGO MINDSTORMSを動かしてみた体験とともに、どんな楽しみ方があるのか紹介します。前回、赤外線センサーとビーコンを使って一定の距離を保って進む、戻るプログラミングまでできるようになりました。しかし、「進む」「戻る」ことはできても、「曲がる」ことはできませんでした。今回は、ビーコンがある方向に従って曲がることができるようにプログラミングを進めていきますが、同時に、より複雑なプログラミングにも挑戦しテクニックを学んでいきます。

EdTechZine

CodeZine読者の皆様、こんにちは。本稿は、教育ICT(EdTech)のオンラインメディア「EdTechZine」で公開中の記事からの転載(一部)です。全文はEdTechZineのページでお読みいただけます。

読者対象

  • プログラミングについて学びたい人・教えたい人
  • プログラムが動く楽しさを知りたい人
  • プログラムでロボットを動かしたい人

目指すプログラムの概要

 前回の記事でも説明しましたが、改めて簡単に課題を説明します。

 商品を購入した時の箱に印刷されているルートを使って、図1のようにスタート地点から赤線内をゴールまで走行するプログラムを作成します。

 実際に走行するルートは、赤線内であればよく、任意のタイミングでバックしてもよいこととします。

 そして、今回のプログラミングでは、その課題を達成するために「赤外線センサーを人が持ち、ロボットがセンサーの後を追うようにし、ゴールまで導く」ことができるようにします。

図1:ロボットが走行する台紙画像
図1:ロボットが走行する台紙画像

曲がる仕組み

 プログラムで用意されている「ステアリング」ブロックを使うと簡単に曲がることができますが、ここで「曲がる」仕組みについて理解します。

 「曲がる」というと非常に簡単な操作に思えますが、実際には思ったよりも複雑です。例えば、自転車などの二輪車であれば、図2のようにハンドルを傾けると曲がります。

図2:ハンドルを使って自転車などが曲がる仕組み
図2:ハンドルを使って自転車などが曲がる仕組み

 しかし、今回のロボットは、4輪なので自動車と同じです。しかし、ハンドルのようにタイヤが傾くような仕組みはありません。そのため、左右の回転数を変えることで曲がります。

 例えば、右に曲がりたい場合には、左のタイヤが右のタイヤよりもより多く回転することで、進む距離が変わります。

 そのため、図3(左)のように左のタイヤの方がより前に進むことになります。しかし、左右のタイヤの位置はロボットに対して位置が変わらないので結果的に図3(右)のように曲がります。

図3:ロボットが右に曲がる仕組み
図3:ロボットが右に曲がる仕組み

 例えば、自動車のようにタイヤの向きを変えるハンドルがあっても、実は、このように左右のタイヤの回転数を変える機能も持っています。

 これは、2つのタイヤがある場合に、図4のように左右のタイヤが進む距離が違うためで、スムーズに曲がるには左右の回転数を変えない必要がある訳です。

図4:ロボットが回転する際の内輪と外輪の差
図4:ロボットが回転する際の内輪と外輪の差

曲がる動作とプログラミングを確認する

 続いて、「ステアリング」ブロックを使って、曲がる動作を確認します。今回のロボットは、モーターが逆に回転することで前に進む構造になってしまっています。それは、モーターのつける向きに原因があります。

 前回も、後ろに進む処理で前進する仕組みになっていました。こちらはまっすぐでしたので比較的容易でしたが、今回の曲がる動作についてはイメージがしづらい方もいると思います。筆者も直感的にはイメージできないので、ここで動作を確認します。

 その際にプログラムとロボットの動きを図5のように合わせて見るとわかりやすくなります。

★キャプションをお願いします★
図5:プログラムブロックとロボットの動く方向

Note:モーターの向きを変えるブロックについて

 モーターはつける向きによって、今回のように動作のルールが難解になります。そのために拡張ブロックの中に、モーター逆回転ブロックがあります。

 しかしこのブロックは、「ステアリング」や「タンク」などの2つのモーターをセットで使うブロックには残念ながら使えないので注意しましょう。



  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。個人紹介主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしど...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:from EdTechZine

もっと読む

All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5