沼津高専 電子制御工学科
MIRSSTND ソフトウェア試験手順書
MIRSSTND-SOFT-0001
改訂記録
版数 作成日 作成者 承認 改訂内容
A01 2004.05.17 瀬川 牛丸 初版
A02 2005.04.27 牛丸 牛丸 ドキュメント番号を所得
A03 2005.06.8 牛丸 牛丸 ディレクトリの記述をバージョンに依存しないように変更

目次


1.始めに

本ドキュメントは、MIRSSTNDのソフトウェア動作試験に関する手順をまとめたドキュメントである。

2.準備

    ソフトウェアのチェックをするために準備するもの

  1. MIRS標準機
  2. ディスプレイ
  3. キーボード,テンキー
  4. キーボードとディスプレイの延長ケーブル
  5. 赤外線発信機,ポスト
  6. メジャー
  7. 安定化電源,電源ケーブル,バッテリー×2

    ソフトウェアのチェックをするための環境設定の確認

  1. バッテリー,センサ,ディスプレイ,キーボードがすべて接続されているか確認する。
  2. 標準機の電源を入れる。
  3. 起動後、スタートスクリプトファイルが自動実行される場合は5へ。自動実行されない場合は次へ。
  4. inittabで/home/atlmirs/mirs_std/start.shを実行するようにして再起動。
  5. プログラムがコンパイルされているか確認する。/home/atlmirs/mirs_std 以下がプログラム群のディレクトリである。 (mirs_std は実際には、mirs_std_vx.x にシンボリックリンクされている。x.xはバージョン番号を表す。)
    プログラムが既にコンパイルされている場合は3.試験手順へ。
  6. コンパイルする場合はusr_mountでライブラリをNFSマウントし、各ディレクトリでプログラムをmakeする。(NFSマウントするためにはLANに接続している必要がある。)

3.試験手順

    7.駆動系のテストを行う場合は、キーボード,ディスプレイの延長ケーブルと長い電源ケーブルをつけて標準機を起動する。これでディスプレイとキーボードを使用したまま接地走行が可能となる。

  1. 起動したら別のコンソールでrootでログインする。(Ctrl+Cを使うため)  

    Alt+F2でコンソール2に切り替えてからログインする。

  2. MIRSSTNDのプログラムがあるディレクトリに移動する。  

    > cd /home/atlmirs/mirs_std

  3. 超音波センサのテストを行う。  

    > ./uss/uss_test

  4. タッチセンサ,赤外線センサ,白線センサのテストを行う。  

    > ./irs_ts_ws/irs_ts_ws_test

  5. 赤外線のコード判別テストを行う。ポストを使用  

    > ./irs_ts_ws/irs_code_test

  6. ロータリーエンコーダのテストを行う。

    > ./pwm_enc/enc_test

    駆動系のテストを行う前に以下のことを行う。

    ・駆動用バッテリを接続する。
    ・駆動用電源ボタン(緑)を押す。

  7. 駆動系のテストを行う。  

    > ./pwm_enc/system_check

    各センサがすべて正常ならば、最後にポスト獲得試験を行う。これは今まで接続していたキーボードやディスプレイをすべてはずしてテストを行う。以下の手順を参照のこと。

    1.いったん電源を落とす。
    2.キーボードからテンキーに付け替える。
    3.電源を安定化電源からバッテリーに付け替える。
    4.ディスプレイケーブルをはずす。
    5.電源を入れる(システム+駆動用)。
    6.起動したらNumLockを押す。

  8. 標準機ソフトウェアによるポスト獲得試験を行う。  

    > 22 aliasで22はcontrol_testが関連付けられている。

    標準機の終了方法

    ポスト獲得試験プログラムが正常に終了した場合:
    > 666

    ポスト獲得試験プログラムが正常に終了しない場合:
    ディスプレイとキーボードを接続する。別コンソールでログインし、プロセスを停止(kill)させた後haltをする。

4.テストプログラムについて

uss_test

uss_appは超音波センサのテストプログラムである。実行画面の出力例を以下に示す。

uss[1] = 245mm
uss[2] = 300mm
uss[3] = 220mm
uss[4] = -999mm
uss[1] = 250mm
  ・  ・  ・
  ・  ・  ・
  ・  ・  ・

例のようにセンサ番号の1から4まで順番に計測していく(同時に複数のセンサで計測はできない)。このとき測定データは[mm]で表示され、220mm以下は計測できない。また、タイムアウトした場合は-999と表示される。プログラムの終了はCtrl+Cで行う。

注:超音波が地面に反射して正確な値が取れない場合は筒を半分くらいに切ったもので反射を抑制する必要がある。

すべての超音波センサが指定した距離を測れているか確認できればよい。

irs_ts_ws_test

