[[2019a/Member]] 目次 #contents *課題について [#zec7920d] 自分たちの出身地が神戸だったので,今回の課題にその地名を使いました. *ロボット本体の説明 [#y9f1b9f5] まず最初に元となるような形を作り,その後何回か作り直し今の形に至りました.安定性を図るために後輪を一つ増やそうと試みましたが,回転の際に後輪同士がぶつかったり重心よりも十分に距離をとることができなかったので結局三輪に落ち着きました.筆を上げる仕組みはいたってシンプルで,モーターに棒状のパーツをつけた歯車をつけ,そこに輪ゴムで筆記用具を固定しました.(以下の添付ファイルを参照) http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&pcmd=open&file=IMG_3567.PNG&refer=2019a%2FMember%2Fkimu%2FMission1 *プログラムの説明 [#jfa17a99] 全体的な流れとして,まず神戸と書く際に必要な手順をまとめ,次にサブルーティンを使用し数字だけ入れる状態に設定し,最後に実際に動かしながら微調整をしました.また動作の際に誤差が出ないよう「Wait」を使用し一つずつ動作を行うようにしました.以下は実際に使用したプログラムです. まずここでサブルーティンなどを使いある程度のプログラムを設定します. #define PEN_TIME 100 /ペンを上に上げ下げするためのモーターの稼働時間 #define pen_rize OnRev(OUT_A,50);Wait(PEN_TIME);Off(OUT_A); /ペンを上げる #define pen_down OnFwd(OUT_A,50);Wait(PEN_TIME);Off(OUT_A); /ペンを下げる #define W Wait(700); /誤差軽減のための動作と動作の間の待ち時間 sub rotation_right(long t) /右回転 { OnFwd(OUT_C,50);OnRev(OUT_B,50);Wait(t);Off(OUT_BC); } sub rotation_left(long t) /左回転 { OnFwd(OUT_B,50);OnRev(OUT_C,50);Wait(t);Off(OUT_BC); } sub go_straight(long t) /前進 { OnFwd(OUT_BC,50);Wait(t);Off(OUT_BC); } sub back_straight(long t) /後退 { OnRev(OUT_BC,50);Wait(t);Off(OUT_BC); } sub curve_right(long t) /右前にカーブ { OnFwd(OUT_C,50);OnFwd(OUT_B,15);Wait(t);Off(OUT_BC); } sub back_curve_right(long t) /上の逆 { OnRev(OUT_C,50);OnRev(OUT_B,15);Wait(t);Off(OUT_BC); } 次に「神」の文字を書くのに必要な手順を数字を考えずにそのままプログラムにします.その後,数字を入れる→実際に動かす→数字を変えて微調整,を繰り返しました. task main() { go_straight(100); W; pen_rize; W; go_straight(100); W; rotation_right(550); W; go_straight(100); W; pen_down; W; back_straight(100); W; rotation_left(400); W; curve_right(700); W; pen_rize; W; back_curve_right(450); W; rotation_left(400); W; pen_down; W; go_straight(100); W; pen_rize; W; back_straight(100); W; rotation_right(400); W; pen_down; W; go_straight(450); W; pen_rize; W; rotation_left(600); W; go_straight(200); W; rotation_left(600); W; go_straight(350); W; 「戸」の字も同様の作業を繰り返します. pen_down; W; go_straight(200); W; rotation_right(650); W; go_straight(250); W; rotation_right(650); W; go_straight(200); W; rotation_right(650); W; go_straight(250); W; pen_rize; W; rotation_right(650); W; go_straight(150); W; rotation_right(650); W; pen_down; W; go_straight(250); W; pen_rize; W; back_straight(125); W; rotation_right(600); W; back_straight(250); W; pen_down; W; go_straight(600); W; pen_rize; W; go_straight(200); W; rotation_right(600); W; pen_down; W; go_straight(300); W; pen_rize; W; rotation_left(600); W; go_straight(150); W; rotation_left(600); W; pen_down; W; go_straight(300); W; rotation_right(650); W; go_straight(150); W; rotation_right(650); W; go_straight(300); W; pen_rize; W; rotation_left(650); W; back_straight(150); W; pen_down; W; go_straight(150); W; curve_right(500); } *結果 [#s93a59de] 多少のズレはあったものの、無事文字を書くことができました。(以下の添付ファイルを参照) http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&pcmd=open&file=IMG_3519%20%281%29.PNG&refer=2019a%2FMember%2Fkimu%2FMission1 *考察 [#t61ba6f8] 誤差の出ないようにプログラムしたつもりだったのですが,実際に動かしてみると大きくずれてしまうことが多々ありました.車型のロボットだと動作の際に全体を動かしてしまうので誤差が起きやすかったようです.ペン自体を横移動させるロボットのほうが動かす部分が少なく,反動も小さくなるのでもっと考えてから製作に取り掛かるべきでした.他にも誤差を少なくすることのできる構造もあると思うので,次回からはプログラムだけでなくロボットの構造ももっと工夫するようにしたいと思いました.