メカキネアート用ソフト試作版(書きかけ)

メカキネアート用モーション作成ソフト

メカキネアートとは

キネティックアートとは動きのあるアート作品のことです。
ここではモーター等を使いメカ要素を加えたものをメカキネティックアート、メカキネと呼んでいます。

経緯

CNCマシンとして加工用に経路を作りモーターを動かすだけでなく、アート用としてモーターを制御し各種動きつけたい、難しいコマンド等を覚えることなくモーションを作りたいという意見があり、そのためのソフトを試作してみました。

モーション生成の方法の概略

モーションを各モーター位置を記録したキーフレームの集合として考えます。
制御基板に繋がった各モーターをソフトにて動かし、位置を保存します。
全てのキーフレームを打ち終わった後はそれらを変換しNCファイルにし制御基板へと送信します。
そのため、基本的にはモーションを作成するためにGコードを触ることなく、モーターの位置だけ調整するということになります。

仕組みのイメージとしては、ロボットにおけるティーチング&プレイバックという仕組みに近く、ティーチング(実際に機械を動かして位置を記録)、プレイバック(記録した位置へ順を追って移動する)といったものとなります。

ソフトで作成したモーションの例

ソフトの公開

ビルドしたもの(現在windowsのみ)

ソースコード

「いいね!」 1

現状の注意点・制限

  • Duet3 Mainboard 6HCを子基板として使用する場合、E軸は親機側に振る必要があります。子基板側にE軸を振ると動作不良になる現象を確認しています。

今後

  • もっとグラフィカルにモーションをセットできるようにしたい
  • ネットワーク経由でつながっている複数Duet基板を使用する際の連携があまり良くないので改良したい
  • 現状C#でElectronを動かすという黒魔術状態のため、機能が固まったらJavascript+Electronに以降したい

以下はまだ書きかけの部分のため、不十分な説明が多々あります。

1.Duet側で必要な設定

1.1 Duetのconfig

config.g (5.2 KB)
Duet3 Mainboard 6HCを複数繋いで小基板とする場合は以下を使います。
6HC子基板時config.g (88 バイト)

1.2 configの設定値

configファイルにて以下の設定が最低限必要です。

  • IPアドレスの設定 M552
    (KASソフトでは192.168.0.56がデフォルト設定ですが、環境によっては動作しないことがあります。その場合はM552 P0.0.0.0 S1としてIPアドレス自動設定にします。 )
  • http通信の有効化M586
  • 軸の設定M569、M584
  • ホーミングなしの移動許可 M564 S0 H0

また、環境に応じてconfigに以下の設定をする必要があります。

  • モーターの移動量関連 M92, M350
  • モーターの駆動関連 M203, M201
  • モーターの移動制限関連 M203
  • モーターの電流値関連 M906

トリガーを使用する場合は以下のように設定する必要があります。

  • ピン定義 M950 J◯ C”io◯.in”
  • トリガー定義 M581 P◯ T◯

リミットスイッチにてホーミングを有効化する場合はリミットスイッチの定義を行います。
(上記configでは;にてコメントアウトされているので、行頭の;を削除します。)

  • M574 ◯1 S1 P"!^io◯.in"

なお、Tパラメータは2以上にしてください(T0,T1は非常停止系で既に定義されています)

Duet Mainboard 6HCを子基板として使用する場合は子基板configに以下の設定値が必要です。

  • M954

1.3 外部トリガーの配線

  1. configファイルのM950が設定されているか確認します。
    上記掲載のconfigではM950が書いてある行は;でコメントアウトしてあるので、使う予定のピンの行の;を消して有効化します。

  2. configファイルと同じフォルダ(sys)に以下のtrigger2~5.gをアップロードしておきます。
    trigger2.g (73 バイト)
    trigger3.g (73 バイト)
    trigger4.g (73 バイト)
    trigger5.g (73 バイト)

  3. スイッチにピン定義で設定した入力ピンとGNDをつなぎます。
    スイッチのタイプがNO(常時開)かNC(常時閉)によって上のピン定義が変わります。
    NCの場合はconfigのM950にC”!io1.in”のようにピン名に!をつけます。NOの場合はつけません。

現状、スイッチが押されているのかを検知しているか確認するにはWEBUIのエンドストップモニターを使うと簡単です。下記説明のように対象バージョンのプラグインをダウンロードしてインストールします。

1.4 ホーミングの設定

リミットスイッチを使ったホーミングを実施する場合は各種home軸名.g(例:homex.g、homey.g)やhomeall.gのファイルが必要です。これらのファイルはconfig.g同様にsysフォルダに入れます。

テンプレートとなるホーミングのファイルを以下に置いておきます。
これらはマイナス方向動いた先にリミットスイッチがあるという前提となっています。逆方向の場合は移動方向に修正が必要です。また送り速度や移動距離は環境において異なるため、適宜修正が必要かもしれません。

また、homeall.gはxyzのモーターをホーミングするという内容にしてあります。他の軸が不要であったり、追加の軸が必要な場合は修正が必要です。

