Home Made Garbage

Processing で制御 ーロボットアーム自作への道3ー

ホーム
電子工作
Raspberry Pi
IOT
WEB

さて前回は逆運動学によって、ロボットアームの座標からサーボの角度を算出して制御を楽しみました。

そうなるとコントローラでリアルタイムに動かしたくなるのがヒトというものです。

ここではProcessingを用いてマウスでのPC上のお絵描きを同時にロボットアームでもしてしまいます。

 

 

 

可動範囲拡張

前回よりもアームの可動範囲を拡張したく、3つ目のサーボの0°基準を変更しました($θ_3$)。

アーム$L_2$に対してアーム$L_3$が直角になる地点を0°としていたのですが、可動範囲が限られてしまったため、90°にシフトしました。

前回導出した3個目のサーボの角度$θ_3$に90°足すだけです。

$$θ_3 = \sin^{-1} \left(\frac{{l_d}^2-{L_2}^2 – {L_3}^2}{2{L_2}{L_3}} \right) + 90°$$

構成

Processingのウィンドウ上の座標をArduinoに送信してロボットアームの平面状の座標(x, y)として制御します。

マウスをクリックするとアームについたマジックペンの先が地面に接地し(z = 0)、ドラッグで線や絵を描けます。マウスがクリックされていない時はz = 20として、ペン先を浮かせます。

動作

まずは早速 動作を見てください!
Processingのウィンドウ上の線と同じように、ロボットアームも線を描きます。

まずは長女ちゃんが動作テストしてくれました。

 

次にお母ちゃんがノリノリでミッフィーちゃんを描いてくれました。。。

やはりまだまだ精度は完ぺきではありません。
ミッフィーちゃんの顔怖い(´;ω;`)。。。
 

最後は真打ちお父ちゃんです。ロボットアームの精度を考慮し、大きめに描画し、マジックペンと紙の摩擦もふまえてゆっくり線を引いています。

どうでしょうか?なかなかのものではないでしょうか?
ガッツリ ロボットアームに忖度すれば使えないレベルではありません。まさに愛。

 

Processingコード

400 × 520のウィンドウを表示して、ウィンドウ上のカーソルをマウスで動かして、座標(x, y)をPCにつながったArduinoに送信します。座標の数値は1/4に圧縮して送信しています。

マウスがクリックされていないときはz = 20を、クリックされているときはz = 0を送信します。

マウスをクリックしてドラッグするとウィンドウ上に線が描けます。キーボード”q”で消去します。

参考

Arduinoコード

Processingからの座標データを受けて、逆運動学でアームをリアルタイムに制御します。

Processingのウィンドウの座標とロボットアームの平面座標にオフセットがありますので、受信後に変換処理をしています。

 

おわりに

Processingのおかげで簡単にリアルタイム制御ができてしまいました。
ちょっと精度が悪いので勉強進めます。

それではまた

Related Posts

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください