*目次 [#h6b6b7f2] #contents *課題 [#jf138425] 似顔絵を作成する。 *ロボットの外形 [#gb0b4257] #ref(./hontai.png,100%) #ref(./penrotate.gif) ペンの上げ下げの機構を%%思いつかなかった%%単純にしたかったのでこの形にした。 しかし思ったよりペンが重く調整が難しくなってしまった。 *プログラム [#cd82bdeb] !/usr/bin/python import ev3dev.ev3 as ev3 import time left = ev3.LargeMotor('outD') right = ev3.LargeMotor('outA') arm = ev3.MediumMotor('outC') //定義文 def forward(t,dl,dr): //ロボットを動かす。両車輪と時間を関数にしたのでこれだけでロボット本体の動きを定義できた。 left.run_forever(duty_cycle_sp=dl) right.run_forever(duty_cycle_sp=dr) time.sleep(t/1000) left.stop() right.stop() def rotatepen(da): //ペンの上げ下げの定義。何度か上げ下げを繰り返しこの値なら不備なく動くと判断した。daは±40の値をとらせた。 arm.run_forever(duty_cycle_sp=da) time.sleep(1.1) arm.stop() //実行したプログラム forward(1000,29,20) forward(1000,38,10) forward(2500,12,1) //輪郭(しずく型に近い楕円)を描く forward(4100,30,-15) forward(3100,-30,15) forward(2400,38,-18) forward(2400,-40,24) forward(2400,45,-20) forward(2600,-38,20) forward(2400,47,-23) forward(2600,-35,25) forward(2600,39,-24) forward(2600,-32,24) forward(2100,40,-21) forward(1600,-32,24) forward(1400,45,-23) //髪(ジグザグした線)を描く time.sleep(1) rotatepen(40) forward(2100,45,-23) forward(2230,27,2) forward(1600,-50,-50) forward(1000,20,20) time.sleep(1) rotatepen(-40) time.sleep(1) rotatepen(40) forward(1000,20,20) time.sleep(1) forward(1000,35,35) rotatepen(-40) time.sleep(1) rotatepen(40) //目(円2つ)を描く forward(3900,-30,-30) forward(1000,25,33) time.sleep(1) rotatepen(-40) forward(1000,20,28) //口(直線)を描く。後進しつつペンを下した。 forward(1000,20,28) //口(直線)を描く。 *結果 [#h926f50f] #ref(./結果.png,100%) とても似顔絵とはいいがたいものを生み出してしまった。 *反省・感想 [#pbcda460] このペンの上げ下げの機構のせいでペンが設置するごとに本体の向きがぶれて誤差がどんどん大きくなってしまったのでやはり機構をよく考えてからやらねばならないと思った。 また調整を聞かせるために関数を多く使ったプログラムを書いたが少々長くなってしまったのでその点もまた課題だと感じた。 また設計図を破棄してしまいプログラムの説明も完成目標も記載できずもどかしかった。