homex.g
homey.g
homez.g
homeb.g
homec.g
homea.g
homeall.g

2.KASソフトでの設定

2.1 設定の流れ

KASの設定は一部の設定は設定パネルで変更できますが、対応していない設定は直接設定ファイルを変更する必要があります。
制御基板の数を変更する場合や、出力NCデータをループさせたい場合などは直接default_setting.jsonを変更する必要があります。

設定値の例:

  • 出力NCデータをループ: “is_enable_ncfile_loop”: false → true
  • スライダーで座標操作時の上限下限値:“max_move_range”、“min_move_range”
  • コントローラーパネルでのジョグ移動の単位:“default_jog_move_unit”

3.モーション生成の流れ

  1. 基板の電源を入れる
  2. 念のためWEBUIでアクセスできることを確認する。
  3. アプリを起動する。基板にアクセスできていることを確認。アクセスできていない場合はIPアドレスを確認・修正してデフォルト設定として保存しアプリを再起動
  4. Animatorパネルに移り、下部のモーター位置調整で各モーターを移動させ、希望の位置へ移動させる。
  5. 上部のキーフレーム操作の部分から移動方法を選択し、キーフレームをセット
  6. 4,5を繰り返す
  7. モーションデータができたら念のためキーフレームデータ保存ボタンでキーフレームを保存
  8. 送信先からトリガーか通常モーションかを選び、モーションデータ送信ボタンを押す。
  9. ファイルが送信される。
  10. モーションデータ実行ボタンを押すことで、記録されたモーションが実行される

ファイル送信エラー及び解決方法

Duet基板のSDカード内のsys/config.gを上書きしたらMKAソフトに接続し、
「+Controller」でモーター移動もできるようになりました。
「+Animator」「キーフレーム操作」でモーション編集後
「データ操作」Default Motion→モーションデータ送信 ボタンを押したらエラーを発覚。

エラー1
M32 “0://gcodes/mkas/program.nc” result:Error: M32: GCode file “0://gcodes/mkas/program.nc” not found

エラー2
Board:0 NC file output error : Could not find a part of the path ‘C:????\MKS016\resources\bin\nc\out0.nc’.
Can NOT Send NC File
Could not find a part of the path ‘C:????\MKS016\resources\bin\nc\out0.nc’.

エラー1解決方法
SDカード内のgcodes/フォルダに手動でmkasフォルダを作る。mkasフォルダ内に空ファイルprogram.ncを作る。(新規テキスト作成し、拡張子まで名前を変更)
エラー2解決方法
同じ方法でダウンロードしたMKAソフトウェア内のresources\bin\フォルダにncフォルダとout0.ncファイルを作る。

検証・報告ありがとうございます。
ファイル出力周りがまだ十分ではないので、このへんは今後改善していきたいと思います。

MKAをwindows7にダウンロードして解凍しました。ソフトウェアのアイコンをクリックしても
起ち上がらないのですが、windows7には対応していないのでしょうか?
もしくは、何か必要な設定がありますか?

Duet 3 Mainboard 6HCを使用する場合、マイクロSDカードのboot/sysにある
config.gを 6HC子基板時config.gに上書きすれば良いでしょうか?

Windows7では動作確認はしていないですが、起動しないということはないかと思います。
もしかしたら、起動に必要なソフトが足りていないのかもしれません。

こちらから ASP.NET Coreランタイム、.NET Runtimeをインストールしてみて様子をみていただけますか。

Duetに付属する初期のSDの状態を忘れてしまったので、boot/sysが適切かどうかは判断つかないですが、SDカード直下にsysフォルダがあればそちらの中のconfig.gがDuetの設定ファイルとなります。
Duetの初期のSDカードはラズベリーパイにも挿せるように、ラズベリーパイ用のデータも一緒に入っているのでわかり辛くなってしまっています。

6HC子基板時config.gはMainboard 6HC 2枚を繋いで使うためのconfig.gなのでMainboard 6HC 1枚の場合は6HC子基板時config.gを使う必要はありません。
その場合は1個目のconfig.gをsysフォルダ内のconfig.gに上書きして使用すればよいかと思います。

設定の反映ができていれば、上記configではhttp://192.168.0.56http://kas.local でWEBUIに入れるようになっているかと思います。入れない場合は設定ファイルの問題か、ネットワークの問題かもしれません。

こちらも色々と手探り状態ですので、検証していただけるのは助かります。ありがとうございます。

「いいね!」 1

お返事ありがとうございます。

先ほど、どちらもインストールしました。KASアプリケーションのアイコンをクリックしても、特になにも起こらないのですが、バックグラウンドで動いていたりするのでしょうか?

config.gを上書きしましたがWEBUIに入れません。。。

↑の部分は確認しました。

お手数をおかけしてすみませんが、どうぞよろしくお願いいたします。

アイコンをクリックすると数十秒ほど少し時間がかかりますがGUIが表示されるはずなのですが、何も起きないというのはおかしいですね。
ちょっとこちらでも似たような環境を用意してみて確認してみます。

