[[2019a/Member]] *目次 [#l28ec6cc] #contents *課題について [#rf6b82fe] **課題内容 [#j3ad3bd0] 〇これまで住んだことのある都道府県名、市町村名、地区名などの中から2文字以上、かつ合計10画以上のものを選び、それをA4の紙を書くロボットを製作する。~ ・ひとりにつき一つ以上のプログラムを作成すること。~ ・ペン以外はキットに含まれる部品を使うこと。~ ・キットに付属の高価な輪ゴムは切れやすいので切れないよう に細心の注意を払うこと。~ ・改良や調整をしやすくするため、ロボット本体だけでなく、 プログラムについても可能な部分についてはサブルーチンや 関数、マクロなどを使って部品に分けること。~ **選んだ文字 [#ac6dbada] 僕が選んだ文字は一度は行ってみたいと思っている「品川」である。~ (決して書きやすそうだったからではない) *ロボットについて [#mce84ec7] #ref(2019a/Member/kou/Mission1/IMG_1891.JPG,8%) ロボットの全体像は上の通りである。~ ロボット全体を安定させることを重視したため、見た目が少しいびつになってしまった。~ &ref(2019a/Member/kou/Mission1/IMG_1894.JPG,5%);&ref(2019a/Member/kou/Mission1/IMG_1895.JPG,5%);~ ペンの横移動をできるだけ幅広く動かせるように腕を長くすることで文字が小さくなりすぎないようにした。~ また、モーターの回転が早すぎ、遅すぎないように調整するのが難しかった。 &ref(2019a/Member/kou/Mission1/IMG_1897.JPG,5%);&ref(2019a/Member/kou/Mission1/IMG_1898.JPG,5%);~ MediumMotorを45度動かすとぴったりペンを下げることができる。逆に-45度動かすことでペンを上げることができる。~ 一番苦労したと思われるペンの固定であるが、ゴム製のタイヤと両サイドからペンを押さえ込むような形で工夫することでペンの上げ下げでは揺れたり、落ちたりしないようにすることができた。 *プログラムについて [#ca6ead6b] **モジュールのインポートとインスタンスの作成部分 [#je2840d9] #!/usr/bin/env python3 from ev3dev.ev3 import * from time import sleep #sleep関数をインポート x = LargeMotor('outA') #車輪を動かすモーターをx y = LargeMotor('outB') #ペンの横移動をするモーターをy z = MediumMotor('outC') #ペンの上げ下げをするモーターをz とした。 **関数の作成部分 [#va2c16d1] モーターをリセットする関数である。 def motor_ketu(): x.reset() y.reset() z.reset() 車輪を動かす関数である。aとbの変数を用いて調整しやすいようにした。~ def move_mae(a,b): x.run_forever(speed_sp=a, stop_action='hold') sleep(b) x.stop() ペンの横移動の関数である。スピードは100で安定した。 def yoko_migi(c): y.run_forever(speed_sp=90, stop_action='hold') sleep(c) y.stop() def yoko_hidari(d): y.run_forever(speed_sp=-100, stop_action='hold') sleep(d) y.stop() ペンの上げ下げの関数である。回転する角度45度にした。 def fude_age(): z.run_to_rel_pos(position_sp=-45, speed_sp=200, stop_action='brake') sleep(1) def fude_sage(): z.run_to_rel_pos(position_sp=45, speed_sp=200, stop_action='brake') 上で定義した関数をもとに「口」を書く関数にさらにまとめた。車輪のスピードは70に設定した。 def kuti(): fude_sage() move_mae(70,1) yoko_migi(1/2) move_mae(-70,1) yoko_hidari(1/3) **文字の作成 [#pee3b293] ***品について [#a9b86d8a] motor_ketu() kuti() #1つ目の口部分 yoko_hidari(5/8) move_mae(-80,1) #位置を変えるため車体を後退する kuti() #2つ目の口部分 yoko_migi(5/8) kuti() #3つ目の口部分 ***川について [#re7ec109] motor_ketu() yoko_hidari(1/2) move_mae(-60,1) #位置を変えるため車体を後退する fude_sage() move_mae(-150,1) #1画目 fude_age() yoko_migi(1/2) #1画目との間隔をあける fude_sage() move_mae(120,1) #2画目 fude_age() yoko_migi(1/3) #2画目との間隔をあける fude_sage() move_mae(-180,1) #3画目 fude_age() **今回書けた字 [#td5456af] &ref(2019a/Member/kou/Mission1/IMG_E1899.JPG,8%); 失敗作~ &ref(2019a/Member/kou/Mission1/IMG_1901.JPG,8%); 成功~ 口部分のバランスをとるのが難しかった。~ 川のはらいの部分まで再現できなった。~ [[https://twwiter.com/fy2ice9yslqaqsj/1135138968129826816?s=21]] *感想・反省 [#ab161cdf] プログラミングは右も左も分からない状態からのスタートだったので、プログラミングのほとんどを相方に頼りっきりになってしまった。本当に申し訳なく思います。もう少しロボットの製作時間を短く出来ればプログラミングも丁寧にできたと思います。次回の課題ではこのようなことにならないように計画的に進めていきたいです。