myCobotで書き初めやってみた

2023年最初の投稿です、あけましておめでとうございます。

去年はROSに始まり、転職をきっかけにROSであれこれ遊ぶようになりました。

今年もROSをはじめロボットやガジェットでゆるく遊んでいこうと思いますのでよろしくお願いします。

さて、新年の行事といえば書き初めがあります。

大体の方は小学校や中学でやってたんじゃないかと思います。

前回myCobotを触りましたが、何かしらネタがあったほうがいいなと思い頭の中であれこれ考えてたら、新年に向けてこの書き初めをネタにしたら季節感もあって面白いんじゃないかと思いつきました。

supernove.hatenadiary.jp

というわけで今回はmyCobotで書き初めをやってみたいと思います。

ネタの仕入

早速大晦日に筆ペンと落書き帳をダイソーで買いました。

ガチの書道セットは流石に準備が大変なのと下手するとmycobotが汚れそうな気がするのでやめておきましたw。

セッティング

買ったペンをmyCobotの先端に取り付けました。

固定はめちゃめちゃ簡単に養生テープでやりましたw。

台座はあり物の空き箱を積んで用意しました。大体13cm〜15cmぐらいの高さで紙をのせました。

ある程度の高さがあったほうがアームの可動範囲が広くなります。

そしてロボットは例のごとく(?)手で抑えますw。

モーション作り

ここからはひたすらモーションを作りました。実際に筆を置きながらアームの姿勢を決めていきました。

姿勢を決めるときにはBlockyのQuickMove(画面右上の赤丸をクリックして表示)を使って各ジョイントの角度を取得していきます。

後は取得した姿勢をブロックに入れていくという地道な作業を続けるだけです。

試しに簡単に横線を引きました。

動画のペンで書いたときには仕上がりが普通の水性ペンとあまり大差なかったので、もう片方のペンに付け替えてみたら意外とそれっぽい仕上がりになりました。

それなりの太さがあって筆の強弱がわかりやすくなりました。

今度は何かしらの文字を書くようにしてみました。

書く文字はカタカナの「イ」です。日本でブラウン管テレビを発明したときに最初に表示した文字でもあり、文字のなかで一番分かりやすい気がします。

文字はシンプルですが、筆の位置を決めても筆が浮いてしまったり予想外の方向に動いてしまったりして結構大変でした。

筆の固定位置を修正したり何度か角度を調整し直してなんとか書くことができました。

清書

これで感覚がつかめたのでいよいよ1枚の紙に2文字を書き上げることをやってみます。

紙に対してなるべくバランスよく書く必要があるため、更にパラメータ調整をしていきました。

ただ、さっき1文字ずつ書いたのでそこまで苦戦することはなかったです。

完成したフローはこんな感じです。一つ一つ決め打ちでパラメータを設定してたら気が遠くなりましたw。

JSONはこんな感じです。適当なファイル名で保存して読み込めば動かせますが、今回のセッティングに合わせて組んでいるので、真似する場合は台座とペンの位置を調整する必要があります。

