Fabrication

2018.02.05

CNCマシンをジグソーパズル用ピックアンドプレースマシンに改造する

Text by Dan Royer
Translated by kanai

twitch-powered-cnc-router-pick-place-machine

私はカナダのバンクーバーに住んでいる。毎年、オタワに住む家族が私の家を訪れるのだが、かならず1,000ピースのジグソーパズルをお土産に持ってくる。母は難しいやつを選ぶのが得意なのだ。ピントのぼけた小さな紫の花が咲いている野原や、青一色の長方形といった具合だ。彼らは周りだけ作って帰ってしまう。あとには私と使えないテーブルが残される。私は物事がきちんと片付いていないと気が済まない性格だ。だからハッカースペースで私を見かければ、私はきっと片付けをしている。半端に散らかったジグソーパズルには我慢がならない。なんとしてもパズルを完成させたいという衝動が、いろいろな方向から私を突き動かす。そんな感情を抑え込むために、私はなんとかうまい打開策を見つけなければならなかった。

私はこう考えた。どんなジグソーパズルでも解いてしまえる方法はないものか。2つのジグソーパズルを解くマシンが作れたなら、そのマシンで他のジグソーパズルも解けるはずだ。そうしたら気持ちが安らぐ。必ずパズルを片付けられるからだ。

方法

解決すべき課題は2つ。その作業をこなすマシンを作ること。そして、マシンにパズルの解き方を教えることだ。

マシンを作る

ジグソーパズルの解き方は、基本的にはどれも同じだ。カメラと回転する吸引ノズルを備えたCNCマシンがあれば、機構的にはそれが可能になる。

image1-1-912x1024

CNCカービングマシンは3Dプリンターと似ているが、プラスチックを熱して押し出すエクストルージョンではなく、切削ツールを回転させるルーターが付いている。3Dプリンターは積層式だが、CNCは通常は切削式だ。ピックアンドプレース・マシンは、吸引ノズルツールを備えているものが多い。

image4-1024x1024

私は自分で作ろうと、半年以上がんばった。試行錯誤を繰り返したが、自分が作るものはジャンクだと悟るのがせいぜいだった。そこで、ちゃんと仕事をしてくれるCNCマシンをネットで探し、Inventablesの加工エリアが1,000ミリのタイプのX-Carveを購入した。それに、中空軸のステッパーモーター、SMTノズル、エアーポンプ、ノーマルクローズのソレノイド・エアバブルを追加した。

image2

CNCコレット(オレンジの部分)がX-Carveによって動かされる。ステッパーモーター(斜線入りピンクの部分)が底部のノズルを回転させる。エアポンプが作動すると、バネの入ったノズルヘッドがピースを吸い付ける。エアポンプを止めるとバルブが開き、ピースが放される。

次に、Fusion 360とノギスを使って、コレットとその他の部品をモデリングした。設計図や3Dモデルが公開されている場合は、私はできる限り部品を購入することにしている。無駄な金を使わずに、早くマシンを完成させられるし、安心して部品を買えるからだ。

image9
パーツのモデルを組み合わせたところ

image6
下側にRaspiCamがある

コレットの側面と底部にRaspberry Piとカメラを装着した。こうすれば、マシンは拾い上げる前後にピースを見ることができる。RaspiCamに付属しているケーブルは思ったより短かかったが、なんとかすべてのモデリングが完成した。

下は、その時点で撮影したInstagramの動画だ。

「昨夜の状態。ヘッドが組み上がった。次に回路のテストをして組み込みテストを行えば、打ち上げだ!」

配達を待つ間、コネクター用の部品のプリントを行った。

「昨日はいいところまで行ったが、今日はもっとよくなるはずだ」

マシンの教育

学ぼうと努力はしたのだが、AIのことはまるでわからない。線をたどるロボットを作ったときに、光と色を検知する方法については少し学んだことがある。だが、それにしても難し過ぎる! 難しい挑戦だということしかわからない。問題は、どれほど難しいか見当もつかないところだ。形状の認識も同じだ。そこで、次善の策を採用することとした。すでにパズルの解き方を知っている「AI」を利用する方法だ。それはTwitchだ。

Twitchでジグソーパズルをプレイする

Twitchは、人と人がストリーミング動画を見ながらゲームをプレイできるオンラインサービスだ。数年前、Twitchでプレイするポケモンが始まった。参加者はIRCでチャットをしながらゲームを進める。特定の言葉をタイプすると、ゲームはそれをボタンの押下として登録する。多くの人が入力したコマンドが民主的に選択され、勝敗が決まるというものだ。

Twitchからロボットへ

私はPC上で、Eclipse Java IDEを使って3つのクラスを書いた。ひとつはX-Carveと対話するためのもの。1つはエアノズルのパーツと対話するためのもの。もう1つはTwitchと対話するためのものだ。この3つのクラスは、マスターのJigsolveクラスに格納され、統合される。こうすることで、各パーツを個別に、または同時にテストできるのだ。

ロボットからTwitchへ

ノズルに装着したカメラはRaspberry Piの一部だ。私はネットのチュートリアルに従って、カメラの映像をRTSPストリームとしてLANに流すように設定した。PCには、映像を映し出すためのVLCアプリと、Twitchに映像を送るためのOnline Broadcast Studio(OBS)アプリが入っている。

image3

私が学んだことなど

TwitchユーザーMdp117は、ノズルの角度を無限に回転させるとロボットをDDoSできると教えてくれた。実証をありがとう!

Twitchユーザーのamazing3dは、2つのピースを正しくはめてくれた最初の人物だ。

空気抜き用のバルブを後から追加した。最初は、ピースを放すにはエアポンプを止めるだけで十分だと考えていた。だから、Fusion 360のモデルにはそれが含まれていない。

照明がよくなかった。リング状のライト(下の写真)を作ってRaspberry PiのGPIOピンで点灯させたのだが、暗くて青みがかっている。ガントリーの下側に高輝度のリボンLEDを付ければいいかも知れない。作業がやりやすくなるだろう。

SMTノズルは電子部品と合わせるには小さくてよいが、パズルのピースを扱うには小さすぎた。そこでInstagramユーザーのxyzaidanにシリコン製のノズルを有償で作ってもらった。見事な出来だった! 残念なことに、ちょっと前の話なので彼とのやりとりの履歴が残っておらず、写真を掲載できなかった。

ぴったり合う2つのピースを探すのが大変に難しかった。そこで、私はロボットを動かし、動画フィードからスナップショットを撮影して、Googleマップに保存するスクリプトを書いた。

組み立ての際に、X-Carveのガントリーが明らかに歪んでいた。片方の側を取り付けると、反対側が2センチほど離れてしまう。もしカメラが搭載されていれば、本体が直角に仕上がらなくても正確なカットができただろうに。去年の6月、Inventablesは新しいガントリーを送ってくれると言ってくれたのだが、まだ届いてない。

image7

もっと教えてくれ!

ジグソーパズルが完成するまで、その様子をTwitchで見ることができる。

X-Carveの改造に使用した部品の全リストと、アダプターのプリント用STLファイルがご希望の方は、私のフォーラムで知らせて欲しい

原文