別トピックにてファンが動いたと書いてあったので、おそらくconfig自体はちゃんと読み込まれているのかと思います。
となると、ネットワーク設定の問題かもしれません。
今はPCとDuetを直接LANケーブルで繋いでいますか?それともルーター等に繋いでネットワークに参加させていますか?
もし、PCとDuetを直接LANケーブルで繋いでいる場合は下記を参考にPC側のネットワーク設定を変更しなければいけません。

Duetをローカルのネットワークに参加させている場合は、configにて設定している192.168.0.56というIPアドレスが問題の可能性があります。
ルーター等のIPアドレスの範囲を確認して設定し直すか、configのM552を下記のように変更してIPアドレスを自動取得にすると解決するかもしれません。IPアドレスを自動取得にした場合は、kas.localでアクセスすると入れるかと思います。

M552 S1 P0.0.0.0
「いいね!」 1

直接LANケーブルで繋いでいましたが、ネットワークの設定をしていませんでした。ネットワークの設定をしたら、192.168.0.56でWEBUIに入れました。どうもありがとうございます。

MKAソフトウェアが起動についても、引き続きよろしくお願いいたします。

MKA用にwindows10搭載のスティックPCを買おうかと思っています。Duet3は、有線LANポートがないPCでも無線で繋がりますでしょうか?

Win7の環境を用意してみて動作確認してみましたが、たしかに起動しませんでした。
google chromeをアプリの内部に持っており、それを使って操作画面を表示しているみたいな仕組みなのですが、その起動の部分で何らかのトラブルが起きているようです。
原因の特定等時間がかかるかもしれないので、別のPCがあるようでしたらそちらで動作確認していただけると助かります。

Duet3 Mainboard 6HCは有線LANしかないので、無線LANルーターにDuet3 6HCを有線LANで接続しPCをその無線LANルーターのネットワークに参加すれば間接的に無線で接続は可能です。
直接的に無線でつなぐ場合にはWiFiモジュールを搭載しているDuet3 Mini5+ WiFiモデル等を使う必要があります。

なお、PCにUSBポートがあるようでしたらUSBの有線LANアダプタを使うという手もあります。

「いいね!」 1

お返事ありがとうございます。
とても勉強になります。
windows10が搭載されたLANポート付の
ミニPCをメカキネ用に注文しました!

追記
Windows10では問題なく起動しました!

「いいね!」 1

「+Controller」でモーター移動もできるようになりました。
「+Animator」「キーフレーム操作」でモーション編集後
「データ操作」Default Motion→モーションデータ送信 ボタンを押しても
モータが動きません。
DebugをみるとSuccess Send File To: 192.168.0.56
となっています。
なので、duet3のconfigが適切ではないということでしょうか?
たびたびすみませんが、教えていただけると助かります。

念のためDebugとWEBUIのキャプチャー画像を添付いたします。

ログ上はおかしくなさそうですが、ファイルがDuet側に保存されているか確認していただけますか。

  1. WEBUIのメニュ→ジョブを開いたところにmkasというフォルダはありますか。もしなければNEW DIRECTORYのボタンを押してmkasというフォルダを作った上で再度試してみてください。

  2. mkasのフォルダがある場合、mkasのフォルダ内にprogram.ncというファイルはありますか?ない場合は何らかの原因でファイルが保存されず、実行に失敗していそうです。

もしファイルがある場合はソフトのHomeのプログラム実行でもncプログラムの実行ができるので、そちらでも様子を見てみてください。

「いいね!」 1

mkasフォルダはあります。

program.ncといファイルもありました。

Homeのプログラム実行では、ちゃんと実行できました。
モーションデータ送信ボタンを押しても反応がないのは
気になるところですが、Homeのプログラム実行で動いたので良かったです。

今までステッピングモーターをarduinoで制御しようとして
苦労していたので、簡単に動いて感動しています。

あ、それとプログラムを実行したあとでWEBUIにエラーがでます。
error

こちら確認しましたが今アップロードしてある実行ファイルはモーションデータ送信ボタンを押した後に実行指令を送らないようになっていました。(以前はファイル送信と実行を同時にしていたので送信時のメッセージ表示が古いままで混乱を招いてしまいました)
ですので、今のところはHomeにあるプログラム実行を押していただければと思います。
今後メッセージ表示を変えるか、同時に動作指令を送るように戻すか、別でボタンを置く等したいと思います。

おそらく動作指令にE軸が混ざっている&E軸を使うための設定をしていないことで起きているエラーだと思います。(メカキネソフトデフォルトだと9~12番モーターをE軸に振っています)
動作に問題がない&モーションが完遂するのであれば、無視してOKです。あるいは、出力されたNCプログラムのE軸の部分を全部消してもエラーは出なくなります。

本来はこの辺もメカキネソフトの設定で使わない軸を消せるようにしていたのですが、クラッシュしたり不十分な部分もまだあるので今後修正等で対応していきます。

「いいね!」 1

ありがとうございます!
おかげさまでスッキリしました。