*課題2〜ライントレース・空き缶運び〜 [#k849e100] #contents **課題内容 [#d5344306] 次のコースの黒い線に沿って動き、350mlの空き缶(黄色で表示)を移動させるロボットを製作せよ。 **コース紹介 [#sabd6b8d] 今回、自分が挑戦するコースは図のようである。 #ref(2018a/Member/yokouchi/Mission2/Inked2018a-mission2_LI.jpg,80%,コース) もう少し詳しく説明を加える。 +Aをスタート +Bを右折 +Jで一時停止の後、Yの空き缶をキャッチしてJに戻る +JからKに向かい、Kを直進 +Lを直進 +Iを左折 +Hで一時停止の後、左折 +Gで一時停止の後、右折 +Fで一時停止の後、右折 +Eを直進 +Dで一時停止の後、空き缶をXに置いてDに戻り、Cに向かう +Cで一時停止の後、直進 +Bを直進 +Aで停止 ※なお一時停止の指定がある場所は、1秒間停止 **今回使用するロボット [#e3215a92] 今回は、ライントレースが主な動きになってくるため、あまり複雑化しないよう、EV3の基本形に少しだけ手を加えた形にした。 この写真は缶をつかむ部分である。MediumMotorを用いて缶を確実につかむため、二つのアームが連動するようにした。 光センサーの位置はアームの都合上、中央に取り付けることはできなかった。 そのため、左側にあることを意識したプログラミングをしなければならなくなった。一つ目の失敗である。 超音波センサーは、写真の通りアームの中央に取り付けた。超音波センサーは中央に取り付けなければならないため、仕方なく縦向きで取り付けた。 **プログラムの概要 [#meb15068] ***プログラムの導入 [#r727f9d8] 今回、Python言語を用いてプログラミングを行った。 以下は導入部分である。 #!/usr/bin/env python3 from ev3dev.ev3 import * import time ml = LargeMotor('outA') -左駆動輪をmlとおく mr = LargeMotor('outB') -右駆動輪をmrとおく arm = MediumMotor('outC') -缶を掴む腕の部分をarmとおく cs = ColorSensor('in1') -カラーセンサーをcsとおく us = UltrasonicSensor('in2') -超音波センサーをusとおく ***定義 [#x09aae04] -まず初めにアームの開閉の動作の定義である。beforeを開く動作、afterを閉じる動作としている。 def before_catch(): arm.run_forever(speed_sp=-60) time.sleep(2) arm.stop() def after_catch(): arm.run_forever(speed_sp=60) time.sleep(1.5) arm.stop()