VEX IQ (第 1 世代) カラーセンサーの使用

カラー センサーは、反射光を使用して、オブジェクトの色、色相値、グレースケール値、明るさ、および近接性を検出します。

VEX IQ(第1世代)カラーセンサー部品。

VEX IQ カラーセンサーは VEX IQ スーパーキットに含まれており、こちらから 購入できます。

第2世代VEX IQロボットを使用していますか?第2世代センサーの概要については、こちら ご覧ください。また、カラーセンサーの第 世代バージョンである光学センサーに関する情報もご覧ください。


カラーセンサーの説明

VEX IQカラーセンサーには複数のモードがあり、周囲の環境からさまざまな種類の情報を取得できます。収集される情報は、周囲の照明条件だけでなく、センサーと読み取り対象の物体または表面との距離にも影響されます。


360度の円が色相値とどのように相関しているかを示すカラーホイール。赤色は0度、緑色は120度、青色は240度に位置する。


カラーセンサーの仕組み

カラーセンサーは、色と近接の両方を検出できます。

色の検出
VEXcode IQ ブロックの明るさ(Color3 の明るさをパーセントで読み取る)。
明るい表面を検出して80%の値を示し、次に暗い表面を検出して20%の値を示すカラーセンサーの図。

明るさモードの場合、カラー センサーはロボットの環境内のすべての光の強度を検出するために使用されます。カラー センサーがアクティブなときにカラー センサーに到達する光が多いほど、ロボットの脳に送信されるパーセンテージの値が高くなります。

VEXcode IQ 色センサーライトブロックに「Color3 ライトを 50% に設定」と表示します。
暗い環境下でロボットに取り付けられたカラーセンサーを示す。カラーセンサーのランプが点灯し、周囲を照らします。

検出された明るさのパーセンテージが低いか信頼できない場合は、カラー センサーのランプをオンにするか、次の設定されたライトを使用してランプの明るさのパーセンテージを上げてブロックすることができます。

VEXcode IQカラーセンサーブロック3個。 1つ目は、Color3という色名が読み取れるブロックの色です。 2つ目は、Color3の色相を度数で表示する色相ブロックです。 3つ目は「Color3は何も検出しませんか?」と読み上げるColor検出ブロックです。

カラー センサーは、認識した色をカラー値または色相値として報告できます。

VEXcode IQ Color は Color3 を読み取るブロックを検出しますが、何も検出しませんか? ブロックの「色」ドロップダウンメニューが開かれ、ブロックが感知する色のリストが表示されます。リストには、オレンジ、紫、赤紫、紫、青紫、青緑、黄緑、黄橙、赤橙と記載されている。

色の値。カラー センサーが検出できる色はリストに 14 色あります。ブロックの画像から欠落している色は、赤、緑、青、白、黄色です。

360度が色相値にどのように対応するかを示す色相値図。赤色は0度、緑色は120度、青色は240度に位置する。

色相値。2色相値は色値似ていますが、数値です。色相の値の範囲は度のように 0 ~ 360 です。上記の色の値には、それぞれ対応する色相値の範囲があります。 

色や色相を検出する際には、カラーセンサーが適切な量の光量を確保することが重要です。ロボットのカラーセンサーにとって最も信頼性の高い設定を見つけるために、さまざまな光量レベルとランプの明るさ設定で、カラーセンサーのテスト(キャリブレーションとも呼ばれます)を必ず行ってください。

近接の検出

カラーセンサーには赤外線センサー・エミッターが内蔵されています。赤外線放射器は目に見えない光を照射し、その反射光を検出する。赤外線の大部分がセンサーに向かって反射して戻ってくると、ロボットの頭脳は物体が近くにあると認識する。

VEXcode IQ で Color3 がオブジェクトの近くにあると読み取るオブジェクトブロックが見つかりましたか?

カラーセンサーの一般的な用途

カラーセンサーは、ディスプレイや製品に特定の色を表示することが重要な多くの技術分野で使用されています。

日常生活における一般的な用途としては、以下のようなものがあります。

  • カラー キャリブレーション ツールは、デジタル画面が正確な色を表示しているかどうかをチェックし、必要に応じてディスプレイ設定を調整します。デジタル画面上で色を扱うグラフィック アーティストやデザイナーにとって、表示されている正しい色を正確に確認できることは重要です。色が正確でない場合、誤解やリソースの無駄が発生します。
  • カメラやビデオカメラは、光レベルを最大化し、くすんだ色を強調することで写真やビデオを向上させるために、カラー センサーを使用して、その時の照明条件に基づいて設定を調整します。これらのセンサーを使用すると、写真家は写真内の特定の色に焦点を合わせることができます。
  • カラーセンサーは、顧客に出荷する前に製品の色が正しいかどうかを迅速に検査するために、製造現場で使用されることがあります。たとえば、熟したときや食べごろになると色が変わる果物や野菜をスキャンして、市場に送るのに正しい色であることを確認できます。 


