6本の腕で支えた板が、落ちてくるボールを打ち返し続ける。ボールを跳ねさせるための装置「Hexa-Bouncer」として公開された。作ったのは、GitHubのプロフィールで所在地を札幌としているTobias Kuhn氏だ。同氏は自身のブログで、この装置を「役に立たないが、ちょっと面白い」ボール跳ね上げ機の最新作と紹介している。
同氏は2020年に、前作「Octo-Bouncer」を公開している。前作は4本の腕で板を動かし、上下の動きは決まったタイミングで繰り返して、ボールを中央に保つための傾きだけを制御していた。今回の後継機は腕を6本に増やし、モーターを一回り大きいものに替え、カメラも2台にした。
ボールを追うのはPCだ。120度ずらして置いたカメラ2台が毎秒120コマの映像をPCへ送り、Unityで作った専用アプリが8.33ミリ秒ごとにボールの3次元の位置を求める。アプリはボールが板に戻る時刻を予測して次の打ち上げを始め、打ち上げ中に板をどれだけ傾けるかを前後と左右のPID制御で決める。
同氏が目指したのは、板を上下させながら円を描くような複雑な動きだ。そのためには、板の位置から6本の腕の角度を逆算する計算が要る。同氏は、モーターを動かすマイコンのTeensy 4.0にその計算をさせる案、軌道を関数で近似して送る案、軌道上の点を送ってマイコンに点の間を直線でつながせる案を比べ、3つ目を選んだ。Teensy 4.0では6本分の計算がパルスの間隔に間に合わず、関数による近似は処理の重さに不安があったからだ。点の間隔を細かくすれば、補間した軌道は元の軌道とほぼ重なるという。
同氏は関節の構造も見直した。当初は、腕の関節は自在継手2つで足りると考えていたが、Unityで試算すると腕の軸回りの回転も要ると分かり、手首の関節を足した。手頃で丈夫なボールジョイントが見つからなかったため、ボールベアリングを使って関節を自作した。同氏は、見た目がやや不格好だと認めている。
マイコンのプログラム、Fusion 360の設計データ、Unityのアプリはリポジトリで公開されているが、ライセンスの記載はない。実機の動きは画面上のシミュレーションより滑らかさに欠け、同氏は板が中心から離れたときの機構の揺れが原因とみている。カメラで物を追ってモーターを動かす仕組みを自作したい人には、参考になる作りだろう。