沼津高専 電子制御工学科 |
||||||||
|
||||||||
改訂記録 |
||||||||
版数 |
作成日 |
作成者 |
承認 |
改訂内容 |
||||
A26 |
2006.1.10 |
エクスリヤ |
天野 |
初版 |
目次
本ドキュ メントは、MIRS 標準機の統合動作試験に関する手順をまとめたドキュメントである。
ソフトウェアのチェックをするために準備するもの
1.
MIRS標準機
2.
ディスプレイ
3.
キーボード,テンキー
4.
キーボードとディスプレイの延長ケーブル
5.
赤外線発信機,ポスト
6.
メジャー
7.
安定化電源,電源ケーブル,バッテリー×2
ソフトウェアのチェックをするための環境設定の確認
1.
バッテリー,センサ,ディスプレイ,キーボードがすべて接続されているか確認する。
2.
標準機の電源を入れる。
3.
起動後、スタートスクリプトファイルが自動実行される場合は5へ。自動実行されない場合は次へ。
4.
inittabで/home/atlmirs/mirs_std_v1.0/start.shを実行するようにして再起動。
5.
プログラムがコンパイルされているか確認する。/home/atlmirs/mirs_std_v1.0/以下がプログラム群のディレクトリである。コンパイルされている場合は3.試験手順へ。
6.
コンパイルする場合はusr_mountでライブラリをNFSマウントし、各ディレクトリでプログラムをmakeする。(NFSマウントするためにはLANに接続している必要がある。)
7.駆動系のテストを行う場合は、キーボード,ディスプレイの延長ケーブルと長い電源ケーブルをつけて標準機を起動する。これでディスプレイとキーボードを使用したまま接地走行が可能となる。
1.
起動したら別のコンソールでrootでログインする。(Ctrl+Cを使うため)
Alt+F2でコンソール2に切り替えてからログインする。
2.
MIRSSTNDのプログラムがあるディレクトリに移動する。
>
cd /home/atlmirs/mirs_std_v1.0
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をする。
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で行う。
注:超音波が地面に反射して正確な値が取れない場合は筒を半分くらいに切ったもので反射を抑制する必要がある。
すべての超音波センサが指定した距離を測れているか確認できればよい。
結果
(板からUSSセンサまでの距離) (USSセンサの測定した距離)
センサ番号1 センサ番号1
1: 500[mm] 1:520-524[mm]
2:1000[mm] 2:1011-1021[mm]
センサ番号2 センサ番号2
1: 500[mm] 1:514-519[mm]
2:1000[mm] 2:1031-1035[mm]
センサ番号3 センサ番号3
1: 500[mm] 1:509-517[mm]
2:1000[mm] 2:1032-1049[mm]
このような結果を得えて、誤差は5%以内なので、合格。
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が反応しないときは抵抗値を変えることで感度が上がる。
すべてのセンサが反応するか確認できればよい。
結果
TS[1]をONにすると上のプログラムがTS[1]=1と変化、次にTS[1]をOFF、TS[2]をONにするとその結果TS[1]=0,TS[2]=1となった。このように試験してタッチセンサ4つに関して正常な動作の確認をできた。
IRS[1]にポストを近づけたところ、プログラムはIRS[1]=1を返し、ポストのスイッチを切るとIRS[1]=0を返した。IRS[2]・IRS[3]に関しても同じ方法で試験を行い同様の結果を得た。
WS[1]に白紙を近付けたところ、WS[1]=1を返した。次に、白紙を取り除くとWS[1]=0を返した。残りの三つの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であり、コード番号を二進数で入れる。
ポストの赤外線コードが読み取れることが確認できれば良い。
結果
二番のポストを近づけたらirs_get_code=2と表示した。ほかのポストでもそのポスト番号を表示したので合格。
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は指定した距離,角度移動することが確認できればよい。
結果
1:次のような値を設定する。
A) L:63 R:63 → L:正転 R:正転 (正転:MIRSが前進する方向)
B) L:127 R:127 → L:正転 R:正転 (共にAより速い)
C) L:0 R:0 → L:停止 R:停止
D) L:-63 R:-63 → L:逆転 R:逆転 (正転:MIRSが後進する方向)
E) L:-127 R:-127 → L: 逆転 R:逆転 (共にDより速い)
F) L:-63 R:63 → L:逆転 R:正転
G) L:63 R:-63 → L:正転 R: 逆転 (共にFと同じ速さ)
H) L:-127 R:127 → L: 逆転 R:正転 (共にFより速い)
I) L:127 R:-127 → L: 正転 R:逆転 (共にGより速い)
結果:仕様どおり動作したので問題なし。
2:距離:500(mm) → (前進する方向)
−500(mm) → (後進する方向)
結果:仕様どおり動作したので問題なし。
3:角度:90、180,360,逆に、-90,−180,−360.
結果:仕様どおり動作したので問題なし。
4: 距離→500[mm] 時間→2000[msec]に設定 → まっすぐ500[mm]を約2000[msec]で走行 → 正常動作
距離→-500[mm] 時間→5000[msec]に設定 → まっすぐ-500[mm]を約2000[msec]で走行 → 正常動作
距離→1000[mm] 時間→5000[msec]に設定 → まっすぐ1000[mm]を約5000[msec]で走行 → 正常動作
距離→-1000[mm] 時間→10000[msec]に設定 → まっすぐ1000[mm]を約10000[msec]で走行 → 正常動作
以上、問題なし。
5: 回転角→180[°] 時間→2000[msec] → その場で180[°]約2000[msec]で左回転 → 正常動作
回転角→-180[°] 時間→5000[msec] → その場で180[°]約2000[msec]で右回転 → 正常動作
回転角→360[°] 時間→5000[msec] → その場で180[°]約5000[msec]で左回転 → 正常動作
回転角→-360[°] 時間→10000[msec] → その場で360[°]約10000[msec]で右回転 → 正常動作
以上、問題なし。
6: 半径→300[mm] 回転角→90[°] 時間→2000[msec] → 半径300[mm]で90[°]約2000[msec]で左旋回前進 正常動作
半径→300[mm] 回転角→-90[°] 時間→2000[msec] → 半径300[mm]で90[°]約2000[msec]で左旋回後退 正常動作
半径→500[mm] 回転角→90[°] 時間→5000[msec] → 半径500[mm]で90[°]約5000[msec]で左旋回前進 正常動作
半径→300[mm] 回転角→-90[°] 時間→5000[msec] → 半径500[mm]で90[°]約5000[msec]で左旋回後退 正常動作
以上、問題なし。
よって、標準動作を確認できたので合格。
control_test
control_testは狭い範囲(フィールド)でポスト獲得の試験を行うためのプログラムである。半径1m以内にポストを二個置き、円の中心から30cm程度下がった位置でこのプログラムを実行する。
関連文書 |