[[ロボティクス入門]] *課題1 似顔絵を描くロボット [#y5b586b7] *ロボット本体 [#l860a1f4] #ref(./120525_160346.jpg) モーターを3つ利用した腕型のロボットを作りました〜♪ 似顔絵を描く上で、輪郭や目、口などになめらかな曲線を導入しようと思いこの型にしました。 似顔絵は下図のような手順で描きました。 #ref(./120601_174416_2.jpg) 丸い輪郭はとてもうまくいったと思います。工夫したところは髪の毛の描く向きを1本ずつ変えることで、アームを上げてから動かす作業を少なくすることで、負荷を減らした点です。 #ref(./120525_165855_2.jpg) まず組み立ての段階で苦労したのがアームの重さでした。そこでコンピューターを画像のように左側に置いてアームの部分とつなぎ合わせることでバランスを維持しました。また、つなぎの部分を利用し紙をおさえることができるような構造になりました。(偶然思いつきました(^_^)) #ref(./120525_160427_2.jpg) それでも、3本のアーム自身の重さからペンが安定しなかったので、アームを安定させるために支えを取り付けました。この支えのおかげでペンがだいぶ安定しました。 この支えはこのロボットの核といっても過言ではありません!! 完成した作品は下のようになりましたー。 #ref(./120601_174416.jpg) 反省点: アームを下げる作業が強すぎたため描き出しにずれがあったり、口の形が曲がったりしてしまった。 アームの重さにより大きな負荷がかかったため、電池の減りが早くなかなか安定しなかった。 次はもっと負荷を少なくし、より安定性を高めたロボットを作りたい!! *プログラミング [#feb3e890] task main() { OnFwd(OUT_A,30); Wait(1200); Off(OUT_A); Wait(500); //輪郭を描く OnRev(OUT_C,40); Wait(750); Off(OUT_C); Wait(500); //ペンを上げる OnRev(OUT_B,30); Wait(100); Off(OUT_B); Wait(500); //髪の毛1の位置までペンを調整 OnFwd(OUT_C,20); Wait(1000); Off(OUT_C); Wait(500); //ペンを下げる OnRev(OUT_A,20); Wait(200); Off(OUT_A); Wait(500); //髪の毛1を描く OnRev(OUT_C,40); Wait(700); Off(OUT_C); Wait(500); //ペンを上げる OnRev(OUT_B,20); Wait(200); Off(OUT_B); Wait(500); //髪の毛2の位置までペンを調整 OnFwd(OUT_C,20); Wait(1000); Off(OUT_C); Wait(500); //ペンを下げる OnFwd(OUT_A,20); Wait(200); Off(OUT_A); Wait(500); //髪の毛2を描く OnRev(OUT_C,30); Wait(650); Off(OUT_C); Wait(500); //ペンを上げる OnRev(OUT_B,30); Wait(200); Off(OUT_B); Wait(500); //髪の毛3の位置までペンを調整 OnFwd(OUT_C,20); Wait(1000); Off(OUT_C); Wait(500); //ペンを下げる OnRev(OUT_A,20); Wait(200); Off(OUT_A); Wait(500); //髪の毛3を描く OnRev(OUT_C,40); Wait(700); Off(OUT_C); Wait(500); //ペンを上げる OnRev(OUT_B,30); Wait(200); Off(OUT_B); Wait(500); //髪の毛4の位置までペンを調整 OnFwd(OUT_C,25); Wait(1300); Off(OUT_C); Wait(500); //ペンを下げろ OnFwd(OUT_A,30); Wait(200); Off(OUT_A); Wait(500); //髪の毛4を描く OnRev(OUT_C,30); Wait(600); Off(OUT_C); Wait(500); //ペンを上げる OnFwd(OUT_B,30); OnRev(OUT_A,25); Wait(400); Off(OUT_AB); Wait(500); //口の位置までペンを調整 OnFwd(OUT_C,20); Wait(1000); Off(OUT_C); Wait(500); //ペンを下げる OnRev(OUT_B,30); Wait(200); Off(OUT_B); Wait(500); //口を描く OnRev(OUT_C,40); Wait(900); Off(OUT_C); Wait(500); //ペンを上げる OnFwd(OUT_A,20); OnFwd(OUT_B,30); Wait(200); Off(OUT_AB); Wait(500); //左目の位置までペンを調整 OnFwd(OUT_C,20); Wait(1000); Off(OUT_C); Wait(500); //ペンを下げる OnRev(OUT_B,30); Wait(150); Off(OUT_B); Wait(500); //左目を描く OnRev(OUT_C,50); Wait(700); Off(OUT_C); Wait(500); //ペンを上げる OnRev(OUT_B,30); Wait(100); Off(OUT_B); Wait(500); //右目の位置までペンを調整 OnFwd(OUT_C,20); Wait(1000); Off(OUT_C); Wait(500); //ペンを下げる OnRev(OUT_B,30); Wait(200); Off(OUT_B); Wait(500); //右目を描く OnRev(OUT_C,40); Wait(750); Off(OUT_C); Wait(500); //最後にペンを上げる }