2018a/Member

更新履歴

8月10日ープログラム上の説明を追記

課題について

課題内容

これまでに住んだことのある都道府県名、市町村名、地区名などの中から2文字以上のものを選び、それをA4の紙に書くロボットを制作せよ。

選んだ文字

群馬県出身なので「群馬」

ロボットについて

ロボット

先駆者さんを参考にさせていただいた。

横移動

キャタピラを用いて平面の移動をできるようにした。 斜め移動も可。

縦移動

ミディアムモーターの回転移動を用いて上下移動をできるようにした。

プログラム概要

モジュールのインポート及びモーターの名前付け

#!/usr/bin/env python3
from ev3dev.ev3 import *
from time import sleep 
mx = LargeMotor('outA')
my = LargeMotor('outB')
mz = MediumMotor('outC')

time関数をインポート。 名前はx軸方向をmx,y軸方向をmy,z軸方向をmzとした。

諸々の関数の定義

 def forward (i,j): #同時にx方向にi[cm],y方向にj[cm]進む 
 	if i > 0: #x方向の進行方向を判定 
 		speed_x = -100
 	else:
 		i = -i
 		speed_x = 100
 
 	if j > 0: #y方向の進
 	行方向を判定
 		speed_y = -100
 	else:
 		speed_y = 100
 		j = -j
 	mx.run_timed(time_sp = i * 250, speed_sp = speed_x) 
 	my.run_timed(time_sp = j * 250, speed_sp = -speed_y) 

i, jを実数とし、 x軸の正の方向にi[cm], y軸の正の方向にj[cm]だけ進みたければ ベクトル(i, j)を渡すことにより実行できる。 i<0 のときはx軸は負の向きへ、j<0のときはy軸が負の向きへ移動することにより、 向きの指定が符号の違いのみで指定できる。

  def up(): #ペンを上げる
         mz.run_timed(time_sp = 300, speed_sp = -100)

ペンを上げる。

 def down(): #ペンを下げる
        mz.run_timed(time_sp = 300, speed_sp = 100)

ペンを下げる

 def down_forward_up(i, j): 

  down()

        time.sleep(1)
        forward(i, j)
        time.sleep(1)
        up()

down(), forwarf(i, j), up()の合成。 定義しておくことで入力が少なくできるときがあるため定義。

実際に描写

前節で定義した関数を適宜用いて書いていけば良い。

「群」

down()
time.sleep(1)
forward(2.4, 0) #一画目
time.sleep(1)
forward(0, 2.4)
time.sleep(1)
forward(-2.4, 0) #二画目
time.sleep(1)
up()
time.sleep(1)
forward(0, -1.2) #三画目に移動
time.sleep(1)
down()
time.sleep(1)
forward(2.4, 0) #三画目
time.sleep(1)
up()
time.sleep(1)
forward(-1.2, -1.2) #四画目に移動
time.sleep(1)
down()
time.sleep(1)
forward(0, 2.4) #四画目
time.sleep(1)
forward(-2.4, 2.4) #四画目
time.sleep(1)
up()
time.sleep(1)
forward(1.2, -1.2) #五画目に移動
time.sleep(1)
down()
forward(0, 1.2) #五画目
time.sleep(1)
forward(0, 2.4)
time.sleep(1)
forward(0, -2.4)
time.sleep(1)
forward(-2.4, 0)
time.sleep(1)
up()
time.sleep(1)
forward(1.2, -4.8) #6画目に移動
time.sleep(1)
down_forward_up(0.4, 1.2) #6画目
time.sleep(1) 
forward(1.6, -1.2) #7画目に移動
time.sleep(1)
down_forward_up(-0.4, 1.2) #7画目
time.sleep(1)
forward(-1.6, 0.6) #8画目に移動
time.sleep(1)
down_forward_up(2.4, 0) #8画目
time.sleep(1)
forward(-1.6,0.8) #9画目に移動
time.sleep(1)
down_forward_up(1.2, 0) #9画目
time.sleep(1)
forward(-1.6,0.8) #10画目に移動
time.sleep(1)
down_forward_up(2.4, 0) #10画目
time.sleep(1)
forward(-1.2, -2.4) #11画目に移動
time.sleep(1)
down_forward_up(0, 4) #11画目
time.sleep(1)

「馬」

forward(4, 6) #1画目に移動
time.sleep(1)
down_forward_up(4, 0) #1画目
time.sleep(1)
forward(-4, 0.8) #2画目に移動
time.sleep(1)
down_forward_up(4, 0) #2画目
time.sleep(1)
forward(-4, 0.8)  #3画目に移動
time.sleep(1)
down_forward_up(4, 0) #3画目
time.sleep(1)
forward(-4, -1.6) #4画目に移動
time.sleep(1)
down_forward_up(0, 2.4) #4画目
time.sleep(1)
forward(0.8, -2.4) #5画目に移動
time.sleep(1)
down_forward_up(0, 2.4) #5画目
time.sleep(1)
forward(-0.8, 0) #6画目に移動
time.sleep(1)
down()
time.sleep(1)
forward(3.0, 0) #7画目
time.sleep(1)
forward(-0.2, 2.4)
time.sleep(1)
forward(-0.6, 0.2)
time.sleep(1)
up()
time.sleep(1)
forward(-4, -1.6) #8画目に移動
time.sleep(1)
down_forward_up(0, 1.2) #8画目
time.sleep(1)
forward(0.6, -1.2) #9画目に移動
time.sleep(1)
down_forward_up(0, 1.2) #9画目
time.sleep(1)
forward(0.6, -1.2) #10画目に移動
time.sleep(1)
down_forward_up(0, 1.2) #10画目
time.sleep(1)
forward(0.6, -1.2) #11画目に移動
time.sleep(1)
down_forward_up(0, 1.2) #11画目

実際に書けた文字

実際にはこのような文字が書けた。

とても文字には見えない。

反省

私のプログラムには自身があったが、ロボット自身にいくつか欠陥があった。 致命的なのは全体の剛性の低さで、それゆえにキャタピラの回転がペンの移動に今ひとつ伝わらず、 移動自体が困難な状態であった。また、ペンも筆先がもう少し短いほうが良かったと感じている。

改善策

ロボットの補強。 筆ペンの再考。


添付ファイル: files_DSC_0195.JPG 33件 [詳細] files_DSC_0194.JPG 20件 [詳細] files_DSC_0191.JPG 32件 [詳細] files_DSC_0193.JPG 19件 [詳細] files_DSC_0192.JPG 21件 [詳細] files_DSC_0190.JPG 35件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-08-10 (金) 06:59:10