これまでのあらすじ:
2016年3月、フェルト生地を手で裁断している際にレーザーカッターがあれば複雑なカットが容易にできるなあと思って、安価になってきたレーザーカッターを購入しようと思ったのがきっかけ。調べていくうちに、合板も切れたほうがいいと思うようになって、CNCルーター(CNCミリング)についても考えるようになった。
Arduinoは以前から使っており、CNCシールドがあると気付いて自作も可能と思うようになった。当初はShapeOkoやX-CARVEを参考にMakerSlide、OpenRail、V-Wheel、2GTタイミングベルトなどで5万円くらいで自作しようと思っていた。AliExpressでも部品が安く買えることが分かって、しばらくは部品探し。探せば探すほど安くて本格的な部品も見つかってくるので、そんなにケチらなくてもいいのではないかと徐々にスペックアップ。最終的には剛性や精度のことも考えてボールスクリューやリニアスライドを使うことになり、予想以上に重厚な3軸CNCマシンをつくることに(約7万円)。
構想から約5週間(制作約3週間)でルーターとレーザーともに使えるようになり、現在はgrbl1.1+Arduino CNCシールドV3.5+bCNCを使用中(Macで)。余っていたBluetoothモジュールをつけてワイヤレス化。bCNCのPendant機能でスマホやタブレット上のブラウザからもワイヤレス操作可能。
その他、電子工作・プログラミング、最近は機械学習などもやっています。基本、Macを使っていますが、機械学習ではUbuntuを使っています。


CNCマシン全般について:
国内レーザー加工機と中国製レーザー加工機の比較
中国製レーザーダイオードについて
CNCミリングマシンとCNCルーターマシンいろいろ
その他:
利用例や付加機能など:
CNCルーター関係:



*CNCマシンの制作記録は2016/04/10〜の投稿に書いてあります。

2019年6月8日土曜日

Matplotlib Animation embed on web page:アニメーションのWebページ上への埋め込み

これまでMatplotlibでつくったアニメーションはGIF動画としてWebページ上にアップロードしていましたが、Jupyter Notebook上で表示されるボタン操作付きのアニメーションとして表示できる方法がわかったのでメモ(いまさら)。





この動画はJupyter Notebook上でも表示可能で、再生速度調整、反転再生など可能で便利です。Matplotlibで制作したアニメーションをto_jshtml()でJavaScriptに変換して、それをhtmlファイルとして外部保存して、このページにJavascriptとして埋め込んでいます。

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation
from IPython.display import HTML

x = np.linspace(-2,2,50)
y = np.sin(x)

fig = plt.figure(figsize=(6, 6))
plt.axis([-2,2,-2,2], 'equal')

ims = []
for i in range(len(x)):
    ln = plt.plot(x,y, color='#377eb8', linestyle='--')
    dot = plt.plot(x[i], y[i], color='red', marker='o')
    ims.append(ln + dot)

ani = animation.ArtistAnimation(fig,ims,interval=50)
#ani.save("ani.gif", writer = "imagemagick") # save as GIF Animation
plt.close()

# save as JavaScript/Html file
f = open("ani.html", "w")
f.write(ani.to_jshtml())
f.close()

#HTML(ani.to_html5_video())
HTML(ani.to_jshtml())

方法:(Python 3.6、Jupyter Notebook使用
・アニメーション(変数:ani)をつくったら、ani.to_jshtml()でJavascriptに変換。
・f=open(), f.write()でJavaScript/htmlファイルとして外部保存。
・外部保存したani.htmlファイルをエディタで開きJavaScriptをWebページにコピペ。

制作された動画は「base64」というデータ形式に変換されているようです。画像などをbase64に変換してそのままHTML内に埋め込むことができるようですが、このbase64データというのは以下のような記号の羅列で、この動画のデータだと約10000行もありかなり膨大です。

frames[0] = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbAAAAGwCAYAAADITjAqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\
AAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0\
dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3deVxVZeI/8M8VRMUV10BMM1wQRFIu\
4FqNIm5hLplmo40lo9m3PYdvTfOzma8TbaM11BjTZpvM5EySJigqWq6IimmUkWGyCZiau8Dl/v54\

ページをスクロールしてもなかなか下へ辿りつけないので、この点だけ注意。上の場合はpng画像50枚分が埋め込んでいるのでアップロードするときもやや時間がかかります。
あと、コード内のコメント欄などに日本語が含まれているとエンコード/デコードでエラーがでるかもしれません。

人気の投稿