[[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]
関数などやサブルーチンをつかいプログラミングの調整をしやすくすることですね

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS