[[2019a/Member]] ←令和元年前期ロボティックス受講者一覧へ戻る *スケジュール [#y9cc7186] -一応レポート完成?訂正するかもしれない 2019/06/04 23:59 -カウンター機能と出展先とおまけを追加 2019/06/05 15:30 -レポート締め切り予定日 2019/06/06 23:59 *今回の課題 [#lf77530f] 今回の課題は[[2019a/Mission1]]に掲載されています。自分が取り組んだ文字は「三河」です。 *制作したロボット [#veb4f3ea] &ref(2019a/Member/fuji/Mission1/ev3.png,50%,作成したロボット); 撮影:2019/05/31 これが作ったロボットです。ev3devを使用しています。 *動作について [#fc6a227f] 動作はとても簡潔で、3パターンのみです -1,アクセル、バック &ref(2019a/Member/fuji/Mission1/straight.png,50%,作成したロボット); -2,方向転換 &ref(2019a/Member/fuji/Mission1/turn.png,50%,作成したロボット); -3,モーターの回転によるペンの紙上に対する設置・離脱 &ref(2019a/Member/fuji/Mission1/pen.png,50%,作成したロボット); *プログラム(python) [#l50f39b3] プログラミングはこっちの不手際でとても長くなってしまったので、ページ末に掲示。 *工夫した点 [#d64b9348] -一つ目は輪ゴムを使う事なくペンを固定したことや、文字を書くにあたっておおよその大きさを計算してから、プログラミングを入力した点です。 &ref(2019a/Member/fuji/Mission1/mikawa.png,50%,こんな感じに。); ←字汚いです 画像にもある通り、「三河」という文字を作りました。(三河 とは:愛知県東部方面の地域のこと。) -二つ目に、出来るだけ作りやすい形にして、動作を簡潔化したことです。最初のデモの機械を応用して、このロボットを作りました。 *問題点 [#a4d6137b] ペンの位置 ロボットを作りやすい形にしたものの二つのタイヤ間に軸があることとなるので、その軸からペンまでの座標を含めて計算しないといけなくなり、プログラミング等がとても苦難となりました。 文字を書く上での計算 おおよその比率を計算した上でプログラミングを組んだのですが、少しでも誤差が生じるとおもいっきりおかしい方向に進んでしまうのが難しかったです。 ペンの固定 ペンを輪ゴム無しで固定しようという目標を掲げ、作ってみました。最初はなかなか固定できませんでしたが、考えに考えた機構で、筆ペンを固定することが出来ました。ちなみにその機構と筆ペンを相方に持っていかれたため、字を正式に書いてる写真などはありません。単位落ち覚悟。 ペンの接地 ただのマッキーペンだと、接地が甘くなり、筆ペンでないとカスカスな字になってしまいました。 スピード 先生は「スピードは遅いほうが良い」と仰っていて、スピードを遅くしましたが、その分が足りず、「ガクッ」と動くものになってしまいました。 *問題点を踏まえ、次回のロボットに関して [#y9e0a12f] -軸を最前提に考え、ロボットを制作する -機構などの管理を徹底する -sleepの使い方をしっかりする -defのコマンドをもっと簡潔にする -先を見据えてロボットの構造を作る。プログラムが本質ではない。 *最後に [#q7b57eb8] コマンドは以下に掲示しました。そしてもし何か不適切な部分や要望があればコマンド下のコメント欄にお書き下さい。 *参考・使用文献・サイト [#k6e1fd25] ロボティックス入門ゼミ(このサイト) PukiWikiの使い方 http://ur0.link/eyeV http://u0u1.net/kw6q 短縮URLサービス http://urx.nu/ *おまけ [#me9ae1e3] 最初はペア二人で一つの地名だと思っていたので、とてもデカい「信」の字のプログラムは残ってます。 要望が有れば載せます。 *コマンドの説明と掲載 [#v4a99418] 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() 「河」の書き終わり。 訪問者:総計:&counter(total); 今日:&counter(today); 昨日:&counter(yesterday); - ここはコメント欄です。荒らさないようお願いいたします。 -- [[fuji]] &new{2019-06-04 (火) 23:32:54}; #comment