まず初めにこれが私たちが作ったロボットの説明をしよう。
今回はロボットが自ら移動し字を書くロボットを作成した。
この形のロボットにした理由は制作が簡単でありほかの部分に時間をかけられると考えたためである。
タイヤの部分はこうなっている。
3輪にすることで小回りがきくようになっている。
アームはこのようになっている。
今回は筆ペンを使用したいと考えたため押し付けるタイプではなく筆を紙に置くといったようになるアームにした。 このようにアームの真下に筆がこないようにし押し付けてしまうことを防いだ。
アームはこのように動き筆の上げ下げを行う。
今回は私の名前に入っている「吾」という字を書こうと思う。
ロボットの移動をできるだけ少なくするために
このようにすべての横棒を書いてから縦棒をすべて書いた
#define go(t) OnFwd(OUT_B,32);OnFwd(OUT_C,30);Wait(t); Off(OUT_BC);Wait(1000); // 前進 #define back(t) OnFwd(OUT_B,32);OnFwd(OUT_C,30);Wait(t); Off(OUT_BU);Wait(1000); // 後進 #define turnl OnFwd(OUT_B,45);OnFwd(OUT_C,-45);Wait(570);Off(OUT_BC);Wait(1000); // 90°左回り #define turnl OnFwd(OUT_B,-45);OnFwd(OUT_C,45);Wait(570);Off(OUT_BC);Wait(1000); // 90°右回り #define up OnFwd(OUT_A,30);Wait(200);Off(OUT_A);Wait(1000); // 筆上げ #define down OnFwd(OUT_A,-10);Wait(300);Off(OUT_A);Wait(1000); // 筆下げ
task main () { down; // 1本目 back(700); up; turnl; // 移動 go(250); tuenr; go(600); down; // 2本目 back(600); up; back(200) // 移動 turnl; go(250); tuenr; go(1000); down; // 3本目 back(1000); up; turnl; // 移動 go(250); tuenr; go(800); down; // 4本目 back(600); up; turnl; // 移動 go(250); tuenr; go(600); down; // 5本目 back(600); up;
go(400); // 移動 OnFwd(OUT_B,45); Wait(1100); Off(OUT_B); Wait(1000); back(1400); down; // 1本目 back(300); up; back(250); // 移動 down; // 2本目 back(250); up; turnl; // 移動 back(500); tuenr; back(1500); down; // 3本目 back(500); up; back(250); // 移動 down; // 4本目 back(250); up; }
少し不格好になっていしまったが書くことができました。
今回難しかったところ苦労したところは、まず電池の残量によってロボットの進む距離が変わってしまうことだった。細かい調整が大変だった。
またロボットの重心が右に偏っていたために左右のモーターの回転数が変わってしまった。これは左右のモーターの出力を調節した。
また「口」などの書き始めなどをそろえることも大変であった。
今回は初めてのプログラミングであった苦労した部分も多くあったが楽しくできた。次回はロボットの製作にもっと時間を割きさらに高度な仕組みのロボットを製作したい。