VEX IQロボットの一般的な用途には、以下のようなものがあります。

  • このセンサーは、物体の色を検出するために使用できます。このアニメーションを見ると、カラー センサーが緑のキューブを検出するまでロボットが前進する様子がわかります。

  • このセンサーは、ラインの検出や追跡に使用できます。このアニメーションを見ると、カラー センサーを使用してマークされたラインに沿って走行するロボットを確認できます。

  • このセンサーは物体が近くにあるかどうかを検出できます。

競技用ロボットのカラーセンサー

色や色相を検出する際には、カラーセンサーが適切な量の光量を得ていることが重要であることを覚えておいてください。競技会場が変わるたびに、カラーセンサーのテスト(キャリブレーションとも呼ばれます)を必ず行ってください。光量の違いによって、カラーセンサーの性能が影響を受ける可能性があるためです。ロボットのカラーセンサーにとって最も信頼性の高い設定を見つけるために、ランプの明るさをさまざまなレベルに設定してプロジェクトをテストしてください。 

カラーセンサーによって収集された情報は、競技用ロボットが様々な状況に対応するようにプログラミングする際に役立ちます。カラーセンサーは、競技用ロボットを以下の点で向上させることができます。

  • これにより、ロボットはセンサーの近くにある物体の色を検出できます。これは、ロボットに異なる色の物体を分類したり、特定の色の物体まで運転したり、物体がセンサーを通過するときにその色を検出したりする場合に便利です。
  • これにより、ロボットはセンサーに反射して戻ってくる光の量を検出できます。これにより、ロボットは表面上の線に到達するまで、または線に沿って走行することができます。
  • これにより、物体または表面が近くにあるかどうかをロボットに知らせます。これは、検出された色が近くの物体からの読み取り値であるのか、それとも遠くの表面や光の異常な読み取り値である可能性があるのか​​を判断するのに役立ちます。 

カラーセンサーをブロックでコーディングする

VEXcode IQ Color3 がオブジェクトの近くにあることを示すオブジェクト ブロックが見つかりましたか?

<Found an object> ブロックは、条件を true または false としてレポートするブール レポーター ブロックです。 <Found an object> ブロックのようなブール ブロックは、他のブロックの六角形 (6 面) 入力を持つブロックの内側に収まります。

<Found an object> Boolean ブロックは、カラー センサーがオブジェクトを検出した場合は「true」を、センサーがオブジェクトを検出しなかった場合は「false」を報告します。ブール ブロックの詳細については、 ヘルプ または ブロックの形状と意味 記事を参照してください。

 

VEXcode IQ ブロックは、カラー センサーを使用して、オブジェクトが見つかるまで前進するプロジェクトです。このプロジェクトは、開始すると前進し、Color3 がオブジェクトを見つけるまで待機してから、走行を停止します。

この例では、 <Found an object> ブロックを [Wait until] ブロックとともに近接検出に使用し、物体が検出されるまでロボットを前進させます。

VEXcode IQ Color は、Color3 が緑を検出すると読み取るブロックを検出しますか?

<Color detects> ブロックは、条件を true または false として報告するブール レポーター ブロックでもあります。 <Color detects> ブロックは、カラー センサーが選択した色を検出した場合は「true」を、センサーが他の色を検出した場合は「false」を報告します。ブール ブロックの詳細については、 ヘルプ または ブロックの形状と意味 記事を参照してください。

 

VEXcode IQ ブロックは、カラーセンサーを使用して緑色を検出するまで前進するプロジェクトです。このプロジェクトでは、開始したら前進し、Color3 が緑を検出するまで待機してから、走行を停止します。

この例では、 <Color detects> ブロックを [Wait until] ブロックとともに使用して、カラー センサーが緑色の物体を検出するまでロボットを前進させます。その後、ロボットは運転を停止します。これは、上の最初のビデオで説明されています。

VEXcode IQ Color3 の明るさを % で読み取るブロックの明るさ。

(明るさ) ブロックは、カラー センサーによって検出された光の量を報告します。円形のスペースを持つ他のブロックの内部で使用されるレポーター ブロックです。

(の明るさ) ブロックは、 0% ~ 100% の範囲を報告します。

 

