[[2019a/Member]]
さっさきだいすけ

目次
#contents

*課題について [#y2bb50b9]

詳しくはリンクを参照[[2019a/Mission1]]

*ロボットについて [#ua5eff2d]
-僕たちは、今回の課題の書道ロボットを印刷機のような動きをするロボットに仕上げた。このロボットを組み立てる際に最も工夫した点は、筆を動かすロボットとそのロボットを載せて動く台車ロボットに分離した所だ。分離させることによってタイヤの向きを横と縦の動きを同時に行うことができるために斜めの移動がとても楽になった。「信州」という文字は人偏に斜めの線があるために考案した。また、歯車に噛み合うようなレールがなかったので細長いパーツを使い、その上をロボットが走るようにした。その際、その道からロボットが落ちないようにレゴパーツを使って方向を固定した。それによってまっすぐに動かすことができた。

#ref(./ロボットの写真1.jpg)
       ↑ レールの上にロボットを置き、後方をレゴパーツで固定してある

-また、筆ペンを上下する際に、モーター1つで上下運動ができるようにパーツを考えて組み立てた。そのおかげで、紙にペンを近づける際により精密に高さを調節することができた。更に、タイヤの動力をモーター1つで全体に伝えるために、棒をたくさん繋いで回るようにした。よって、モーターの動力が偏ることがなく、台車ロボが傾いていかなかった。

#ref(./ロボットの写真2.jpg)

-完成した「信州」がこちら ↓

#ref(./信州.jpg)
-少し危なかったが、読めるようにはなったので良かった思う。

*プログラムについて [#u74f8a18]
 #define penUP OnRev(OUT_A,40);Wait(1000);
 
 #define penDWN OnFwd(OUT_A,40);Wait(1000);
 
 void dlLD(long t)
 
 {
 
     OnFwd(OUT_B,16);
 
     OnFwd(OUT_C,20);
 
     Wait(t);
 
     Off(OUT_BC);
 
 }
 
 void dlRD(long t)
 
 {
 
     OnRev(OUT_B,20);
 
     OnFwd(OUT_C,20);
 
     Wait(t);
 
     Off(OUT_BC);
 
 }
 
 void godown(long t)
 
 {
 
     OnFwd(OUT_C,20);
 
     Wait(t);
 
     Off(OUT_C);
 
 }
 
 void goup(long t)
 
 {
 
     OnRev(OUT_C,20);
 
     Wait(t);
 
     Off(OUT_C);
 
 }
 
 void goright(long t)
 
 {
 
     OnRev(OUT_B,20);
 
     Wait(t);
 
     Off(OUT_B);
 
 }
 
 void goleft(long t)
 
 {
 
     OnFwd(OUT_B,20);
 
     Wait(t);
 
     Off(OUT_B);
 
 }
 
 task main()
 
 {
 
     goleft(1379);
 
     penDWN;
 
     dlLD(638);//1to2
 
     penUP;
 
     godown(2340);//2to3
 
     penDWN;
 
     godown(319);//3to4
 
     penUP;
 
     godown(638);//4to5
 
     goright(310);//4to5
 
     penDWN;
 
     goup(1596);//5to6
 
     penUP;
 
     goup(638);//6to7
 
     penDWN;
 
     goup(1489);//7to8
 
     penUP;
 
     goright(310);//8to9
 
     godown(2965);//8to9
 
     penDWN;
 
     godown(319);//9to10
 
     penUP;
 
     godown(638);//10to11
 
     goright(310);//10to11
 
     penDWN;
 
     goup(1596);//11to12
 
     penUP;
 
     goright(510);//12to13
 
     godown(638);//12to13
 
     penDWN;
 
     godown(319);//13to14
 
     penUP;
 
     godown(738);//14to15
 
     goright(310);//14to15
 
     penDWN;
 
     goup(1596);//15to16
 
     penUP;
 
     goup(638);//16to17
 
     penDWN;
 
     goup(800);//17to18
 
     goleft(941);//18to19
 
     godown(800);//19to20
 
     goright(941);//20to21
 
     penUP;
 
     goup(864);//21to22
 
     penDWN;
 
     goleft(941);//22to23
 
     penUP;
 
     goup(419);//23to24
 
     penDWN;
 
     goright(941);//24to25
 
     penUP;
 
     goup(419);//25to26
 
     penDWN;
 
     goleft(941);//26to27
 
     penUP;
 
     goup(419);//27to28
 
     goright(419);//27to28
 
     penDWN;
 
     dlRD(212);//28to29
 
     penUP;
 
     Off(OUT_ABC);
 
 }

-このプログラムを考えるときに僕たちは、どれだけ簡単に書けるかを気にしながらやった。最初に、#defineを用いてペンの上げ下げを定義した。ロボットの説明で示したように、モーターを1つしか使っていない分内容が書きやすかった。コマンドの名前をわかりやすくしておくことで間違えづらくもした。またvoidを各所に用いることでプログラムをより簡略化した。以上のことから、プログラミングの時間がそこまでかからなかったと思うし、訂正するのも簡単だった。
-動きを考える際、無駄な動きがあるとプログラムにも無駄が生じると思い、書き順を考えてなるべく同じ方向に動くようにした。更に、動く長さを等しくできるところは同じにした方がいいと思い、揃えらえれるところは揃えた。また、縦の動きは縦の動き、横の動きは横の動きで揃えられるところを揃えた。番号を各所に振ることによって後に訂正しやすくもした。よって、プログラムをより見やすることができた。

#ref(./書き順.jpg)

             ↑ 書き順などを示したもの



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS