2010a

目次

1、[課題1]の内容

  メンバーそれぞれがパートナーの似顔絵を書く。(ただし、マインドストーム基本セット2.0とペンを用いて製作したロボットのみを使って)

2、メンバー紹介

  和峰(かずたか)と、将吾(しょうご)と、川嶋(かわしま)の三人です。

3、ロボットの紹介

  三人で一台のロボットを製作しました。

ロボットの外見

 前方
前方
   右側(進行方向に向かって)
右側
   後方
後方
   左側(進行方向に向かって)
左側
   真上(右が進行方向)
真上

ロボットの動き

完成体

私たちのロボットは、主に二つの可動部(上部と下部)で構成されています。

上部

屋根を取った上部
上部の断面

二つの場所を固定した可動可能な二つのタイヤの間(赤い矢印)にペンをはさみ、二つのタイヤのうちの一方(赤と黄色の矢印)をモータで回転させることによって、ペンの上下動を可能にしました。また、筆ペンを使用することで、紙にペン先が引っ掛かるのを防止しました。写真の示す部位が解らない場合は、マウスで写真を触ってみて下さい。

下部

下部の前方
下部の真上

モータを、二つ使って四輪駆動にすることにより、前後左右の動きを可能にしました。この部分は、マインドストーム基本セット2.0の組み立てガイド(LEGO)を参考にしました。

  上記の二つの部分を合体させると完成です。上に写真で示した完成体は、上記の二つの動きを組み合わせて似顔絵を描きます。

ロボットの弱点

  ・床の材質によって、動きに多少ずれが生じる。
  ・動きが速くなると線がかすれる。

苦労したところ

  ・何のペンを使用すれば、うまく書けるか(筆ペンになりました)
  ・ロボットを作る上で、ペンをどう固定するか(タイヤのゴムのクッションではさみました)
  ・ギアの位置をどう合わすか、ペンを上下にどのように動かすか
  ・最初は上に書いたように大変なことはたくさんありましたが、3人で話し合うことで解決できたのでよかったと思います。

4、メンバーそれぞれが描いた似顔絵の発表( 銑)

  メンバーそれぞれが作った似顔絵とプログラムを、個人的な反省と感想を交えて、 銑に紹介していきたいと思います。

]楕が描いた似顔絵(モデル:川嶋)

川嶋をモデルにした似顔絵

これが実際にロボットが書いた似顔絵です。
全然似てないんだけど... しかも写真の撮り方間違えました(笑)

和峰のプログラム

#define START OnFwd(OUT_A+OUT_C);                   // 前進
#define STOP Off(OUT_A+OUT_C);                      // 停止
#define UP OnFwd(OUT_B);Wait(20);Off(OUT_B);        // ペンを上げる
#define DOWN OnRev(OUT_B);Wait(20);Off(OUT_B);      // ペンを下げる
#define BACK OnRev(OUT_A+OUT_C);                    // 後退
#define CIRCLE OnFwd(OUT_C);OnRev(OUT_A);           // 反時計回り
#define RECIRCLE OnFwd(OUT_A);OnRev(OUT_C);         // 時計回り

  上で定義した値を用いて書きました。

task main()
{
   SetPower(OUT_B,1);                // A出力のモータの出力を1にする
   SetPower(OUT_A,2);                                // B出力のモータの出力を2にする
   SetPower(OUT_C,2);                                // C出力のモータの出力を2にする

  上記のプログラムは、先ほど述べた「ロボットの弱点」を克服するという意味でも有効です。by川嶋

   DOWN;                                             // 輪郭はじめ          OnFwd(OUT_C);
   Wait(1100);
   STOP;                                             // 輪郭終わり
   UP;                                               // 移動はじめ   
   BACK;
   Wait(25);
   STOP;
   CIRCLE;
   Wait(75);
   STOP;
   START;
   Wait(10);                                          
   STOP;                       // 移動終わり 
   DOWN;                                             // 目はじめ 
   START;
   Wait(35);
   STOP;
   UP;
   START;
   Wait(30);
   STOP;
   DOWN;
   START;
   Wait(35);
   STOP;                       // 目終わり
   UP;                                               // 移動はじめ       
   BACK;
   Wait(30);
   STOP;
   CIRCLE;
   Wait(80);
   STOP;                                      // 移動終わり
   DOWN;                                             // 鼻はじめ 
   OnFwd(OUT_C);                                     
   Wait(45);
   Off(OUT_C);                                       // 鼻終わり
   UP;                                               // 移動はじめ
   START;
   Wait(45);
   STOP;
   CIRCLE;
   Wait(100);
   STOP;                                // 移動終わり
   DOWN;                                             // 口はじめ
   RECIRCLE;                                         
   Wait(100);
   STOP;                                             // 口終わり
   UP;                                               // 移動はじめ
   RECIRCLE;
   Wait(205);
   STOP;
   START;                                           
   Wait(65);
   STOP;                       // 移動終わり
   DOWN;                             // 眉毛はじめ 
   RECIRCLE;                                         
   Wait(110);
   STOP;
   UP;
   CIRCLE;
   Wait(85);
   STOP;
   BACK;
   Wait(60);
   STOP;
   RECIRCLE;
   Wait(100);
   STOP;
   START;
   Wait(78);
   STOP;
   DOWN;
   CIRCLE;
   Wait(115);
   STOP;                                             // 眉毛終わり
   UP;                                               // 移動はじめ
   START;
   Wait(100);
   STOP;                       // 移動終わり
} 

