[[2010b]] #contents *課題の内容 [#z65ba416] A4の紙に相棒の似顔絵を描くロボットを作成する。 -一人につき一つ以上のプログラムを作成すること。 -ペン以外はキットに含まれる部品を使うこと。 -改良や調整をしやすくするため、プログラムにおいて、できるだけサブルーチンや関数、マクロなどを使う。 *メンバー [#c6bbe517] -山崎 -仁野 *完成したロボット [#qe675f55] **ロボットの構造 [#u2b275b4] ロボットの外見です。 #ref(2010111212380000.jpg) **ロボットの解説 [#r9eaef8c] 構造としてはペンを垂直に上下させるロボットを作ろうと思ったのですが、 上手く組み立てることができなかったので想像しやすかったアームを使ったロボット作成しました。 ペンを持たせる部分はアームを使いました。 #ref(2010111212380002.jpg) モーターとアームを直接繋げると下ろすスピードが早く 上手くコントロールできなかったので ギア比を使ってアームの動く速度を少し遅くしました #ref(2010111212390000.jpg) 最初つくったロボットでは、ペンを下ろす時間が長すぎるとロボット自身が浮き上がってしまったので、 ペンが地面に接地する場所をなるべくRCXに近づけるようにして、バランスを崩しにくいようにしました。 *山崎のプログラム [#o488a88f] #define turn OnRev(OUT_C);OnFwd(OUT_A);Wait(180);Off(OUT_A+OUT_C); //180度回転する動き #define go_straight(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); //まっすぐ進む動き #define pen_up OnRev(OUT_B);Wait(20);Off(OUT_B); //ペンを上げる動き #define pen_down OnFwd(OUT_B);Wait(20);Off(OUT_B); #define back(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); //バックする動き #define turn_right OnRev(OUT_A);OnFwd(OUT_C);Wait(80);Off(OUT_A+OUT_C); //右に曲がる動き task main() { pen_down; //輪郭をかく OnRev(OUT_A); OnFwd(OUT_C); Wait(320); Off(OUT_A+OUT_C); pen_up; turn; back(100); go_straight(10); pen_down; //目を描く go_straight(20); pen_up; go_straight(30); pen_down; go_straight(20); pen_up; turn_right; go_straight(40); turn_right; back(100); pen_down; go_straight(30); //口を描く pen_up; } **完成した絵 [#m0bfd2ce] #ref(2010111214040000.jpg) **苦労、工夫した点 [#jb50cd46] ロボットの軌道と書かれた線にズレがあったのでプログラムをズレの少ないようにバックさせたりして調整しました。 *仁野のプログラム [#l9c29358] #define START OnRev(OUT_A+OUT_C); //前進 #define BACK OnFwd(OUT_A+OUT_C); //後進 #define STOP Off(OUT_A+OUT_C); //停止 #define TURN_R OnFwd(OUT_C);OnRev(OUT_A); //右折 #define TURN_L OnFwd(OUT_A);OnRev(OUT_C); //左折 #define UP OnRev(OUT_B);Wait(10);Off(OUT_B); //ペンを上げる #define DOWN OnFwd(OUT_B);Wait(10);Off(OUT_B); //ペンを下げる task main() { DOWN; TURN_R; Wait(360); STOP; UP; //輪郭終了 BACK; Wait(130); STOP; TURN_R; Wait(10); START; Wait(100); STOP; //移動終了 DOWN; BACK; Wait(20); STOP; UP; BACK; Wait(20); STOP; DOWN; BACK; Wait(20); STOP; UP; //目終了 BACK; Wait(40); STOP; TURN_L; Wait(25); START; Wait(80); STOP; //移動終了 DOWN; BACK; Wait(30); STOP; UP; //口終了 START; Wait(80); TURN_R; Wait(90); BACK; Wait(20); STOP; //移動終了 DOWN; BACK; Wait(20); STOP; UP; //鼻終了 } **苦労・工夫した点 [#uba4090a] ロボットの作り上前進しながら線を引くとつっかかえてしまうので、 後進しながら線を引くようにプログラミングしました。 最初は思っていた行動と違うふうに動いてしまいなかなか絵がかけなかったのですが、 なるべく簡単なものにして全体が見えやすいプログラムにしました。 **完成した絵 [#ga686475] #ref(2010111213500000.jpg) かなり簡単な絵になってしまいました...。 *反省と感想 [#za3d6ac7] **山崎 [#y967fe03] プログラムを組むのが初めてだったのでかなり大変でした。ロボットの方もどうやってやろうとかのアイデアも浮かばなくて結構単純なものになってしまいました。もっと複雑な絵を書きたかったのですがプログラムがうまく組めずかなり簡単なものしかかけなくてこれが顔と言えるのかと言うものになってしまいました。 **仁野 [#i55800ce] あまりLEGOを触ったことがなかったので、ロボットを作るのは難しく、 思っていたロボットとは違うものになってしまいました。 プログラミングも最初書きたかった絵はとてもできなくて、最終的にとても簡単な絵になってしまいした。 次の課題ではもっと優れたロボットを作りたいです。 *コメントをお願いします [#g045e384] TAKA 工夫した点、反省点などについてさらに内容を説明して下さい。「コメント欄を作って下さい」 FI 一人目のプログラムには説明を入れてください。ロボットも写真を貼るだけではなく、説明もお願いします。例えば、今回のポイントの一つはペンの上げ下げの機構です。 #comment