{"mode":"single","json":{"blocks":{"languageVersion":0,"blocks":[{"type":"init_mycobot","id":"?STrv$]%4$FRRP1d+Q:I","x":10,"y":10,"fields":{"ROBOT":"MyCobot","BAUD":"1000000"},"inputs":{"PORT":{"shadow":{"type":"text","id":"i,Y2Um!wgNS3xqgDLQU;","fields":{"TEXT":"/dev/ttyAMA0"}}}},"next":{"block":{"type":"send_angles_1","id":"ZEp.nJfOVX7mhOL8~`:^","inputs":{"J1":{"shadow":{"type":"angle_slider","id":"B9!:{74A.vfo5o*9Z{s|","fields":{"NUM":0}}},"J2":{"shadow":{"type":"angle_slider","id":"tyv%mySXpKr@%RcG@dz|","fields":{"NUM":0}}},"J3":{"shadow":{"type":"angle_slider","id":"tVWfwZN@hXic92xbk`v@","fields":{"NUM":0}}},"J4":{"shadow":{"type":"angle_slider","id":"U_)c_4#xU4$(e}aKLXT4","fields":{"NUM":0}}},"J5":{"shadow":{"type":"angle_slider","id":"#T,{k|0(oe**I6O=os*~","fields":{"NUM":0}}},"J6":{"shadow":{"type":"angle_slider","id":"g-{5Ai9E+pA1@Co%.9{h","fields":{"NUM":0}}},"SPEED":{"shadow":{"type":"speed_slider","id":"@Lps,h+DEjB*:IOg:-V@","fields":{"NUM":30}}}},"next":{"block":{"type":"time_sleep","id":",(qI6{sBFlw:)]Da1P:P","inputs":{"TIME":{"shadow":{"type":"speed_slider","id":"$Hh{:.DBUk(!wjgr#gn%","fields":{"NUM":5}}}},"next":{"block":{"type":"send_angles_1","id":"ux.6OX8C5.7?y~Q2A6_r","inputs":{"J1":{"shadow":{"type":"angle_slider","id":"mB}n=C3W4H347)+*~UE#","fields":{"NUM":10}}},"J2":{"shadow":{"type":"angle_slider","id":"I2bO/ygx_o~iP6$Jl@Lv","fields":{"NUM":-36.12}}},"J3":{"shadow":{"type":"angle_slider","id":"Z~2twp?]T5(InW@A51+l","fields":{"NUM":-79.01}}},"J4":{"shadow":{"type":"angle_slider","id":"Ibp9.Ib0}r(3fkkE(Vp(","fields":{"NUM":40.16}}},"J5":{"shadow":{"type":"angle_slider","id":"wy(V^emL.*92kyf.V.xy","fields":{"NUM":2.1}}},"J6":{"shadow":{"type":"angle_slider","id":"fJ$hQ)r]x_syvYjP7aj[","fields":{"NUM":0.17}}},"SPEED":{"shadow":{"type":"speed_slider","id":"?u$DX(t1M!~}[gHSho^]","fields":{"NUM":30}}}},"next":{"block":{"type":"time_sleep","id":"4jGU34@[wZp54N9hR+-E","inputs":{"TIME":{"shadow":{"type":"speed_slider","id":"=0Gu9xMds:)r;MO*`;B6","fields":{"NUM":5}}}},"next":{"block":{"type":"send_angles_1","id":"l#Q)2@lFw;/W}Gv|QGOz","inputs":{"J1":{"shadow":{"type":"angle_slider","id":"Od1-7t[Ow7pc]J.SLWdL","fields":{"NUM":-10}}},"J2":{"shadow":{"type":"angle_slider","id":"IoUlr+h|n!:jKSaW`vyG","fields":{"NUM":-36.12}}},"J3":{"shadow":{"type":"angle_slider","id":"sgrswkZ9.+B*b21t)~,k","fields":{"NUM":-79.01}}},"J4":{"shadow":{"type":"angle_slider","id":"KD;@#uu*[%iQ{7XzbMpj","fields":{"NUM":40.16}}},"J5":{"shadow":{"type":"angle_slider","id":"*P3c,y|2`xrmhUy$`gx-","fields":{"NUM":2.1}}},"J6":{"shadow":{"type":"angle_slider","id":"agH6gJ.wC!JMgy^;+)23","fields":{"NUM":0.17}}},"SPEED":{"shadow":{"type":"speed_slider","id":"Y1ScycZLNK/DlNfzGJ5A","fields":{"NUM":30}}}},"next":{"block":{"type":"time_sleep","id":"z7BbuahzPoD+%XNjM6wA","inputs":{"TIME":{"shadow":{"type":"speed_slider","id":"U:JbaYic^6^h6H9O|~;s","fields":{"NUM":5}}}},"next":{"block":{"type":"send_angles_1","id":"f.FSF]%YE]P_oQpge+Q?","inputs":{"J1":{"shadow":{"type":"angle_slider","id":"+qzPY5qeD^PnT*_~f$(c","fields":{"NUM":0}}},"J2":{"shadow":{"type":"angle_slider","id":"B`Fr8!?W#jUY!yb?0Xu8","fields":{"NUM":0}}},"J3":{"shadow":{"type":"angle_slider","id":"Wmm*nx(70tXoG7|I9lQK","fields":{"NUM":0}}},"J4":{"shadow":{"type":"angle_slider","id":"{.pzH;k+,Cqo(){Ia`9r","fields":{"NUM":0}}},"J5":{"shadow":{"type":"angle_slider","id":"7,%[K%`M8333VKe9[N53","fields":{"NUM":0}}},"J6":{"shadow":{"type":"angle_slider","id":"3VcI)pFQXAw-kpnm75%;","fields":{"NUM":0}}},"SPEED":{"shadow":{"type":"speed_slider","id":"JLO{dx:A?a0PIWuT7TR$","fields":{"NUM":30}}}},"next":{"block":{"type":"time_sleep","id":"QJ|Rv}O-Dj`7CM:KXO?Y","inputs":{"TIME":{"shadow":{"type":"speed_slider","id":"{ga/W6K/M8!xh:A{5bi]","fields":{"NUM":5}}}},"next":{"block":{"type":"send_angles_1","id":"8._;%=EQj2%p%DtZO$z*","inputs":{"J1":{"shadow":{"type":"angle_slider","id":"`Pu^4G.h0?wN-dG;VE=c","fields":{"NUM":-5.44}}},"J2":{"shadow":{"type":"angle_slider","id":"z}-vB+9}v[B_A[CAWlHd","fields":{"NUM":-16.43}}},"J3":{"shadow":{"type":"angle_slider","id":"ynWNc;0tv=3{:8nl[Gtl","fields":{"NUM":-114.87}}},"J4":{"shadow":{"type":"angle_slider","id":"U?MeXUj88@z3.P4q:8RK","fields":{"NUM":61.17}}},"J5":{"shadow":{"type":"angle_slider","id":"9C?:F)XlG0opZ9}%SDb`","fields":{"NUM":0.17}}},"J6":{"shadow":{"type":"angle_slider","id":"9TEJ[tn65-.Yev6QE7hg","fields":{"NUM":0.17}}},"SPEED":{"shadow":{"type":"speed_slider","id":"15YJ.j^[S$;d](p#S=93","fields":{"NUM":30}}}},"next":{"block":{"type":"time_sleep","id":",i;Eq;/$6QSi`v=yz9O3","inputs":{"TIME":{"shadow":{"type":"speed_slider","id":"Ojj}K^z7F^(gS|EQ9kx/","fields":{"NUM":5}}}},"next":{"block":{"type":"send_angles_1","id":"+#.%s2_G%SKp9aw+,TE!","inputs":{"J1":{"shadow":{"type":"angle_slider","id":"|af[tb8[~u~0P^21:_jF","fields":{"NUM":20.83}}},"J2":{"shadow":{"type":"angle_slider","id":"bBG_Ph[Bw]7lci40DLth","fields":{"NUM":41.04}}},"J3":{"shadow":{"type":"angle_slider","id":"B%5HTzFGSqq_^#uqpJ8Z","fields":{"NUM":-149.32}}},"J4":{"shadow":{"type":"angle_slider","id":"g;S87:O:R~(Xa~tS[m~3","fields":{"NUM":28.38}}},"J5":{"shadow":{"type":"angle_slider","id":"xHxkX^t51B=B_h?G%roA","fields":{"NUM":-3.51}}},"J6":{"shadow":{"type":"angle_slider","id":"UsG**$Y(WI(FK@t9Ls%5","fields":{"NUM":0.17}}},"SPEED":{"shadow":{"type":"speed_slider","id":"m!1nnl:Q{b+vk(UGM99R","fields":{"NUM":30}}}},"next":{"block":{"type":"time_sleep","id":"SD8S^1E.,Zx]]}I@|q4$","inputs":{"TIME":{"shadow":{"type":"speed_slider","id":"XTQ6MEl.;`y*r06MJA%!","fields":{"NUM":5}}}},"next":{"block":{"type":"send_angles_1","id":"^9`8k*-xqO1xzp%3M1{%","inputs":{"J1":{"shadow":{"type":"angle_slider","id":"sdaX3~Zp_2Z{Wm)^dtDs","fields":{"NUM":0}}},"J2":{"shadow":{"type":"angle_slider","id":"fA9t~=,7A7;|~^tq7A+9","fields":{"NUM":0}}},"J3":{"shadow":{"type":"angle_slider","id":"8lz5LF[?+]:](#-g[=Y-","fields":{"NUM":20}}},"J4":{"shadow":{"type":"angle_slider","id":"!il1xj+zX(V^pOyq]$w6","fields":{"NUM":55.98}}},"J5":{"shadow":{"type":"angle_slider","id":"u=Dixq84{2qGqNjA@K6f","fields":{"NUM":-0.08}}},"J6":{"shadow":{"type":"angle_slider","id":"kHfuNFO2]hKLL-)z%8V9","fields":{"NUM":0.17}}},"SPEED":{"shadow":{"type":"speed_slider","id":"G_0d-jC%VW:[mj_4uo/{","fields":{"NUM":30}}}},"next":{"block":{"type":"time_sleep","id":"suFoicXLuLv8Fk@[q,[X","inputs":{"TIME":{"shadow":{"type":"speed_slider","id":"3L%EVZ$QOY96:@85?!n)","fields":{"NUM":5}}}},"next":{"block":{"type":"send_angles_1","id":"Ho#Xoq$iDoh(U-XPut=5","inputs":{"J1":{"shadow":{"type":"angle_slider","id":"~QJsfQZK-R18~JQ9b]sf","fields":{"NUM":8.61}}},"J2":{"shadow":{"type":"angle_slider","id":"MR~r-Aie,qOn%xbxu:U0","fields":{"NUM":11.25}}},"J3":{"shadow":{"type":"angle_slider","id":"[!|dQ|tvDkRh!wkSX%XL","fields":{"NUM":-130.78}}},"J4":{"shadow":{"type":"angle_slider","id":"ZMDS+N;7z!w7^e;6hVR.","fields":{"NUM":37.26}}},"J5":{"shadow":{"type":"angle_slider","id":"S1JvG/zk23X|~3Sbr8^I","fields":{"NUM":-8.17}}},"J6":{"shadow":{"type":"angle_slider","id":"@gGe;CgWTOAKJ#oWZGCE","fields":{"NUM":0.17}}},"SPEED":{"shadow":{"type":"speed_slider","id":"Cx}yYFI4%jU*6=;Z9FOO","fields":{"NUM":30}}}},"next":{"block":{"type":"time_sleep","id":"~k+p5pl,07rijX{PjE:|","inputs":{"TIME":{"shadow":{"type":"speed_slider","id":"nJ^UKSU;nS!j?yV?%eY!","fields":{"NUM":5}}}},"next":{"block":{"type":"send_angles_1","id":"~R@}!z%3M#{iAUVxizHP","inputs":{"J1":{"shadow":{"type":"angle_slider","id":"gC[PSV,JEl4NgIdoRcbN","fields":{"NUM":8.61}}},"J2":{"shadow":{"type":"angle_slider","id":"hrRO*UFRD(J-u_`aPakw","fields":{"NUM":39.81}}},"J3":{"shadow":{"type":"angle_slider","id":"L.=cp*G+zpCOl@8CflBL","fields":{"NUM":-139.39}}},"J4":{"shadow":{"type":"angle_slider","id":"U@v*X0+,{%T+6pXhbnJk","fields":{"NUM":10.98}}},"J5":{"shadow":{"type":"angle_slider","id":"w_=,C_xuT0W59K@9`PE0","fields":{"NUM":-8.17}}},"J6":{"shadow":{"type":"angle_slider","id":"YCg_$L/bB,gY80*#1!cM","fields":{"NUM":0.17}}},"SPEED":{"shadow":{"type":"speed_slider","id":"WTv,t6Qr.0#9$;+CD]b7","fields":{"NUM":30}}}},"next":{"block":{"type":"time_sleep","id":";:!z7hh0i^kq7Uk@~b5s","inputs":{"TIME":{"shadow":{"type":"speed_slider","id":"mEP^#ajz9:tPa8/S]+8?","fields":{"NUM":5}}}},"next":{"block":{"type":"send_angles_1","id":"Pt/G=TQ$~uJ5J66JNDux","inputs":{"J1":{"shadow":{"type":"angle_slider","id":"/F)r1.-huFi`)u_gf]PI","fields":{"NUM":0}}},"J2":{"shadow":{"type":"angle_slider","id":"}dWQVl8r0ru6y-e4=xv(","fields":{"NUM":0}}},"J3":{"shadow":{"type":"angle_slider","id":"WW(A:YNR-kYcqMlBBpp2","fields":{"NUM":0}}},"J4":{"shadow":{"type":"angle_slider","id":";m-w[}X6=T)q@d9ycGD1","fields":{"NUM":0}}},"J5":{"shadow":{"type":"angle_slider","id":",dWehXs0`w+fWT6+LlCC","fields":{"NUM":0}}},"J6":{"shadow":{"type":"angle_slider","id":"vU=dx{p0e.S1_^Sx*M6Y","fields":{"NUM":0}}},"SPEED":{"shadow":{"type":"speed_slider","id":"Akzjggf3R?j-HW|%[4_A","fields":{"NUM":30}}}},"next":{"block":{"type":"time_sleep","id":"Zpv|y4VEZ|.1iiGIm9wA","inputs":{"TIME":{"shadow":{"type":"speed_slider","id":"{7#2(`gaJ-6tAztH}MZo","fields":{"NUM":5}}}},"next":{"block":{"type":"release_all_servos","id":"!mefP$*|VW%%uU3]SLrP"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}]}}}

そして、2023年始まってすぐに清書してみたところ、変に偏りがなくて悪くないですね。

まとめ

今回はmyCobotで書き初めをやってみました。

晦日にふと思いついてやってみたネタでしたが、思ってたよりもうまく形になって良かったです。

それもダイソーにあるもので手軽にできたのが大きかったです。

そしてBlocklyをうまく活用すれば今回みたいな文字を書くような複雑な動きもやろうと思えばできるのは便利ですね。

本当はこういうのってちゃんと逆運動学とかで計算するんでしょうけど、大学で心が折れた人なのでそこまでやろうとは思わないです…(本格的にプログラムする上で避けては通れないでしょうけどね…)