The Fool In The Valleyの雑記帳

-- 好奇心いっぱいのおじいちゃんが綴るよしなし事 --

Rubik's Cube SolverをPythonで動かす その0

Facebookが「思い出」として過去のその日に投稿した記事を日々知らせてきますが、最近それらの中に、2年前にMindstorms EV3で作ったRubik’s Cube Solverが完成したことを書いた記事がありました。
そのRubik’s Cube Solverを作った頃はまだこのブログを持っていなかったので経過を書くことはできなかったのですが、昨年このブログを始めたときに、書き方の練習も兼ねて2つ目の記事として下の内容のものを書いています。

そのRubik’s Cube Solverは、私としても思い入れのある製作でしたし、将来的に改良したいという気持ちもあったのでその機構は分解せずに今でもそのまま保持しています。

f:id:tfitv:20210903180900j:plain

2019年に作ったRubik’s Cube Solver(手前)と今年作ったElephant(奥)

それを作った2年前はプログラム開発にJavaを使っていたので、そのシステムを動かすプログラムもleJOS(Mindsotrms上で動くJava)で書いています。しかし、AI周りはもうPythonが前提になっていますし、Mindsotrmsも公式にPythonをサポートすることになったので、私自身は昨年から宗旨替えしてPython信奉者になってしまいました。そういう状況なので、Facebookからのプッシュで久しぶりにRubik’s Cube Solverの動画(下のビデオ)を見てていたら、このシステムもPythonで書き直しておこうという気になってきたのです。

youtu.be

このRubik’s Cube Solverでは、カラーセンサで得られるRGB信号で6色のキューブの色を識別するためにある種のインテリジェンスが必要になり、そのためにニューラルネットワークを導入したのがキーファクタになったのですが、それをJavaで実装するにあたっては下の左の本が大変参考になりました。

f:id:tfitv:20210903181253j:plain

ニューラルネットワークを実装するときに参考になる書物

今回それをPythonで書き直すということになると、ニューラルネットワーク部分については右の本が参考になりそうです。この本は、4年半前にDeep Learninngについて常識的なことくらいは知っておきたいと思って購入してざっと目は通したのですが、上述したようにRublik’s Cube SolverのニューラルネットワークJavaで実装することになったので、Pythonニューラルネットワークをスクラッチから実装して動かすことには手を付けませんでした。しかし、今回はこの本が役に立ちそうです。ここ数日すこし読んで手を動かしてみましたが、おじいさんのボケ防止としては格好の題材と言えそうです。

先週までは暑くて何かに集中する気が起こりませんでしたが、このところ気温が下がって過ごしやすくなるとまたぞろなにか動くものを作りたくなってきました。

これから「Rubik's Cube SolverをPythonで動かす その〇」としてこのブログにそのステップを記録していくことにします。