・今回の目的
NXTを用いて似顔絵を描くロボットとプログラムを作成する。
↓ロボットの画像↓
ロボットの前方にアームをつけ、それにペンを取り付けた。
Cのモーターを使用して上下させてペンを上げたり下げたりさせる仕組みにした。
AとBのモーターでタイヤを動かしている。
下に書くものは今回、似顔絵を作成するにあたって使った定義である。
ロボットの前方に取り付けたアームを上下させるための
ペンアップとペンダウンである
#define pen_up OnRev(OUT_C,10);Wait(500);Off(OUT_C) #define pen_down OnFwd(OUT_C,10);Wait(500);Off(OUT_C)
また、反省の欄に書くが、今回の課題において
輪郭を書くためのプログラムで躓いてしまって
顔のパーツをつくるまでに至らなかったため
ここでは輪郭を書こうとしたプログラムだけでも記すことにする
task main () { repeat(6) { //輪郭 OnFwd(OUT_AB,25); Wait(1200); Off(OUT_AB); pen_up; OnFwd(OUT_AB,25); Wait(800); Off(OUT_AB); OnFwd(OUT_B,25); Wait(1917); Off(OUT_B); OnRev(OUT_AB,25); Wait(2000); Off(OUT_AB); pen_down; }
これは六角形の輪郭をイメージして作ったものである。
前進→ペンアップ→前進→回転→後退→ペンダウン→前進
と動くようになっている
顔の輪郭を六角形にしようと考え、当初は
前進→ペンアップ→回転→ペンダウン→前進
というプログラムで進めていこうと思ったが、
前進→ペンアップ→回転にしてしまうとペン先が合わなくなってしまうことに気づき
その対策として
前進→ペンアップ→前進→回転→後退→ペンダウン→前進
と、ペンアップの後に前進を加えたが
どれだけ前進しどれだけ後退すればいいのか、その調節が難しかった。
また、ロボットを回転させる時にロボットの後輪が回転の方向に向いてしまって
後退しようとすると横に向いている後輪の影響でまっすぐに下がれなかったことが予想外だった。
横に向いた後輪の影響を踏まえてもっと回転角度を調整すれば解決できたかもしれない。
ロボットを作ることも、プログラムを書くことも初めてのことで
なかなか慣れなかったところがあった。
またタイヤなどについても認識があまく、
想像通りにならなくて、
うまく顔を書けなかったのが悔しかった。
時間があれば後輪の影響をふまえ調整できたかもしれなかったのでくやしい。
次回の課題は時間内に完成させれるようにしたい。