反省点、工夫したところ、感想

  ・髪の毛を書くことができなくて残念だった。
  ・時間をかけ過ぎてしまったので、もっとゆとりを持って完成させたい。
  ・プログラムが長くなってしまったので、簡潔に書ければよかったなと思いました。
  ・輪郭を丸型にするために、片方のタイヤだけ回したことや後退や回転を使って書くことによって眉毛を作ったのが工夫できたところだと思います。
  ・最初はプログラムがうまく絡みあわず、顔の部分をロボットで書くのは難しかったけど、だんだんと顔が作れてたし、プログラムを打つことが楽しかったです。
  ・また、あまり似てはいませんでしたが、完成できてよかったです。

⊂吾が描いた似顔絵(モデル:和峰)

和峰をモデルにした似顔絵

髪の毛にこだわっていました。by川嶋

将吾のプログラム

#define up OnFwd(OUT_B);Wait(20);Off(OUT_B);                             # ぺんを上げる
#define down OnRev(OUT_B);Wait(20);Off(OUT_B);                            # ぺんを下げる
#define turn_right(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_A+OUT_C); # 右に曲がる
#define turn_left(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C);  # 左に曲がる
#define go(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_C+OUT_A);                # 秒進む
#define back(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);              # 秒下がる
#define back_a OnRev(OUT_A+OUT_C);Wait(25);Off(OUT_A+OUT_C);              # 0、25秒下がる
#define cir(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_A+OUT_C);        # 時計回り
#define rev(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C);        # 反時計回り

  repeat(繰り返し)と上で定義した値を使って書きました。

