- 追加された行はこの色です。
- 削除された行はこの色です。
[[2008b/A5]]
*課題1・・・相方の似顔絵をロボットに作成させなさい [#k843008e]
#contents [#e4e9d40e]
&ref(/homes/home5/f081014/Desktop);&br;
**課題について [#h9ff4584]
ロボティクス入門で最初に出された課題は
-相方の似顔絵をロボットに作成させなさい
-このホームページを作成しそれにこのレポートを記述しなさい;
の二つ。配布されたロボットキットでロボットを組み立て、それにプログラムを入力し似顔絵を描かせなければならない。プログラミングの作成にはNQCを使用した。
**ロボットの説明 [#we2357f1]
今回ロボットを作成する際に取り入れたかった要素は
-できるだけコンパクトにする。
-スムーズに小回りができるようにキャスターをつけたい。
-旋回するときの回転軸上にペンをつけたい。
-キャタピラかっこいいからどこかに使いたい。
の4点。それを実現するために分解と構築を何度も繰り返してできたのがこちら。
#ref(DSC00515.jpg)
#ref(/homes/home5/f081014/Desktop/ロボティクス入門 2008課題1)
&ref(2008b/A5/課題1左/右サイド.JPG);
&ref(2008b/A5/課題1左/キャタピラ横.JPG);
&ref(2008b/A5/課題1左/キャタピラテンショナー.JPG);
&ref(2008b/A5/課題1左/キャタピラ1110.JPG);
&ref(2008b/A5/課題1左/後ろ.JPG);
&ref(2008b/A5/課題1左/上.JPG);
&ref(2008b/A5/課題1左/前.JPG);
***工夫点 [#nb727d1f]
1,キャスターひとつと駆動輪二つの三輪化したことで滑らかに旋回できるようになり、大きなタイヤと相まって機敏で速い動きができるようになりました。
&ref(2008b/A5/課題1左/キャスター.JPG);
&ref(2008b/A5/課題1左/キャスター横.JPG);
2,ベースの中央には穴があいており、その上に設置したキャタピラにペンを輪ゴムで固定し、上下させて線を書くという仕組みになっています。ただ、これだと筆圧が弱くなってしまい、最初はうまく書けませんでした。筆圧を強めるためにペンを下げる方向にモーターで出力を加え続ければ解決しましたが、ペンを固定する輪ゴムとモーターに負荷がかかり続けるため、動力を伝える歯車の一つに一定以上の力がかかると空回りするタイプのものを使い、力の逃げ場を作りました。
&ref(2008b/A5/課題1左/空転歯車.JPG);
3,キャタピラは二つの駆動輪の間にあり、回転軸のほぼ真上の位置にくるように付けました。これにより旋回時のペンの位置のずれがほとんどないため、位置を修正するプログラムを作る手間をだいぶ省くことができました。
&ref(2008b/A5/課題1左/本体穴 下 .JPG);
&ref(2008b/A5/課題1左/本体穴 上 .JPG);
他に細かいところでは、
-車体の安定化のためにキャスターのアームを延長してホイールベースを伸ばし、重量物であるRCXを三つあるタイヤのほぼ中心に置いた。
-キャタピラがたるみがちだったので、内側のローラーの一つを若干外側に移し、張りを保たせた。
-キャスターのアームや、キャタピラのベースが動かないように補強を加えた。
&ref(2008b/A5/課題1左/キャスター台座補強.JPG);
**プログラムについて [#de902e86]
***S助の場合 [#sd9976cc]
最初からこつこつとプログラミングしていってもいいのだが、どうやったら効率的にできるか考えてみた。
1,まず相方の顔をロボットでも書けるように簡略化し、とりあえず書いてみる。
2,顔を輪郭、髪、顔のパーツに分割し、パーツごとにプログラムを仕上げていく。
3,それぞれのプログラムを合体させる。
こうすることでパーツごとにテストや修正することができ。時間が短縮できた・・・と思います。~そしてできたプログラムがこちら。
task main()
{
SetPower(OUT_B,07);
OnRev(OUT_B);//penorosu
Wait(20);
//kao no rinkaku
OnRev(OUT_A+OUT_C);//tyokusin
Wait(45);
OnFwd(OUT_A);//hidari kaiten
Wait(18);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(50);
OnFwd(OUT_A);//hidari kaiten
Wait(32);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(45);
OnFwd(OUT_A);//hidari kaiten
Wait(18);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(60);
//kao no rinkaku owari
//kami no rinkaku
Off(OUT_A);OnRev(OUT_C);//hidari ka-bu
Wait(79);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(28);
Off(OUT_A);OnRev(OUT_C);//hidari ka-bu
Wait(79);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(10);
OnFwd(OUT_A);//hidari kaiten
Wait(50);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(22);
OnFwd(OUT_C);//migikaiten
Wait(24);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(22);
OnFwd(OUT_A);//hidari kaiten
Wait(24);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(22);
OnFwd(OUT_C);//migikaiten
Wait(24);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(22);
OnFwd(OUT_C);//migikaiten
Wait(24);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(26);
OnFwd(OUT_A);//hidari kaiten
Wait(68);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(7);
//kami no rinkaku owari
//kao
OnFwd(OUT_B);//pen ageru
Wait(20);
Off(OUT_A+OUT_C);//tomaru
Wait(70);
OnFwd(OUT_A);OnRev(OUT_C);//hidari kaiten
Wait(60);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(15);
OnFwd(OUT_C);OnRev(OUT_A);//migi kaiten
Wait(10);
Off(OUT_A+OUT_C);//tomaru
Wait(70);
OnRev(OUT_B);//penorosu
Wait(20);
Off(OUT_A+OUT_C);//tomaru
Wait(70);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(15);
Off(OUT_A+OUT_C);//tomaru
Wait(70);
OnFwd(OUT_B);//pen ageru
Wait(20);
Off(OUT_A+OUT_C);//tomaru
Wait(70);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(20);
Off(OUT_A+OUT_C);//tomaru
Wait(70);
OnRev(OUT_B);//penorosu
Wait(20);
Off(OUT_A+OUT_C);//tomaru
Wait(70);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(15);
Off(OUT_A+OUT_C);//tomaru
Wait(70);
OnFwd(OUT_B);//pen ageru
Wait(20);
Off(OUT_A+OUT_C);//tomaru
Wait(70);
OnFwd(OUT_A);//hidari kaiten
Wait(80);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(30);
//me
OnFwd(OUT_C);OnRev(OUT_A);//migi kaiten
Wait(20);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(7);
Off(OUT_A+OUT_C);//tomaru
Wait(70);
OnRev(OUT_B);//pen orosu
Wait(20);
Off(OUT_A+OUT_C);//tomaru
Wait(70);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(20);
OnFwd(OUT_A);OnRev(OUT_C);//hidari kaiten
Wait(55);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(8);
//hana
Off(OUT_A+OUT_C);//tomaru
Wait(70);
OnFwd(OUT_B);//pen ageru
Wait(20);
Off(OUT_A+OUT_C);//tomaru
Wait(70);
OnFwd(OUT_C);OnRev(OUT_A);//migi kaiten
Wait(30);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(26);
OnFwd(OUT_C);//migi kaiten
Wait(50);
Off(OUT_A+OUT_C);//tomaru
Wait(70);
OnRev(OUT_B);//pen orosu
Wait(20);
Off(OUT_A+OUT_C);//tomaru
Wait(70);
OnRev(OUT_A+OUT_C);//tyokusin
Wait(15);
OnFwd(OUT_B);//pen ageru
Wait(20);
//kuchi
//kao owari
Off(OUT_B+OUT_A+OUT_C);
}
で、これで書けた顔がこれ。
&ref(2008b/A5/課題1左/似顔絵.JPG);
&ref(2008b/A5/課題1左/似顔絵2.JPG);
***カズヤの場合 [#zbfe7f45]
#define pen_up OnRev(OUT_B);Wait(20);Off(OUT_B);
#define pen_down SetPower(OUT_B,3);OnFwd(OUT_B);Wait(50);
#define turn_right OnFwd(OUT_A);OnRev(OUT_C);Wait(40);Off(OUT_A+OUT_C);Wait(50);
#define turn_left OnFwd(OUT_C);OnRev(OUT_A);Wait(40);Off(OUT_A+OUT_C);Wait(50);
#define straight(u) OnFwd(OUT_A+OUT_C);Wait(u);Off(OUT_A+OUT_C);Wait(50);
task main()
{
pen_down;
OnFwd(OUT_A+OUT_C);
Wait(50);
Float(OUT_C);
Wait(235);
OnFwd(OUT_C);
Wait(50);
Float(OUT_C);
Wait(235);
Off(OUT_A+OUT_B+OUT_C);//輪郭
pen_up;
turn_right;
straight(10);
pen_down;
straight(10);
pen_up;//右目
straight(10);
pen_down;
straight(10);
pen_up;//左目
turn_left;
straight(50);
turn_left;
pen_down;
straight(25);
pen_up;//口
OnRev(OUT_A+OUT_C);Wait(15);Off(OUT_A+OUT_C);
turn_left;
straight(15);
pen_down;
straight(10);
pen_up;//鼻
}
*感想 [#uf51fff7]
-S助
~最初、ロボットを組み立てるのに夢中になってしまい、『改良』称して破壊と創造を繰り返した結果、ロボが完成してプログラミングとWebに差し掛かったのは期限の二日前になってしまった。徹夜を繰り返したものの期限に間に合わず、しかも徹夜で体調を崩し他の授業が残念なことに・・・。
~だけどそれで完成したロボットは納得の出来だったし、書いた顔も若干手を抜いたが、なかなかの出来でよかったと思う。ただプログラムは工夫次第でもう少しシンプルにできただろうなーと思います。
~まあ、『提出期限に間に合うよう、一部にこだわりすぎずに要領よくやりましょうね。』ということを実感した。
-カズヤ
~ロボットをいろいろ改良するために遅くまで学校に残り大変だったがロボットが完成した時はとてもうれしかった。
- 写真ちゃんと載せてください。 -- [[なかむら]] &new{2008-11-12 (水) 17:12:12};
- 似顔絵の出来はすばらしいです。これからもがんばってください。 -- [[なかむら]] &new{2008-11-28 (金) 17:30:28};
#comment()