移動式ロボットプログラミング基礎

5. 距離センサ

1. 距離センサの利用

Sharp GP2D120

40cm まで測定可能です.

0-4cm間と,4cm-40cm間で同一値を取るため,4cm-40cmの間のみで使うべきです.

対象物までの距離が4cm以下に近づいた的は,離れていっているように感じるため注意が必要です.

また,Robotino のAD変換器の関係で,電圧の最大値が2.55Vまでしか測定できません.そのため,2cm-4cm間は同一値となります.

※オンラインヘルプは,robotino_distancesensor_exampleを参照して下さい.

2. プログラミング課題

距離センサの値を使おう

以下のプログラムを作ってみましょう.

    1. 障害物を見つけたら停止
    2. 壁に沿って移動

3. 課題の解説

距離センサの値を使おう

1つめの課題は,IR1を使います.

2つめの課題は,IR2とIR9を使います.

距離センサの出力値(電圧)をそのまま用いても課題を達成することができますが,今後のことを考えると電圧から距離に変換することを勧めます.

4. センサの利用2

ベクトル演算

壁は,ベクトル演算を使うことで判定できます.

5. プログラミング課題

ベクトルを使ってみよう

壁の角度を計算して,以下のプログラムを作ってみましょう.

    1. 平行移動してみる
    2. 壁が背中になるように回転する

6. 課題の解説

平行移動してみる

平行移動してみるの解説です.

左側のセンサIR3とIR4,右側のセンサIR7とIR8を使います.

障害物が存在しないときは,40cmの値が返ってきます.

そのままベクトルを作成すると,10度と170度の状態です(10度分ズレています).

壁が背中になるように回転する

壁が背中になるように回転するの解説です.

後ろ側のセンサIR5とIR6を使います.

こちらは,左右対称に配置されていますので,先ほどと異なりずれは生じません.

7. プログラミング課題

回転しながら進みましょう

ぐるぐる廻りながら,前進するプログラムを作ってみましょう.

8. 課題の解説

回転しながら進みましょう

Robotino を回転させます.

前進方向のベクトルを,自分の現在の向きの角度で逆回転させます.そのベクトルをx,yに分解しRobotino の進行として加えます.

これで,前進方向のベクトルの向きにロボットが進みます(ロボットの向きに関係なく進みます).

■移動式ロボットプログラミング基礎■に戻る