*目次 [#p8313624]
#contents
*課題1 [#pd053fea]
書道ロボットの製作
*ロボの説明 [#x1cf7e1f]
今回のロボットはX軸・Y軸・Z軸ををそれぞれ前後・左右・ペンの上下と決めて車体を製作した。
**X軸について [#o5940d02]
車体のメインになる場所なので、「より頑丈により安定的に」を目指した。
四角い形に作っていき、モータを囲うことで重心を中心に置くことで安定させることができた。
後にY軸と組み合わせたところ、Y軸が重く、重心がずれ車体が倒れてしまったので、RIS本体をX軸の上に乗せることでバランスを取り、倒れないように作り変えた。
#ref(XとY2.jpg)
**Y軸について [#b41f64aa]
Z軸を動かす機構なので、「安定」を目指した。
Z軸全体を乗せてスライドさせるために、平たく長い形にした。キャタピラを使うことでベルトコンベアのようにスムーズに横移動ができた。また、キャタピラを裏返して使うことで、Z軸が滑ってしまうなどの不要な動きを無くすことができた。
**Z軸について [#mfdb95b3]
Y軸の上に乗るので、「小さく軽く」をめざした。
RISならではの平らなギアを使ってペンを上下に動くようにした。
今回ペンは筆ペンを使った。これにより筆圧やペンを下す位置を細かく決める必要がなくなった。ペンはゴムで留めたが、ある程度自由が効くように緩めに留めた。さらに写真を見るとわかるが、ペンの上に隙間をあけた。これによって、筆圧がかかり過ぎてもペンが力を逃がすようになっている。
Y軸の可動範囲を広くするために、Z軸の中に入れることにした。しかしペンが長く、車体に収まらなかった。なのでペンを切り半分以下の長さ(7cm)に加工した。
#ref(Zjiku.jpg)
*プログラムの説明 [#cd5339dc]
今回は地名というお題だったので「佐久」という字を書くことにした。
この字は左ハライが多いので、軸の方向を工夫した。これにより左ハライをdefineで置くことができた。
#ref(キャプチャ.PNG)
***define の説明[#e93143b6]
#define X_MAE OnFwd(OUT_A); //X軸を正の向きに動かす
#define Y_MAE OnFwd(OUT_B); //Y軸を正の向きに動かす
#define Z_SITA OnFwd(OUT_C);Wait(7);Off(OUT_C); //ペンを下ろす
#define XY_MAE OnFwd(OUT_AB); //XとY軸を正の向きに動かす
#define X_USI OnRev(OUT_A); //X軸を負の向きに動かす
#define Y_USI OnRev(OUT_B); //Y軸を負の向きに動かす
#define Z_UE OnRev(OUT_C);Wait(7);Off(OUT_C); //ペンを上げる
#define W_TIME Wait(100); //1秒待つ
***佐を書くプログラム [#ydc3833f]
SetPower(OUT_A,3);
SetPower(OUT_B,3);
SetPower(OUT_C,3); //一画目
Y_MAE; //書き始めの位置へ
Wait(18); //移動
Off(OUT_B); //x軸止める
W_TIME; //1秒待つ
Z_SITA; //ペンを下ろす、移動、止める
W_TIME; //1秒待つ
XY_MAE; //モータxyを前転
Wait(18); //書く
Off(OUT_AB); //モータxyを止める
W_TIME; //1秒待つ
Z_UE; //ペンを上げる、待つ、止める
W_TIME;
X_USI; //二画目
Wait(6);
Off(OUT_A);
W_TIME; //1秒待つ
Y_USI; //Y軸移動
Wait(6);
Off(OUT_B);
W_TIME; //一秒待つ
Z_SITA; //ペンヲ下す
W_TIME; //一秒待つ
X_MAE; //x軸移動
Wait(18);
Off(OUT_A);
W_TIME; //一秒待つ
Z_UE; //ペンを上げる
W_TIME; //一秒待つ
X_USI; //三画目
Wait(18);
Off(OUT_A);
W_TIME; //一秒待つ
Y_USI; //Y軸移動
Wait(5);
Off(OUT_B);
W_TIME; //一秒待つ
Z_SITA; //ペンを下げる
W_TIME; //一秒待つ
Y_USI; //Y軸移動
Wait(18);
Off(OUT_B);
W_TIME; //一秒待つ
Z_UE; //ペンを上げる
W_TIME; //一秒待つ
X_USI; //四画目
Wait(5);
Off(OUT_A);
W_TIME; //一秒待つ
Y_MAE; //Y軸移動
Wait(5);
Off(OUT_B);
W_TIME; //一秒待つ
Z_SITA; //ペンを下げる
W_TIME; //一秒待つ
XY_MAE; //XY軸移動
Wait(13);
Off(OUT_AB);
W_TIME; //一秒待つ
Y_USI; //五画目
Wait(18);
Off(OUT_B);
W_TIME; //一秒待つ
Z_UE; //ペンを上げる
W_TIME; //一秒待つ
Y_MAE; //六画目
Wait(9);
Off(OUT_B);
W_TIME; //一秒待つ
Z_SITA; //ペンを下げる
W_TIME; //一秒待つ
X_MAE; //X軸移動
Wait(9);
Off(OUT_A);
W_TIME; //一秒待つ
Z_UE; //ペンを上げる
W_TIME; //一秒待つ
Y_MAE; //七画目
Wait(9);
Off(OUT_B);
W_TIME; //一秒待つ
Z_SITA; //ペンを下げる
W_TIME; //一秒待つ
Y_USI; //Y軸移動
Wait(18);
Off(OUT_B);
W_TIME; //一秒待つ
Z_UE; //ペンを上げる
W_TIME; //一秒待つ
***久を書くプログラム [#n024bf41]
XY_MAE; //一画目
Wait(5);
Off(OUT_AB);
W_TIME; //一秒待つ
Z_SITA; //ペンを下げる
W_TIME; //一秒待つ
XY_MAE; //XY軸移動
Wait(13);
Off(OUT_AB);
W_TIME; //一秒待つ
Z_UE; //ペンを上げる
W_TIME; //一秒待つ
X_USI; //二画目(1)
Wait(9);
Off(OUT_A);
W_TIME; //一秒待つ
Y_USI; //Y軸移動
Wait(9);
Off(OUT_B);
W_TIME; //一秒待つ
Z_SITA; //ペンを下げる
W_TIME; //一秒待つ
Y_USI; //Y軸移動
Wait(13);
Off(OUT_B);
W_TIME; //一秒待つ
XY_MAE; //二画目(2)
Wait(20);
Off(OUT_AB);
W_TIME; //一秒待つ
Z_UE; //ペンを上げる
W_TIME; //一秒待つ
X_USI; //三画目
Wait(13);
Off(OUT_A);
W_TIME; //一秒待つ
Y_USI; //Y軸移動
Wait(13);
Off(OUT_B);
W_TIME; //一秒待つ
Z_SITA; //ペンを下げる
W_TIME; //一秒待つ
X_MAE; //x軸移動
Wait(13);
Y_USI; //Y軸移動
Wait(13);
Off(OUT_AB);
W_TIME; //一秒待つ
Z_UE; //ペンを上げる
***メインプログラム [#p066acb1]
#define X_MAE OnFwd(OUT_A);
#define Y_MAE OnFwd(OUT_B);
#define Z_SITA OnFwd(OUT_C);Wait(7);Off(OUT_C);
#define XY_MAE OnFwd(OUT_AB);
#define X_USI OnRev(OUT_A);
#define Y_USI OnRev(OUT_B);
#define Z_UE OnRev(OUT_C);Wait(7);Off(OUT_C);
#define W_TIME Wait(100);
task main(){
SetPower(OUT_A,3);
SetPower(OUT_B,3);
SetPower(OUT_C,3);
Y_MAE; //書き始めの位置へ
Wait(18); //移動
Off(OUT_B); //x軸止める
W_TIME;
Z_SITA; //ペンを下ろす、移動、止める
W_TIME;
XY_MAE; //モータxyを前転
Wait(18); //書く
Off(OUT_AB); //モータxyを止める
W_TIME;
Z_UE; //ペンを上げる、待つ、止める
W_TIME;
X_USI;
Wait(6); //二画目
Off(OUT_A);
W_TIME;
Y_USI;
Wait(6);
Off(OUT_B);
W_TIME;
Z_SITA;
W_TIME;
X_MAE;
Wait(18);
Off(OUT_A);
W_TIME;
Z_UE;
W_TIME;
X_USI; //三画目
Wait(18);
Off(OUT_A);
W_TIME;
Y_USI;
Wait(5);
Off(OUT_B);
W_TIME;
Z_SITA;
W_TIME;
Y_USI;
Wait(18);
Off(OUT_B);
W_TIME;
Z_UE;
W_TIME;
X_USI; //四画目
Wait(5);
Off(OUT_A);
W_TIME;
Y_MAE;
Wait(5);
Off(OUT_B);
W_TIME;
Z_SITA;
W_TIME;
XY_MAE;
Wait(13);
Off(OUT_AB);
W_TIME;
Y_USI; //五画目
Wait(18);
Off(OUT_B);
W_TIME;
Z_UE;
W_TIME;
Y_MAE; //六画目
Wait(9);
Off(OUT_B);
W_TIME;
Z_SITA;
W_TIME;
X_MAE;
Wait(9);
Off(OUT_A);
W_TIME;
Z_UE;
W_TIME;
Y_MAE; //七画目
Wait(9);
Off(OUT_B);
W_TIME;
Z_SITA;
W_TIME;
Y_USI;
Wait(18);
Off(OUT_B);
W_TIME;
Z_UE;
W_TIME;
XY_MAE; //一画目
Wait(5);
Off(OUT_AB);
W_TIME;
Z_SITA;
W_TIME;
XY_MAE;
Wait(13);
Off(OUT_AB);
W_TIME;
Z_UE;
W_TIME;
X_USI; //二画目(1)
Wait(9);
Off(OUT_A);
W_TIME;
Y_USI;
Wait(9);
Off(OUT_B);
W_TIME;
Z_SITA;
W_TIME;
Y_USI;
Wait(13);
Off(OUT_B);
W_TIME;
XY_MAE; //二画目(2)
Wait(20);
Off(OUT_AB);
W_TIME;
Z_UE;
W_TIME;
X_USI; //三画目
Wait(13);
Off(OUT_A);
W_TIME;
Y_USI;
Wait(13);
Off(OUT_B);
W_TIME;
Z_SITA;
W_TIME;
X_MAE;
Wait(13);
Y_USI;
Wait(13);
Off(OUT_AB);
W_TIME;
Z_UE;
}
*結果 [#o6aa08b1]
#ref(結果.JPG)
文字を書くことはできたが、誰が見ても読めるようなクオリティの字を書くことはできなかった。
原因として、X軸の製作時にパーツを多く使いすぎてしまい、別の場所でちょうど良い部品を使えず、あり合わせの部品での製作となり、安定性が欠けてしまった。
Y軸のギアに力がかかりすぎたことでギアが外れてしまうということが起きた。これによりY軸方向の動きが鈍くなり、うまく書くことができなかった。