2008b/A5

課題1・・・相方の似顔絵をロボットに作成させなさい

#contents [#e4e9d40e]

課題について

ロボティクス入門で最初に出された課題は  

の二つ。配布されたロボットキットでロボットを組み立て、それにプログラムを入力し似顔絵を描かせなければならない。プログラミングの作成にはNQCを使用した。

ロボットの説明

今回ロボットを作成する際に取り入れたかった要素は

の4点。それを実現するために分解と構築を何度も繰り返してできたのがこちら。

右サイド.JPG キャタピラ横.JPG キャタピラテンショナー.JPG キャタピラ1110.JPG 後ろ.JPG 上.JPG 前.JPG

工夫点

1,キャスターひとつと駆動輪二つの三輪化したことで滑らかに旋回できるようになり、大きなタイヤと相まって機敏で速い動きができるようになりました。

キャスター.JPG キャスター横.JPG

2,ベースの中央には穴があいており、その上に設置したキャタピラにペンを輪ゴムで固定し、上下させて線を書くという仕組みになっています。ただ、これだと筆圧が弱くなってしまい、最初はうまく書けませんでした。筆圧を強めるためにペンを下げる方向にモーターで出力を加え続ければ解決しましたが、ペンを固定する輪ゴムとモーターに負荷がかかり続けるため、動力を伝える歯車の一つに一定以上の力がかかると空回りするタイプのものを使い、力の逃げ場を作りました。

空転歯車.JPG

3,キャタピラは二つの駆動輪の間にあり、回転軸のほぼ真上の位置にくるように付けました。これにより旋回時のペンの位置のずれがほとんどないため、位置を修正するプログラムを作る手間をだいぶ省くことができました。

本体穴 下 .JPG 本体穴 上 .JPG

他に細かいところでは、

キャスター台座補強.JPG

プログラムについて

S助の場合

最初からこつこつとプログラミングしていってもいいのだが、どうやったら効率的にできるか考えてみた。

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);
}

で、これで書けた顔がこれ。

似顔絵.JPG 似顔絵2.JPG

カズヤの場合

#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;//鼻
}

感想



添付ファイル: file右サイド.JPG 377件 [詳細] fileキャタピラ横.JPG 359件 [詳細] fileキャタピラテンショナー.JPG 428件 [詳細] fileキャタピラ1110.JPG 376件 [詳細] fileキャスター.JPG 387件 [詳細] fileキャスター横.JPG 415件 [詳細] fileキャスター台座補強.JPG 427件 [詳細] file空転歯車.JPG 409件 [詳細] file後ろ.JPG 444件 [詳細] file似顔絵.JPG 407件 [詳細] file似顔絵2.JPG 389件 [詳細] file上.JPG 435件 [詳細] file前.JPG 450件 [詳細] file本体穴 下 .JPG 378件 [詳細] file本体穴 上 .JPG 407件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-02-05 (木) 16:51:52