[[2017b/Member]] #contents *課題説明 [#z250827f] 今回の課題は、&size(20){A4用紙一枚に、漢字2文字を描画すること};である。 なお、この漢字二文字は +自分の出身地 +現在住んでいる地名 +今までに住んでいたことのある地名 -上記3つのうちから選び、合計7画以上であること、と指定されている。 授業の中で挙げられていた例としては「山口」があった。 **描画する文字 [#ncb876f5] 今回、私は自身の出身である加古川市から&size(20){「加古」};を取ることにした。良いところなので兵庫県に観光に行ったときは是非立ち寄ってほしい。&size(10){何もないけど}; *機体説明-ピポクリフ号- [#u3e3292f] 今回はhakuwa氏と共同で機体を制作した。hakuwa氏がピポクリフ7号(だっけ?)と命名したこの機体、ロマンを追い求めた欲張りセットとなっている。1号から6号までは没作である。多すぎて今何号目かはっきり覚えていないのだが、多分7回は改修している。 機体の全体図は[[2017b/Member/hakuwa/Mission1]]に添付されてあるのでそちらも参照して欲しい 機体の全体図は[[2017b/Member/hakuwa/Mission1]]に添付されてあるのでそちらを参照して欲しい **駆動部説明[#p7503d34] ペンを動かして文字を書く際に、用紙の長辺方向、短辺方向、そしてペン自体を上下に移動させる必要がある。このページでは便宜上、順にx軸、y軸、z軸と定義する。 先ずx軸方向だが、車輪を2個をモータで動かして移動する 続いてy軸方向には歯車の噛み合わせを利用して押し出し/巻き戻しを行う 最後に問題のz軸方向であるが… &size(20){キャタピラを利用した上下機構};となっている。私達の班はEV3キットを使用しているのだが、そこにはなんとキャタピラが付属しているのである!何とかしてこのキャタピラを使いたい…!!そう考えた私達は試行錯誤を重ね、z軸の稼働ならばキャタピラでもなんとかなる!!!、という結論に至ったのだ。&size(10){ほんと馬鹿}; しかしキャタピラは重過ぎる。必要としている動きに対して部品の総数が多いからだ。当初y軸方向の移動はレールの上にタイヤで移動させる予定だったのだが、動かすと非常に不安定な状態になる。具体的に言うとz軸駆動に関わる部品が左右に揺れる。横から見たブランコを想像してほしい。対策として噛み合わせ式を採用した。 結果、z軸移動は安定したものの、y軸移動の調整に非常に時間がかかってしまった。 ロマンを求めたあまりに既に迷走しているが気にしないで欲しい。 &size(20){だってかっこいいんだもん}; ** y軸駆動部詳細 [#dfca4a32] y軸の噛み合わせについて、追加説明を行う。なぜy軸だけ追加で説明するかというと、プログラミング、機体構造上の制約があるからだ。 &ref(2017b/Member/Reici/Mission1/17112401.png,25%,噛み合わせ部分); 写真の通り、5本の青ビスを押し出して左右に移動する構造となっている。ここで注意したいのは巻き戻す際に左側のビス以上巻き戻す指示をした場合、機体が壊れてしまうのだ。部品が破損することを防ぐため、あえて機体が壊れるように設計している。とはいえ、機体が壊れてしまっては文字を書くことが出来なくなってしまうので、プログラミングの際注意する必要があった。 モータの回転数が200に設定した場合、1つのビスを押し出し、次のビスを押す直前までにt=800、つまり0.8秒かかる。よってy軸のモータを動かす際には800の倍数として、t=4000までの範囲で動かすことになる。巻き戻しについても同様の時間設定で可能だった。 *プログラミング [#q5c55a97] **関数の定義 [#j05a24dc] モータの定義等。特に変わった点はない。Aモータがz軸、Cモータがy軸、Dモータがx軸の移動に対応する。 #!/usr/bin/env python3 from ev3dev.ev3 import * from time import sleep mA=MediumMotor('outA') mC=LargeMotor('outC') mD=LargeMotor('outD') キャタピラを動かしてペンを上げ下げする関数である。 def down(): mA.run_timed(time_sp=400, speed_sp=-100, stop_action='brake') sleep(1) def up(): mA.run_timed(time_sp=400, speed_sp=100, stop_action='brake') sleep(1) タイヤを動かして前後に移動する。 def F(x): mD.run_timed(time_sp=x, speed_sp=200, stop_action='brake') def B(y): mD.run_timed(time_sp=y, speed_sp=-200, stop_action='brake') 問題のy軸。噛み合わせで左右に動く。 def L(z): mC.run_timed(time_sp=z, speed_sp=200, stop_action='brake') def R(w): mC.run_timed(time_sp=w, speed_sp=-200, stop_action='brake') **移動計画 [#g64f6456] &ref(2017b/Member/Reici/Mission1/17112402.png,25%,線画構想図); 上記の写真でオレンジ色の移動はペンを設置しながら移動する。つまり線を引く動作になる。対して水色の移動はペン先を浮かせて移動する。極力一筆書きに近いように文字の書き順を工夫した。 **実行部分 [#h7d328de] 実際のプログラミングには上述の定義が記載されているが割愛。 L(2400) down() L(1600) up() R(1600) down() F(400) up() B(600) F(800) down() F(600) up() B(400) R(3200) down() L(1600) F(400) up() R(1600) down() L(1600) up() R(1600) B(400) down() F(400) up() F(300) down() L(3200) up() R(1600) B(200) down() F(400) up() L(800) down() F(400) up() R(800) B(400) down() F(400) up() B(400) down() L(1600) up() F(400) R(1600) down() L(1600) *結果 [#bf7e3875] 授業中の発表では、hukawa氏の分しか発表できなかった為、自分でやった結果となる &ref(2017b/Member/Reici/Mission1/17112403.png,25%,デデン!); 「加」の上に何か見えるけど気のせいだ。ペンをぎりぎりに置きすぎて微妙に引きずったようだが気のせいだ。所々ペン先が引っ掛かって線が引けてない箇所があるが、おおむね課題は達成できたと思う。 ピポクリフ号には3種類の機構が備わっている。そのため機体の調整にかなりの時間がかかり、かつプログラミングにも長い時間取り組むことになった。次の課題はロマンを求めずに堅実な機体を作りたい。そしてもっとはやく機体を完成させて余裕をもった計画を立てたいと思う。 &size(30){でもキャタピラってかっこいいよな!!!!};