- 追加された行はこの色です。
- 削除された行はこの色です。
[[2017a/Member]]
目次
#contents
*課題について [#s71d076c]
課題概要は[[課題1>2017a/Mission1]]
自宅から駅や大学に行くのに坂ばかりなので、「坂」という漢字にしました。
&ref(2017a/Member/oda/Mission1/坂.jpg,50%,文字);
*ロボットについて [#r6be45eb]
下の写真のようにアーム、本体、本体支えの3パーツに分解できるようにすることで、持ち運びや電池交換がスムーズになるように設計した。
&ref(2017a/Member/oda/Mission1/アーム.jpg,50%,アーム);&ref(2017a/Member/oda/Mission1/本体3.jpg,50%,本体);&ref(2017a/Member/oda/Mission1/支え.jpg,50%,支え);
本体は授業で使用した4輪式のロボットだと小回りが利きづらいと判断したため、2輪式に変更しバランスを保つため後ろに本体の支えをつけるという設計にした。支えの部分は最初小型の補助輪を取り付けて摩擦を少なくするように考えていたが、実際に補助輪を取り付けると、曲がる際に動作の邪魔になってしまいうまくいかなかったため、支えの部分はただ本体を抑えるだけにした。その結果支えの部分が紙をまたぐ際に引っかかってしまいやすいという問題が発生したが、ロボットの制御がしやすいという点や小回りが利きやすいという利点があったためこちらを採用し、本番では紙をセロハンテープで貼り付けることで問題を解決した。
&ref(2017a/Member/oda/Mission1/本体2.jpg,50%,本体);&ref(2017a/Member/oda/Mission1/本体1.jpg,50%,本体);
*プログラムについて [#p58a97e2]
下記のように最初にペンの上げ下げの動作の定義づけを、前進後進を動く秒数を変数化して定義づけをすることでプログラムを短くした。
#define pen_down OnRev(OUT_B);Wait(10);Off(OUT_B); // ペンを下げる動作を定義
#define pen_up OnFwd(OUT_B);Wait(10);Off(OUT_B);// ペンを上げる動作を定義
#define go_forward(t);OnFwd(OUT_AC);Wait(t);Off(OUT_AC); //前進を定義
#define go_back(s);OnRev(OUT_AC);Wait(s);Off(OUT_AC); //後進を定義
今回は二輪式でアームを使用したロボットということもあり、人間が書く時と同じように書き順も正しく書き、文字を書くのはロボットを前進している時のみになるようにプログラムを作った。
アームの重さの関係で1画目から2画目に移る際にアームが下に降りてきてしまったので、途中でアームを上げる動作をプログラムに加えている。
**プログラム全容 [#ibc52283]
#define pen_down OnRev(OUT_B);Wait(10);Off(OUT_B); // ペンを下げる動作を定義
#define pen_up OnFwd(OUT_B);Wait(10);Off(OUT_B);// ペンを上げる動作を定義
#define go_forward(t);OnFwd(OUT_AC);Wait(t);Off(OUT_AC); //前進を定義
#define go_back(s);OnRev(OUT_AC);Wait(s);Off(OUT_AC); //後進を定義
task main()
{
pen_down;//1画目始め
go_forward(40);
pen_up; //1画目終わり
OnFwd(OUT_A);
Wait(135);
Off(OUT_A);
go_forward(100);
OnRev(OUT_C);
Wait(135);
Off(OUT_C);
pen_up;
go_forward(110);
OnRev(OUT_C);
Wait(135);
Off(OUT_C);
go_forward(30);
pen_down;//2画目始め
go_forward(40);
pen_up; //2画目終わり
go_forward(60);
OnFwd(OUT_A);
Wait(135);
Off(OUT_A);
go_back(110);
pen_down;//3画目始め
go_forward(60);
pen_up; //3画目終わり
go_forward(10);
OnFwd(OUT_A);
Wait(135);
Off(OUT_A);
go_forward(30);
OnRev(OUT_A);
Wait(135);
Off(OUT_A);
pen_down;//4画目始め
go_forward(60);
pen_up; //4画目終わり
go_forward(30);
OnRev(OUT_A);
Wait(145);
Off(OUT_A);
go_back(60);
pen_down;//5画目始め
go_forward(100);
pen_up; //5画目終わり
go_forward(60);
OnRev(OUT_C);
Wait(135);
Off(OUT_C);
go_forward(0);
pen_down;//6画目始め
go_forward(50);
Wait(5);
OnRev(OUT_A);
Wait(130);
Off(OUT_A);
pen_up; //6画目終わり
OnFwd(OUT_A);
Wait(135);
Off(OUT_A);
go_forward(40);
OnRev(OUT_A);
Wait(125);
Off(OUT_A);
go_back(40);
pen_down;//7画目始め
go_forward(70);
pen_up; //7画目終わり
}
*振り返りと反省 [#ibaf32b7]
今回設計したロボットは紙の上をロボットが行き来する関係上紙がずれてしまいうまく書けないという問題点を紙をセロテープで張るという今回の課題とは直接関係ない方法で解決することしかできなかった。今後こういった問題に直面した際はなるべくハードの改良やプログラムの工夫で対処できるようにしたい。
本番前の調整の段階で電池が切れてしまい新しい電池に交換した関係で電圧が大きく上昇し、モーターの回転数が増加したため本番前にプログラムの大幅な変更を余儀なくされてしまった。そのせいで、文字が予定よりも大きく書かれてしまうという結果になってしまった。次の課題からはこういったアクシデントにも対応できるよう、モーターの回転数で大きく動作が変動しないようなロボット作りを意識していきたい。