[[2009b]]
オレが、最強だ。

#contents

*課題:似顔絵ロボットを作ろう! [#jf77f7eb]

 似顔絵ロボットを作り、パートナーの似顔絵を描く!
 
 

*チーム [#yd28a479]
-チーム名 「合衆国陸軍JSOC統合幕僚本部」

-メンバー紹介(「」内は意気込み。)~
 隊長   (工学部) 「熱き魂の邂逅」~
 なかみう (教育学部)「工学部2人がいじり始めるとすることないんですけど 汗」~
 ゆあ   (工学部) 「がんばりたい。」~
~
~
(明日、似顔絵を完成させ、達成感に満ち満ちた、仲睦まじい3人の写真を更新予定。乞うご期待!!)~


*ロボット [#z1079e5a]
ロボットに似顔絵を描かせるには、本体はあまり動かず、アームが器用に動いて、絵を
描かせる方法と、本体が動き回ってその軌跡で描かせる方法の2つがあると思う。
(他にもあるかもしれないがそれは筆者が思いつかなかったので。orz)
最初のロボットは四輪でアームはスライド式にしてみた。
反省点はタイヤが大きすぎて、速度が速くて旋回がしにくかったこと、アームを降ろした状態のとき、固定されていなく、描きにくかったことだと思う。
そこで、次のロボットは単純にアームを回して降ろす形式にしてみた。
車輪は二輪駆動にして、自由に動く車輪をつけて、旋回しやすくしたつもりだった。 しかし、自由に動くタイヤが逆に曲がる邪魔になってしまった。
(´;ω;`)~
&ref(2009b/A1/課題1左/iii.jpg,50%,これが最初のロボット);~
これが最初のロボット。~
タイヤがおおきいお。~
~
~
~

#ref(2009b/A1/課題1左/nikome.jpg,25%,2個目のロボット)


**現在の構造になるまで [#ra1b7c02]
今のペンを上げ下げする構造はペンが地面に設置する部分が重心を射抜いておらずプログラムを組む際にその点を考慮する必要があったその為当初はマシンの重心(構造的重心)、現在ではCPUが居座っている部分に穴を開けてその部分にペンを上げ下げするスタンスで行こうとしたが技術的な面により断念 アームを用いる現構造を指針にする様方針を転換した
~
~ そこで次に出た案が前述したアーム上げ下げ方式(仮)である
~ただこのモデルは幅が狭く安定性能がイマイチである側面も併せ持っていた アーム装着のためにマシンの上背を高くしたのもその原因に一役買っていた
~ そして最終的に打ち出されたのが安定して走行 そして頑健なBodyを持つ という基本的スタンスを踏まえながらもこちらが発した命令を忠実に再現する第3世代ロボの開発である 
~
~
**このマシンを組む際に注意した点 [#xbdd9b89]
まずこのレゴロボの占める重量の内、かなりの部分がCPUに集まっている。~
そのため走行中のマシンを安定させるためCPUをマシンの下部に設置した。~ 
これは様々な試行錯誤の上にCPUを上部に乗せるのはナンセンスだと気付いた経験に基づくものである。
~
~ 
またそのためにマシンの幅を広くする必要に迫られたのだが、逆にこのことが安定性を更に上げてくれた。怪我の功名とはこのこと。 
~
~


**似顔絵ロボットを作る上で [#g6ed7ffc]


*プログラム [#j864400d]
現実は甘くなかった。プログラムも難しかった。~
特に、微調整に時間がかかり、かなりの時間がかかってしまった。~
以下はプログラムの解説。

**時間がないから・・・ [#gc30e406]

効率を考え、以下のように行った。~
~
+顔をいくつかのパーツに分ける
+分担して、プログラミングを行う
+出来たものをまとめ、スタンダードモデルを完成させる
+スタンダードモデルを各自改良し、オリジナルモデルを完成させる。

**スタンダードモデル [#x4ff312d]
-分担~
 隊長  ・・・欠席のため分担なし 主にメカニック担当~
 なかみう・・・髪・輪郭~
 ゆあ  ・・・顔のパーツ~

-プログラム
分担して作ったプログラムを載せる。
***分担して作ったプログラムをうまく合体させるには、定義を共通させる必要があるので。共通の定義を。 [#gd16d6a0]
  #define go_st(t) OnFwd(OUT_A+OUT_C); Wait(t);  
  #define go_ba(t) OnRev(OUT_A+OUT_C); Wait(t);
  #define off Off(OUT_A+OUT_C);
  #define right(t) OnFwd(OUT_C); Wait(t); Off(OUT_C);
  #define left(t) OnFwd(OUT_A); Wait(t); Off(OUT_A);
  #define h_right(t) OnRev(OUT_C); Wait(t); Off(OUT_C);
  #define h_left(t) OnRev(OUT_A); Wait(t); Off(OUT_A);
分担して作ったプログラムを載せる。 [#gd16d6a0]
***共通した定義!~ [#mbe3dfb3]
分担して作ったプログラムをうまく合体させるには、定義を共通させる必要があった。~
まずその定義を載せる。~

  #define go_st(t) OnFwd(OUT_A+OUT_C); Wait(t);  前進
  
  #define go_ba(t) OnRev(OUT_A+OUT_C); Wait(t);  後退
  
  #define off Off(OUT_A+OUT_C);  停止
  
  #define right(t) OnFwd(OUT_C); Wait(t); Off(OUT_C); 右折
  
  #define left(t) OnFwd(OUT_A); Wait(t); Off(OUT_A); 左折
    
  #define h_right(t) OnRev(OUT_C); Wait(t); Off(OUT_C); バックで右折(前髪)
 
***なかみう [#qea75d98] 
  #define h_left(t) OnRev(OUT_A); Wait(t); Off(OUT_A); バックで左折(前髪)

 sub mae_gami()
-注意点~
「OnFwd(OUT_C)で右折なの?」と思った方もいるだろう。~
その訳は、NQCの取り付け方にある。~
通常とはちがい、図のように取り付けてあるので、OUT_AとOUT_Cが逆になっている。~
この点にも注意しながらプログラミングした。~
   
***なかみう [#qea75d98] ~ [#ab07ed37]
髪の毛と輪郭を担当。

 sub mae_gami()  前髪のギザギザを表現するサブルーチン。
 {
     
      repeat(6){
      repeat(6){     6回繰り返す。
          
          go_st(20);
          h_right(20);
          off
          go_st(20);   進んで
          h_right(20);  ちょこっとバックで右折
          off       offも重要。       これで1ギザ完成。 
          
      }
      off;
      }          1ギザ×6回で、前髪完成。
      off;       
 }
 
 
       
 task main()
 { 
     mae_gami(); //mae_gami
     go_ba(30);
     mae_gami();  前髪。(上部参照)
     go_ba(30);  ここがものすごいポイント。
           これが無いと髪の毛が薄くなる。
     off;
     
     right(1250); //atama_rinnkaku
    
     right(1250);  頭と輪郭を描く。時間がポイント。
            次の眉毛のために、丁度いい時間が1250。    
          
     
 }    
    

-プログラム後記~
前髪の部分は、~
本来移動のためのプログラムだったが、~
微調整の過程で変更することにした。~
微調整の過程でこちらを使用することにした。~
角度の調整がとても難しかったが、~
根気、勇気、友情、愛情、根性で乗り切った。~
~
輪郭は、○を描くだけだったので簡単だったが、~
前髪から輪郭に移る部分の~
go_ba(30):後退のプログラム
が少し大変だった。~
しかし、かなりの出来!達成感があった。


***ゆあorz[#xa39a37a]
自分の担当は目、眉毛、口です。
  task main()
 {
  mae_gami(); //mae_gami
     go_ba(30);
     off;
     
     right(1300); //atama_rinnkaku
    
 
  
   
   //eyebow1
   go_st(40);
   
   //move to eyebow2
   penup();
   go_st(50);
   //eyebow2
   Float(OUT_A+OUT_C);
   pendown();
    Float(OUT_A+OUT_C);
   go_st(40);
   //move to eye2
   Off(OUT_A+OUT_C);
   penup();
   go_ba(100);
   right(90);
   go_st(100);
   //eye2
   pendown();
   go_st(20);
    Off(OUT_A+OUT_C);
   //move  to mouth
   penup();
   h_left(200);
   go_st(100);
   //mouth
   pendown();
   go_st(100);
   Off(OUT_A+OUT_C);
    //move  to eye1
   penup();
    h_left(200);
    go_st(180);
    //eye1
    pendown();
    go_st(20);
    Float(OUT_A+OUT_C);
    }
 ~  
 ~
-プログラム後記~
なかみうのプログラムからの繋ぎが……つらかった。~
旋回、ペンの上げ下げが多くて……(´;ω;`)~
ペンを下げる強さが強すぎるのが、問題点だと思う。~
プログラムで改善しようと努力はしたが、ハードの問題も大きかった。~
しかし、プログラム作りは楽しかった!~




発想の仕方がきちんとしていますし、またそれをちゃんとレポートに書いてあるのはとても良いです。まだ、「書き終えて」以降に書いていなかったり、写真をアップしていないので、終わっていないと判断して評価はしませんでした。書いた似顔絵がどんなものか、そして各パーツがロボットの度の動きと対応するかわかるように写真をはったり、プログラムにコメントの形で説明を加えると良いと思います。 FI

やる気が伝わってくるよいページです。まだ不足があるので、そこを補ってください。プログラムの説明は、コメントとしてソースの中に入れて、#ここで○○している のように書いたほうがわかりやすいです。各マクロについても、同様に何をするマクロなのか説明を入れてください。 こさか(KA)


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS