情報科学講究 「倒立振子」作成過程の報告

情報科学講究
「倒立振子」作成過程の報告
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段階しかないのでさらに時間も可
変にして学習させる
 ギアをかませて測定位置を増やす。
