この何ヵ月かは
ずっとロボットハンドを作っています。
とはいっても、
動く部分は肩と肘しかなか、
何も持つこともできません。

でも、これで転がってくる卓球ボールを
打ち返すことはできます。

今、カメラ画像から、
ボールの位置を見て打ち返すところまでは
作れました。

しかし、
ボールがどの位置にあって、
どっちに進んでいるかで、
どういう動きをさせるかを決めるのは、
結構大変です。

そこで、
そういった判断を自動で学習させる理論、
強化学習を試しています。

しかし、学習をさせるには、
何万回も試行錯誤を繰り返す必要があり、
実際のロボットでやると、
何日も時間がかかってしまうかも知れないし、
まず、最初の段階では、
めたパラメーターの設定が適当なので、
まず、学習はしません。
そもそも、アルゴリズムの実装に
バグがあるかもしれません。

という訳で、
シミュレータが必要になります。
まさに、急がば回れ、です。
で、簡易ですが、何とか作りました。

ようやく、
一気に何万回も試すことができるようになり、
実装の不具合も治したり、
バラメータを調節することができるように
なりました。

そして、ようやく昨日、
アルゴリズムの実装がうまくいっていることが、
確かめられました。
少しずつ玉を打つ確率が上がっていきます。

昨日の夜、パソコンで計算させ、
朝、出勤前に学習した戦略を確かめたのですが、
前でアームを振り続け、
ボールを叩きおとすやり方でした。
なぜかこれでボールが前に飛んでしまうのです。
シミュレータのバグを攻めたずるい方法が、
獲得されていました。

設計者が考え付かない方法を編み出すのは、
強化学習の醍醐味です。