水を書く

作成メンバー

   伊藤
   加藤
   宮崎

独り言

  伊藤:時間がないかも…
   加藤:パソコンは目が疲れます
   宮崎:頭がかなり痛い(泣)

作成時間

  試作1号機:3時間→大失敗…使い物にならず
  試作2号機:4時間→M君の頑張りにより完成系に近ずく

水を書くためのロボット(完成型)         

http://yakushi.shinshu-u.ac.jp/robotics-photo/2006a/2006-05-26/img_1383_Medium.jpg

  • 二本のキャタピラでペンをはさんで、ペンの上げ下げをします。

プログラムの概要

  • ペンをキャタピラを用いて上下させ、前進と後進をしながら『水』という字を書く。ペンを下げながら移動し、線を書き終わったらペンをあげて次の書き始めの位置まで移動する。書き終わるまでこれを繰り返す。

水を書くためのプログラム 作成者;伊藤

  task main()
{
       OnRev(OUT_B);        //ペンを下げる
       Wait(10);
       Off(OUT_B);
       OnFwd(OUT_A+OUT_C); //前進 一画目
       Wait(100);
       OnFwd(OUT_A);
       OnRev(OUT_C);    //方向転換 ハネ
       Wait(60);
       Off(OUT_A+OUT_C);
       OnFwd(OUT_B);        //ペンを上げる
       Wait(10);
       Off(OUT_B);
       OnFwd(OUT_A);    //方向転換
       OnRev(OUT_C);
       Wait(60);
       Off(OUT_A+OUT_C);
       
       OnFwd(OUT_A+OUT_C); //移動
       Wait(80);
       
       OnFwd(OUT_C);    //角度修正
       OnRev(OUT_A);
       Wait(25);
       Off(OUT_A+OUT_C);
       
       OnRev(OUT_A+OUT_C); //後進 位置修正
       Wait(10);
       Off(OUT_A+OUT_C);
       
       OnRev(OUT_B);    //ペンを下げる
       Wait(10);
       Off(OUT_B);
       OnRev(OUT_A+OUT_C); //後進 二画目 
       Wait(50);
       OnFwd(OUT_C);    //方向転換
       OnRev(OUT_A);
       Wait(50);
       OnFwd(OUT_A+OUT_C); //前進 二画目
       Wait(50);
       Off(OUT_A+OUT_C);
       OnFwd(OUT_B);        //ペンを上げる       
       Wait(10);
       Off(OUT_B);
       
       OnFwd(OUT_A);    //方向転換
       OnRev(OUT_C);
       Wait(23);
       
       OnRev(OUT_A+OUT_C); //移動
       Wait(110);
       
       OnFwd(OUT_C);    //角度修正
       OnRev(OUT_A);
       Wait(27);
       Off(OUT_A+OUT_C);
       
       OnFwd(OUT_C);    //位置修正
       OnRev(OUT_A);
       Wait(50);
       Off(OUT_A+OUT_C);
       OnRev(OUT_A+OUT_C);
       Wait(40);
       OnFwd(OUT_A);
       OnRev(OUT_C);
       Wait(50);
       Off(OUT_A+OUT_C);
       
       OnRev(OUT_B);    //ペン下げ
       Wait(10);
       Off(OUT_B);
       OnFwd(OUT_A+OUT_C); //前進 三画目
       Wait(45);
       OnFwd(OUT_B);        //ペン上げ
       Wait(10);
       Off(OUT_B);
       OnFwd(OUT_A+OUT_C);
       Wait(5);
       OnFwd(OUT_A);
       OnRev(OUT_C);
       Wait(100);
       OnRev(OUT_A+OUT_C);
       Wait(10);
       Off(OUT_A+OUT_C);
       OnRev(OUT_B);    //ペン下げ
       Wait(10);
       Off(OUT_B);
       OnRev(OUT_A+OUT_C); //後進 四画目
       Wait(70);
       Off(OUT_A+OUT_C);  
       OnFwd(OUT_B);        //ペン上げ
       Wait(10);
       Off(OUT_B);
}

水を書くためのプログラム改良版 作成者;伊藤

#define turn_left(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_A+OUT_C);    //マクロ(左折)
#define turn_right(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C);   //マクロ(右折)
#define go_straight(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);      //マクロ(前進)
#define back_straight(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);     //マクロ(後進)
 
sub pen_down()             //サブルーチン(ペン下げ)
{
       OnRev(OUT_B);
       Wait(10);
       Off(OUT_B);
}

sub pen_up()       //サブルーチン(ペン上げ)
{
       OnFwd(OUT_B);               
       Wait(10);
       Off(OUT_B);
}
  
