2005/C6/課題1右

◆「右」を書く

・プログラミィング

 task main()
 {
     OnRev(OUT_B);  //ペンをおろす
     Wait(50);
     Off(OUT_B);
     
     OnFwd(OUT_A);  //右の1画目をかく
     OnRev(OUT_C);
     Wait(150);
     Off(OUT_A+OUT_C);
     
     OnFwd(OUT_B);  //ペンをあげる
     Wait(70);
     Off(OUT_B);
     
     OnFwd(OUT_A);  //右の2画目の始点へ移動
     OnRev(OUT_C);
     Wait(100);
     Off(OUT_A+OUT_C);
     
     OnFwd(OUT_A);
     Wait(100);
     Off(OUT_A);
     
     OnFwd(OUT_C);
     Wait(400);
     Off(OUT_A+OUT_C);
     
     OnRev(OUT_A);
     OnFwd(OUT_C);
     Wait(50);
     Off(OUT_A+OUT_C);
     
     OnRev(OUT_B);  //ペンをおろす
     Wait(50);
     Off(OUT_B);
     
     OnFwd(OUT_A);  //右の2画目をかく
     OnRev(OUT_C);
     Wait(130);
     Off(OUT_A+OUT_C);
     
     OnFwd(OUT_B);  //ペンをあげる
     Wait(70);
     Off(OUT_B);
     
     OnFwd(OUT_A);  //右の3画目の始点へ移動
     OnRev(OUT_C);
     Wait(50);
     Off(OUT_A+OUT_C);
     
     OnFwd(OUT_A);
     OnRev(OUT_C);
     Wait(80);
     Off(OUT_A+OUT_C);
     
     OnRev(OUT_A);
     Wait(390);
     Off(OUT_A);
     
     OnRev(OUT_A);
     OnFwd(OUT_C);
     Wait(125);
     Off(OUT_A+OUT_C);
     
     OnFwd(OUT_A);
     OnRev(OUT_C);
     Wait(100);
     Off(OUT_A+OUT_C);
     
     OnRev(OUT_B);  //ペンをおろす
     Wait(50);
     Off(OUT_B);
     
     OnFwd(OUT_A);  //右の3画目をかく
     OnRev(OUT_C);
     Wait(70);
     Off(OUT_A+OUT_C);
     
     OnFwd(OUT_B);  //ペンをあげる
     Wait(70);
     Off(OUT_B);
     
     OnFwd(OUT_A);  //右の4画目の始点へ移動
     OnRev(OUT_C);
     Wait(190);
     Off(OUT_A+OUT_C);  
     
     OnFwd(OUT_C);
     Wait(450);
     Off(OUT_C);
     
     OnRev(OUT_A);
     OnFwd(OUT_C);
     Wait(30);
     Off(OUT_A+OUT_C);
     
     OnRev(OUT_B);  //ペンをおろす
     Wait(70);
     Off(OUT_B);
     
     OnFwd(OUT_A);  //右の4画目の一部をかく
     OnRev(OUT_C);
     Wait(100);
     Off(OUT_A+OUT_C);
     
     OnFwd(OUT_B);  //ペンをあげる
     Wait(80);
     Off(OUT_B);
     
     OnFwd(OUT_A);  //4画目の残りをかくための始点へ移動
     OnRev(OUT_C);
     Wait(220);
     Off(OUT_A+OUT_C);
     
     OnRev(OUT_A);
     Wait(400);
     Off(OUT_A);
     
     OnRev(OUT_A);
     OnFwd(OUT_C);
     Wait(65);
     Off(OUT_A+OUT_C);
     
     OnRev(OUT_B);  //ペンをおろす
     Wait(70);
     Off(OUT_B);
     
     OnFwd(OUT_A);  //4画目の残りをかく
     OnRev(OUT_C);
     Wait(70);
     Off(OUT_A+OUT_C);
     
     OnFwd(OUT_B);  //ペンをあげる
     Wait(70);
     Off(OUT_B);
     
     OnFwd(OUT_A);  //右の5画目の始点へ移動
     OnRev(OUT_C);
     Wait(220);
     Off(OUT_A+OUT_C);
     
     OnRev(OUT_A);
     Wait(420);
     Off(OUT_A);
     
     OnFwd(OUT_A);
     OnRev(OUT_C);
     Wait(40);
     Off(OUT_A+OUT_C);
     
     OnRev(OUT_B);  //ペンをおろす
     Wait(50);
     Off(OUT_B);
     
     OnRev(OUT_A);  //右の5画目をかく
     OnFwd(OUT_C);
     Wait(100);
     
     Off(OUT_A+OUT_C);  //停止
     
     OnFwd(OUT_B);  //ペンをあげる
     Wait(70);
     Off(OUT_B);
 }

