沼津高専 電子制御工学科
MIRS0105 Software詳細設計書
MIRS0105-SOFT-0001
改訂記録
版数 作成日 作成者 承認 改訂内容
A01 2002.5.16 阿部,瀬川
松浦(責任者)
中澤 初版
A02 2002.5.17 阿部,瀬川
松浦(責任者)
中澤 図の更新
A03 2002.5.21 阿部,瀬川
松浦(責任者)
中澤 RT,DeviceDriverの更新
A04 2002.6.4 阿部,瀬川
松浦(責任者)
中澤 モードの訂正
A05 2003.2.14 松浦 瀬川 ドキュメント整理

目次

  1. はじめに
  2. 概要
  3. OS(RT-Linux)の概要
  4. 行動モードの詳細
  5. プログラム群の構成
  6. プログラム群の詳細
    1. モードモジュール
    2. 機能モジュール
    3. RTタスクモジュール
    4. デバイスドライバ
  7. 試験
  8. 作成ドキュメント一覧

1.はじめに

本ドキュメントは、MIRS0105 基本設計書に規定されたシステムの動作規定、状態遷移を実現する各タスクの開発(コーディング、試験等)に必要な事項を述べる。

2.概要

3.OS(RT-Linux)の概要

ソフトウェアの動作環境であるRT-Linux、及び開発環境等については詳しくはMIRS0105 RT-Linux技術調査を参照。
MIRS0105のOSにRT-Linuxを採用した主な理由として、各種センサ、機体のリアルタイム制御にRT-Linuxの持つリアルタイムスケジューリングが適していたため、容量に限りのあるフラッシュメモリ内に収まるため、等があげられる。

4.行動モードの詳細

MIRS0105 基本設計書

5.プログラム群の構成

以下にMIRS0105 SOFTWARE ユーザプログラム・RTタスクモジュール・デバイスドライバの関係を表す。

6.プログラム群の詳細




ソースファイル等一覧

ファイル名分類関連ヘッダファイル詳細
main.c上位プログラムgloval_variables.h
prot.h
define.h
メインプログラム。主にメイン行動ごとのモードを記述してある。
tools.c上位プログラムgloval_variables.h
prot.h
define.h
さまざまな上位プログラムの中で使われている補助モジュール,モードのプログラム。
pwm.c上位プログラムgloval_variables.h
prot.h
直進、指定距離の直進、エンコーダカウント値の取得などを行う。PWM・エンコーダRTタスクモジュールとの掛け橋となる。
uss.c上位プログラムgloval_variables.h
uss.h
超音波のデータを送受信するプログラム。超音波センサRTタスクモジュールとの掛け橋となる。
tip.c上位プログラムgloval_variables.h
tip.h
デバイスドライバ全般のデータの送受信をするプログラム。
module_pwm.cRTタスクモジュールmodule_pwm.hDUTY比を送る。
module_enc2.cRTタスクモジュールmodule_enc2.hエンコーダから値を取得する。また、エンコーダのカウント値をリセットする。
module_uss.cRTタスクモジュールmodule_uss.h超音波の送受信を行う。
module_irs_tip.cデバイスドライバmodule_irs_tip.h赤外線センサ番号選択及び赤外線データを取得。
module_ts_tip.cデバイスドライバmodule_ts_tip.hタッチセンサ、パワーオン信号、白線検知センサからのデータ取得。
test_m.c開発用プログラム---走行チェックやセンサチェックをするプログラム。
test_m2.c開発用プログラム---メイン行動を部分部分チェックするプログラム。
stop.c開発用プログラム---モーターの回転を止めるだけのプログラム
enc_check2.c試験用プログラム---エンコーダのチェック。エレキとの結合試験用プログラム
uss_check.c試験用プログラム---超音波センサのチェック。エレキとの結合試験用プログラム
tip_check.c試験用プログラム---デバイスドライバのチェック。エレキとの結合試験用プログラム
define.txtテキストdefine.h使用した各デファインの説明
prot.txtテキストprot.h使用した関数の説明

