[[2018a/Member]]
目次
#contents

*課題1 [#o322c2f3]
これまで住んだことのある都道府県名、市町村名、地区名などの中から&br;
2文字以上のものを選び、それをA4の紙を書くロボットを製作せよ。
**選んだ文字 [#tb0eedf8]
長野にある&color(#32cd32){「村山」};という地名を選びました。


*ロボットの説明 [#na9486b6]
**作戦 [#ld0382e4]
**書くための作戦 [#ld0382e4]
以下のようにX軸,Y軸を取って,XY座標系で制御をしようと考えた.&br;
なぜこのように制御したのかは,動き回る系はプログラムがめんどそうだったから...

#ref(./文字の説明.png,50%,XY座標系)

**ロボットの機構 [#nf6a3ec5]
どのようにXY座標を制御しているかを説明します.&br;
&br;
と,その前に全体像がどのようになっているのか見てみましょう.
#ref(./全体像.png,70%,全体像)
上のように&br;
X軸はタイヤを使って制御し&br;
Y軸はギザギザの機構を使ってアームのように制御しました.&br;

Z軸(ペンの上げ下げ)は緑で囲ったような機構で制御しました.&br;

&br;
それぞれの機構について詳しく解説していきます.

***X軸 [#y4bcbf9d]
X軸は1つのモーターでタイヤを正転・後転させることで制御をしています.そのため,本体は回転運動はできず,1直線上にしか進めません.&br;
この機構の工夫点として,ギアのかみ合わせがあります.モーターの回転を直で接続すると回転が速く制御しずらいため,いくつかのギアをかませて回転を遅めています.&br;
また,モーターの回転を90度回転させるギアを使ってうまく動力を伝えました.下の図が噛み合わせの機構です.
#ref(./タイヤの歯車のかみ合わせ.png,60%,ギア噛み合わせ)
ちなみに前のタイヤはモーターと接続されていません

***Y軸 [#lfe2efe3]
ラックという部品を使って,歯車の回転運動を直線運動に変える機構を使いました.
#ref(./ラック.png,80%,ラック)
実物で見るとこんな感じです.&br;
#ref(./ラック実物.jpg,80%,ラック実物)
この機構の利点は,比較的コンパクトにまとめられるという点です.&br;
また,欠点としてかみ合いの遊びの分,制御が難しくなることです.&br;
#ref(./あそび.png,80%,あそび)

***Z軸 [#p9dd1731]
過去の作品を参考にして作りました.詳細は[[こちら>http://yakushi.shinshu-u.ac.jp/robotics/?2006a%2FD7%2F%B2%DD%C2%EA%A3%B1%B1%A6]]&br;
機構を簡単に説明すると以下の図のようになります.
#ref(./Z機構.png,40%,Z軸)&br;
詳しく見ていくと,まず下の小さいVプーリーとモーターとは下の写真のように接続されています.
#ref(./vプーリー.png,60%,Vプーリー小)&br;
次に,モーター部分はこのようになっています.&br;
#ref(./モーター.png,60%,モーター)&br;
また,ペンの接続は下の写真のようにゴムを使ってやっています.
#ref(./ペンの接続.png,60%,ペン)&br;

**制御する [#g8233f9d]
プログラムを書く前には下準備が必要です.それらを含めてまとめました.
***どの順番で書くのか [#c0c4d58d]
まず,いかに楽にかつ綺麗に書けるのはどのルートかを考えてルートを決める.&br;
結果的に以下のようになりました.繋げられそうなとこをつなげて,画数を少なくしました.
#ref(./書き順.png,40%,書き順)

***移動距はどのようになっているのか? [#xc2310cd]
次に,いったい何秒だけモーターを回転させたら,どれほど進むのかを調べる.
初めの時点では,XY方向では1秒あたりに進む距離は違うと考えました.(ギア比的に)&br;
しかし,実際やってみると進む距離は,ほぼほぼ同じなことがわかりました.&br;
こういった,数値の変化に対応するため,以下の図のように移動距離に対して,文字で管理することで,わかりやすくしました.プログラムのコメントで謎のアルファベットが出るのはこの作業で割り当てられたアルファベットです.
#ref(./移動距離.png,60%,移動距離)

***プログラムを書く [#n90dd7e4]
まず,プログラムをわかりやすくするために%%%define%%%という技を使って,面倒な動作や,わかりにくい動作を見やすくする準備をします.
  	#define straight OnRev(OUT_A); //X方向の前移動
	#define back OnFwd(OUT_A); //X方向の後ろ移動
	#define stopA Off(OUT_A); //モーターAの停止
	#define stopB Off(OUT_B); //モーターBの停止
	#define right OnFwd(OUT_B); //Y方向の右移動
	#define left OnRev(OUT_B); //Y方向の左移動
	#define up OnFwd(OUT_C);Wait(50);Off(OUT_C); //ペンを上げる
	#define down OnRev(OUT_C);Wait(50);Off(OUT_C); //ペンを下げる
	#define freez Wait(15); //一時停止

何やってんのか意味わからんので,簡単に説明します.&br;
下から説明していくんですが,%%%freez%%%っていうのは書き終わりなどに落ち着いて,綺麗に書けるようにするためのものです.これをやらないとぐちゃぐちゃになっちゃうので地味に大切です.&br;
次に%%%up%%%.%%%down%%%について説明します.これはペンの上げ下げです.ペンの上げ下げはどこでも同じなので,簡単にしました.(めちゃ便利)&br;
そのほかのものは,移動に関するものです.下の図を見て理解してほしいです.%%%stopA B%%%は移動停止です.
#ref(./方向.png,60%,方向)

ここから下はメインのプログラムです.&br;
〇慊蠅両貊蠅帽圓辰&br;
▲撻鵑ろして&br;
指定の場所に行って&br;
ぅ撻鷯紊欧&br;
の繰り返しです.
 task main()
 {
	down; //1角目
	straight;
	Wait(40); //a
	stopA;
	freez;
	up;

	straight;  //1から2への移動
	Wait(10); //b
	stopA;
	freez;


	down; //2角目
	straight;
	Wait(40); //c
	stopA;
	freez;
	up;

	back;  //2から3への移動
	Wait(70); //d
	stopA;
	freez;
	left;
	Wait(30); //e
	stopB;
	freez;


	down; //3角目
	right;
	Wait(100); //f
	stopB;
	freez;
	up;

	left;  //3から4への移動
	Wait(40); //g
	stopB;
	back;
	Wait(15); //h
	stopA;
	freez;


	down; //4角目
	left;
	straight;
	Wait(20); //h
	stopA;
	stopB;
	freez;
	right;
	straight;
	Wait(10); //i
	stopA;
	stopB;
	freez;
	up;
	
	left;  //4から5への移動
	Wait(55); //j
	stopB;
	straight;
	Wait(50); //k
	stopA;
	freez;


	down; //5角目
	right;
	Wait(100); //l
	stopB;
	freez;
	left;
	back;
	Wait(10); //m
	stopA;
	stopB;
	freez;
	up;

	left;  //5から6への移動
	Wait(30); //n
	stopB;
	back;
	Wait(20); //o
	stopA;
	freez;


	down; //6角目
	right;
	straight;
	Wait(10); //p
	stopA;
	stopB;
	freez;
	up;

	left;  //6から7への移動
	Wait(50); //r
	stopB;
	straight;
	Wait(90); //q
	stopA;
	freez;


	down; //7角目
	right;
	Wait(80); //s
	stopB;
	freez;
	up;

	left;  //7から8への移動
	Wait(40); //t
	stopB;
	back;
	Wait(30); //u
	stopA;
	freez;


	down; //8角目
	right;
	Wait(30); //u
	stopB;
	freez;
	straight;
	Wait(80); //v
	stopA;
	freez;
	left;
	Wait(30); //w
	stopB;
	freez;
	up;
 }

*完成した文字 [#oaef5485]
#ref(./村山.png,60%,完成)

*まとめ [#v56b8795]
課題を達成することができた.
出来のほうはあまり良いとは言えなかった.
直線が曲がってしまう.
終筆の時にシュッとなってしまう.
交点がしっかりと定まらなかった.


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS