[[2018a/Member/kota]] 目次 #contents ・課題の概要 ・ロボットの説明 ・文字の書き順について ・ロボットの動作・プログラミングについて :ペンの上げ下げ :45度回転(左・右) :90度回転(左・右) :直進と後進 :プログラミングについて ・まとめ :考察・問題点 :感想 *課題の概要 [#ted73f26] 初回の課題は,文字を書くロボットの作成. 詳しい説明としては,合計10画以上となるような漢字を2文字,作成したロボットで書くという内容. 今回は「山岳」と書かせることにした. *ロボットの説明 [#he493118] 今回作ったロボットは,土台となる車体にペンを付けただけのシンプルな構造である.アームのリーチを短くすることで余分にロボットが移動してしまうことを避け,小回りの利く車体を創り上げた.また,アームのリーチを短くすることでペンのブレが抑えられ,直線などが比較的まっすぐ書けるようにできるようにした.また,ロボットが後進する動きで文字を書くことで,ペンと紙との摩擦を減らせるのに加え,突っかかりがかくなるので筆圧が一定に保てるようにした. #ref(IMG_0608.JPG) #ref(IMG_0606 (2).JPG) *文字の書き順について [#w0596d24] 文字の書き順は,ロボットが効率よく進めるような順序を探し,ロボット本体の移動をできる限り最小限に留めることを心掛けた. &ref(IMG_0598 (2).JPG); *ロボットの動作・プログラミングについて [#eb69a538] 今回,プログラミングは一文字一文字微調整しながら文字を書いた.そのため定義する動作が多くなってしまった.うまくまとめる方法を見つけられなかったことが,今回プログラミングをしたうえでの課題だと思った. **ペンの上げ下げ [#h25c42cd] #define down OnFwd(OUT_A,10);Wait(700);Off(OUT_A); //ペンを下げる #define up OnRev(OUT_A,10);Wait(700);Off(OUT_A); //ペンを上げる 様々なペンの上げ下げの動作の結果,ペンの上げ下げを10/1000秒で行ったとき,強すぎることも弱すぎることもなく紙にペンが接触することができた. **45度回転(左・右) [#x89cdff3] #define ffkaitenB OnFwd(OUT_B,35);OnRev(OUT_C,35);Wait(400);Off(OUT_BC); //45度左回転 #define ffkaitenC OnFwd(OUT_C,35);OnRev(OUT_B,35);Wait(400);Off(OUT_BC); //45度右回転 今回のプログラミングでは,45度回転を多用した面が多かった.しかし,ロボットを起動するごとに電池は消耗され,回転角度が回数ごとに変わってしまい,微調整をするのが困難だった. 最終的に,左回転・右回転それぞれが400/1000秒という結果に終着した. **90度回転(左・右) [#e80b56e1] #define nkaitenB OnFwd(OUT_B,35);OnRev(OUT_C,35);Wait(700);Off(OUT_BC); //90度左回転 #define nkaitenC OnFwd(OUT_C,35);OnRev(OUT_B,35);Wait(800);Off(OUT_BC); //90度右回転 45度回転と同様に,電池の消耗などにより回数を重ねるごとに回転の角度が変わり,そこに苦戦した.最終的には,左回転が700/1000秒,右回転が800/1000秒という結果に終着した. **直進と後進 [#ed6aaacc] 今回のロボットでは,ペンの筆圧を一定に保つために,ロボットの後進で文字を書くようにした. #define tyokusin_forward(t) OnRev(OUT_BC,50);Wait(t);Off(OUT_BC); //直進 #define tyokusin_back(s) OnFwd(OUT_BC,50);Wait(s);Off(OUT_BC); //後進 時間は線の長さごとにさまざまであったので,直進・後進の時間をそれぞれtとsと置き,自分で時間を決め,微調節しやすいようにした.しかし,1画1画の微調節や変更点が多く,その部分をまとめることが大変だった. **プログラミングについて [#z9c97489] task main() { down; tyokusin_forward(400); //1画目 up; ffkaitenB; //2画目に移動 tyokusin_back(200); ffkaitenC; down; tyokusin_forward(150); //2画目 up; tyokusin_back(750); //3画目に移動 nkaitenB; tyokusin_forward(600); down; //3画目 tyokusin_forward(400); up; tyokusin_back(750); //4画目に移動 nkaitenC; tyokusin_forward(450); down; //4画目 tyokusin_forward(150); up; ffkaitenC; //5画目に移動 tyokusin_forward(250); down; //5画目 tyokusin_forward(400); up; tyokusin_back(400); //6画目に移動 ffkaitenB; tyokusin_forward(400); down; //6画目 tyokusin_forward(400); up; tyokusin_back(600); //7画目に移動 nkaitenB; tyokusin_forward(700); down; //7画目 tyokusin_forward(700); up; tyokusin_back(600); //8画目に移動 nkaitenB; tyokusin_forward(600); down; //8画目 fftyokusin; up; tyokusin_back(600); //9画目に移動 nkaitenB; tyokusin_forward(600); down; //9画目 tyokusin_forward(450); up; tyokusin_back(750); //10画目に移動 nkaitenB; tyokusin_forward(1000); down; //10画目 tyokusin_forward(250); up; ffkaitenB; //11画目に移動 tyokusin_back(400); ffkaitenC; down; //11画目 tyokusin_forward(250); up; tyokusin_back(600); //12画目に移動 nkaitenB; tyokusin_forward(550); down; //12画目 tyokusin_forward(400); up; tyokusin_back(600); //13画目に移動 nkaitenC; tyokusin_forward(400); down; //13画目 tyokusin_forward(250); up; } 回転の調節などを怠ると,少しの回転不足,少しの回転の行きすぎなどでその後の直線が斜めになってしまい,文字自体がわからなくなってしまうということが多々ありました.そのような誤差をうまくすべての動きで調節することができず,その誤差を埋め合わせることができなかったのが今回の問題だと思いました. (注)プログラミング中の画数は,〈文字の書き順について〉の写真に示されている数字の通りにする. *まとめ [#n687e445] **完成した文字 [#ta59e45b] &ref(IMG_E0597.JPG); 一文字目の「山」はうまく書けたが,二文字目の岳の「丘」の部分で長さの調節や回転の角度の調節が不十分で全体的にはうまく書けなかった.また,ロボットの小回りが利くといいつつも,A4の紙上では大きく動いてしまうので文字自体も大きくなってしまい,バランスが悪くなってしまった. **考察・問題点 [#yf8e1e0a] 今回初めての課題ではロボットはシンプルであるのに対し,前・後ろ・回転など様々な動作を与える必要があったのでプログラミング自体が全体的に複雑になってしまい,思うようにまとめられなかった.微調整をするがゆえに,プログラミングをする中で様々な書き足しをしてしまい,見栄えも悪くなってしまった. 他にも,何度も試行錯誤をしていたので電池の消耗に伴う直進する長さ,回転する角度等を見極めることが難しく,余計に時間がかかってしまうという問題もあった. **感想 [#k88399e6] 今回は微調節をしなければならない箇所が数多くあり,プログラミングが非常に難しかった.そのため,文字が完全にかけず良くない結果に終わってしまった.また,ロボットについて工夫している点が少なかったので,もっとロボットの作成に時間をかけ,外の班と違った工夫を凝らしたものを考えられたらよかったと思う, 次回の課題では今回とは違う,工夫を凝らしたロボットを創り,プログラミングもうまくまとめられたらいいと思う.