[[2017a/Member]

課題2 下の図のようなコースを各チームで作成し、「ミッション」を遂行するためのロボットを作成せよ。

25%.課題2

コースについて

50%.コース

上の赤の線のようなコースにしました。

今回のロボットについて

50%.ev3

今回のロボットは上の写真のように簡素なものにしましたが工夫した点がいくつかあります。

50%.タイヤ

上の写真のようにタイヤを一番近くまで近づけることによって小回りできるようにしました。

ロボットの欠点

カラーセンサーを固定する所が緩くなっており、カラーセンサーのイチゴ変わることによって値がずれてしまい完走できなくなりました。

プログラミングについて

欠点

この↓のプログラミングを見てくれ、こいつをどう思う・・・・・

#!/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()

すごく長いです()そう!今回のプログラミングの欠点はまったくサブルーチンなどをそて簡略化させていなかったことにあります。あとできれいにしようと思いながらやると結局直せなくなってしますので次回の課題としてはじめからサブルーチンを意識していきたいとおもいます。

このプログラミングの特徴

やはりこのプログラミングのメリットはロボットがしゃべることですね。今回音声はゆっくり実況などでおなじみSofttalkを使用しました。また、滑らかに移動する為極端で暗いところや明るいところでの急回転は廃止しました。なぜかといいますと直角や交差点に差し掛かったときはいきなり黒や白に変わりますがそれいがいのコーナーで黒から白に変わるところを特になかったからです。これにより滑らかに動かすことに成功しました。

気になった点

while関数ではなぜかうまくいかなかったのでbreak関数を使うことによりどうにかしたが、調べてみたとところpythonではwhile関数とfor関数が一緒といわれるが実際は全く違うようでfor関数がc言語で言う所のwhile関数でpythonのwhile関数はやたらめったらに繰り返してしまうためbreak関数なしでやると誤作動が出たようだ。やはりpythonは日本語の資料が少ないと思った。

次回の課題

関数などやサブルーチンをつかいプログラミングの調整をしやすくすることですね


添付ファイル: filekadai.png 77件 [詳細] fileev32.jpg 48件 [詳細] fileev31.jpg 73件 [詳細] fileev3.jpg 66件 [詳細] fileline.jpg 80件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-08-14 (月) 00:10:30 (742d)