SHOEISHA iD

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

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

from EdTechZine

LEGOのカラーセンサーを使った完全自動走行のプログラミングに挑戦しよう

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

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

 本連載では、筆者が小学生の娘と一緒に実際にLEGO MINDSTORMSを動かしてみた体験とともに、どんな楽しみ方があるのか紹介します。前回、赤外線センサーとビーコンを使って人が導くことができるプログラムを紹介しました。今回は、別の方法であるカラーセンサーを使って、人からのヒントを用いずに自動走行を実現する方法を紹介します。また、同時にカラーセンサーの仕組みから、色や光の特徴についても説明します。

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

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

読者対象

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

目指すプログラムの概要

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

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

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

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

色や光の特徴とその技術的応用

 カラーセンサーを使う前に、色や光にはどのような特徴があり、またセンサーではその仕組みをどのように応用しているのかについて、簡単ではありますが説明します。

 例えば一般的に、コンピューターで色を扱う場合には、赤、青、緑の情報を利用しています。このような知識を持つことで、利用する上での注意点を知ることができ、応用範囲が広がるでしょう。

色や光を判断する難しさ

 色を判別する際、例えばカメラから取得した画像情報を使っても色を識別することができます。その場合には、人が目で見たときと同じような判断が可能ですので、処理もイメージしやすいと思います。

 しかし、コンピューターで情報を制御する場合、人が直感的に行うように対応しようとしても、どうしてもうまくいかないケースが出てきてしまいます。

 例えば、暗い部屋の中にいる場合、赤と緑があると、どちらも黒っぽくなってしまいます。このように、ある程度まで暗くなると色の違いがわからなくなり、画像情報からのみ判断しようとすると難しくなってしまいます。

 一方、照明で明るくすれば、先ほどの赤と緑の違いはわかるようにはなります。しかし今度は、照明で照らされた部分の白と、もともと白いものの違いはどうやって判断すればよいかという問題が出てきてしまいます。

 このように、人が認識している色はデジタル画像内の色情報だけではないことがわかると思います。

人が色を認識する仕組み

 先ほど、人が一般的に認識している色と、デジタル色情報が違うと言いましたが、そもそも色とは何なのでしょうか?

 色を説明する際によく使われる一例として図2(左)のように「虹が見える理由」があります。虹が七色に見えるのは、光の屈折が影響しています。このような現象は「プリズム」を使えば確認できます。

 このように虹やプリズムを知ると、一般的に光といわれるものには、さまざまな色の要素が合成されているということがわかります。

 トマトが赤く見えているのも、トマト自体が赤く光っているわけではなく、図2(右)のように太陽など別の光が反射した際に、赤い光だけが目に入っているから、トマトが「赤い」わけです。

 つまり、人が多くの場合に「色」として認識しているのは、光の反射した情報を利用しているものなのです。

色が見える見える理由
図2:色が見える見える理由

Note:色が持つ波長の特徴

 色の違いを正確に理解することは難しいですが、それぞれに異なる波長を持っていて、図3のように赤の波長が長く、青の波長は短いという特徴があります。

 波長はその長さに特徴があり、波長が長い赤の方がまっすぐ進みやすく、反対に波長が短い青の方が拡散して反射しやすくなっています。

 そのため、カラーセンサーで「反射光の強さ」を計る際には、この「赤」の特徴を利用した方が精度が高くなるため、「赤い」LEDを使い、「周辺の光の強さ」を計る際には、反対に「青」の特徴を利用した方が精度が高くなります。

 前回、利用した「赤外線」は、この「赤」より外側の波長の光であり、より光がまっすぐ進みやすいという特徴があります。まっすぐ進むということは、その光がある方向に光源(ビーコン)があるという精度が高いわけです。また、拡散もしづらいので、その反射する強さを調べれば、距離もわかりやすいということです。

色と波長の関係
図3:色と波長の関係

カラーセンサーの仕組み

 LEGOのカラーセンサーが色を識別する仕組みも、反射する光の特徴を使っています。そのため、図4のように赤、青、緑のLEDを使って発光し、その反射する情報を利用します。

 例えば、赤い色であれば、赤の光は反射しますが、青の反射は弱くなります。コンピューターでは赤、青、緑の情報として色の処理をしていると前述したように、それらの色の光をLEDから発することでより正確に判断できます。

 ただし、反射する情報を使っているために、センサーが識別するものに近い位置にないと、周りから入り込む光に影響されるので、注意する必要があります。

図3:カラーセンサーの仕組み
図4:カラーセンサーの仕組み

 このような仕組みがわからなくても多くの場合、カラーセンサーを使うには問題ありません。しかし、どのようなケースでカラーセンサーが使えるのか、または使えないのかを判断する必要が生じた際には必要となる知識です。

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
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編 」他、著書多数

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/12307 2020/05/20 07:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング