沼津高専 電子制御工学科 |
||||||||
|
||||||||
改訂記録 |
||||||||
版数 |
作成日 |
作成者 |
承認 |
改訂内容 |
||||
A03 |
2005.7.15 |
天野 |
天野 |
初版 |
||||
B03 |
2005.7.19 |
天野 |
天野 |
MPCボード動作試験の内容を一部追記 |
1.
動作試験報告
MIRS標準機動作試験手順書を参考にして、各動作試験を行った。
A)
赤外線センサ・白線センサ・タッチセンサ試験 →問題なし
B)
赤外線センサコード判別試験 →問題なし
C)
ロータリーエンコーダ試験 →問題なし
D) 超音波センサ試験 →問題あり
E)
MPCボード動作試験 →問題あり
F)
標準プログラム動作試験 →問題あり
2.
動作確認詳細報告
A) 赤外線センサ・白線センサ・タッチセンサ試験
irs_ts_ws_testを実行しタッチセンサ、赤外線センサの動作を確認。タッチセンサをそれぞれ触れるとその入力に対応して0→1に変わり、ポスト(赤外線)を近づけると1、2共0→1に変化し、接続したすべてのセンサの動作が確認できた。
プログラム起動時
TS[1] = 0
TS[2] = 0
TS[3] = 0
TS[4] = 0
IRS[1] = 0
IRS[2] = 0
IRS[3] = 0
IRS[4] = 0
WS[1] = 1
WS[2] = 1
WS[3] = 1
WS[4] = 1
TS[1]をONにすると上のプログラムがTS[1]=1と変化、次にTS[1]をOFF、TS[2]をONにするとその結果TS[1]=0,TS[2]=1となった。このように試験してタッチセンサ3つに関して正常な動作の確認をできた。
IRS[1]にポストを近づけたところ、プログラムはIRS[1]=1を返し、ポストのスイッチを切るとIRS[1]=0を返した。IRS[2]に関しても同じ方法で試験を行い同様の結果を得たため正常な動作をしていると判断した。
B)
赤外線センサコード判別試験
irs_code_test
irs_code_testは赤外線のコードを判別するテストプログラムである。ポストの電源を入れ、赤外線センサに近づける。実行結果を示すrs_select=1
irs_get_code=2(ポストは2番を使用)
irs_select=1 irs_get_code=0
irs_select=1 irs_get_code=0
irs_select=1 irs_get_code=0
・ ・ ・ ・
・ ・ ・ ・
・ ・ ・ ・
・ ・ ・ ・
問題点
本来返されるべきコードが返されなかった。
解決策
ポストのDIPスイッチを右から動かして赤外線のコードを変更(1→6、2→5)し、再度ポストを近づけたところ赤外線センサは正常に動作した。
C)
ロータリーエンコーダ試験(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
・ ・
・ ・
これは左のデータ列が左のタイヤの回転角を示しており、右のデータ列が右タイヤの回転角を示している。回転角は[deg]で表示するため、タイヤ一回転で360である。また、-が逆転というわけではなく、両方のタイヤを正転させたときに上記のようになるのが正しい(同じMotorを左右につけるため片方は逆転で正の値が返ってくる)。プログラムの終了はCtrl+Cで行う。
上記のようにならない場合は配線が逆であるため、ソフト側で+,-の変更をするか、正しい配線に戻すかの作業が必要になる。
タイヤを左右ともに正転させたときに上記例のように左が-,右が+になることと、タイヤを一回転させたときに360になることが確認できればよい。
実行してみての問題点
左右の回転角共に負の値が出てきてしまい、タイヤを全く動かしていないのに値はどんどん変化してしまった。
原因
これはエンコーダの取り付けの際、エンコーダの端子を左右逆に取り付けてしまったのが原因だった。
改善策
本体の上部と下部を接続していたため、また分解して端子を付け直してから本体を組みなおした。
結果
またプログラムを実行したら上記の例のような値が出てきたため、問題は改善したと見られる。
この問題は実際にプログラムを実行しなければ気づかないことでもあり、上記に赤字で注意が書いてあったためにすぐに原因がわかった。
D)
超音波センサ試験
[USSセンサ]
このとき1〜3のセンサのみ試験を行った。
uss_test
uss_appは超音波センサのテストプログラムである。実行画面の出力例を以下に示す。
uss[1] = 245
uss[2] = 300mm
uss[3] = 220mm
uss[4] = -999mm
uss[1] = 250mm
・ ・ ・
・ ・ ・
・ ・ ・
例のようにセンサ番号の1から4(今回の試験では1から3)まで順番に計測していく(同時に複数のセンサで計測はできない)。このとき測定データは[mm]で表示され、220mm以下は計測できない。また、タイムアウトした場合は-999と表示される。プログラムの終了はCtrl+Cで行う。
(USSセンサの測定した距離) ●センサ番号1 1:536〜553[mm] 2:1048〜1056[mm] ●センサ番号2 1:532〜552[mm] 2:1031〜1055[mm] ●センサ番号3 1:522〜553[mm] 2:1032〜1049[mm]
E)
MPCボード動作試験
動作試験遅延理由報告書を参照
system_check
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:次のような値を設定する。
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]で左旋回後退 正常動作
以上、問題なし。
F)
標準プログラム動作試験
標準プログラムcontrol_testを用いて標準機の総合動作試験を行う。CPUおよびMPCボードの電源は搭載した電池から供給し、プログラム起動はテンキーによって行う。(テンキーの入力コマンドは“22”。またcontrol_testは、“/home/atlmirs/mirs_std/control/”に置かれている。)
実行してみての問題点
・
タワーの周りを周回運動する際、正確に始めの位置に戻れない。
パラメータの設定が正確にできていなかったため、回転角が正確でなかったと思われる。そのため、周回運動において正確な360度の移動ができなかった。このため位置補正を行った位置に戻れなかった。
・
タワーのないところで周回運動をしてしまう。
一つ目のタワーに対して周回運動した後、2つ目のタワーに移動する際、タワーのないところで周回運動を始めてしまう。これは上の理由によって初期位置に正確に戻れないために、始めに記憶した2つ目のタワーと実際の自分のいる位置との移動に誤差が生じて正確に移動できないと考えられる。また、超音波センサがうまくタワーを感知できず、タワーのないところでタワーがあると勘違いしてポスト獲得運動に入ってしまったと考えられる。
問題発生の原因
・
超音波センサのエラー
・
モジュールの組み込みが起動時にされていなかった
・
駆動系の動作が滑らかでない
改善策
・
超音波センサの導通を確認し、信号を確認したところ可変抵抗を最大にしたにも関わらずオペアンプからの出力が弱かった。
そこで可変抵抗をはずして回路図を確認したところ可変抵抗の向きが違っていたので素子を付け直し、正常な動作をするようにできた。
・
起動時にモジュールの組み込まれないことがMIRSを強制終了したときによく起こったので、aliasで12にモジュールの組み込み(start.sh)を実行するように改良。
これによりモジュールをテンキーでモジュールを組み込むようにした。
・
パラメータの設定を変更することで動作を滑らかにすることができた。
結果
かなりの確率でポストを2つ獲得できるようになった。