[[2009b]]
*課題1:お絵描きロボット [#ia123561]
A3の紙に相棒の似顔絵を書くロボットを作成する。


目次
#contents
*ロボット製作 [#u3904f50]
**方針 [#xaf85203]
 プログラムの作成をより簡単に、そして、移動距離が長くなるにつれて大きくなる誤差を最小限にするために、縦と横の線を組み合わせて似顔絵を描くようなロボットを作成することにした。
***前後の移動 [#f97aceb5]
 最初に作成したロボットは左右2つのモーターで動きをコントロールしていたが、今回は、前後だけなので3つしかないモーターを有効に活用するために1つのモーターで4つのタイヤを動かすことにした。
#ref(2009b/A2/課題1右/dodai.jpg,50%,略図)
イメージ図
***左右の移動 [#p4b1b818]
 モーターを1つ使い、レールの中にアームを通して、タイヤでアームをスライドさせて伸び縮みさせることで、横の線を引くことにした。
#ref(2009b/A2/課題1右/arm.jpg,50%,略図)
***上下の移動 [#c6c9b0f7]
 ペンを上げ下げするために、最後の1つのモーターを用いて、ペンを上げたり下ろしたりする動力へと活用することにした。当初は、ペンを垂直に持ち上げる方式を考えたが、アームの部分が重くなりすぎるので、斜めにペンを上げ下ろしすることにした。
**製作手順 [#x2b97886]
***土台の作成 [#faa3db53]
 アームやRCXなどを支える土台であるため、全体のバランスが取れるようにすることが重要になった。前後のコントロールをする1つのモーターを土台の真ん中に位置するように設置することで、バランスが安定した。
***アームの作成 [#v0938297]
***ペンを持つところ [#pf22160b]
***完成? [#f76ed885]
***完成 [#y675b086]
**工夫した点 [#rfba6b87]
**問題点 [#ne6d3088]
*プログラムとお絵描きロボットの描いた顔 [#v675879a]
**その1 [#h9f9044a]
**その2 [#ud78345b]
 #define MOVE_TIMEAX 10 
 #define MOVE_TIMECY 5 
 #define MOVE_TIMEBZ 30 
 #define PAUSE 100
 #define Z_UP  OnFwd(OUT_B); Wait(MOVE_TIMEBZ); Off(OUT_B); Wait(PAUSE);
 #define Z_DOWN OnRev(OUT_B); Wait(MOVE_TIMEBZ); Off(OUT_B); Wait(PAUSE);
 #define X_RIGHT OnRev(OUT_A); Wait(MOVE_TIMEAX); Off(OUT_A); Wait(PAUSE);
 #define X_LEFT OnFwd(OUT_A); Wait(MOVE_TIMEAX); Off(OUT_A); Wait(PAUSE);
 #define Y_FRONT OnRev(OUT_C); Wait(MOVE_TIMECY); Float(OUT_C); Wait(PAUSE);
 #define Y_BACK OnFwd(OUT_C); Wait(MOVE_TIMECY); Float(OUT_C); Wait(PAUSE);
 task main()
 {
 Wait(100);
 Z_DOWN;
 Y_FRONT;
 X_RIGHT;
 Y_BACK;
 X_LEFT;
 OnRev(OUT_A); Wait(40); Off(OUT_A);
 Wait(PAUSE);
 Y_FRONT;
 X_RIGHT;
 Y_BACK;
 X_LEFT;
 Z_UP; //grass
 OnFwd(OUT_A); Wait(20); Off(OUT_A);
 Wait(PAUSE);
 OnRev(OUT_C); Wait(10); Off(OUT_C);
 Wait(PAUSE);
 Z_DOWN;
 OnRev(OUT_C); Wait(10); Off(OUT_C);
 Wait(PAUSE);
 Z_UP; //nose
 OnRev(OUT_C); Wait(10); Off(OUT_C);
 Wait(PAUSE);
 OnRev(OUT_A); Wait(20); Off(OUT_A);
 Wait(PAUSE);
 Z_DOWN;
 OnFwd(OUT_A); Wait(MOVE_TIMEAX); Float(OUT_A);
 Wait(PAUSE);
 Z_UP; //mouth
 OnFwd(OUT_A); Wait(5); Float(OUT_A);
 Wait(PAUSE);
 OnRev(OUT_C); Wait(MOVE_TIMECY); Float(OUT_C);
 Wait(PAUSE);
 Z_DOWN;
 OnRev(OUT_A); Wait(50); Float(OUT_A);
 Wait(PAUSE);
 OnFwd(OUT_C); Wait(50); Float(OUT_C);
 Wait(PAUSE);
 OnFwd(OUT_A); Wait(50); Float(OUT_A);
 Wait(PAUSE);
 OnRev(OUT_C); Wait(50); Float(OUT_C);
 Wait(PAUSE);
 Z_UP;
 }
*感想 [#m5048026]
*コメントどうぞ [#u4aacdee]
#comment


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