task main()
{
up;           # 輪郭開始
go(15); 
down;           # 線一本目
go(130);
up;
go(20);
turn_right(42); 
back_a;
down;          # 線二本目
go(60);
up;
go(20);
turn_right(85);
back_a;
down;          # 線三本目
go(63);
up;
go(17);
turn_right(43);
back_a;
down;          # 線四本め
down;          # 線四本め
go(140);
up;           # 輪郭終了
up;           # 輪郭終了
go(20);        # 髪開始
go(20);        # 髪開始
turn_right(15);
down;         # 髪一本目
down;         # 髪一本目
back(80);
up;
go(30);
turn_right(22);
down;
back(25);
go(90);
repeat(4){     # 髪2ー5
repeat(4){     # 髪2ー5
up;
turn_left(30);
back(20);
down; 
back(80);
up;
go(30);
turn_right(22);
down;
back(25);
go(100); 
}
up;          # 髪6本目
turn_left(30);
back(5);
down;
back(80);
up;
go(30);
turn_left(25);
down;
back(25);
go(115);       # 髪終了 
up;        # 目開始
rev(160);
go(90);
up;
cir(155);
down;         # 片目
cir(100);
up;
cir(245);
go(60);
cir(60);
down;          # 片目
cir(100);
up;           # 目終了
cir(60);       # 鼻開始
go(7);
down;
cir(45);
back(12);      # 鼻終了
up;         # 口開始
go(50);
cir(60);
down;
rev(140);     # 口終了
}

工夫点

  ・髪には人間なのでかなり力をいれました。
  ・つなぎ目も出来るだけつけました。

反省点

 ・髪、輪郭に力を入れすぎて口や鼻目が中途半端になってしまった。
 ・時間が予想以上にかかってしまった。

感想

 ・回転をさせたりすると摩擦がかかり思った場所に行かなかった。
 ・機体の向きを考えて動かすのが難しかった。
 ・長時間やった成果かerrorは出なくなった。

川嶋が描いた似顔絵(モデル:将吾)

将吾をモデルにした似顔絵

将吾くんは、眼鏡をかけているので、眼鏡にこだわってみました。ちなみに、中央部右側に飛び出ているものは耳です。

川嶋のプログラム

  あえて、「後進する」を使わずに描かせてみました。また、できるだけ続けて顔を描けるように、プログラムしてみました。(下の 銑─

#define DOWN OnRev(OUT_B);Wait(8);Off(OUT_B);      // ペンを下ろす
#define UP OnFwd(OUT_B);Wait(6);Off(OUT_B);        // ペンを上げる
#define GO OnFwd(OUT_A+OUT_C);                     // 前進する
#define STOP Off(OUT_A+OUT_C);                     // 停止する
#define CIR OnFwd(OUT_C);OnRev(OUT_A);             // 反時計回りに円を描く       
#define REV OnFwd(OUT_A);OnRev(OUT_C);             // 時計回りに円を描く

  今回は、上で定義した値のみでプログラムを書きました。

 task main ()
  {
  OnFwd(OUT_C);        // [愕垪鄒開始
  Wait(425);                   
  STOP;            
  GO;                          
  Wait(30);                    
  STOP;                      
  OnFwd(OUT_C);
  Wait(395);
  STOP;            // [愕坿粟
[愕

赤い矢印は始点です。このパートは、いつもうまくいきました。

  GO;             // ⊆作成開始
  Wait(35);
  STOP;
  CIR;
  Wait(95);
  STOP;            // ⊆完成
⊆

このパートは、比較的うまくいきました。

  UP;             // 移動開始
  CIR;
  Wait(18);
  STOP;
  GO;
  Wait(15);
  STOP;            // 移動完了
  DOWN;             // 1μ楮鄒開始
  GO;    
  Wait(30);
  STOP;            // 1μ楷粟
1μ

このパートでは、ときどき線が擦れたり、描けなかったりしました。SetPower(モータの出力を設定するための命令)を使えばよかったかもしれないと思っています。

  UP;             // 移動開始
  GO;
  Wait(20);
  STOP;            // 移動完了
  DOWN;                        // ず弧楮鄒開始 
  GO;
  Wait(30);
  STOP;            // ず弧楷粟
ず弧

ここもと同様です。

  UP;             // 顔の中央部に移動開始
  GO;
  Wait(15);
  STOP;
  CIR;
  Wait(150);
  STOP;
  REV;
  Wait(355);                
  STOP;                        // 顔の中央部に移動完了

  「顔の中央に移動」するプログラムがァ銑┐寮弧神でした。

  DOWN;                        // ゴ禧世虜孤分作成開始
  REV;
  Wait(400);
  STOP;                        // ゴ禧世虜孤分完成
ゴ禧世虜孤分

このパートでは、最初のうちは回りすぎたり回り切れなかったりして、回る秒数を決定するのが大変でした。

  UP;             // 移動開始
  GO;
  Wait(55);
  STOP;            // 移動完了
  DOWN;                        // Υ禧世留ι分作成開始
  REV;
  Wait(400);
  STOP;                        // Υ禧世留ι分完成
Υ禧世留ι分

ここもイ汎瑛佑任后

  UP;             // 移動開始
  REV;
  Wait(150);
  STOP;            // 移動完了
  DOWN;                     // 鼻作成開始
  GO;
  Wait(35);
  STOP;
  CIR;
  Wait(50);
  STOP;                        // 鼻完成
鼻

このパートでは、鼻の形を決定するのに悩みました。

  UP;             // 移動開始
  GO;
  Wait(35);
  STOP; 
  REV;
  Wait(300);
  STOP;            // 移動完了  
  DOWN;            // ┯作成開始
  REV;
  Wait(60);
  STOP;             // ┯完成
┯

口が最初は長かったので、短くしたり、弧を描かせてみたりと、試行錯誤しました。

  UP;              // 紙の上から退場開始
  GO;
  Wait(170);
  STOP;             // 紙の上から退場完了
  }

 *下の“「ロボットの動き」ムービー”という文字をクリックすると、(ロボットが紙に似顔絵を描いている:ただし、途中まで)ムービーを観ることができます。かなり観えにくいですが、参考にして下さい。

こだわり

 ・プログラムを一度に完成させるのではなく、パーツごとに分けて製作し、全てのパーツが完成した時点でつなぎ合わせて完成させるという方法をとりました。
 ・あまり意味はないですが、プログラムの中に円運動を多く取り入れました。
 ・できるだけモデルに似せながらも、シンプルに描けるように、特徴(特に印象に残るもの)をできる限りに絞ってロボットに描かせました。

反省点

 ・絵を描く場所(例えば、机と床)によって、タイヤに対する摩擦が微妙に違うので、同じプログラムでも絵が変化するので、作業は一所で行った方が良いと感じました。
 ・眉毛と髪の毛を描けなかったのが、残念です。
 ・横を向いている絵を描きたかったので、輪郭を決定するのに時間をかけすぎてしまいました。
 ・プログラムで、ペンの上下動にかける時間数の決定に苦労しました。
 ・定義以外のサブルーチンも使いたかった。
 ・タイヤが、一度筆ペンで描いたところを通ると、インクがタイヤについて、そのまま走行すると紙についてしまうことがありました。
 ・プログラムをできるだけシンプルにしようと試みましたが、結局複雑になってしまったのが残念です。

感想

 ・プログラミングは初めてだったので、文字を打つだけで機械が動くことに感激しました。
 ・時間指定で動くロボットは、誤差が大きいことに気付きました。
 ・今回の失敗を、今後の課題になんらかのかたちで、生かしていきたいと思います。

結果

 ・課題で求められる動きを網羅することができました。発表でもうまくいきました。

5、全体の反省

  三人ともプログラムが長すぎたので、もう少し簡略化したかったです。あと、そのせいでロボットにプログラムを転送するのに時間がかかってしまいました。

6、コメント欄

  私たちのページを見て、感じたことを自由に投稿して下さい。

  • かなり詳しく書いていていいと思います。誤差を少なくするためには、ロボットを改良するのも重要ですが、プログラムを改良することも重要です。例えば、今回の場合は顔の各パーツや輪郭をどのような順番で書くとずれが少なくなるか考えると良いです -- FI? 2010-05-21 (金) 07:29:08
  • よくできています。プログラムについては長く、解説も欲しいです。顔の書き方を意識しながら改善してみて下さい -- TAKA? 2010-05-21 (金) 11:41:52
  • プログラムと内容について改善され、よくできています。特にの書き方は良いと思います -- TAKA? 2010-06-01 (火) 12:17:09
  • 横から失礼します。おととしの受講生です。この課題は大抵同じような顔になってしまうのですが、それぞれ工夫して個性をだせていると思います。特に2番の方は難しいと思われる髪まで描けていてすばらしいです。(コメントに問題あれば削除して下さい) -- 元受講生? 2010-06-02 (水) 18:58:31
  • どうしたら☆になるのですか。 -- A2R? 2010-06-15 (火) 01:59:09
  • とても熱意の感じられるレポートです。似顔絵も細かく、工夫が見られると思います。SetPowerはあまり効果がないことが多いので、ギア比を変えるのが一番効果的です。工夫した点は図や写真を使って、より具体的にしていきましょう。考察や工夫をもっと前面に出していくと良いです。過去のホームページも参考になると思います。 -- FI? 2010-06-18 (金) 17:03:39


添付ファイル: fileMA0_0007.3GP 285件 [詳細] file001.JPG 155件 [詳細] filePA0_0000.jpg 152件 [詳細] fileDSCN0360_1-9.jpg 163件 [詳細] fileDSCN0360_1-8.jpg 85件 [詳細] fileDSCN0360_1-7.jpg 158件 [詳細] fileDSCN0360_1-6.jpg 176件 [詳細] fileDSCN0360_1-5.jpg 148件 [詳細] fileDSCN0360_1-4.jpg 158件 [詳細] fileDSCN0360_1-3.jpg 151件 [詳細] fileDSCN0360_1-2.jpg 153件 [詳細] fileDSCN0360_1-1.jpg 162件 [詳細] filePA0_0001.jpg 156件 [詳細] filePA0_0004.JPG 143件 [詳細] fileDSCN0375_RESIZE.JPG 154件 [詳細] fileDSCN0365.JPG 154件 [詳細] fileDSCN0371.JPG 84件 [詳細] fileDSCN0353.JPG 180件 [詳細] fileDSCN0352.JPG 163件 [詳細] fileDSCN0351.JPG 192件 [詳細] fileDSCN0350.JPG 165件 [詳細] fileDSCN0348.JPG 163件 [詳細] fileDSCN0360_1-0.JPG 162件 [詳細] fileDSCN0361.JPG 153件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-08-07 (土) 18:54:16 (3244d)