ボールセンサとは、どんなセンサ
ボールセンサ基内には、光センサと呼ばれる電子部品がついています。
光センサとは、センサに光があたる事で電圧が発生します。また発生する電圧は光の強さに比例します。
この事を利用して、赤外線光を発光しているボールを探す事ができます。
電圧が小さいとボールが遠くにあるか、方向が異なる所にあることがわかります。
常に電圧値が最大になるようにロボットを動かすことで、ボールをロボットが相手ゴールへ運ぶ事が可能となります。

上部左側中央にある黒い部品がボールセンサ基板です。
上部右側の写真が、ボールセンサ基板に付いている光センサです。
このセンサの右側から光が入ってくると光量に比例した電圧が発生します。
この状態では、光が四方八方から入り込みボール以外の室内照明や太陽光線にも反応するため、このセンサに
黒いビニールフードを一方向からのみ入るように取り付けています。
黒い色は、光を吸収しやすいので入ってきた光の乱反射光を防止しています。

左の図は、光センサに光が入り込む様子を表したものです。
センサが裸の状態では、光はセンサの全方向から入り込みます。
実際は、センサ前面にはレンズがあるので前方向の光を多く取り込める
様にはなっていますが、多くは漏れて入り込むので注意が必要です。
それを少しでも防止するのが、センサにフードを取付けて前方向からしか
光が入らない様に工夫します。
フードを長くする事で、より前面からの光しか反応しない「ボールセンサ
」が出来上がります。
このお陰で天井からの照明光も低減させる事ができます。
2013年度のロボカップジュニアのサッカー大会から、パルスボールの採
用で外乱光( 照明、太陽光等 )の影響をなくする為の工夫がされていま
す。これによりパルスボール対応の「ボールセンサ基板」に交換する必要
が有りますが中に使っている光センサは同じ物を使用しています。
( 光センサの原理は同じで使用方法が異なる )


[ STEP 1 ]
ボール発見で回転停止
[ サンプルプログラム ]
下記プログラムは拡大できます。
 |
001 無限ループ( 始め )
002 CN1 ( ボールセンサ )の値をチェックします。
光量が30%以上(強い)であれば 003 行の命令を
実行、そうでなければ 005 行を実行。
003 光を検出したと判断して停止します。
004 光量が小さくボールを検出していないとして次の命
令を実行します。
005 左に自転してボールを見つけるまで回転し続けます
006 if 文が終了<007へ>
007 無限ループ(終わり)001へ戻る。 |
|
【 動かしてみましょう 】
どうでしたか?
思い通りの動きをしましたか?
ボールを検出できなかった人は、ロボットを360度回転(手で回してください)して、その時のボールセ
ンサからの値( CN1 )をチェックして下さい。
たぶんどこかの方向(ボールが有る方向)で、30%以上の明るい所が有ったと思います。
それでもロボットが停止しない場合は、回転速度が速すぎている可能性がありますので回転速度( 50% )
を40%、30%等速度を落として確認して下さい。
|
【 ロボットの特性を記録しておきましょう 】
今回の場合は、ボールセンサの特性を測定し記録しましょう。
@ ボールとロボットの距離と CN1 の出力値との関係
距離を近くから、徐々に遠ざけていき、その時のセンサ出力を記録します。
A ボールとロボットを一定距離離した状態(例えば10cm)で、ロボットを少しずつ回転された時
のセンサ出力を記録する。
これは、ボールセンサの視野角(どこまでボールを左右検出する能力があるか)がわかります。
実際は、外乱光を防ぐため黒いチューブをかぶせてわざと視野角を狭くしています。
|


[ STEP 2]
ボールを追いかける
[ サンプルプログラム ]
下記プログラムは拡大できます。
 |
