今回の課題レポートは書道ロボットで自分の漢字を書き出すというものです。
私は自分の漢字から「添」という文字を選び、プログラムを作成していくことに決断しました。
先に結果を述べ、そのあとに考察と反省を述べていきます。
#define hijimigi(s,t) OnRev(OUT_C,s);Wait(t); #define tekubimigi(s,t) OnFwd(OUT_B,s);Wait(t); #define downpen OnFwd(OUT_A,10);Wait(1900);Float(OUT_A); #define uppen OnRev(OUT_A,10);Wait(1000);Float(OUT_A); #define tekubihidari(s,t) OnRev(OUT_B,s);Wait(t); #define hijihidari(s,t) OnFwd(OUT_C,s);Wait(t); #define douji(x,y,z) OnFwd(OUT_B,x);OnRev(OUT_C,y);Wait(z); #define kyuukei Off(OUT_ABC);Wait(1000);
まず作成した機械を人間の腕として見る。リモコンの近くにあるモーターから順に「肘」「手首」「指」と見てプログラム名に[hijimigi]など簡単に判別出来るように名前を付けた。
例を挙げると、引数に与えた値が0以上ならば[hijimigi]でリモコン側から数えて一つ目のモーターが右に曲がり、[tekubihidari]で二つ目のモーターが左に曲がる。[uppen],[downpen]はペンを上げる、下げるという動作を表している。
[douji]は時計回りを正として肘と手首を同時に動かす動作である。[kyuukei]は動作を確認するための時間を空けるために定義したものであったが、除くことにより不具合が生じることがあったためプログラムに残している。
sub sanzui(){//さんずいを書き始める hijihidari(15,300); kyuukei; OnFwd(OUT_A,10);Wait(2000);Float(OUT_A);//最初の一太刀 kyuukei; douji(30,-15,180); kyuukei; uppen;//一画目終了 kyuukei; douji(25,-20,600); kyuukei; downpen; kyuukei; tekubimigi(30,150); kyuukei; uppen;//二画目終了 kyuukei; douji(20,-20,600); kyuukei; downpen; kyuukei; douji(-20,25,250); kyuukei; uppen;//三画目終了 } sub uenoyatu(){//添の上のほうを書き始める douji(-25,25,1000); kyuukei; downpen; kyuukei; douji(-32,20,400);//四画目終了 ここからアームがおかしくなる kyuukei; uppen; douji(-25,30,200); kyuukei; downpen; kyuukei; douji(25,17,400);//五画目終了 kyuukei; uppen; douji(20,-20,400); kyuukei; downpen; kyuukei; douji(-40,20,350);//六画目終了 kyuukei; uppen; douji(30,-15,300); kyuukei; downpen; kyuukei; douji(18,30,300);//七画目終了 kyuukei; uppen; } sub syoumodoki(){//添の下の小の部分を書き始める douji(-30,-30,200); kyuukei; downpen; kyuukei; douji(-35,30,400); kyuukei; douji(10,-30,260);//八画目終了 kyuukei; uppen; hijihidari(30,400); kyuukei; downpen; kyuukei; douji(-30,35,200);//九画目終了 kyuukei; uppen; tekubimigi(30,300); kyuukei; downpen; kyuukei; hijimigi(35,200);//十画目終了 kyuukei; uppen; tekubimigi(30,100); kyuukei; downpen; kyuukei; hijimigi(35,150);//十一画目終了 kyuukei; } task main(){ sanzui(); kyuukei; kyuukei; uenoyatu(); kyuukei; kyuukei; syoumodoki(); OnRev(OUT_A,10);//ペンを上げて終了 Wait(2000); }
注)時計まわりに90度回転させて見るのが正しい見方である。
ロボットの組み立て時間 約4時間
プログラム作成時間 約13時間
レポート作成時間 約2時間半
ここでは前に示されたような字を描くロボットの製作過程での克服した点、その反対に克服できなかった点を述べていく。
グループ三人で集まり自分が思い描く書道ロボットを説明していき、どのロボットが漢字を上手く描くことが出来るかを考え、意見を一致させて作りだすことが出来た。頭の中ではどんな字も描けるロボットになっていました。
この時に考えられる最良の策を試しているので反省点は無い
メンバーが様々な問題に気づき始めました
複雑な動きをするようになり現れた問題を解決していく
初期に解決出来なかった問題はまだ解決出来ないまま諦め、最善の策を見つけることにした。
プログラムを組む前のロボットを造る過程でどのようなプログラムを作り動かすのか、それは簡単なプログラムなのか、繰り返しの動作が有効なのかなど色々なことを考えていかなければならないということを痛感しました。
困難だと感じたら立ち止まり、続けるべきか否かをゆっくりと考え、諦めることを躊躇しないということも重要だと思いました。