課題 顔を描くプログラム
内容 紙に同じ班の人間の顔を描かせる。ロボットそ組み立てから行う
本体 基本となるNXTの胴体に回転するアームを取り付けてアームの上げ下げによって、線を書く、書かないの調整を行う。アームの取り付けに関しては手伝うことができなかったので、次回以降組み立てる創造力を身につけたい
問題 回転するプログラムを作っても思っただけの距離うごいてくれず、それを微調整していく作業が大変だった。
プログラム 顔の輪郭は皆同じなので、輪郭を三人で共有して、各人の特徴を加えた
問題 細かい微調整をプログラムするのが非常に困難で、唯々時間との闘いだった。
動作説明 1.スタート後1秒待機。 2.Bの車輪で360度旋回して丸を描く 3.顔から離れ、Bの車輪で150度旋回して帰ってくる。 4.顔を横断しながら目を書く。 5.顔から離れ、Bの車輪で180度旋回して帰ってくる。 6.顔を通過しながら口を描く。 7.口からシミを描く。
プログラム内容
#define TURN_L360 OnFwd(OUT_A,40); Wait(5645); Off(OUT_A) #define TURN_L225 OnFwd(OUT_A,40); Wait(3528); Off(OUT_A) #define TURN_L150 OnFwd(OUT_A,50); Wait(2352); Off(OUT_A) #define TURN_L180 OnFwd(OUT_A,50); Wait(2822); Off(OUT_A) #define TURN_L045 OnFwd(OUT_A,50); Wait(705); Off(OUT_A) #define GO_FWD_05 OnFwd(OUT_A,40); OnFwd(OUT_B,37); Wait(500); Off(OUT_AB) #define GO_FWD_1 OnFwd(OUT_A,40); OnFwd(OUT_B,37); Wait(1000); Off(OUT_AB) #define GO_FWD_2 OnFwd(OUT_A,40); OnFwd(OUT_B,37); Wait(2000); Off(OUT_AB) #define GO_FWD_3 OnFwd(OUT_A,40); OnFwd(OUT_B,37); Wait(3000); Off(OUT_AB) #define GO_FWD_4 OnFwd(OUT_A,40); OnFwd(OUT_B,37); Wait(4000); Off(OUT_AB) #define ARM_DWN OnFwd(OUT_C,40); Wait(200); Off(OUT_C) #define ARM_UP OnRev(OUT_C,40); Wait(200); Off(OUT_C) #define OFF Off(OUT_AB) task main () { Wait(1000); //1待機 ARM_DWN; TURN_L360; //円を描く ARM_UP; GO_FWD_2; TURN_L210; //目を狙いに行く GO_FWD_05; ARM_DWN; GO_FWD_05; //目を描く ARM_UP; GO_FWD_05; ARM_DWN; GO_FWD_05; ARM_UP; GO_FWD_2; TURN_L180; //口を狙いに行く GO_FWD_1; ARM_DWN; //口を書いてその流れでシミへ GO_FWD_05; TURN_L045; }
結果 直前の試走ではうまく顔の輪郭を描くことができたが、本番では電池の残量のせいかうまくいかなかった。 そのためアップロードするものは無い状況となった。 失敗した結果の写真を撮っておくべきだったと反省している。
上に完成予想図をペイントによる描写で示した。本来ならこのような簡単な形だけで描けるようにしたのだが、まだプログラミングになれておらずうまくいかなかった。
まとめ 顔に特徴をつけることがとても難しかった、また電池の容量によっても動きが変わってくるのでその調整に多大な時間を労した。 複数人での共同作業になったが、同じ班の人の助けになるようなことができなかった。次の課題では組み立てから力になりたい。