150 likes | 231 Views
情報科学講究 「倒立振子」作成過程の報告. 2001 年 2 月 6 日 3班(粉川 ■ ・日野■・永澤 ■ ). 目標. (i) 振子を制止状態から振り出して振幅を大きくしてゆく (ii) (i) からさらに振子がぐるぐる回転する状態にもってゆき,それを保つ (iii) 倒立状態を保つ ただし振子は台車の水平移動によってのみ動くものとする。. ハードウェアの作成(1). 回転センサ→精度が悪い(ギアなしだと16段階、ギアをかませるとすぐに値が狂う) 光センサも思った以上に精度が悪い 結論としては回転センサの方を採用. ハードウェアの作成(2).
E N D
情報科学講究「倒立振子」作成過程の報告 2001年2月6日 3班(粉川■・日野■・永澤■)
目標 (i) 振子を制止状態から振り出して振幅を大きくしてゆく (ii) (i) からさらに振子がぐるぐる回転する状態にもってゆき,それを保つ (iii) 倒立状態を保つただし振子は台車の水平移動によってのみ動くものとする。
ハードウェアの作成(1) • 回転センサ→精度が悪い(ギアなしだと16段階、ギアをかませるとすぐに値が狂う) • 光センサも思った以上に精度が悪い • 結論としては回転センサの方を採用
ハードウェアの作成(2) 工夫した点大きいタイヤを使用することにした。台車とコントローラを別にした。なるべく車体が軽く、それでいて頑丈にした
ソフトウェアの作成 プログラムを作成するにあたって、言語はNQCを使用することにした。コンパイラにはRCX Command Centerを使用した。 倒立振子の二つの実現方法がある 制御工学 人工知能 我々は後者の方を採用
振り子の位置の測定 • 振り子の位置を右図のように分割 • 一回転(センサが16か-16)したら値を初期化(0にする)。 • 今後はこの図を元に説明する
回転状態の保持 • 回転センサ初期化→車を適当に前進させる→振子の位置が正であるか負であるかを判定 正であれば①ヘ、負であれば②へ • ①→振子が負になり始めた瞬間を検知 →青なら後退、赤なら前進 →②へ • ②→振子が正になり始めた瞬間を検知 →青なら前進、赤なら後退 →①へ
回転維持で工夫した点 • センサの位置には依存せず、振り子の動きだけを見ている。
倒立状態の保持(1) • 始めに回転させる • 12時(8or-8)を超えたら倒立の保持に移行する • 3時(-4or12)か9時(4or12)を超えたら回転の保持に移行する
倒立状態の保持(2) • 7,-7,9,-9 • 6,-6,10,-10 • 5,-5,11,-11 • 8,-8 • と位置を4つにわけて考える
倒立状態の保持(3) • モータの動かす時間は一定とする • 位置に応じてそこから「12時を超える最も遅い速度」を探して学習させる • 位置に応じて、学習した結果の速度でモータを動かす
学習方法 • 最初はモータを適当な速さで動かす • 12時を超える→その位置の速さを+1 • 12時を超えない→その位置の速さを-1
倒立維持の問題点 • センサの値に大きく依存しているアルゴリズムである • 回転から倒立に移るときに振り子が速すぎて倒立維持に移行してもすぐに3時、9時を通過して回転に戻ってしまう
改良すべき点 • 速度は8段階しかないのでさらに時間も可変にして学習させる • ギアをかませて測定位置を増やす。