Pythonで作るモーター駆動パターングラフ作成ツール
2020/05/14 categories:TOOL| tags:Python|PyQt5|PyQtGraph|NumPy|TOOL|
以前作った台形駆動のグラフを表示するプログラムを改良しました。
改良点
加速度や速度などのパラメータをスライダとスピンボックスで入力できるようにしました。さらにそれらの入力値が変わったらグラフを更新するようにしたので、パラメータの変化でモーターの駆動パターンがどのように変わるか直感的にみられるようになりました。
ちなみにstepsは一区間でプロットする点の数です。画像の例だと加速区間、等速区間、減速区間でそれぞれ10点プロットするという感じです。decimalsはプロットする点を計算するときに四捨五入する桁数です。
また、ボールねじ駆動を想定してボールねじのリードも入力できるようにしました。これでモーターの回転数もグラフとしてできて、モーターの選定やボールねじの選定に役立つかなと思います。
グラフを画像で保存
PyQtGraphの機能で保存
グラフを右クリックするとコンテキストメニューが出てきてExportをクリックするとグラフを保存するメニューが表示されます。そのメニューでフォーマットを選択してExportをクリックするとグラフを画像として保存できます。
ただ、PNGで保存しようとしたところ下記のエラーが発生しました。
Traceback (most recent call last):
File "C:\python382\lib\site-packages\pyqtgraph\exporters\Exporter.py", line 77, in fileSaveFinished
self.export(fileName=fileName, **self.fileDialog.opts)
File "C:\python382\lib\site-packages\pyqtgraph\exporters\ImageExporter.py", line 70, in export
bg = np.empty((self.params['width'], self.params['height'], 4), dtype=np.ubyte)
TypeError: 'float' object cannot be interpreted as an integer
PyQtGraphを書き換えてみる
この辺りを見てみると、Python3のデフォルトの型がfloatだからとか書かれています。とりあえず動かすためにself.params[‘width’]とself.params[‘height’]をintでキャストしたところエラーがなくなりました。とりあえずこれで良しとしとこうと思います。
#変更前
#bg = np.empty((self.params['width'], self.params['height'], 4), dtype=np.ubyte)
#変更後
bg = np.empty((int(self.params['width']), int(self.params['height']), 4), dtype=np.ubyte)
課題
S字駆動も追加したい
ソースコード
githubにアップロードしました