目次
7画以上の文字を選ぶこと、今年の大学生活を表す漢字一文字ということで、大学生として自主的な行動を起こせるようになりたいと思っていることから「自」の文字を選びました。
書き順
NXCではうまくEV3が動作しなかったため今回はpython2.7でプログラミングをしました
#!/usr/bin/python # -*- coding: utf-8 -*-
EV3は純正のものではなく、ev3devで動作させています
import ev3dev.ev3 as ev3
time という関数を導入し、時間によってロボットを制御させることができるようになります
import time
各モーターをロボットに認識させています
mw = ev3.MediumMotor('outA') #MediumMotor をペンの上げ下げのために使用しており、このモーターを「mw」と名付けました。 mr = ev3.LargeMotor('outB') #ロボット右側のタイヤをmrとする。motor rightの略 ml = ev3.LargeMotor('outC') #ロボット左側のタイヤをmlとする。
今回の課題では誤差が生じやすいため、のちに定義する動作の調整が行いやすいようにしています
H = 0.5 #縦線 Q = 0.25 #横線 行き R = 0.2 #横線 帰り T = 173 #角度
プログラムの可読性を高めるため、ロボットの動作をそれぞれ定義しています
def st(x,y): # 前進 mr.reset() # xの値が右輪 ml.reset() # yの値が左輪 mr.run_forever(duty_cycle_sp=x) ml.run_forever(duty_cycle_sp=x) time.sleep(y) mr.stop(stop_command='brake') ml.stop(stop_command='brake') time.sleep(0.5)
def wri(x): #ペンの上げ下げ(xの値が正の時はペンが上昇、負の時は下降する) mw.reset() mw.run_forever(duty_cycle_sp=x) time.sleep(0.5) mw.stop() time.sleep(0.5)
def turn(x): mr.reset() ml.reset() mr.run_to_rel_pos(position_sp=x, duty_cycle_sp=30) #sp=720 : 360度 ml.run_to_rel_pos(position_sp=-x, duty_cycle_sp=30) time.sleep(3) mr.stop(stop_command='brake') ml.stop(stop_command='brake') time.sleep(0.5)
ここからがロボットの動作に関するプラグラムになります
turn(-20) #start wri(90) #過程1 st(30,0.3) turn(20) turn(T) #過程2 st(50,Q) st(-50,R) turn(-T)
同じ動作で対処できるものは繰り返しの構文を使用しています
for i in range(2): #過程3 ~ 過程4 st(50,H/3) turn(T) st(50,Q) st(-50,R) turn(-T)
st(50,H/3) #過程5 turn(T) st(50,0.25) turn(T) st(50,H) wri(-90) #end
EV3 Lモーター ×2 (税込4,644円/個)
EV3 Mモーター ×1(税込3,780円)
本体 ×1(税込36,720円)
補助パーツ ーロボットが転倒しないための球体のパーツ
今回のロボットは分解や組み立て、調整が行いやすいように設計されているため、使用するペンの形状や問題が発生した時にも対応しやすくなっています。そのため今回の課題だけでなく、これからの課題にも再利用できます。
今回の課題はロボット本体の制作はペアの beingさん が行っています。beingさん の「信」の文字のプログラムは途中までは2人で行い、そのあとはbeingさん が完成させました。「自」の文字は1人1文字という課題なので、自分も後日書き上げました。偶然ですが、ペアの文字と合わせると「自信」という熟語になることにレポート作成時に気がつきました。これからは大学生としての自信を持って物事に取り組めたらと思います。
[余談]普段はあまりターミナルの操作はしなかったのですが、今回の講座をきっかけに今ではターミナルでファイルの操作などを行うようになってきました。確かに早く操作ができ、さらにパソコンの動作を自動化できるため、これからはターミナルを活用していこうと思います。本来はNXCでプログラミングをする予定だったのですが、クロスコンパイラの環境構築がうまくいかなかったため断念しました。時間があり、余力が残っている時にでも勉強し、再挑戦できたらと思います。