オンラインゲーム嫌いのMakerが開発ーー3Dプリンターの仕組を活用したチェス対戦ロボット

FabScene(ファブシーン)

チェスは対戦相手が必要だ。コンピュータと対戦できるアプリはあるが、実際の駒を動かす触覚的な楽しさには勝てない。MakerのJoshua Stanley氏は「オンラインで遊ぶのが嫌いで、一緒に遊んでくれる相手もいない」という理由でチェスをしていなかった。そこで同氏は、練習や研究に時間を費やす代わりに、自分を完膚なきまでに打ち負かすチェスロボットを作ることにした。

自動チェスボードを実現するには、3つの課題がある。駒の位置検出、コンピュータの思考、そして駒の物理的な移動だ。既存のスマートチェスボードにはLED表示でコンピュータの手を示し、人間が代わりに駒を動かすものもあるが、Stanley氏は「自分の駒を自分で取る勇気はない」として、完全自動の移動システムを選んだ。

FabScene(ファブシーン)

すべての駒には磁石を埋め込んだ。3Dプリントで駒を作る際、内部に空洞を設け、プリント途中で磁石を挿入して封入する。黒い駒はすべて同じ極性、白い駒は逆の極性にして、コンピュータが区別できるようにした。

駒の位置検出には、盤面の下にホール磁気センサー64個を配置した。通常なら64個の入力端子が必要だが、マルチプレキシングという技術で16ピンに削減している。盤面を常にスキャンして状態を記録しておけば、駒がどのマスから移動してどこに到着したかを特定できる。

コンピュータの思考には、オープンソースのチェスエンジン「Stockfish」を使用した。ArduinoとStockfishの間をPythonスクリプトが仲介する。プレイヤーが手を指すと、Arduinoがセンサーで認識し、Pythonスクリプト経由でStockfishに伝え、Stockfishが返した手をArduinoが実行する流れだ。

駒の移動には電磁石を使う。盤面の下で電磁石を動かせば、磁石入りの駒を引きずって移動できる。オン・オフできる電磁石なので、目的地で電源を切れば駒を離せる。

FabScene(ファブシーン)

移動システムには、当初アーム設計も検討したが、精度の問題で断念した。最終的に採用したのは、現代の3Dプリンターで一般的なCoreXY方式だ。2つのモーターと巧妙に配置されたベルトで、電磁石を正確に位置決めできる。

盤面自体にはPCB基板を使った。センサー配線を基板内部に通せるため配線作業が不要で、剛性も高い。「見た目がかっこいい」というのも理由の一つだ。

完成したチェスボードは、手を指すとすぐに反応する。電磁石の隠れた動きとモーターの微かなうなり音が緊張感を演出する。キャプチャ、キャスリング、ポーンの昇格といった特殊な手にも対応し、不正な手を指すと駒を元の位置に戻して別の手を選ばせる機能もある。

課題もある。ナイトが他の駒を飛び越える際、磁場が強すぎて他の駒も引きずってしまう。ゲームプレイには影響しないが、駒を手で戻す必要がある。

それでもStanley氏は満足している。「Pythonでのコーディングを学ぶ良い口実にもなった」と同氏は語る。バージョン2では、さらにユニークな移動システムを検討中だという。

fabsceneの更新情報はXで配信中です

この記事の感想・意見をSNSで共有しよう
  • URLをコピーしました!