3つのサーボモータでクネクネ動くロボットを考えています。 初号機が完成しましたが、動かしたとたんにぶるぶる震えて、下のモータの軸が外れます。はめ込んでいるだけなので弱いだろうなと思っていましたが、こんなにも簡単に外れるとは思いませんでした。。 軸は、なんと、タップネジで外れないよ […]
9日間の夏休みが終わりました。 前半は田舎へ帰り、バーベキューや水風船合戦をし、後半は、振り上げ振り子のプロジェクトを進めました。 直流モーターでの振り上げにはかなり時間をかけてしまいましたが、動画もアップロードして、覚え書きもまとめたのでこれで一段落です。次はサーボモーターに戻 […]
解説目次 01 振り子を手で操作して立たせる 02 強化学習の問題設定 03 カメラで振り子の角度を推定する 04 Q-learning アルゴリズム
雑ではあるが、ここではメモ程度の説明とします。 このお題では、アルゴリズムへの入力は角度なので-π ~ π の連続値、出力は時間間隔なので、0 ~ t_max の連続値である。 強化学習の基本であるQ-leaningアルゴリズムを使いたいのだが、Q-learning は離散値に対 […]
DCモーターにはエンコーダーがついていないのでモーターから角度を知ることはできない。また、エンコーダーをつけたとしても、プーリーベルトがしょっちゅう滑りを起こすので、正確に測定することはできない。 そこでカメラ画像から角度を推定することを考える。 カメラの設定 まずは、できるかぎ […]
小学校の理科で使ったような普通のモーター、DCモーター(直流モーター)に棒を直付けして、振り子の振り上げをやってみたいと思っていた。 しかしチャレンジしてみたところ、DCモーターで、上側で振り子のバランスを取りながらリアルタイムで安定させるというのは、思った以上に難しかった。モー […]
さて、ここからは振り子の振り上げを自動で行うことを考える。最適な行動を試行錯誤で学習する「強化学習」というアルゴリズムを実装する。 強化学習の問題設定 まずは問題の整理から。問題設定を以下に図示した。 具体的な得点(報酬信号という)は、振り子が到達した角度を[math]\thet […]
倒立振り子
いつの間にか夏真っ盛りで、クーラーのない僕の部屋は、昼間は灼熱地獄です。 週末は、真後ろ10cmから扇風機を当ててなんとか暑さをしのぎつつ、棒たての工作を続けています。 しかし、そんな地獄の釜の底でも、youtubeで平成のヒット曲を聞きながら、単純作業を黙々と続けていると、いつ […]
ここのところずっと打ち込んでいるのは、逆さ振り子です。 ミニ四駆などで使われているような普通の直流モーターに、振り子(木の板)を直接取り付けています。 モーターの電圧はプログラムで逆転でき、瞬時に好きな方向にトルク(回転させる力)をかけることができます。 目的は、振り子を上側に上 […]