task main()
{
       pen_down();     //ペン下げ
       go_straight(100);  //直進(一画目)
       turn_right(60);   //右折(ハネ)
       pen_up();      //ペン上げ
       turn_right(60);   //右折(角度調整)
       
       go_straight(80);   //前進(二画目へ移動)
       
       turn_left(25);    //左廻りで角度調整
       
       back_straight(10);  //後進(位置調整)
       
       pen_down();     //ペン下げ
       back_straight(50);  //後進(二画目)
       turn_left(50);    //左折
       go_straight(50);   //後進
       pen_up();      //ペン上げ
       
       turn_right(23);   //角度変更
       
       back_straight(110); //三画目へ移動
       
       turn_left(27);    //角度調整
       
       turn_left(50);    //角度変更
       back_straight(40);  //位置修正
       turn_right(50);      //角度を戻す
       
       pen_down();     //ペン下げ
       go_straight(45);   //直進(三画目)
       pen_up();      //ペン上げ
       go_straight(5);   //調整(四画目へ)
       turn_right(100);
       back_straight(10);
       pen_down();     //ペン下げ
       back_straight(70);   //後進(四画目)
       pen_up();      //ペン上げ
}

実際に書いた水

200607031638000.jpg

問題点→改良点等…

  • RCXが、ペンを上げ下げするときに邪魔にならないように後ろに背負わせる様な形で取り付けたため、重心が後ろにきすぎて、発進する時に車体が不安定になるので、線がとぎれとぎれになってしまうのと、後進する時に後ろに倒れてしまう→後ろに支えをつける事により、発進後も車体が不安定にならず、直線を書く事ができるようになり、後進するときも倒れることなく走行することができるようになった。
  • 二本のキャタピラの隙間が広くて、ペンがその隙間よりも細いのでペンを固定できない。→ペンに付属のゴムをまくことによって、ペン自体の太さを増し、キャタピラで挟めるようにした。
  • 水の二画目の曲がるところを書くときに、ペンが回転の中心ではないので、回転したときにペンの位置がずれてしまい、きれいに二画目を書く事ができない。→何度もプログラムを修正し、最終的には回転する時間を調節することにより、二画目の曲がる所にできてしまう曲線の長さをなるべく短くして違和感を少なくした。
  • ドライブベースとペンを上下させる部分(キャタピラ)をかなり無理をして固定したので、ドライブベースとキャタピラの部分が外れやすい。→持つときにドライブベースの方を持つように気をつけるしかなかった。
  • すべて→の改善方法で問題解決!!!

反省

  • 課題への取り組みの開始が遅すぎて、期限ギリギリに完成したので、もう少し早く始められればよかった。
  • プログラムの作成を伊藤君一人に任せてしまい、また、ホームページ担当;加藤君、ロボット担当;宮崎と、仕事を分担してしまったため、どうしても個人のできることとできないことができてしまうので、次からは一つの仕事?に関して一人ではなく、最低二人ぐらいが関われるようにしたい。
  • ロボットに関しての問題点、改善点がもっとわかりやすいように、その都度写真をとっておけばよかった。
  • いただいたコメントを参考に曲線を描くためのプログラムを、さんさーさんの力をお借りして書いてみました。製作段階でFloatを使うことにきがつければ、二画目と三画目のはらいの部分で曲線をえがくことができたかもしれないと思った。
  • 曲線を描くためのプログラム 制作者;宮崎
       
       task main()
    {
       OnFwd(OUT_A+OUT_C);
       Wait(50);
       Float(OUT_A);
       Wait(100);
        Off(OUT_A+OUT_C);  
    }

『水』を書き終わって5分後の感想

  • 伊藤:アルファベットはもう二度とみたくない!!
  • 加藤:みんな頑張った!!
  • 宮崎:お疲れさまでした!!
  • コメント欄を付け加えさせていただきました。 -- ゆき(TA)? 2006-05-26 (金) 15:54:47
  • サブルーチンやマクロを使うと、プログラムがすっきりしますよ。 -- ゆき(TA)? 2006-05-26 (金) 15:55:10
  • ホームページを改良してみたので再評価お願いします。 -- 加藤? 2006-06-02 (金) 15:47:40
  • 再評価の依頼は『進行状況B』からお願いします。 -- 松本(教員)? 2006-07-06 (木) 11:29:50
  • 解決した問題点以外にも、漠然とこうしたほうがよかったのではないか、こんな方法があったのではないか、もう少し改善の余地がなかったかどうか検討してみるといいかもしれません。 -- まいける(TA) 2006-07-06 (木) 23:36:23


添付ファイル: file200607031638000.jpg 239件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-07-26 (水) 11:33:03