目次

課題

map3.png

今回の課題は上のマップに配置されたボールを集めてこの中に入れ、それぞれのボールに振り当てられた得点の合計点を競うというもの。
箱の中のボールは一つ8点、両方とれば20点。床のボールは一つ4点、両方で12点。
それに加えて、技術点等々の加算あり。

ロボットの機構・仕組み

zentai3kai.png

ロボットの全体像。

 箱を倒すためのアーム

これを倒して箱を傾け、中のボールを転がす。
傾けやすいように先端に横方向に棒を付ける。

◆О榮阿里燭瓩離癲璽拭

二個独立のモーター。

:ボールを掴むためのハンド

arm3.jpg

メディアムモーターで曲がったブロックを回転させボールを掴み、逆回転させボールを打つためのハンド。
ハンドの反対側についている斜めのブロックは入る時にボールをそろえるためについてる。

ぁДラーセンサー

今回はカラーセンサーが二つ使えるので、より精度を良くライントレースをするために、二つ使った。

プログラム

インポートと接続のなにか

#!/usr/bin/env python3
from ev3dev.ev3 import *
from time import sleep

mR = LargeMotor('outC')
mL = LargeMotor('outA')
csR = ColorSensor('in1')
csL = ColorSensor('in2')
arm = LargeMotor('outD')
hand = MediumMotor('outB')

armは
handは

よく使う動作の定義

def migi(a):
        sleep(1)
        mR.run_timed(speed_sp=100, time_sp=a, stop_action='brake')

def hidari(b):
        sleep(1)
        mL.run_timed(speed_sp=100, time_sp=b, stop_action='brake')

右、左へ曲がる

def bihidari(c):
        mR.run_timed(time_sp=c, speed_sp=100, stop_action='brake')
        mL.run_timed(time_sp=c, speed_sp=-100, stop_action='brake')

def bimigi(d):
        mR.run_timed(time_sp=d, speed_sp=-100, stop_action='brake')
        mL.run_timed(time_sp=d, speed_sp=100, stop_action='brake')

右、左へ本体が回転

def koutai(e):
        mR.run_timed(speed_sp=-100, time_sp=e, stop_action='brake')
        mL.run_timed(speed_sp=-100, time_sp=e, stop_action='brake')

def zensin(f):
        mR.run_timed(speed_sp=100, time_sp=f, stop_action='brake')
        mL.run_timed(speed_sp=100, time_sp=f, stop_action='brake')
        sleep(1)

時間を指定して前進、後退。

def zensin_forever(g):
        mR.run_forever(speed_sp=g, stop_action='brake')
        mL.run_forever(speed_sp=g, stop_action='brake')

速さを指定して前進。

def Trace_Method():
        while True:
                if csL.value() >= 15 and csR.value() >= 15:
                        zensin_forever(100)
                        sleep(0.1)
                elif csL.value() <= 14 and csR.value() >= 15:
                        bihidari(100)
                        sleep(0.1)
                elif csL.value() >= 15 and csR.value() <= 14:
                        bimigi(100)

                elif csL.value() >= 15 and csR.value() <= 14:
                        bimigi(100)
                        sleep(0.1)
                else:
                        mR.stop()
                        mL.stop()
                        sleep(0.1)
                        break

ライントレースするためのメソッド。
右のセンサーが黒に触れたら右に曲がる。左のセンサーが黒に触れたら左曲がる。両方が同時に触れたら止まる。

実際の動きのプログラム

map3kai.png


def main():
       Trace_Method()
       sleep(0.1)
       zensin_forever(100)
       sleep(4)
       mL.stop()
       mR.stop()
       bihidari(1900)
       sleep(2.1)


       Trace_Method()
       sleep(0.1)
       zensin_forever(100)
       sleep(0.3)
       mL.stop()
       mR.stop()

箱を傾け、ボールを回収する

       arm.reset()
       sleep(0.1)
       arm.run_to_rel_pos(position_sp=160, speed_sp=250, stop_action='brake')
       sleep(3)
       arm.reset()
       arm.run_to_rel_pos(position_sp=-160, speed_sp=250, stop_action='brake')
       hand.reset()
       sleep(2)
       arm.reset()
       arm.run_to_rel_pos(position_sp=160, speed_sp=250, stop_action='brake')
       sleep(2)
       hand.run_to_rel_pos(position_sp=80, speed_sp=300, stop_action='brake')#'1'
       sleep(1)
       arm.reset()
       arm.run_to_rel_pos(position_sp=-160, speed_sp=100, stop_action='brake')
       sleep(3)

ゴールに向けて方向転換

       bihidari(2000)
       sleep(3)
       zensin_forever(100)
       sleep(3)
       mR.stop()
       mL.stop()
       sleep(1)


        Trace_Method()
       sleep(1)
       koutai(800)
       sleep(1)
       koutai(800)
       sleep(1)

ゴールを傾け、ボールをシュート

       arm.reset()
       arm.run_to_rel_pos(position_sp=160, speed_sp=120, stop_action='brake')
       sleep(2)
       hand.reset()
       hand.run_to_rel_pos(position_sp=-2000, speed_sp=1000, stop_action='brake')
       sleep(5)
       arm.reset()
       arm.run_to_rel_pos(position_sp=-160, speed_sp=120, stop_action='brake')

問題及びその反省

ライントレースを諦めていて、手動処理が多かったので結果が不安定だった。
ボールを回収するシステムをこの発想でもっと洗練されたものにしたかった。


添付ファイル: filemap3kai.png 7件 [詳細] filezentai3kai.png 6件 [詳細] filemap3.png 9件 [詳細] filearm3.jpg 10件 [詳細] filehand3.jpg 7件 [詳細] fileue3.jpg 3件 [詳細] filezentai3.jpg 4件 [詳細] file2019a-mission3.png 4件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-08-12 (月) 15:39:33