irs_ts_ws_testはタッチセンサ,赤外線センサ,白線センサのテストプログラムである。実行例を以下に示す。

TS[1] = 1
TS[2] = 0
TS[3] = 1
TS[4] = 1
IRS[1] = 0
IRS[2] = 0
IRS[3] = 0
IRS[4] = 1
WS[1] = 0
WS[2] = 0
WS[3] = 1
WS[4] = 0

TS[1] = 1
TS[2] = 0
 ・ ・
 ・ ・
WS[4] = 0

実行するとこのプログラムは周期スレッドでタッチセンサ(TS),赤外線センサ(IRS),白線センサ(WS)のON/OFFを1 or 0で表示する。1がセンサが反応しているときで0が無反応のときである。プログラムの終了はCtrl+Cで行う。

注:WSが反応しないときは抵抗値を変えることで感度が上がる。

すべてのセンサが反応するか確認できればよい。

irs_code_test

irs_code_testは赤外線のコードを判別するテストプログラムである。ポストの電源を入れ、赤外線センサに近づける。以下に実行例を示す。

irs_select=1 irs_get_code=2
irs_select=1 irs_get_code=0
irs_select=1 irs_get_code=0
irs_select=1 irs_get_code=2
  ・ ・   ・ ・
  ・ ・   ・ ・
  ・ ・   ・ ・
  ・ ・   ・ ・

irs_selectが赤外線センサの選択番号である。センサ番号の1〜4が irs_selectの0〜3にそれぞれ対応している。irs_get_codeは赤外線のコードがそのまま表示される。上の例ではセンサ番号2番に赤外 線コードの2が入ってることを示している。また、get_codeが0のときには検出できていない。ただし、このテストプログラムは現在の仕様ではirs_selectは常に1である(ソースのループ回数をいじってある)。プログラムの終了はCtrl+Cで行う。

注:ポストの赤外線コードはディップスイッチの6が最下位bitであり、コード番号を二進数で入れる。

ポストの赤外線コードが読み取れることが確認できれば良い。

enc_test

enc_testはロータローエンコーダのテストプログラムである。ただし、タイヤは手動でまわす必要がある。以下に実行例を示す。

-0.314000    0.172700
-1.067600    0.753600
-2.669000    2.402100
-4.443100    4.364600
-5.918900    6.013100
-7.174900    7.394700
-8.760600    9.011800
-10.833000  10.895800
-13.093800  12.983900
-14.648100  14.601000
-15.951200  16.108200
-17.756701  17.976500
-20.001801  20.205900
-22.074200  22.215500
-23.895399  23.879700
-25.339800  25.167101
-26.988300  27.145300
-28.903700  29.296200
-30.819099  31.180201
-32.608898  32.844398
 ・ ・   ・ ・
 ・ ・   ・ ・
 ・ ・   ・ ・
 ・ ・   ・ ・

これは左のデータ列が左のタイヤの回転角を示しており、右のデータ列が右タイヤの回転角を示している。回転角は[deg]で表示するため、タイヤ一回転で360である。また、-が逆転というわけではなく、両方のタイヤを正転させたときに上記のようになるのが正しい(同じMotorを左右につけるため片方は逆転で正の値が返ってくる)。プログラムの終了はCtrl+Cで行う。

上記のようにならない場合は配線が逆であるため、ソフト側で+,-の変更をするか、正しい配線に戻すかの作業が必要になる。

タイヤを左右ともに正転させたときに上記例のように左が-,右が+になることと、タイヤを一回転させたときに360になることが確認できればよい。

system_check

system_checkはpwm制御関数のテストプログラムである。実行すると次のようなメニューが表示される。

Please Input Mode Number
1:pwm_both_data check    --> (no control) duty only (-127 to 127)
2:pwm_straight check     --> (pid control) go straight as far as reserved distance
3:pwm_rotate check       --> (pid control) rotate on the spot
4:pwm_lqr_straight check --> (lqr control) go straight as far as reserved distance
5:pwm_lqr_rotate check   --> (lqr control) rotate on the spot
6:pwm_lqr_circle check   --> (lqr control) rotate around a something
7:Exit This Menu
Select Number =

と表示されるので、1番から順にチェック行う。
1はDutyを-127〜+127で左右それぞれ指定する。
2,3はPIDモードである。距離[mm]または角度[deg]を指定する。
4,5,6はLQRモードである。距離[mm]または角度[deg]と時間[msec]を指定する。

1はDuty比によって出力が段階的に増減することが確認できればよい。2〜6は指定した距離,角度移動することが確認できればよい。

control_test

control_testは狭い範囲(フィールド)でポスト獲得の試験を行うためのプログラムである。半径1m以内にポストを二個置き、円の中心から30cm程度下がった位置でこのプログラムを実行する。


関連文書