[[2017a/Member] #contents *課題2 下の図のようなコースを各チームで作成し、「ミッション」を遂行するためのロボットを作成せよ。 [#j08c6d2e] #ref(2017a/Member/nami/Mission2/kadai.png,25%.課題2) *コースについて [#ac71f63e] #ref(2017a/Member/nami/Mission2/ev3.jpg,50%.コース) #ref(2017a/Member/nami/Mission2/line.jpg,50%.コース) 上の赤の線のようなコースにしました。 *今回のロボットについて [#a574bebc] #ref(2017a/Member/nami/Mission2/line.jpg,50%.ev3) #ref(2017a/Member/nami/Mission2/ev3.jpg,50%.ev3) 今回のロボットは上の写真のように簡素なものにしましたが工夫した点がいくつかあります。 #ref(2017a/Member/nami/Mission2/ev31.jpg,50%.タイヤ) 上の写真のようにタイヤを一番近くまで近づけることによって小回りできるようにしました。 **ロボットの欠点 [#o4c4dd89] カラーセンサーを固定する所が緩くなっており、カラーセンサーのイチゴ変わることによって値がずれてしまい完走できなくなりました。 *プログラミングについて [#y82a8778] **欠点 [#g6675190] この↓のプログラミングを見てくれ、こいつをどう思う・・・・・ #!/usr/bin/python3 # -*- coding: utf-8 -*- import ev3dev.ev3 as ev3 import time ml=ev3.LargeMotor('outB') mr=ev3.LargeMotor('outA') cs=ev3.ColorSensor('in3') ts=ev3.TouchSensor('in1') while ts.value() == 0: while 1: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <10: ev3.Sound.play('tyokkaku.wav') mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=-150) time.sleep(0.6) mr.stop() ml.stop() break if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) while 2: t1 = time.time() while time.time()-t1 <0.5: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) break while 1: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop( mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <15: ev3.Sound.play('tziro.wav') ml.stop() mr.stop() time.sleep(1) ml.run_forever(duty_cycle_sp=50,speed_sp=-150) mr.run_forever(duty_cycle_sp=50,speed_sp=150) time.sleep(0.3) mr.stop() ml.stop() break if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) while 2: t1 = time.time() while time.time()-t1 <0.5: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() >70 mr.stop( ml.run_forever(duty_cycle_sp=50,speed_sp=150) break while 1: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <15: ev3.Sound.play('tziro.wav') ml.run_forever(duty_cycle_sp=50,speed_sp=150) mr.run_forever(duty_cycle_sp=50,speed_sp=150) time.sleep(0.3) mr.stop() ml.stop() brea if cs.vlue() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) while 1: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <10: t0 = time.time() while time.time()-t0 >1: ml.run_forever(duty_cycle_sp=50,speed_sp=-150) mr.run_forever(dutycycle_sp=50,speed_sp=150) if cs.value() <10: ev3.Sound.play('tziro.wav') ml.run_forever(duty_cycle_sp=50,speed_sp=-150) mr.run_forever(duty_cycle_sp=50,speed_sp=150) time.sleep(0.5) mr.stop() ml.stop() break if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) while 2: t1 = time.time() while time.time()-t1 <2.5: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) break while 1: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,seed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <10: ev3.Sound.play('tyokkaku.wav') mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=-150) time.sleep(0.5) mr.stop() ml.stop() break if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) while 2: t1 = time.time() while time.time)-t1 <3: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_frever(duty_cycle_sp=50,speed_sp=150) if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) break while 1: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <10: ev3.Sound.play('tyokkaku.wav') mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=-150) time.sleep(0.7) mr.stop() ml.stop( break if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) while 2: t1 = time.time() while time.time()-t1 <0.2: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop( mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) break while 1: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <10: ev3.Sound.play('tyokkaku.wav') mr.run_foreve(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=-10) time.sleep(0.7) mr.stop() ml.stop() break if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) while 1: t1 time.time() while time.time()-t1 <2: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) break while 1 if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <10: ev3.Sound.play('tyokkkaku.wav') mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=-150) time.sleep(0.5) mr.stop() ml.stop() break if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) while 1: t1 = time.time() while time.time()-t1 <2: if cs.value() >30 ad cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) break while 1: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150 if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <15: ev3.Sound.play('kousaten.wav') ml.stop() mr.stop( time.sleep(1) ml.run_forever(duty_cycle_sp=50,speed_sp=150) mr.run_forever(duty_cycle_sp=50,speed_sp=150) time.sleep(0.3\ mr.stop() ml.stop() break if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) while 1: t1 = time.time() while time.time()-t1 <2: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) break while 1: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_foreve(duty_cycle_sp=50,speed_sp=150) if cs.value() <15: ev3.Sound.play('kousaten.wav') ml.stop() mr.stop( time.sleep(1) ml.run_forever(duty_cycle_sp=50,speed_sp=150) mr.run_forever(duty_cycle_sp=50,speed_sp=150) time.sleep(0.3) mr.stop() ml.stop() break if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) while 1: t1 = time.time() while time.time()-t1 <1.5: if cs.value() >30 and cs.value() <70: mr.run_forever(duy_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) break while 1 if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <10: t0 = time.time() while time.time()-t0 >1: ml.run_forever(duty_cycle_sp=50,speed_sp=-150) mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <10: ev3.Sound.play('tziro.wav') ml.stop() mr.stop( time.sleep(1) ml.run_forever(duty_cycle_sp=50,speed_sp=-150) mr.run_forever(duty_cycle_sp=50,speed_sp=150) time.sleep(0.5) mr.stop() ml.stop() break if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) while 1: t1 = time.time( while time.time()-t1 <3: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() >70 mr.stop() ml.run_forevr(duty_cycle_sp=50,speed_sp=150) break while 1: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <15: ev3.Sound.play('tziro.wav') ml.run_forever(duty_cycle_sp=50,speed_sp=150) mr.run_forever(duty_cycle_sp=50,speed_sp=150) time.sleep(0.3) mr.stop() ml.stop( brea if cs.value() >70: mr.stop() ml.stop() brea if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) while 1: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_frever(duty_cycle_sp=50,speed_sp=150) if cs.value() <10: t0 = time.time() while time.time()-t0 >1: ml.run_forever(duty_cycle_sp=50,speed_sp=-150) mr.run_forever(dutycycle_sp=50,speed_sp=150) if cs.value() <10: ev3.Sound.play('tziro.wav') ml.run_forever(duty_cycle_sp=50,speed_sp=-150) mr.run_forever(duty_cycle_sp=50,speed_sp=150) time.sleep(0.5) mr.stop( ml.stop() break if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) while 1: t1 = time.time() while time.time()-t1 <1.5: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) break while 1: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <10: t0 = time.time while time.time()-t0 >1: ml.run_forever(duty_cycle_sp=50,speed_sp=-150) mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <10 ev3.Sound.play('tziro.wav') ml.stop() mr.stop() time,sleep(1) ml.run_forever(duty_cycle_sp=50,speed_sp=-150) mr.run_forever(duty_cycle_sp=50,speed_sp=150) time.sleep(0.5 mr.stop() ml.stop() break if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) while 1: t1 = time.time() while time.time()-t1 <3: if cs.value() >30 and cs.value() <70: mr.run_forever(duty_cycle_sp=50,speed_sp=150) ml.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() <30: ml.stop() mr.run_forever(duty_cycle_sp=50,speed_sp=150) if cs.value() >70: mr.stop() ml.run_forever(duty_cycle_sp=50,speed_sp=150) break break ml.stop() mr.stop() すごく長いです()そう!今回のプログラミングの欠点はまったくサブルーチンなどをそて簡略化させていなかったことにあります。あとできれいにしようと思いながらやると結局直せなくなってしますので次回の課題としてはじめからサブルーチンを意識していきたいとおもいます。 **このプログラミングの特徴 [#q3d22d27] やはりこのプログラミングのメリットはロボットがしゃべることですね。今回音声はゆっくり実況などでおなじみSofttalkを使用しました。また、滑らかに移動する為極端で暗いところや明るいところでの急回転は廃止しました。なぜかといいますと直角や交差点に差し掛かったときはいきなり黒や白に変わりますがそれいがいのコーナーで黒から白に変わるところを特になかったからです。これにより滑らかに動かすことに成功しました。 **気になった点 [#g00f0a0c] while関数ではなぜかうまくいかなかったのでbreak関数を使うことによりどうにかしたが、調べてみたとところpythonではwhile関数とfor関数が一緒といわれるが実際は全く違うようでfor関数がc言語で言う所のwhile関数でpythonのwhile関数はやたらめったらに繰り返してしまうためbreak関数なしでやると誤作動が出たようだ。やはりpythonは日本語の資料が少ないと思った。 *次回の課題 [#qa89fb0a] 関数などやサブルーチンをつかいプログラミングの調整をしやすくすることですね