2019a/Member ←令和元年前期ロボティックス受講者一覧へ戻る
今回の課題は2019a/Mission1に掲載されています。自分が取り組んだ文字は「三河」です。
これが作ったロボットです。ev3devを使用しています。
動作はとても簡潔で、3パターンのみです
プログラミングはこっちの不手際でとても長くなってしまったので、ページ末に掲示。
画像にもある通り、「三河」という文字を作りました。(三河 とは:愛知県東部方面の地域のこと。)
ペンの位置
ロボットを作りやすい形にしたものの二つのタイヤ間に軸があることとなるので、その軸からペンまでの座標を含めて計算しないといけなくなり、プログラミング等がとても苦難となりました。
文字を書く上での計算
おおよその比率を計算した上でプログラミングを組んだのですが、少しでも誤差が生じるとおもいっきりおかしい方向に進んでしまうのが難しかったです。
ペンの固定
ペンを輪ゴム無しで固定しようという目標を掲げ、作ってみました。最初はなかなか固定できませんでしたが、考えに考えた機構で、筆ペンを固定することが出来ました。ちなみにその機構と筆ペンを相方に持っていかれたため、字を正式に書いてる写真などはありません。単位落ち覚悟。
ペンの接地
ただのマッキーペンだと、接地が甘くなり、筆ペンでないとカスカスな字になってしまいました。
スピード
先生は「スピードは遅いほうが良い」と仰っていて、スピードを遅くしましたが、その分が足りず、「ガクッ」と動くものになってしまいました。
コマンドは以下に掲示しました。そしてもし何か不適切な部分や要望があればコマンド下のコメント欄にお書き下さい。
ロボティックス入門ゼミ(このサイト) PukiWikiの使い方 http://ur0.link/eyeV http://u0u1.net/kw6q 短縮URLサービス http://urx.nu/
最初はペア二人で一つの地名だと思っていたので、とてもデカい「信」の字のプログラムは残ってます。 要望が有れば載せます。
straight=直線に前に進む距離の変数。 back=直線に後ろに進む距離の変数。 turn45=π/4の方向に回転。 turnback45=-π/4の方向に回転。 turn90=π/2の方向に回転。 turnback90=-π/2の方向に回転。 penon=ペンを地面につける。書き始める。 penoff=ペンを地面から話す。書き終わり。 motor_init=モーターのリセット。 sleep=休憩タイム。
#!/usr/bin/env python3 from ev3dev.ev3 import* from time import sleep
mL = LargeMotor('outB') mR = LargeMotor('outC') mZ = MediumMotor('outA')
def straight(t): mL.run_timed(time_sp=t,speed_sp=300,stop_action='hold') mR.run_timed(time_sp=t,speed_sp=300,stop_action='hold') sleep(1)
def back(t): mL.run_timed(time_sp=t,speed_sp=-300,stop_action='hold') mR.run_timed(time_sp=t,speed_sp=-300,stop_action='hold') sleep(1)
def turn45(): mL.run_timed(time_sp=297,speed_sp=-300,stop_action='hold') mR.run_timed(time_sp=297,speed_sp=300,stop_action='hold') sleep(1)
def turnback45(): mL.run_timed(time_sp=297,speed_sp=300,stop_action='hold') mR.run_timed(time_sp=297,speed_sp=-300,stop_action='hold') sleep(1)
def turn90(): mL.run_timed(time_sp=594,speed_sp=-300,stop_action='hold') mR.run_timed(time_sp=594,speed_sp=300,stop_action='hold') sleep(1)
def turnback90(): mL.run_timed(time_sp=594,speed_sp=300,stop_action='hold') mR.run_timed(time_sp=594,speed_sp=-300,stop_action='hold') sleep(1)
def penon(): mZ.run_to_rel_pos(position_sp=-30,speed_sp=200,stop_action='hold') sleep(1)
def penoff(): mZ.run_to_rel_pos(position_sp=30,speed_sp=200,stop_action='hold') sleep(1)
def motor_init(): mL.reset() mR.reset()
motor_init() penon() 「三」の書き始め。 sleep(1) straight(675) sleep(1) penoff() sleep(1) back(525) sleep(2) turnback90() sleep(1) straight(450) sleep(1) turn90() sleep(1) penon() sleep(1) straight(300) sleep(1) penoff() sleep(1) back(600) sleep(1) turnback90() sleep(1) straight(450) sleep(1) turn90() sleep(1) penon() sleep(1) straight(975) sleep(2) penoff() 「三」の書き終わり。 sleep(1) back(250) sleep(1) turnback90() sleep(1) back(1425) sleep(4) turn90() sleep(1) straight(375) sleep(1) turnback90() sleep(1) turn45() sleep(1) penon() 「河」のさんずいの書き始め。 sleep(1) straight(150) sleep(1) penoff() sleep(1) back(150) sleep(1) turnback45() sleep(1) straight(450) sleep(1) turn45() sleep(1) penon() sleep(1) straight(150) sleep(1) penoff() sleep(1) back(150) sleep(1) turnback45() sleep(1) straight(1600) sleep(5) turn90() sleep(1) turn45() sleep(1) penon() sleep(1) straight(250) sleep(1) penoff() 「河」のさんずい書き終わり。 sleep(1) back(250) turn45() sleep(1) straight(1200) sleep(5) turnback90() sleep(1) straight(200) sleep(2) penon() 「河」の残り部分書き始め。 sleep(1) straight(600) sleep(2) penoff() sleep(1) turnback90() sleep(1) back(1125) sleep(3) penon() sleep(1) back(225) sleep(1) penoff() sleep(1) straight(600) sleep(2) turnback90() sleep(1) back(1425) sleep(3) penon() sleep(1) back(225) sleep(1) penoff() sleep(1) turn90() sleep(1) straight(225) sleep(1) turnback90() sleep(1) penon() straight(225) sleep(1) penoff() sleep(1) straight(600) sleep(2) turnback90() sleep(1) back(1650) sleep(5) penon() sleep(1) straight(225) sleep(1) penoff() sleep(1) straight(300) sleep(1) turnback90() sleep(1) straight(450) sleep(1) turn90() sleep(1) penon() sleep(1) back(900) sleep(2) penoff() sleep(1) turnback45() sleep(1) straight(525) sleep(2) turn90() sleep(1) penon() sleep(1) straight(150) sleep(1) penoff() 「河」の書き終わり。
訪問者:総計:472 今日:1 昨日:0