1.メインプログラム構成モード

  1. 待機モード(main関数)
    • ソースファイル: main.c
    • モード定義:テンキーからの数字入力により、各モードを指定して実行する。
    • モード遷移条件:スタートボタンが押されたとき
    • 構成要素:なし
    • 関数名:main()
  2. 自己回転探索モード
    • ソースファイル:main.c
    • モード定義:開始位置で右回転しポストを探索する
    • モード遷移条件:待機モード終了後
    • 構成要素:超音波モジュール,PWM,ENCモジュール
    • 関数名:int self_turn_and_search()
  3. 直進モード
    • ソースファイル:main.c
    • モード定義:mirsが直進する。ポストに向かうときに行う
    • モード遷移条件:超音波センサで次に向かうポストを発見したとき
    • 構成要素:PWM,ENCモジュール、TIPモジュール
    • 関数名:int advance()
  4. 確認モード
    • ソースファイル:main.c
    • モード定義:ポストの周りを右回転しながらスイッチの番号を確認する
    • モード遷移条件:ポストの所まで進み、mirsの向きをポストと垂直になったとき
      獲得モードに遷移したときその動作が終わったとき
    • 構成要素:PWM,ENCモジュール、TIPモジュール、ポスト番号管理モジュール
    • 関数名:int certification()
  5. 獲得モード
    • ソースファイル:main.c
    • モード定義:ポストのスイッチを押す
    • モード遷移条件:獲得すべきポストだと判断したとき
    • 構成要素:PWM,ENCモジュール、TIPモジュール
    • 関数名:int get_target()
  6. 探索モード
    • ソースファイル:main.c
    • モード定義:ポストを右回りしながら、マシンの左側のポストを探す
    • モード遷移条件:マシンがポストを獲得するか、又は獲得しないと判断して,元の位置(そのポストに初めて近づいた位置)に戻ったとき
    • 構成要素:PWM,ENCモジュール、TIPモジュール、超音波モジュール
    • 関数名:int post_search_lv1()
  7. 中心補正モード
    • ソースファイル:tools.c
    • モード定義:ポストの中心を割り出し、mirsの位置修正をする
    • モード遷移条件:タッチセンサがポストにぶつかったとき(獲得モード時を除く)
      確認モード終了時
    • 構成要素:PWM,ENCモジュール、TIPモジュール
    • 関数名:int hosei()
  8. 白線回避モード
    • ソースファイル:tools.c
    • モード定義:白線を検知したら後退して、自己回転モード以降
    • モード遷移条件:直進モードにて白線検知センサが反応したとき
    • 構成要素:PMW,ENCモジュール
    • 関数名:int ls_check()

2.上位モジュール

  1. ポスト番号管理モジュール
    • ソースファイル:main.c
    • 機能:
    • 競技場内のポストの数。
    • 赤外線で把握したポストの番号の整理及び、獲得の有無。
    • 次に取得するべきポストの番号の判断。
    • 何個めのポストかを把握。
    • 取得しようとしている番号が現時点で存在しているか否かの判断。
    • RT構成要素:なし
    • 構成関数名:int post_management()
  2. 直進補正モジュール
    • ソースファイル:tools.c
    • 機能:直進モードで、左右のエンコーダカウント値をみて真直ぐ進むように補正をかける。
    • RT構成要素:PWM・エンコーダRTタスクモジュール
    • 構成関数名:int ve_hosei()
  3. 超音波モジュール
    • ソースファイル:uss.c
    • 機能:超音波センサRTタスクモジュールと上位モードモジュールの仲介をする。具体的には送受信使用センサ番号をFIFO1に送り、FIFO2から受信データ(往復時間)を取得する。
    • RT構成要素:超音波RTタスクモジュール
    • 構成関数名:int uss_send()
  4. PWM,ENCモジュール
    • ソースファイル:pwm.c
    • 機能:左右のDUTY比をFIFO4に送る。エンコーダをリセットするときはFIFO5にリセット信号を送る。エンコーダのカウント値をFIFO3から取ってくる。
    • RT構成要素:PWM・エンコーダRTタスクモジュール
    • 構成関数名:int pwm_vdata(),int pwm_cmdata(),int pwm_stop(),int reset_enc(),int read_enc()
  5. TIPモジュール
    • ソースファイル:tip.c
    • 機能:タッチセンサ、白線検知センサ、パワーオン信号のデータをioctlを用いてデバイスドライバからとってくる。また、赤外線の使用センサ番号をデバイスに送り、赤外線のデータもとってくる。
    • デバイスドライバ構成要素:赤外線センサドライバ、タッチセンサドライバ
    • 構成関数名:int read_ts(),int read_ls(),int read_pos(),int read_irs(),int write_irs()

3.RTタスクモジュール

  1. 超音波RTタスクモジュール
    • ソースファイル:module_uss.c
    • 機能:超音波センサを制御する
    • FIFOの仕様:
      1. FIFO_1:超音波センサ選択コマンド
      2. FIFO_2:測定距離
  2. PWM・エンコーダRTタスクモジュール
    • ソースファイル:module_enc2.c module_pwm.c
    • 機能:左右のロータリーエンコーダのカウント値,速度データ,各種機能の指令などをやり取りする。直進、回転をこのRTタスクで実現する。
    • FIFOの仕様:
      1. FIFO_3:ロータリーエンコーダのカウント値
      2. FIFO_4:速度データ
      3. FIFO_5:エンコーダリセット

4.デバイスドライバ

  1. 赤外線センサドライバ
    • ソースファイル:module_irs_tip.c
    • 機能:使用する赤外線センサ番号を選択し、赤外線の信号を調べる。
    • デバイス登録名:/dev/tip_irs
    • メジャー番号:62
    • マイナー番号:0
  2. タッチセンサドライバ
    • ソースファイル:module_ts_tip.c
    • 機能:タッチセンサ、白線検知センサ、パワーオン信号のON/OFF、などのデータを調べる。
    • デバイス登録名:/dev/tip_ts
    • メジャー番号:61
    • マイナー番号:0

5.起こりうるエラー

7.試験

  1. モードモジュール、機能モジュール単体試験
  2. 標準MIRS上での移行試験
  3. 実機上での試験

8.作成ドキュメント一覧

関連文書