- 追加された行はこの色です。
- 削除された行はこの色です。
[[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)
↑ 書き順などを示したもの