001 無限ループ( 始め )
002 CN1 ( ボールセンサ )の値をチェックします。
光量が10%以上であれば 003 行の命令を実行、
そうでなければ 006 行を実行。
003 光を検出(ボール)したとして、赤色LED1を点灯
004 光を検出(ボール)したとして、最高速で直進
005 ボールを検出していないとして下記命令を実行
006 赤色LED2を消灯
007 左回転しボールの検出動作をする
008 if 文が終了<009へ>
009 無限ループ(終わり)001へ戻る。 |
|
【 動かしてみましょう 】
どうでしたか?
思い通りの動きをしましたか?
前回とプログラムとしては、ボール検出して停止させるか、全速力直進かの違いですので問題はないと
おもいます。
ボールの検出レベルを「10%」としていますので、より遠くのボールを検出できますがロボットが置
かれている環境によりボールが無いのにボールを検出した動作をする可能性が高くなります。
センサーモニターで確認してから、ボール判断「しきい値」を設定しましょう。
|



[ STEP 3]
タッチで方向転換してボールを追う
[ サンプルプログラム ]
下記プログラムは拡大できます。
 |
001 無限ループ( 始め )
ボールセンサ(CN1)の判断ルーチン
002 CN1(ボールセンサ)の値をチェック
003 ボールを検出したのでLED2を点灯
004 最高速度で直進してボールを追いかける
005 ボールが見つからないので以降を実行します。
006 ボールが見つかっていないのでLED2を消灯
007 左に回転しながらボールを探す動作に入る
008 ボール検出ルーチンが終了 |
左タッチセンサ(CN3)の判断ルーチン
009 左のタッチセンサが動作したかを判断
010 動作したので(追突した)LED1を点灯
011 追突したのでロボットを後退させる。
012 後退させる時間を 0.5 秒に設定
013 その後壁を避ける為、右に旋回させる。
014 旋回時間を 0.5 秒に設定
015 旋回終了なのでLED1を消灯
016 左タッチセンサ判断ルーチン終了 |
右タッチセンサ(CN4)の判断ルーチン
017 右のタッチセンサが動作したかを判断
018 動作したので(追突した)LED3 を点灯
019 追突したのでロボットを後退させる。
020 後退させる時間を 0.5 秒に設定
021 その後壁を避ける為、左に旋回させる。
022 旋回時間を 0.5 秒に設定
023 旋回終了なので LED3 を消灯
024 右タッチセンサ判断ルーチン終了 |
025 無限ループ(終わり)001へ戻る。 |
|
【 動かしてみましょう 】
どうでしたか?
思い通りの動きをしましたか?
少しプログラムが長くなりましたが、上記の様に機能別に分けてみると今まで作成してきたプログラム
をつなげただけの物になっています。
長文のプログラムになった時は、タイプミスに十分注意しましょう。
|


[ STEP 4]
センサ情報を見てみましょう
ボールセンサから得られる値を知る事はプログラムを作成する上で大変重要です。
今回の場合では、ロボットとボールでの距離による値を知る事で、それぞれの判定値を設定することができま す。
<例>
ボールが無い場合 : 5
ボールがロボットに近い時 : 70
ボールがロボットから遠い時 : 30 とした時には、
ボールの判定値は、( 30+5 )/ 2 = 17.5 17 又は 18 程度に設定します。
【 C-Style カラセンサ情報を得る方法 】
まず、パソコンとロボットに通信ケーブルを接続して、ロボットの電源を入れてポート設定を事前に設定しておきましょう。
@ オプション内にある「センサーモニター」を選択します。

A 下記センサーモニター画面が表示されます。

B ロボットの電源が入っていない場合は電源を入れる。入っていた場合はリセットスイッチを押す。

ボールセンサ( CN1 ) の値は81%と表示されています。< ロボットの近くに、ボールが有ります。>
|
お疲れ様でした。
以上がボールセンサを使ったサンプルソフトでした。
今年度のロボカップジュニア競技大会(2013年度)のサッカーボールは、連続光の赤外線発光ボールから
パルス点灯の赤外線発光ボールにかわりました。変更の理由は以下の通りです。
@ 電池の消耗が小さい。( 大会中、頻繁に電池交換が必要であった。)
A 外乱光に強くなる( 競技会場の窓、出入り口に暗幕を張っていたが現在は不要 )

