#contents
*課題目的 [#l1729c25]
今回の課題の目的はこれまで住んだことのある都道府県名、市町村名、地区名などの中から2文字以上のものを選び、それをA4の紙の中1に書くロボットを製作する。
~わたしは大学に入る前の1年半の間、東京で日本語を勉強していたので「東京」の文字を選んだ。
*ロボットについて [#a6b43770]
ロボットを作る前にグループの中で様々なことを考えた。例えば、各自の文字の書く方法、過去のロボット、などである。結局、プログラムを簡単に書けるためx-y軸するロボットを作ることに決定した。 
#ref(2017b/Member/tono/Mission1/robot1.jpg,75%,本体ロボット)
~ロボットでは、図のように3つのモータを使った。(A)x軸移動のモータ(右左)、(B)y軸移動のモータ(上下)(C)アームのモータ(ペンの上げ下げ)。
**x軸移動ロボット [#l45f1a57]
#ref(2017b/Member/tono/Mission1/robot4.jpg,75%,x軸移動ロボット)
図より、x軸移動ロボットではローバー部分と高架部分である。
-ローバー部分ではx軸方向の移動(left-right move)のため1つのモータを使った。最初は3つのタイヤ―を使ったが滑らかに移動できなかった。今回は4つのタイヤ―を使うことで滑らかに移動するように移動した。
-高架部分はy軸方向の移動と、ペンの上げ下げの際にロボットを支えるための部分である。高架部分を曲がらないようにするためできるだけ丈夫にした。例えば、部品をねじ状で繋がった。また、y軸移動とペンの上げ下げのロボットが移動するとき、脱輪可能性があるのでバリアの部品を使った。
**y軸移動とアームロボット [#l45f1a57]
#ref(2017b/Member/tono/Mission1/robot5.jpg,75%,y軸移動とアームロボット)
-y軸移動ロボットではy軸に移動(up-down move)のため1つのモータを使った。また、高架部分の上に移動できるため一番小さいタイヤ―を使った。
-アームロボットではペンの上げ下げ(liftpen,putpen)のため1つのモータを使った。最初はペンの上げ下げのバランスが良くなかった。モーメントを考え、図のように1つのタイヤ―を端の部分につけることでバランスを改良した。
*プログラムについて [#f57fe4ea]
文字を書く前に方向による1センチの線を書くためにモータのスピード(speed)と動く時間(Wait)を測定した。また、アームロボットではペンの上げ下げのためのモータのスピード(speed)と動く時間(Wait)も測定した。結果は以下のものである;
|CENTER:方向|CENTER:スピード(speed)|CENTER:動く時間(Wait)|
|CENTER:leftとright|CENTER:20|CENTER:200|
|CENTER:upとdown|CENTER:20|CENTER:300|
|CENTER:liftpen|CENTER:23|CENTER:200|
|CENTER:putpen|CENTER:15|CENTER:250|
また、斜め線の場合はx軸移動とy軸移動を両方使った。1センチの線を書くためにモータのスピード(speed)と動く時間(Wait)の測定結果は以下のものである;
|CENTER:方向|CENTER:xのスピード(x-speed)|CENTER:yのスピード(y-speed)|CENTER:動く時間(Wait)|
|CENTER:leftup|CENTER:17|CENTER:15|CENTER:250|
|CENTER:leftdown|CENTER:15|CENTER:15|CENTER:250|
|CENTER:rightup|CENTER:13|CENTER:14|CENTER:250|
|CENTER:rightdown|CENTER:15|CENTER:17|CENTER:250|
同じ1センチを書くだが方向が違うと動くロボットが違う。それは、x軸移動ロボットの移動がy軸移動ロボットよりいどうが遅い。
**文字の書く方法 [#r5e987c0]
#ref(2017b/Member/tono/Mission1/robot2.jpg,100%,東京の書く方法)
文字については、できるだけロボットを移動しないように図のように書き順を決めた。ただし、オレンジ色はペンを上げること、また、灰色はペンを上げ下げること。番号のように文字を書くことを行った。
**プログラムの説明 [#yc369f4a]
東京を書くためのプログラム以下のようになる。
***マクロの説明 [#ee012a79]
定義(define)は実験からの値を扱う
 #define left(t) OnFwd(OUT_A,20);Wait(t);Off(OUT_A);   //leftの移動
 #define right(t) OnRev(OUT_A,20);Wait(t);Off(OUT_A);   //rightの移動
 #define up(t) OnFwd(OUT_B,20);Wait(t);Off(OUT_B);    //upの移動
 #define down(t) OnRev(OUT_B,20);Wait(t);Off(OUT_B);   //downの移動
 #define liftpen OnRev(OUT_C,23);Wait(200);Off(OUT_C);   //ペンを上げる
 #define putpen OnFwd(OUT_C,15);Wait(250);Off(OUT_C);   //ペンを下げる
 #define leftdown(t) OnFwd(OUT_A,15);OnRev(OUT_B,15);Wait(t);Off(OUT_AB); //leftdownの移動
 #define rightdown(t) OnRev(OUT_A,17);OnRev(OUT_B,15);Wait(t);Off(OUT_AB);  //rightdownの移動
 #define leftup(t) OnFwd(OUT_A,15);OnFwd(OUT_B,17);Wait(t);Off(OUT_AB);  //leftupの移動
 #define rightup(t) OnRev(OUT_A,13);OnFwd(OUT_B,14);Wait(t);Off(OUT_AB);  //rightupの移動
***main内で実行しているの説明 [#j0f48973]
文字「東」と「京」をそれぞれ説明するが、さっきほどの> 文字の書く方法(1ー12までの順番): 文字の書く方法に沿って説明したいと思う。ただし、ロボットを安定するや脱輪しないのため時々ロボットを止める(Waitを使って実行する)
文字「東」と「京」をそれぞれ説明するが、さっきほどの文字の書く方法(1ー12までの順番): 文字の書く方法に沿って説明したいと思う。ただし、ロボットを安定するや脱輪しないのため時々ロボットを止める(Waitを使って実行する)
~文字「東」 
 task main()
 {
     putpen;
     right(1800);   //ここから「東」を書く。(Pendown1)
     Wait(400);   //ロボットを安定するや脱輪しないのため時々ロボットを止める
     liftpen;   //Penup2
     left(1800);   
     down(1400); 
     putpen;   //Pendown3
     Wait(400);
     right(2000);
     Wait(400);
     up(600);
     Wait(400);
     left(2000);
     Wait(400);
     down(1200);
     Wait(400);
     right(2100);
     Wait(400);
     up(600);
     liftpen;
     left(1000);
     up(2000);
     putpen   //Pendown4
     down(1200);
     Wait(400);
     down(1200);
     Wait(400);
     down(1200);
     liftpen;
     up(1000);
     putpen;   //Pendown5    
     Wait(400);
     leftdown(1400);
     liftpen;
     rightup(1500);
     putpen;   //Pendown6      
     Wait(400);     
     rightdown(1400);
     liftpen;   //「東」を書き終わった。
     leftup(1500);   //ここはロボットを文字「東」 から 「京」に移動する命令
     up(2200);
     right(2800);    
~文字「京」 
     putpen;   // ここから「京」を書く。(Pendown7)
     Wait(400);
     down(500);
     liftpen;
     left(1000);
     putpen;   //Penup8
     Wait(400);
     right(2000);
     liftpen;   //Pendown9
     down(1100);
     putpen;   //Penup10
     Wait(400);
     up(600);
     Wait(400);
     left(2000);
     Wait(400);
     down(1200);
     Wait(400);
     right(2100);
     Wait(400);
     up(600);
     Wait(400);
     liftpen;   //Pendown11
     left(1000);
     down(800);
     putpen;   //Penup11
     Wait(400);
     down(1100);
     liftpen;        
     up(1000);
     leftdown(400);
     putpen;   //Pendown12
     Wait(400);
     leftdown(1100);
     liftpen;
     up(640);
     right(1000);
     putpen;
     rightdown(1100);
     liftpen;   //「京」を書き終わった。(Finish)
 }
最初では実験の結果とおりプログラムを書いたが、実際にやってみると文字はうまく書けない。そのため、モータのスピード(speed)と動く時間(Wait)を少し変えた。
*結果 [#y0bbd4f5]
#ref(2017b/Member/tono/Mission1/robot3.jpg,75%,結果)
図のように発表準備したときロボットは4回連続「東京」の文字は書けたが、発表したときロボットがうまく文字を書けなかった。特にペンの上げ下げが問題であった。それは電源が原因だと考えた。
*まとめ [#c32ac802]
ロボットではいろいろな工夫点であったが、まだ欠点がある。例えば、発表したときのペンの上げ下げが問題である。先生より、ペンの運動が円運動であり、ロボットがバランスとることが難しい事が指摘された。また、部品をたくさん使ったが無駄な部品が多かった。次回の課題はそのことを考えなければならない。
今回の課題ではロボットを作ったこととプログラムを書くことは初めてである。また、留学生の立場で日本人とグループワークすることも初めてであったがみんなが優しくしてくれた。今回の課題により、さらにコミュニケーションをすることができたと思う。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS