沼津高専 電子制御工学科 | ||||||
| ||||||
改訂記録 | ||||||
---|---|---|---|---|---|---|
版数 | 作成日 | 作成者 | 承認 | 改訂内容 | ||
A01 | 2000.5.30 | 佐田/稲葉/坪井 | 佐田 | 初版 | ||
A02 | 2000.6.23 | 佐田/稲葉/坪井 | 佐田 | 他のドキュメントとの整合 | ||
B01 | 2000.10.27 | 佐田/稲葉/坪井 | 佐田 | 実際の動きに合わせてドキュメントを改定。まだ変わる予定 |
目次
Task No. | Initialization | Normal | Timer | Interrupt | Norml Priority | Interrupt Priority | |
00 (MMI) | O | O | O | O | 0 | 1 | |
01 (超音波センサ) | O | O | X | O | 1(6) | 0 | |
02 (ロータリエンコーダ・タッチセンサ) | O | 0 | O | O | 4 | 0 | |
03 (赤外線センサ) | O | 0 | X | 0 | 6 | 0 | |
04 (PWM) | O | O | O | X | 1(0,3) | X | |
05 (90度回転タスク) | O | 0 | 0 | X | 2 | X | |
06 (円回転タスク) | O | O | O | X | 3 | X | |
07 (自己位置検出タスク) | O | O | X | O | 3 | O | |
08 (ポスト獲得タスク) | O | O | O | X | 3 | X | |
09 (障害物回避) | O | O | X | X | 4 | X | |
10 (センサ試験) | O | O | X | X | 4 | X |
低レベルタスク
コマンド名 | コード
(HEX) |
サブコマンド | 機能 |
表示 | なし | なし | なし |
マクロ | 機能 | 説明 |
DISP_SET(x,y) | 表示データ設定 | x 番目の表示データを y に設定 |
LED_SET(x) | LED点灯データ設定 | 赤緑LEDの点灯データを x に設定 |
番号 | 内容 |
なし | なし |
task01:超音波センサ制御タスク
1.機能
4個の超音波を入力された順に動作させ距離情報をBBに書き込む。測定開始コマンドによりタスク
が起動されると、停止コマンドが実行されるまで測定を行い結果をBBに書き込む。超音波発信したのち
、タスクは開放され割り込み待ちになる。超音波受信もしくはタイムアウトにより割り込み処理が起動
され距離を計算してBBに書き込む。
コマンド名 | コード
(HEX) |
サブコマンド | 機能 |
超音波1発信 | 1 | なし | 超音波センサ1から超音波を発信し、距離を測定する。 |
超音波2発信 | 2 | なし | 超音波センサ2から超音波を発信し、距離を測定する。 |
超音波3発信 | 3 | なし | 超音波センサ3から超音波を発信し、距離を測定する。 |
番号 | 内容 |
1 | 超音波センサ1の測定結果 接続エラー:888 測定エラー:999 |
2 | 超音波センサ2の測定結果 接続エラー:888 測定エラー:999 |
3 | 超音波センサ3の測定結果 接続エラー:888 測定エラー:999 |
task02:ロータリーエンコーダ・タッチセンサタスク
1.機能
ロータリーエンコーダの値を読み取り左右のタイヤの移動量を導出する。結果をBBに書きこむ。タッチセンサの割り込みによりポスト又は壁の有無も扱う。
2.コマンド仕様
コマンド名 | コード(HEX) | サブコマンド | 機能 |
なし | なし | なし | なし |
3.BB仕様
番号 | 内容 |
0 | タッチセンサの値 |
1 | ロータリーエンコーダ左タイヤデータ |
2 | ロータリーエンコーダ右タイヤデータ |
3 | 左タイヤ総移動量データ |
4 | 右タイヤ総移動量データ |
5 | 赤外線データ |
6 | カウンタの値 |
4.初期設定
void rs_ts_init()をにロータリーエンコーダとタッチセンサのデータを初期化する。割り込みタスク登録・タイマタスクの登録をする。
1.定義
void inzt02():リアルタイムモニタから呼ばれる初期設定関数。
2.HCPチャート
5.割り込み処理
タッチセンサによる割り込みによりどのタッチセンサが反応をしているか調べ結果をBBに書き込む。(予)
1.定義
interrupt void intt02():タッチセンサの割り込み要求信号により実行される。タッチセンサの反応を調べBBに書き込む。
2.HCPチャート
6.タイマ処理
一定時間ごとに起動され、ロータリーエンコーダの値を読み取り、BBに書き込む。
1.定義
void timt02():タイマ割り込みによって一定時間ごとに起動される。
2.HCPチャート
7.コマンド処理
無し
task03:赤外線センサタスク
1.機能
赤外線センサより割り込み要求信号があるたびにどの赤外線センサが反応したかを調べ、そのデータをBBに書き込む。
2.コマンド仕様
コマンド名 | コード (HEX) |
サブコマンド | 機能 |
信号受信 | 01 | n | 赤外線センサの状態をBBに書き込む。 |
番号 | 内容 |
1 | 赤外線センサのデータ |
4.初期設定
Hardware Function Library(HFL)のロ赤外線センサの初期化関数void irs_init()を使って赤外線センサのBBのデータを初期化。割り込みタスクの登録を行う。
1.定義
inzt03():リアルタイムモニタから呼び出される初期設定関数。
2.HCPチャート
5.割り込み処理
赤外線センサの割り込み要求信号により実行、どの赤外線センサが反応したかを調べBBに書き込む。
1.定義
interrupt void intt03():赤外線センサの割り込み要求信号により実行される。
2.HCPチャート
6.タイマ処理
無い
7.コマンド処理
無い
task04:PWM駆動タスク
1.機能
一定時間毎に起動され、タスク起動時に受け渡される引数によって指定される左右車輪の速度データをPWMに書き込む。
2.コマンド仕様
コマンド名 | コード (HEX) | サブコマンド | 機能 |
左右モータ駆動 | 左PWMデータ(rotl) | 右PWMデータ(rotr) | タスク起動時に受け渡される引数によって指定される左右車輪の速度データをPWMに書き込む。左PWMデータの値により次に起動するタスクが決まる。 |
mode | 0 | b | タスク5を起動する |
mode | 1 | b | タスク6を起動する |
mode | 2 | b | タスク7を起動する |
番号 | 内容 |
1 | 左PWMデータ |
2 | 右PWMデータ |
4.初期設定
void_pwm_init()を用い、PWMのBBのデータを初期化。タイマタスクの登録。
1.定義
void inzt04():リアルタイムモニタから呼び出される初期設定関数。
2.HCPチャート
5.割り込み処理
無し
6.タイマ処理
一定時間ごとに実行されHFLのPWM系関数void pwm_data(int r, int l)によって引数のデューティー比をPWMに書き込む。
1.定義
void timt04():タイマ割り込みによって一定時間ごとに実行される。
2.HCPチャート
7.コマンド処理
高レベルタスク
task05:90度回転タスク
1.機能
ポスト(又は壁)にタッチセンサがぶつかった時、ポスト(又は壁)に対して90度横を向くようにする。これより次のポスト周回運動を
容易にしている。
2.コマンド仕様
コマンド | コード(HEX) | サブコマンド | 機能 |
? | h | j | 回転方向の指定。 |
3.BB仕様
なし4.初期設定
task5のタイマタスク登録。
1.定義
void inzt05():リアルタイムモニタから呼び出される初期設定関数。
2.HCPチャート
5.割り込み処理
無し
6.タイマ処理
task6により起動され、一定時間ごとに超音波センサを起動しポストとの距離を測る
1.定義
void timt05():タイマ割り込みによって一定時間ごとに実行される。
2.HCPチャート
7.コマンド処理
なし
1.定義
void nrmt05():task4により起動される。
2.HCPチャート
task06:円回転タスク
1.機能
ポストの周りを回る。途中超音波センサの値によりtask5のタイマタスクを起動し方向修正を行う。
2.コマンド仕様
3.BB仕様
なし4.初期設定
タイマタスクの登録。
1.定義
void inzt06():リアルタイムモニタから呼び出される初期設定タスク。
2.HCPチャート
5.タイマ処理
一定時間ごと左右の超音波センサを起動。その時の左右の超音波センサデータと基準値とを比較して方向修正のためにtask5のタイマタスクを起動する。
1.定義
oivd timt06():一定時間ごと起動。
2.HCPチャート
6.割り込み処理
無し
7.コマンド処理
無し
task07:自己位置検出タスク
1.機能
ロータリエンコーダ・タッチセンサタスクからロータリエンコーダの値を読み取り元の
位置からどれだけX,Y方向に移動したか検出する。また自機の向いている方向も検出できる。
2.コマンド仕様
なし3.BB仕様
番号 | 内容 |
1 | 移動距離X |
2 | 移動距離Y |
3 | 自機の方向θ |
4.初期設定
BBのデータの初期化。タイマタスクの登録。
1.定義
void inzt07():リアルタイムモニタから呼び出される初期設定関数。
2.HCPチャート
5.割り込み処理
無し
6.タイマ処理
一定時間ごとにロータリエンコーダの値を読み取り、自己移動量及び自機の向いている方向を算出する
7.コマンド処理
なし
task08:ポスト獲得タスク
1.機能
ポストを獲得し、赤外線センサにより獲得されたか否かを判断する。
同時に死角にあるポストの探索も行うタスク。
2.コマンド仕様
コマンド | コード(HEX) | サブコマンド | 機能 |
回転 | 01 | 1 | 反応のあったタッチセンサの位置の値から回転角を計算し回転、その後ポストのまわりを多角形周りする。 |
超音波センサ | 02 | 2 | ポストを多角形に周りながら、ある範囲で外側の超音波センサによって 死角のポストを発見する。 |
3.BB仕様
番号 | 内容 |
1 | 前面の赤外線センサ |
2 | 外側の超音波センサデータ |
4.初期設定
BBのデータの初期化。割り込みタスクの登録。
1.定義
void inzt08():リアルタイムモニタから呼び出される初期設定関数。
2.HCPチャート
5.割り込み処理
1周目は赤外線の割り込み要求信号にたいして発動。スイッチ押下に入る。そしてスイッチ押下後、2周目は超音波の割り込み要求信号に対して発動し、死角にあるポスト獲得に向かう。
1.定義
void intt08():赤外線の割り込み要求信号により起動。
2.HCPチャート
6.タイマ処理
無し
7.コマンド処理
タッチセンサの反応により回転、その後ポストの周りを多角形で周回する。
1.定義
void nrmt08():????タスクから呼び出される。
2.HCPチャート
task09:障害物回避タスク
1.機能
タッチセンサに反応があり、それが障害物であると判断された場合のみ起動。障害物を回避する。
2.コマンド仕様
コマンド | コード(HEX) | サブコマンド | 機能 |
障害物回避 | 01 | 障害物回避行動をとる。 | |
壁回避 | 02 | 壁回避行動をとる.。 |
3.BB仕様
番号 | 内容 |
4.初期設定
BBのデータの初期化。
1.定義
void inzt09():リアルタイムモニタから呼び出される初期設定関数。
2.HCPチャート
5.割り込み処理
今のところ無し。
6.タイマ処理
今のところ無し
7.コマンド処理
回避を行う。
1.定義
void nrmt09():初期設定関数から呼び出される。
2.HCPチャート
task10:センサ試験タスク
1.機能
各センサが正常に動作するかを試験する。DIPスイッチによって試験するセンサを選別する。
2.コマンド仕様
コマンド | コード(HEX) | サブコマンド | 機能 |
センサ試験 | 01 | 2 | DIPスイッチの状況より試験するセンサを選択し試験する。 |
3.BB仕様
番号 | 内容 |
1 | LED表示データ |
2 | DIPスイッチ選択データ |
4.初期設定
BBのデータを初期化。
1.定義
void inzt10():リアルタイムモニタから呼び出される初期設定関数。
2.HCPチャート
5.割り込み
無し
6.タイマ処理
無し
7.コマンド処理
試験項目を参照
1.定義
void nrmt10():センサのテストをする。
2.HCPチャート
試験用に作成したプログラムを使用
試験用に作成したプログラムを使用
MIRS9901システムの基本的な動作を基に試験を行う。