MIRS0905 カギ-トビラ脱出プログラム作成仕様書
MIRS0905-SOFT-0005
改訂記録
版数 作成日 作成者 承認 改訂内容
a01 2010.02.26 崇史 栗田 初版

目次

1. 本ドキュメントについて
2. プログラムの機能
3. プログラムと解説
4. 問題点と対処法

1. 本ドキュメントについて

    本ドキュメントではカギ-トビラ攻略のためのプログラム作成に関して記す。


2. プログラムの機能

    2.1. プログラム動作概要

       統合プログラムがカギ-トビラと認識した後の動作を実行する。
      DB方向へ直進し、前タッチセンサを一定時間接触させたのち、カギ方向へ一定距離進んでいく。
      先の動作(タッチセンサの接触)によってアームが伸び始めるので、カギにこれを接触させる。
      トビラが開くので、そちら方向へ向き直り、脱出する。

    2.2. カギ-トビラの侵入認識

       カメラによって「カギ-トビラに侵入した」と認識する。

    2.3. アーム伸縮動作と鍵開錠動作

       カギのボタンを押すアームは、PICのプログラムによって制御されている。
      アームはもともと機体内におさまるようになっているが、 前のタッチセンサが一定時間押されることで、アームが伸び出す仕様になっている。

       前のタッチセンサが一定時間押されると、数秒後にアームが伸び出す。
      そのため、その数秒(任意の時間に設定できる)以内に、アームが飛び出したときに鍵を開錠できる位置まで移動する。
      PICプログラム(アーム伸縮動作を行う)とカギ-トビラ障害物の脱出プログラムを次にリンクする。
      これらのプログラムは「3. プログラム」で詳しく解説する。

3. プログラムと解説

    3.1. プログラム

       カギ-トビラ攻略で使用したプログラムを次にリンクしておく。
      • Key.c

        • :カギ-トビラへの侵入認識のあと、脱出までのモータ制御を行うプログラム
      • smc.c

        • :上のKey.cが実行しているバックグラウンドで、前のタッチセンサを監視し、条件に合致したらアームを伸ばすプログラム
      *smc.cへのリンクと解説は別ドキュメント「MIRS0905-ELEC-0003 ステッピングモータボード制御プログラム仕様書」(関連文書参照)に記す。

    3.2. プログラム「Key.c」の解説

       このプログラムで使用した関数を表3.2.1に示す。
      表3.2.1 関数名と処理内容
      関数名処理内容
      void key(void)  DBまで直進して、前タッチセンサを一定時間*1接触させる。
      その後、カギ方向へ向き直り、一定距離*2だけ直進する。
      アームが伸びだすのを待ち、カギに接触、機体内に収まったことを確認したら、トビラ方向へ向き直って直進する。

      *1, *2: これはプログラムによって指定可能である。
      void *irs_key(void) 白線センサ、タッチセンサの値を読み取る。
      *外部変数によって統合プログラムからセンサの値を貰い受けるので、現在は使用していない。
      void *uss_key(void) 超音波センサの値を読み取る。
      *外部変数によって統合プログラムからセンサの値を貰い受けるので、現在は使用していない。

    3.2. プログラム「Key.c」の解説

       別ドキュメント「MIRS0905-ELEC-0003 ステッピングモータボード制御プログラム仕様書」(関連文書参照)に示す。

    4. 問題点と対処法

     プレ競技会・競技会・ポスト競技会のいずれでもカギ-トビラ攻略の機会はなかったが、試験段階で問題点と思われた箇所を次に示す。

      問題:パラメーターの設定と誤差
       パラメーター(カギと機体の距離をどれだけつめるか、など)の設定は重要である。
      例えば、カギと機体の距離が不十分であれば、アームはカギのボタンを押せず終わってしまう。
      正確にパラメータ設定したとしても、誤差(気体が壁に擦る、など)によって上手く動作しないこともある。
      対処:アーム自体にタッチセンサをつけ、アームがカギと接触できたかを確認する、など。

      問題:アームが伸び出さない
       アームが伸び出すべく時に伸び出さない場合がある。
      対処:上の”カギと機体の距離が不十分”のケースと同様にアームのタッチセンサがONであるかどうかを確認する。
関連文書