SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

from EdTechZine

LEGOで赤外線を使った自動走行プログラムを作ってみよう

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

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

 本連載では、筆者が小学生の娘と一緒に実際にLEGO MINDSTORMSを動かしてみた体験とともに、どんな楽しみ方があるのか紹介します。前回までは、「LEGO MINDSTORMS EV3」について概要やツールを紹介しましたが、今回からはプログラミングに挑戦します。今回は、具体的な課題の設定と、その課題を実現するにあたり必要な基本動作を行うプログラミングにフォーカスします。また、プログラミングをする上で必要な論理的思考を身につけるための方法であるフローチャートについても紹介します。プログラミングに慣れている方であれば、ついつい省略してしまう、図で考える方法ですが、そういった方でも上手くできないケースに遭遇することがあります。従って、プログラミングについて再勉強してみようという方にもおすすめです。

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

読者対象

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

目指すプログラム

 今回、最終的に目指すプログラムは、商品を購入したときの箱に印刷されているルートを使って、図1のようにロボットがスタート地点から赤線内をたどってゴールまで走行するものです。

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

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

実現する方法を考える

 LEGOプログラミングでは、課題を設定したら、その課題を達成するための方法を考えるところから始まります。プログラミングがわからない方には非常に難解な課題に見えるかもしれませんが、実際にはそれほど難しく考える必要はありません。

 例えば、以下の3つの方法が考えられます。

  1. リモコンを使って進む、戻る、曲がるなどを伝えてゴールまで進む
  2. 赤外線センサーを人が持ち、ロボットがセンサーの後を追うようにし、ゴールまで導く。
  3. カラーセンサーで赤を検知したら、自動で走行方法を変えてゴールまで進む。

 わが家では、娘と話し、1のようにリモコンでコントロールするのは、ラジコンと同じであり、ロボットというイメージが湧かないためこの方法はやめました。

 一方、2のセンサーの後を追うのは、ちょっとしたペット玩具のようなイメージで、楽しそうだということになり実現することにしました。そして、3は自動ロボット掃除機のようであり、おもしろくなりそうだったので、こちらも実現することにしました。

 このように、身の回りの自動的な動作がヒントになって課題を設定することもあれば、身の回りの自動的な動作がどのような仕組みになっているのかを改めて考えるきっかけになります。

 また、もしそのままの課題で難しければ、簡単にするための条件をつけてもよいでしょう。のちのちその条件自体が課題を解決するヒントにもつながります。

センサーを使用するロボットを探す

 上記の考え方で利用するセンサーが決まったら、次はロボットです。ロボットは自分で作成してもよいですが、なかなか難しいので、今回は設計書があるロボットから作成することにします。

 そこで、さまざまなロボットの作り方が載っているLEGOのHPから探してみます。今回はその中から、図2のEV3MEGというロボットを採用することにしました。

図2:さまざまなロボットが紹介されているLEGOのHPページ
図2:さまざまなロボットが紹介されているLEGOのHPページ

 実際に作成したロボットは図3のように、今回必要ないアームの取り外し機能と、プログラムを停止するスイッチとして利用するタッチセンサーも備えています。

図3:今回作成したロボット
図3:今回作成したロボット

 このロボットを作成するのに約3時間かかりました。単にプログラミングを勉強するだけであれば、この時間が長く感じますが、筆者はこの時間が実際に動かしたときの楽しみや感動をより大きくすることにつながると感じています。

 また、今回は紹介しませんが、ロボットを組み立てる過程で、回転(ギア)の仕組みや、部品を組み合わせる際の立体感覚なども身につきます。本来は、プログラミングだけではなく、このような物理的な仕組みと組み合わせた自動化までがLEGOでのプログラミングですので、非常に奥深さを感じます。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
from EdTechZine連載記事一覧

もっと読む

この記事の著者

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

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11974 2020/02/11 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング