沼津高専 電子制御工学科 | ||||||
| ||||||
改訂記録 | ||||||
---|---|---|---|---|---|---|
版数 | 作成日 | 作成者 | 承認 | 改訂内容 | ||
A01 | 2004.9.17 | 小俣直之 | 石川健太 | 初版 | ||
A02 | 2004.11.25 | 杉本達也 | 石川健太 | 製作段階での問題点を変更 | ||
A03 | 2004.2.10 | 植松洋太 | 石川健太 | 製作段階での変更点を反映 |
- モードの定義
メインプログラムを立ち上げ、スタートスイッチが押されたら『初期動作モード』に移る
- 構成要素 LCDデバイスドライバ
- 関数名 initialize
- 書式 int initialize(void)
- 戻り値 なし
- 備考 標準機プログラムを改良する(変数の初期化などを追加)。
- フローチャート
- モードの定義
スタート位置から超音波センサでmirsの前方方向にポストがあるかどうかを探索しながら前進する。指定距離進み終わったら、『ポスト探索モードT』へ移る。ポストを発見した場合はポストを回避してから(モードを作らず、この中にプログラムを組み込む)前方に残りの距離を進む
- 構成要素 LCDデバイスドライバ、超音波モジュール、直進走行モジュール、回転モジュール
- 関数名 syoki
- 書式 int syoki(void)
- 戻り値 なし
- 備考 なし
- フローチャート
- モード定義
これはただの定義で関数としては存在しません
その場で左まわりに90°回転し前方に指定距離進み、『ポスト探索モードT』へ移る。
- 構成要素 LCDデバイスドライバ、超音波モジュール、直進走行モジュール、回転モジュール
フローチャート
- モード定義
これはただの定義で関数としては存在しません
その場で右まわりに90°回転し前方に指定距離進み、左まわりに90°回転し『ポスト探索モードT』へ移る。
- 構成要素 LCDデバイスドライバ、超音波モジュール、直進走行モジュール、回転モジュール
フローチャート
- モード定義
これはただの定義で関数としては存在しません
前方に指定距離進み、『ポスト探索モードT』へ移る。この探索で指定数発見できなかった場合はフラグを立ち上げ、ポストゲット時にコード判別をしないようにする。
- 構成要素 LCDデバイスドライバ、超音波モジュール、直進走行モジュール、回転モジュール
フローチャート
- モード定義
これはただの定義で関数としては存在しません
白線センサ(ws1 or ws2)がonになったら指定距離後退し、180°回転して回避モードに移る前のモードに移る。これを行った場合はフラグを立ち上げ、ポストゲット時にコード判別をしないようにする。
- 構成要素 LCDデバイスドライバ、白線センサデバイスドライバ、直進走行モジュール、回転モジュール
- フローチャート
- モード定義
これはただの定義で関数としては存在しません
初期動作モードに組み込む。 超音波センサ(uss1 or uss2)の値が規定値以下になったら、その場で右まわりにに90°回転しuss1ならば前方に指定距離進み、、uss2ならばそのままポストを回避するように移動する。
- フローチャート
- モードの定義
左方の超音波センサで超音波を出しながらその場で360°回転する。このときポストを指定数発見できたなら現在地を(r,θ)=(0,0)とする。そして、超音波センサが見つけた順に(角度が小さい順に)0から番号を振り、それをポストナンバーとする。その後『ポスト探索モードU』へ移る。指定数発見できなければ『左動作モード』、『右動作モード』そして『前動作モード』に移る。
- 構成要素 LCDデバイスドライバ、回転モジュール
- 関数名 post_search2
- 書式 int post_search2
- 戻り値 なし
- 備考 標準機のプログラムをほぼそのまま用いる。
- フローチャート
- モードの定義
まだ獲得していないポストの中で一番若いナンバーのポストにある程度近づいていく。近づいたら『ポスト接近モード』に移る。近づいている途中にタッチセンサが反応したら停止、後退し『ポスト周り回転モードT』にうつる。
- 構成要素 LCDデバイスドライバ、直進走行モジュール、回転モジュール、タッチセンサデバイス
- 関数名 post_approach2
- 書式 int post_approach2(int target_post)
- 戻り値 なし
- 備考 標準機のプログラムを改良する
- フローチャート
- モードの定義
ポストにさらに近づいていく。mirs前方の超音波センサでポストとの距離を測りながら進み、ある程度小さくなったら停止。『ポスト周り回転モードT』に移る。この動作の途中で白線センサが反応した場合は『白線回避モード』に移る。
構成要素 LCDデバイスドライバ、直進走行モジュール、赤外線センサデバイス
- 関数名 post_approach2
- 書式 int post_approach2(int target_post)
- 戻り値 0
- 備考 標準機プログラムを改良する。ポストから14cm離れたところで停止する。
- フローチャート
- モードの定義
これはただの定義で関数としては存在しません
指定距離後退しポストの周りを左回転しmirs左方の赤外線センサでスイッチを探す。スイッチが見つかったら『赤外線識別モード』に移る。
。- 構成要素 LCDデバイスドライバ、回転モジュール、直進走行モジュール、ポスト周回モジュール、赤外線センサデバイス
- フローチャート
- 定義
これはただの定義で関数としては存在しません
赤外線の周波数からポストのコード番号を割り出す。識別できるまで何度か行い、終了したら『ポスト獲得モード』に入る。
- フローチャート
- モードの定義
ポスト周り回転モードT、赤外線識別モードをこのモードに組み合わせる。 ポストが獲得できる番号のものだった場合、ポストに正対するように左に90度回転しmirsをポストにぶつかるまで前進させる。タッチセンサ反応後、指定距離、後退し赤外線センサでスイッチを押したかどうか確認する。スイッチを押していない場合3回、スイッチを押す動作を行う。獲得後、ポストの周りをまわってポストの周回を始めた位置まで移動する。そこでそのポストの獲得を終了し、次のポスト獲得のため『ポスト探索モードU』に移る。
ポストが獲得できない番号のものだった場合、赤外線の周波数を読み取り記憶しておく。その後『ポスト探索モードU』に移る。
すべてのポストにおいて(もしくは2周目モードで)『ポスト獲得モードU』を行ったら『2周目モード』に移る。
- 構成要素 LCDデバイスドライバ、超音波モジュール、赤外線センサドライバ、タッチセンサドライバ、回転モジュール、直進走行モジュール、ポスト周回モジュール
- 関数名 post_get2
- 書式 int post_get2(int target_post)
- 戻り値 なし
- 備考 標準機プログラムpost_getを改良
- フローチャート
- モードの定義
一周目で取得した座標を元にMIRSをポストからポストへ直接進ませる。このとき光学式マウスで座標を読み取りながら進み、指定距離に達したら停止する。その後『ポスト接近モード』に移る。
- 構成要素 LCDデバイスドライバ、回転モジュール、直進走行モジュール
- 関数名 turn2
- 書式 int turn2(int turn_count)
- 戻り値 なし
- 備考 なし
- フローチャート
- 直進走行モジュール
- 定義 指定距離直進する(lqr)。前進が+、後進が-である。
- 構成要素 PWMモジュール、LCDデバイスドライバ
- 関数名 pwm_lqr_straight
- 書式 int pwm_lqr_straight(int distance, int time)
- 戻り値 0
- 備考 標準機プログラムを使用、移動距離をdistance[mm]、移動時間をtime[msec]とする。標準機のnt lqr_straight関数を使用する。
- 回転モジュール
- 定義 指定角度回転する(PWM)。左周りが+、右回りが-である。
- 構成要素 PWMモジュール、LCDデバイスドライバ
- 関数名 pwm_lqr_rotate
- 書式 int pwm_lqr_rotate(int angle, int time)
- 戻り値 なし
- 備考 標準機プログラムを使用、回転角度をangle[deg]とする
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
注) 図の横が前の動作、縦が後の動作となっています。