下向きのカラーセンサーを使用してマークされた線をたどる VEXcode IQ ブロック プロジェクト。プロジェクトでは、開始時に Color3 ライトを 25% に設定します。次に、Color3 の明るさ (%) が 25 より大きい場合は、LeftMotor を 35 度前方に回転させ、そうでない場合は RightMotor を 35 度前方に回転させます。

この例では、上の 2 番目のビデオに示されているように、(Brightness of) ブロックを使用してロボットに線を検出させ、追跡させます。

VEXcode IQ 色相ブロックは、Color3 の色相を度単位で読み取ります。

(Hue of) ブロックは、カラー センサーによって検出された色の色相を報告します。円形のスペースを持つ他のブロックの内部で使用されるレポーター ブロックです。

(の明るさ) ブロックは、 0 ~ 360 の範囲を報告します

 

VEXcode IQ ブロック プロジェクトでは、光センサーを使用して、物体に到達するまで前進し、赤の場合は右に曲がり、赤でない場合は左に曲がります。このプロジェクトは、開始すると、Brain に Color3 の色相を度単位で印刷し、前進して、Color3 がオブジェクトを見つけるまで待機します。 Color3 の色相が 330 度より大きく、Color3 の色相が 30 度より小さい場合は右に 90 度回転し、それ以外の場合は左に 90 度回転します。

この例では、(Hue of) ブロックを使用して、ロボットに赤色に対応する色相値の範囲をチェックさせ、それらの値がセンサーによって検出された場合に右に 90 度回転させます。他の色相値が検出された場合、ロボットは左に 90 度回転します。

(Hue of) ブロックは、周囲の光の状態が一貫していない場合にロボットが特定の色を検出する必要がある場合に役立ちます。

Python でカラーセンサーをコーディングする

注:VEX IQ (第 1 世代) バンパー スイッチを Python でコーディングするには、VEX IQ (第 2 世代) ブレインに接続する必要があります。 VEX IQ(第1世代)の頭脳はPythonをサポートしていません。

color_3.is_near_object()

color.is_near_object コマンドは、カラー センサーがセンサーの前面近くの物体または表面を検出した場合は True を報告し、カラー センサーがセンサーの前面近くの物体または表面を検出し た場合は False を報告します センサー。

注:コマンドに表示されるカラー センサーの名前は、設定で指定された名前に対応します。 

drivetrain.drive(FORWARD)
while not color_3.is_near_object():
wait(20 MSEC)
drivetrain.stop()
この例では、While 付きの not ループが コマンドで使用され、カラーセンサーがセンサーの前方近くに物体を検出するまでロボットが前進します。
color_3.color()

color.color コマンドは、カラーセンサーによって現在検出されている色を報告します。

drivetrain.drive(FORWARD)
while not color_3.GREEN():
    wait(20 MSEC)
drivetrain.stop()
この例では、While 付きのループが not color.color コマンドで使用され、 ロボットカラーセンサーが緑色の物体を検出するまで前進します。するとロボットは走行を停止します。これは上記の最初の動画で説明されています。
color_3.brightness()

color.brightness コマンドは、カラーセンサーによって検出された光量を報告します。 0%~100%の範囲の値が表示されます。

color_3.set_light(25, PERCENT)
    while True:
        if color_3.brightness() > 25:
            # カラーセンサーが光を検出した場合、ロボットは左に移動します
            LeftMotor.spin_for(FORWARD, 35, DEGREES)
        else:
            # カラーセンサーが暗さを検出した場合、ロボットは右に移動します
            RightMotor.spin_for(FORWARD, 35, DEGREES)
        wait(20, MSEC)
この例では、上の 2 番目のビデオに示されているように、 color.brightness コマンドを使用してロボットに線を検出させ、追跡させます。
color_3.色相()

color.hue コマンドは、カラー センサーによって検出された色の色相を報告します。 0 ~ 360 の範囲の色相値を報告します

brain.screen.print(color_3.hue())
drivetrain.drive(FORWARD)
while not color_3.is_near_object():
    wait(20, MSEC)
if color_3.hue() > 330 and color_3.hue() < 30:
    drivetrain.turn_for(RIGHT, 90, DEGREES)
else:
    drivetrain.turn_for(LEFT, 90, DEGREES)

この例では、 color.hue コマンドを使用して、ロボットに赤色に対応する色相値の範囲をチェックさせ、それらの値がセンサーによって検出された場合に右に 90 度回転させます。他の色相値が検出された場合、ロボットは左に 90 度回転します。

color.hue コマンドは、周囲の光の状態が一貫していない場合にロボットが特定の色を検出する必要がある場合に役立ちます。

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: