こんにちは開発「M」です。
前回はロボット制御インターフェース(IF-100)を改造してArduino化してロボットアームを動かしてみましたが、毎回プログラムを書き変えなければ動きが変化しないという、残念な感じ(?)でしたので、今回は「クリックだけで好きな関節が動くもの」を目標に改造です。
改造といっても、ハードはそのままです。
今回は、PC画面をクリックしてロボットアームを動かす、正確にはPCからArduinoを制御したいのでPC側にも何かソフトが必要です。そんなときに相性ばっちりのProcessingを使ってPC側のソフトを作ってみることにします。
まずは綿密に構想を練ります。
1)コントローラと同じように、スイッチを操作したときに関節を動かす。
2)せっかくなのでクリックしたら、そのスイッチの色を変える。
3)クリックした関節1個だけではなく、全部の関節が同時に動くようにしたい。
以上です。構想は完璧です。
早速ごそごそとprocessingでプログラムを作成します。まずは1箇所、指の開閉動作をさせてみます。processingには不慣れなので、悪戦苦闘です。買ったけれど日の目を見なかった本の方々の出番です。
↓こんな本たちにお世話になりました。
できました。
とりあえず動いています。調子に乗って5関節分をつくります。先ほどの指のプログラムをコピペして、数値を書き換えて、5つ分表示されるように作ります。たぶんプログラムの中で配列や繰り返し文を使えばもっとスマートなプログラムになると思いますが・・・そこは、まあ、あれです。チャレンジしたけどうまくいかなかったといいますか・・・途中で面倒になったといいますか・・・。
とにかくprocessing側はできました。
↓全部は表示できませんがprocessingの画面はこんな感じです。
もちろんArduino側のプログラムも作らねばなりません。前回作ったプログラムに、processingからデータを受信する部分と、そのデータで、どの関節を動かすかを書き加えるイメージです。・・・と簡単に書きましたが、指を動かしたいのに、肘が動いたり、データを送っていないのに動き続けたりと、実はシリアル通信で少々苦戦しましたが、なんとか無事それっぽく動くものができました。
できたものはこれ!
例えば指の三角(大)をクリックすると押している間、色が変わり、指が動きます。三角(小)をクリックすると、こちらは押すのをやめても指は動き続け、丸をクリックすると停止します。
・・・うむ。完璧です。構想どおりです。ちゃちい画面だなあとか、ダサいプログラムだなあとかいろいろなご意見もあると思いますが、いいんです。大事なのは私の構想通りかどうかです。・・・ですよね。
無理矢理に自分を納得させたので性懲りもなく次の構想を考えています。次は画面の中でロボットアームの絵を動かしてみたいなあとか、何かセンサーつけてみたたいなあ。
でもその前に、前回のブログを読んでくださった方から、「具体的にはどうやってArduinoとIF-100をつなぐの?」といった質問もいただきましたので、ロボットアームとArduinoのつなぎ方を紹介してみようかなあとも思っています。