2016b/Member/being/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
目次
#contents
*はじめに [#neee5304]
今回はまったく余裕がなく、新しいことに多数挑戦したため自...
今回はev3dev(2016-10-17版)にMQTTをインストールした。前回...
*課題3について [#f778acdb]
今回の課題は野球である。具体的に何を行うかといえばピッチ...
自分はピッチャーを作成し、プログラムを行った。
**動きについて [#u7f552fa]
今回の機体のコンセプトはロマンである。時間はなかったが使...
#ref(2016b/Member/being/Mission3/第一段階.jpg,50%,第一段階)
前回ジャイロセンサーを使えるようになたため今回はジャイロ...
次に機体後部に取り付けたカラーセンサーで黒い線の数を数え...
#ref(2016b/Member/being/Mission3/第2段階.jpg,100%,第2段階)
4本目の線を検知したら機体を止める。この時、高速で移動して...
*機体について [#v9b964a0]
**移動について [#nce5c464]
#ref(2016b/Member/being/Mission3/機体概観1.jpg,100%,機体...
サイズ制限に収めるために機体は縦に長く、重心が高くなって...
#ref(2016b/Member/being/Mission3/P_20170207_170041.jpg,50...
機体の後部にカラーセンサーを搭載している。
**再装填機構について [#aba113e4]
#ref(2016b/Member/being/Mission3/P_20170207_170249.jpg,50...
ここに玉を落とし込むと、指してあるピンによって適当な位置...
#ref(2016b/Member/being/Mission3/P_20170207_170259.jpg,50...
再装填を行う時以外は再装填アームが玉を押し上げることによ...
#ref(2016b/Member/being/Mission3/P_20170207_170241.jpg,10...
このアームはただ往復動作をするだけである。あまり強度はな...
**投球について [#s4379974]
#ref(2016b/Member/being/Mission3/P_20170207_170203.jpg,10...
ここにあるピンを用いて玉の置き場所を確定させる。
#ref(2016b/Member/being/Mission3/P_20170207_170309.jpg,10...
設置された玉をこのアームで打ち出す。モーターの出力で飛距...
*プログラムについて [#o32c6568]
以下のプログラムは''CC BY-SA 4.0''とします。ライセンスは[...
**自作関数について [#g43092a9]
***move.py [#pf33231b]
#!/usr/bin/env python3 #このプログラムはpython3で記...
import ev3dev.ev3 as ev3
import time
mr = ev3.LargeMotor('outB') #ここから↓
ml = ev3.LargeMotor('outC')
cs = ev3.ColorSensor('in1')
gy = ev3.GyroSensor('in2') #ここまで↑テンプレ
limen = 20 #ライトセンサーの閾値、やは...
def move_to_Q(): #スタート...
cs_count= 0 #カラーセ...
gy_old = gy.value() #ジャイロ...
while abs(gy.value() - gy_old) < 45: #45度右旋...
mr.run_forever(speed_sp=200)
ml.run_forever(speed_sp=-200)
mr.stop()
ml.stop()
while cs_count < 4: #4回目の黒...
print(cs.value()) #デバッグ...
mr.run_forever(speed_sp=500) #大体50%の...
ml.run_forever(speed_sp=500)
if cs.value() < limen: #カラーセ...
cs_count = cs_count + 1
while cs.value() < limen: #カラーセ...
print(cs_count) #デバッグ...
mr.stop()
ml.stop() #出力停止
time.sleep(1) #機体が縦...
mr.reset()
ml.reset()
while cs.value() > limen: #以下、動...
mr.run_forever(speed_sp=-200)
ml.run_forever(speed_sp=-200)
mr.stop()
ml.stop()
mr.run_to_rel_pos(position_sp=180,speed_sp=200, stop...
ml.run_to_rel_pos(position_sp=180,speed_sp=200, stop...
time.sleep(1)
while abs(gy.value() - gy_old) < 135:
mr.run_forever(speed_sp=200)
ml.run_forever(speed_sp=-200)
mr.stop()
ml.stop()
mr.reset()
ml.reset()
time.sleep(1)
while cs.value() > limen:
mr.run_forever(speed_sp=-200)
ml.run_forever(speed_sp=-200)
mr.run_to_rel_pos(position_sp=120, speed_sp=200, sto...
ml.run_to_rel_pos(position_sp=120, speed_sp=200, sto...
***test2.py [#f95ab6b9]
#!/usr/bin/env python #このプログラムはpyth...
import paho.mqtt.client as mqtt #paho(python用のMQTT)...
from time import sleep
import ev3dev.ev3 as ev3
import time
import move as move
host = 'localhost' #こちらはpublisher兼b...
port = 1883 #ポートはデフォルト
topic = 'pi/st' #トピックはpitcher/st...
arm = ev3.LargeMotor('outA') #アームはアーム、...
bolthandle = ev3.MediumMotor('outD') #再装填用のアーム...
def reset_arm(t): #アームの位置をリ...
arm.run_forever(speed_sp=60)
time.sleep(t) #アームを機体側に...
arm.stop()
arm.run_forever(speed_sp=-5) #ホームページ作成...
time.sleep(0.5) #まず、パワーの符...
def Feuer(): #ドイツ語で発射(f...
arm.run_forever(speed_sp=-600) #最初は全力の1050...
time.sleep(0.8)
arm.stop()
def nachladen(): #上に同じく、...
bolthandle.run_forever(speed_sp=60) #単純に一往復...
time.sleep(2)
bolthandle.stop()
bolthandle.run_forever(speed_sp=-80)
time.sleep(2)
bolthandle.stop()
def throw(): #玉を投げ(撃ち)、再装填...
reset_arm(2) #アームの位置を下げ
send_message(5) #投げるよーとバッターに伝...
Feuer() #発射し
reset_arm(4) #アームの位置を直し
nachladen() #再装填する
def on_connect(client, userdata, flags, respons_code): ...
print('status {0}'.format(respons_code)) ...
client.subscribe(topic) ...
def send_message(m): ...
client.publish(topic, m) ...
sleep(0.2)
client = mqtt.Client(protocol=mqtt.MQTTv311) ...
client.connect(host, port=port, keepalive=60) ...
client.on_connect = on_connect ...
move. move_to_Q() ...
for i in range(100): ...
throw()
time.sleep(1.5)
client.disconnect() ...
*結果 [#c69b588a]
試走が足りない・・・圧倒的に足りない・・・という状況にな...
今回は今までと異なりロマン、ネタに走った。得点を稼ぐこと...
完全に調整不足であったのでなかなか成功しなかったが、後半...
*感想 [#ff9e9ffa]
時間不足でありさらにロマンに極振りしたため点数は低く、完...
*雑記 [#rfe85408]
モーターのduty_cycle_sp値を直接いじらずに制御するために[[...
**MQTTについて [#t501bbfc]
当初はメッセージを受信した時に動作を行う方法がわからなか...
***pub.py[#bd731158]
...
#!/usr/bin/env python ...
from time import sleep
import paho.mqtt.client as mqtt ...
host = 'localhost' ...
port = 1883 ...
topic = 'pi/st' ...
client = mqtt.Client(protocol=mqtt.MQTTv311) ...
client.connect(host, port=port, keepalive=60) ...
for i in range(3): ...
client.publish(topic, 5)
sleep(0.2)
client.disconnect() ...
***sub.py [#xec35d9c]
...
#!/usr/bin/python
from time import sleep
import paho.mqtt.client as mqtt
host = '0.0.0.0' ...
port = 1883
topic = 'pi/st'
def on_connect(client, userdata, flags, respons_code): ...
print('status {0}'.format(respons_code)) ...
client.subscribe(topic) ...
def on_message(client, userdata, msg): ...
print('OK!') ...
if __name__ == '__main__':
client = mqtt.Client(protocol=mqtt.MQTTv311) ...
client.on_connect = on_connect ...
client.on_message = on_message
client.connect(host, port=port, keepalive=60) ...
client.loop_forever() ...
今回の課題においてMQTTはただ、『これから投げるよー』と伝...
def on_message(client, userdata, msg):
t = 0.4
time.sleep(t)
swing()
となっている。メッセージを受信し何秒か後にバットをふって...
しかしながら、この方法には課題がある。通信によるラグであ...
**原因不明のエラーについて [#y6dfdf51]
今回、間に合わなかった最大の原因は当日になって現れた原因...
また、
move.pyでは
#!/usr/bin/env python3
と記述しているが、test2.pyでは
#!/usr/bin/env python
としている。前回の課題ではLCDを使うためにpython3に変えた...
終了行:
目次
#contents
*はじめに [#neee5304]
今回はまったく余裕がなく、新しいことに多数挑戦したため自...
今回はev3dev(2016-10-17版)にMQTTをインストールした。前回...
*課題3について [#f778acdb]
今回の課題は野球である。具体的に何を行うかといえばピッチ...
自分はピッチャーを作成し、プログラムを行った。
**動きについて [#u7f552fa]
今回の機体のコンセプトはロマンである。時間はなかったが使...
#ref(2016b/Member/being/Mission3/第一段階.jpg,50%,第一段階)
前回ジャイロセンサーを使えるようになたため今回はジャイロ...
次に機体後部に取り付けたカラーセンサーで黒い線の数を数え...
#ref(2016b/Member/being/Mission3/第2段階.jpg,100%,第2段階)
4本目の線を検知したら機体を止める。この時、高速で移動して...
*機体について [#v9b964a0]
**移動について [#nce5c464]
#ref(2016b/Member/being/Mission3/機体概観1.jpg,100%,機体...
サイズ制限に収めるために機体は縦に長く、重心が高くなって...
#ref(2016b/Member/being/Mission3/P_20170207_170041.jpg,50...
機体の後部にカラーセンサーを搭載している。
**再装填機構について [#aba113e4]
#ref(2016b/Member/being/Mission3/P_20170207_170249.jpg,50...
ここに玉を落とし込むと、指してあるピンによって適当な位置...
#ref(2016b/Member/being/Mission3/P_20170207_170259.jpg,50...
再装填を行う時以外は再装填アームが玉を押し上げることによ...
#ref(2016b/Member/being/Mission3/P_20170207_170241.jpg,10...
このアームはただ往復動作をするだけである。あまり強度はな...
**投球について [#s4379974]
#ref(2016b/Member/being/Mission3/P_20170207_170203.jpg,10...
ここにあるピンを用いて玉の置き場所を確定させる。
#ref(2016b/Member/being/Mission3/P_20170207_170309.jpg,10...
設置された玉をこのアームで打ち出す。モーターの出力で飛距...
*プログラムについて [#o32c6568]
以下のプログラムは''CC BY-SA 4.0''とします。ライセンスは[...
**自作関数について [#g43092a9]
***move.py [#pf33231b]
#!/usr/bin/env python3 #このプログラムはpython3で記...
import ev3dev.ev3 as ev3
import time
mr = ev3.LargeMotor('outB') #ここから↓
ml = ev3.LargeMotor('outC')
cs = ev3.ColorSensor('in1')
gy = ev3.GyroSensor('in2') #ここまで↑テンプレ
limen = 20 #ライトセンサーの閾値、やは...
def move_to_Q(): #スタート...
cs_count= 0 #カラーセ...
gy_old = gy.value() #ジャイロ...
while abs(gy.value() - gy_old) < 45: #45度右旋...
mr.run_forever(speed_sp=200)
ml.run_forever(speed_sp=-200)
mr.stop()
ml.stop()
while cs_count < 4: #4回目の黒...
print(cs.value()) #デバッグ...
mr.run_forever(speed_sp=500) #大体50%の...
ml.run_forever(speed_sp=500)
if cs.value() < limen: #カラーセ...
cs_count = cs_count + 1
while cs.value() < limen: #カラーセ...
print(cs_count) #デバッグ...
mr.stop()
ml.stop() #出力停止
time.sleep(1) #機体が縦...
mr.reset()
ml.reset()
while cs.value() > limen: #以下、動...
mr.run_forever(speed_sp=-200)
ml.run_forever(speed_sp=-200)
mr.stop()
ml.stop()
mr.run_to_rel_pos(position_sp=180,speed_sp=200, stop...
ml.run_to_rel_pos(position_sp=180,speed_sp=200, stop...
time.sleep(1)
while abs(gy.value() - gy_old) < 135:
mr.run_forever(speed_sp=200)
ml.run_forever(speed_sp=-200)
mr.stop()
ml.stop()
mr.reset()
ml.reset()
time.sleep(1)
while cs.value() > limen:
mr.run_forever(speed_sp=-200)
ml.run_forever(speed_sp=-200)
mr.run_to_rel_pos(position_sp=120, speed_sp=200, sto...
ml.run_to_rel_pos(position_sp=120, speed_sp=200, sto...
***test2.py [#f95ab6b9]
#!/usr/bin/env python #このプログラムはpyth...
import paho.mqtt.client as mqtt #paho(python用のMQTT)...
from time import sleep
import ev3dev.ev3 as ev3
import time
import move as move
host = 'localhost' #こちらはpublisher兼b...
port = 1883 #ポートはデフォルト
topic = 'pi/st' #トピックはpitcher/st...
arm = ev3.LargeMotor('outA') #アームはアーム、...
bolthandle = ev3.MediumMotor('outD') #再装填用のアーム...
def reset_arm(t): #アームの位置をリ...
arm.run_forever(speed_sp=60)
time.sleep(t) #アームを機体側に...
arm.stop()
arm.run_forever(speed_sp=-5) #ホームページ作成...
time.sleep(0.5) #まず、パワーの符...
def Feuer(): #ドイツ語で発射(f...
arm.run_forever(speed_sp=-600) #最初は全力の1050...
time.sleep(0.8)
arm.stop()
def nachladen(): #上に同じく、...
bolthandle.run_forever(speed_sp=60) #単純に一往復...
time.sleep(2)
bolthandle.stop()
bolthandle.run_forever(speed_sp=-80)
time.sleep(2)
bolthandle.stop()
def throw(): #玉を投げ(撃ち)、再装填...
reset_arm(2) #アームの位置を下げ
send_message(5) #投げるよーとバッターに伝...
Feuer() #発射し
reset_arm(4) #アームの位置を直し
nachladen() #再装填する
def on_connect(client, userdata, flags, respons_code): ...
print('status {0}'.format(respons_code)) ...
client.subscribe(topic) ...
def send_message(m): ...
client.publish(topic, m) ...
sleep(0.2)
client = mqtt.Client(protocol=mqtt.MQTTv311) ...
client.connect(host, port=port, keepalive=60) ...
client.on_connect = on_connect ...
move. move_to_Q() ...
for i in range(100): ...
throw()
time.sleep(1.5)
client.disconnect() ...
*結果 [#c69b588a]
試走が足りない・・・圧倒的に足りない・・・という状況にな...
今回は今までと異なりロマン、ネタに走った。得点を稼ぐこと...
完全に調整不足であったのでなかなか成功しなかったが、後半...
*感想 [#ff9e9ffa]
時間不足でありさらにロマンに極振りしたため点数は低く、完...
*雑記 [#rfe85408]
モーターのduty_cycle_sp値を直接いじらずに制御するために[[...
**MQTTについて [#t501bbfc]
当初はメッセージを受信した時に動作を行う方法がわからなか...
***pub.py[#bd731158]
...
#!/usr/bin/env python ...
from time import sleep
import paho.mqtt.client as mqtt ...
host = 'localhost' ...
port = 1883 ...
topic = 'pi/st' ...
client = mqtt.Client(protocol=mqtt.MQTTv311) ...
client.connect(host, port=port, keepalive=60) ...
for i in range(3): ...
client.publish(topic, 5)
sleep(0.2)
client.disconnect() ...
***sub.py [#xec35d9c]
...
#!/usr/bin/python
from time import sleep
import paho.mqtt.client as mqtt
host = '0.0.0.0' ...
port = 1883
topic = 'pi/st'
def on_connect(client, userdata, flags, respons_code): ...
print('status {0}'.format(respons_code)) ...
client.subscribe(topic) ...
def on_message(client, userdata, msg): ...
print('OK!') ...
if __name__ == '__main__':
client = mqtt.Client(protocol=mqtt.MQTTv311) ...
client.on_connect = on_connect ...
client.on_message = on_message
client.connect(host, port=port, keepalive=60) ...
client.loop_forever() ...
今回の課題においてMQTTはただ、『これから投げるよー』と伝...
def on_message(client, userdata, msg):
t = 0.4
time.sleep(t)
swing()
となっている。メッセージを受信し何秒か後にバットをふって...
しかしながら、この方法には課題がある。通信によるラグであ...
**原因不明のエラーについて [#y6dfdf51]
今回、間に合わなかった最大の原因は当日になって現れた原因...
また、
move.pyでは
#!/usr/bin/env python3
と記述しているが、test2.pyでは
#!/usr/bin/env python
としている。前回の課題ではLCDを使うためにpython3に変えた...
ページ名: