名称 MIRS1102 タッチセンサ正体補正用関数概要
番号 MIRS1102-SOFT-0001

最終更新・2011.1.6

版数 最終更新日 作成 承認 改訂記事
A01 2011.1.6 伊庭達哉 初版

目次




1.はじめに


本ドキュメントは、MIRS1102に使用するタッチセンサ正体補正用関数direction_body()の動作内容及び使用方法の概要についてのドキュメントである。関数の詳細設計は別のドキュメントに示す。


2.関数の動作内容


タッチセンサ正体補正用関数direction_body()は、タッチセンサが反応した時に、その反応したタッチセンサを指定することで、指定したタッチセンサに対応した動作を行う関数である。具体的に、正面のタッチセンサが反応した場合は左右の超音波センサの値から壁の無い方向へ方向転換し、左右のタッチセンサが反応した場合は、壁から離れ、正面を向くように動作する。



3.関数の使用方法


タッチセンサ正体補正用関数direction_bodyは次のような仕様になっている。

ファイル名 関数名 書式
direction_body.c direction_body int direction_body(int touch, int psn)


この時の、引数、及び戻り値は次のようになる
  • 引数
    touch : 反応したタッチセンサに対応した数字を指定する。
    1:正面のタッチセンサ・・・床の中央まで下がってから90度方向転換する。
    2:左のタッチセンサ・・・指定した時間後退した後、指定した時間右のモータを逆回転させる。
    3:右のタッチセンサ・・・指定した時間後退した後、指定した時間左のモータを逆回転させる。

    ※direction_bodyの関数内でタッチセンサの反応を確認するわけでは無いので、何らかの形でタッチセンサの反応を確認してから関数を呼び出す。
    psn : 動作を行った後、まわりの壁の状況を見て、さらに位置補正をかけるかどうかを指定する。
    0:位置補正を行わない
    0以外:位置補正を行う・・・正面のタッチセンサがあたった場合は、いったん壁から25cm離れ、正面の壁に対して正面を向き、床の中央に進んでから方向転換する(このとき、ロータリーエンコーダの値はリセットされる)。左右のタッチセンサがあたった場合は、通常動作を行った後、左右の超音波センサの値を読んで、道に対して進行方向を向くように向きを調整する(このとき、ロータリーエンコーダの値はリセットされない)。なお、左右のタッチセンサがあたった場合は、左または右に壁がなかった場合は補正を行わない。

  • 戻り値
    0 : 正常終了
    正体補正が完了して、再び走り出せる状態になったことを示す。
    1 : 行き止まり処理終了
    正面のタッチセンサが反応したときの処理で、その場所が行き止まりであると判断して、引き返すときに出す処理。(コースを引き返すと、通常走行ではありえない壁の配置になったりするので、それを判断できるように)
    -9999 : 引数エラー
    タッチセンサに対応した数字の指定が間違っているときに返す。

4. 関連文書





沼津工業高等専門学校 電子制御工学科