・プログラミィング(書き直し)

 sub pen_up()
 {OnFwd(OUT_B);
  Wait(70);
  Off(OUT_B);
 }
 
 sub pen_down()
 {OnRev(OUT_B);
  Wait(50);
  Off(OUT_B);
 }
 
 void go(int t)
 {OnFwd(OUT_A);
  OnRev(OUT_C);
  Wait(t);
  Off(OUT_A+OUT_C);
 }
 
 void back(int t)
 {OnRev(OUT_A);
  OnFwd(OUT_C);
  Wait(t);
  Off(OUT_A+OUT_C);
 }
 
 void back_right(int t)
 {OnFwd(OUT_C);
  Wait(t);
  Off(OUT_C);
 }
 
 void go_left(int t)
 {OnFwd(OUT_A);
  Wait(t);
  Off(OUT_C);
 }
 
 void back_left(int t)
 {OnRev(OUT_A);
  Wait(t);
  Off(OUT_A);
 }
 
 task main()
 {
     pen_down();  //ペンをおろす
     go(150);  //右の1画目をかく
     pen_up();  //ペンをあげる
     go(100);  //右の2画目の始点へ移動
     go_left(100);
     back_left(400);
     back(50);
     pen_down();  //ペンをおろす
     go(130);  //右の2画目をかく
     pen_up();  //ペンをあげる
     go(130);  //右の3画目の始点へ移動
     back_left(390);
     back(125);
     go(100);
     pen_down();  //ペンをおろす
     go(70);  //右の3画目をかく
     pen_up();  //ペンをあげる
     go(190);  //右の4画目の始点へ移動
     back_right(450);
     back(30);
     pen_down();  //ペンをおろす
     go(100);
     pen_up();  //ペンをあげる
     go(220);  //4画目の残りをかくための始点へ移動
     back_left(400);
     back(65);
     pen_down();  //ペンをおろす
     go(70);  //4画目の残りをかく
     pen_up();  //ペンをあげる
     go(220);  //右の5画目の始点へ移動
     back_left(420);
     go(40);
     pen_down();  //ペンをおろす
     back(100);  //右の5画目をかく
     pen_up();  //ペンをあげる
 }

◎工夫・苦労をした点

  1. ロボットから前にでっぱっているペンの分だけのずれを考えてプログラミィングをしなくてはいけない点
  2. 床や紙の状態、ロボットのギヤーの状態などで毎回同じように動いてくれずに何回もやり直した点

◆ロボットについて...

◎構成

今回作った書道ロボットは、足にキャタピラを使い、ペンはプー
リーとゴムとモーターを使ってアームを上げ下げするというもの
にしました。

◎工夫・苦戦をした点

  1. プーリーをつなげるモーターをどこにどのように固定するかという点。
  2. ペンを動かないようにどうやってアームにとりつけるかという点。
  3. ペンのついたアームをロボットの中心にどのようにもっていくかという点。
  4. ゴムを使ったプーリーだとちょっとした力でペンを上げ下げするのに勢いがかなりついてしまうところをどのように和らげるという点。

コメントをどうぞ



トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-12-09 (金) 18:22:08