- 追加された行はこの色です。
- 削除された行はこの色です。
目次
#contents
*課題について [#c3a9ed2f]
詳しくは課題([[2017a/Mission1]])を参照。
松本での大学生活を表す一文字ということで、これからの大学生活でいろいろなことを貪欲に求めていきたいと思い、この「求」という字を選んだ。
松本での大学生活を表す一文字ということで、これからの大学生活でいろいろなことを貪欲に求めていきたいと思い、「求」という字を選んだ。
*ロボット本体 [#p69d1362]
**車体部分 [#le1335c6]
ペンの上下運動の際に、ペンがロボットの本体とぶつからないように縦長の構造にした。
青丸で示したペン部分が赤矢印のような上下運動の際に、ペンがロボット本体とぶつからないように縦長の構造にした。
ペン部分はロボット本体の中心に取り付けてあるモーターで動かす
#ref(2017a/Member/Kyou/Mission1/全体写真.jpg,75%)
#ref(2017a/Member/Kyou/Mission1/全体の感じ.jpg,75%)
**ペン部分 [#le269b89]
ペンが紙に触れる際に、タイヤとタイヤの中心で紙に触れるように設計した。その理由は左タイヤと右タイヤを同時にそれぞれ反対方向に回転させれば、車体の回転の際、ペンと紙との接する面の位置のずれが軽減されるからである。
ペンが紙に触れる際に、タイヤとタイヤの中心(下の写真にはタイヤの中心と示す)で紙に触れるように設計した。その理由は左タイヤと右タイヤを同時にそれぞれ反対方向に回転させれば、車体の回転の際、紙から見たペンの位置のずれが軽減されるからである。
#ref(2017a/Member/Kyou/Mission1/ペン部分.jpg,75%)
*文字について [#v8cdc4af]
今回はプログラミングの都合上以下の写真に示す書き順にした。
今回はプログラミングを簡単にするため以下の写真に示す書き順にした。
なお、この字は私が手書きしたものでありロボットが書いた字ではない。
#ref(2017a/Member/Kyou/Mission1/書き順.jpg,75%)
*プログラム [#vc242f80]
改良や調整をしやすくするため、1画目から7画目までをサブルーチンでプログラムした。
ペンを上げたり下ろしたりするような単純な作業もサブルーチンでプログラムした。
ただし、前進や回転などはモーターを回す時間が微妙に異なるためサブルーチンでプログラムすることはできなかった。
sub penup () //ペンを上げる
{
OnRev(OUT_A,20);
Wait(400);
Off(OUT_A);
}
sub pendown () //ペンを下ろす
{
OnFwd(OUT_A,20);
Wait(400);
Off(OUT_A);
}
sub ikkakume () //1画目
{
OnFwd(OUT_BC,30);
Wait(200);
Off(OUT_BC);
penup();
OnFwd(OUT_B,20);
OnRev(OUT_C,20);
Wait(3000);
Off(OUT_B);
Off(OUT_C);
pendown();
}
sub nikakume () //2画目
{
OnFwd(OUT_BC,30);
Wait(1000);
Off(OUT_BC);
penup();
OnFwd(OUT_C,20);
OnRev(OUT_B,20);
Wait(3250);
Off(OUT_C);
Off(OUT_B);
OnFwd(OUT_BC,30);
Wait(200);
Off(OUT_BC);
OnFwd(OUT_BC,30);
Wait(400);
Off(OUT_BC);
pendown();
}
sub sankakume () //3画目
{
OnFwd(OUT_BC,30);
Wait(200);
Off(OUT_BC);
penup();
OnFwd(OUT_BC,30);
Wait(200);
Off(OUT_BC);
OnFwd(OUT_C,20);
OnRev(OUT_B,20);
Wait(3000);
Off(OUT_C);
Off(OUT_B);
pendown();
}
sub yonkakume () //4画目
{
OnFwd(OUT_BC,30);
Wait(1000);
Off(OUT_BC);
penup();
OnFwd(OUT_C,20);
OnRev(OUT_B,20);
Wait(3250);
Off(OUT_C);
Off(OUT_B);
OnFwd(OUT_BC,30);
Wait(300);
Off(OUT_BC);
pendown();
}
sub gokakume () //5画目
{
OnFwd(OUT_BC,30);
Wait(200);
Off(OUT_BC);
penup();
OnFwd(OUT_BC,30);
Wait(500);
Off(OUT_BC);
pendown();
}
sub rokkakume () //6画目
{
OnFwd(OUT_BC,30);
Wait(200);
Off(OUT_BC);
penup();
OnFwd(OUT_C,20);
OnRev(OUT_B,20);
Wait(3500);
Off(OUT_C);
Off(OUT_B);
OnFwd(OUT_BC,30);
Wait(600);
Off(OUT_BC);
OnFwd(OUT_C,20);
OnRev(OUT_B,20);
Wait(2950);
Off(OUT_C);
Off(OUT_B);
OnFwd(OUT_BC,30);
Wait(600);
Off(OUT_BC);
pendown();
}
sub nanakakume () //7画目
{
OnFwd(OUT_BC,30);
Wait(400);
Off(OUT_BC);
penup();
}
task main ()
{
ikkakume();
nikakume();
sankakume();
yonkakume();
gokakume();
rokkakume();
nanakakume();
}
*まとめ [#ed2e1475]
**結果 [#r11e369e]
赤丸で示したところは、線がたくさん重なり読みにくくなってしまった。
青丸で示したところは、左を長くしたほうが字がきれいに見えると思い、長くしたが余りにも長すぎてしまった。
#ref(2017a/Member/Kyou/Mission1/結果.jpg,75%)
**感想 [#u67075f5]
ペンに当たらないようにするために全体的にロボットを高く設計した結果、重心が高くなりすぎてしまい回転が安定しなくなってしまうという症状が出た。数値から計算して理論通りにプログラミングしてもそのときの電池残量などによって誤差が生じてしまい、しっかりとそのときの状況に合わせたプログラミングが必要であると感じた。