課題1

  課題の内容は、2019a/Mission1を参照。

選んだ文字

  大阪府にある枚方にした。

ロボットの説明

  まず私が作ったロボットの全体像である。。 "IMG_0298 (4).JPG"

  黄色の部分がロボットを前後に動かす部分であり、水色の部分はペンの上下、赤色の部分はペンを左右に動かす部分である。。

  それぞれの部分を詳しく見ていく。。

ペンの上下

"IMG_0299 (3).JPG"

  ペンの上下は、モーターを回すことによってそれについているブロックが上下することによってペンの上げ下げを可能にした。

ペンの左右

"IMG_0300 (3).JPG"

  ペンの左右は、まずモーターで一つの歯車を回す。

  次に十字の形をした棒に一つ目のモーターとかみ合う小さな歯車をつけ、その棒を回すことにした。

  さらに、その棒に歯車の回転軸を90度変えることのできる歯車をつけることで、ペンの上下をさせるモーターの向きを変えることができるようになる。

  プログラムでは、この部分のwaitが大きくなるがこれは歯車の影響である。

ペンの前後(ロボット本体の前後)

"IMG_0301 (3).JPG"

  ペンの前後は、ロボット本体を動かすことによってその動きを可能にした。

  タイヤをちょうど反対側につけ、さらに前とも平行にすることによって、一つのタイヤを回すことによって全体を動かすことができた。

プログラム

文字の戦略

"IMG_0303 (4).JPG"

  まず、木へんはペンを離すことによって元の線からずれてしまったりすることを避けたかったので突き抜けることをやめた。

  まず線を引いてその道をもう一度戻ることでずれを最小限にすることを考えた。

  次に枚の右側の部分は、あまり左右の部分を大きくせずに縦に大きくすることで少し簡単に書くことができると考えた。

  方は、斜めにすることでプログラミングやロボットのずれがあり、難しくなることから直線にし、木へんのようにペンを上げずに来た道を戻す工夫もした。   

実際のプログラム

  まず、#defineを使うことで何回も使用するプログラムを簡単な言葉で定義をする。

#define pen_up OnRev(OUT_C,25);Wait(250);Off(OUT_C); //ペンの上げる
#define pen_down OnFwd(OUT_C,25);Wait(250)Off(OUT_C); //ペンを下す
#define stop_p Wait(1000);//一秒止まる
#define all_off Off(OUT_ABC);//すべて止まる

  all_offとstop_pと定義した理由は、一つ一つの行動を一度止めることで字をきれいに書くことができるため使用した。結構重要である。

  次はメインプログラムである。

  まず木へんから。

task main()
{
OnFwd(OUT_B,40);//1画目 
Wait(1000);
all_off;
stop_p;

OnFwd(OUT_A,25);//2画目 
Wait(1000);
all_off;
stop_p;
OnRev(OUT_A,25);//3画目の始点まで移動 
Wait(1000);
OnFwd(OUT_A,25);//3画目 
OnRev(OUT_B,40);
Wait(800);
all_off;
stop_p;
pen_up;
OnRev(OUT_A,25);//4画目の始点まで移動
OnFwd(OUT_B,40);
Wait(800);
all_off;
stop_p;
pen_down;
OnFwd(OUT_A,25);//4画目 
OnFwd(OUT_B,25);
Wait(500);
all_off;
stop_p;
pen_up;

 次は枚の右の部分です。

OnRev(OUT_a,25);//5画目まで移動
OnFwd(OUT_B,40);
Wait(1000);
pen_down;
OnFwd(OUT_A,25);//5画目 
OnRev(OUT_B,40);
Wait(600);
all_off;
stop_p;
OnRev(OUT_A,25);//6画目の始点まで移動 
OnFwd(OUT_B,40);
Wait(200);
all_off;
stop_p;
OnFwd(OUT_B,40);//6画目 
Wait(1200);
all_off;
stop_p;
OnRev(OUT_B,40);//7画目の始点まで移動 
Wait(200);
all_off;
stop_p;
OnFwd(OUT_A,25);//7画目 
OnRev(OUT_B,40);
Wait(1200);
all_off;
stop_p;
pen_up;
OnRev(OUT_A,25);//8画目の始点まで移動
OnFwd(OUT_B,40);
Wait(500);
all_off;
stop_p;
pen_down;
OnFwd(OUT_A,25);//8画目 
OnFwd(OUT_B,40);
Wait(700);
all_off;
stop_p;
pen_up;

 最後に方である。

OnRev(OUT_A,25);//1画目の始点まで移動
OnFwd(OUT_B,40);
Wait(1000);
all_off;
stop_p;
pen_down;
OnFwd(OUT_B,50);//1画目 
Wait(2000);
all_off;
stop_p;
pen_up;
OnRev(OUT_B,50);//2画目の始点まで移動
Wait(800);
all_off;
stop_p;
pen_down;
OnRev(OUT_A,25);//2画目 
Wait(100);
OnFwd(OUT_A,25);//3画目 
Wait(800);
all_off;
stop_p;
OnRev(OUT_A,25);//4画目の始点まで移動 
Wait(400);
all_off;
stop_p;
OnFwd(OUT_B,40);//4画目 亜
Wait(800);
all_off;
stop_p;
OnFwd(OUT_A,25);//4画目の続き 
Wait(500);
all_off;
}

完成した文字

"IMG_0296 (5).JPG"

感想

 一応課題の文字を書くことはできたが、かろうじて読むことができるぐらいにしかならなかった。

 課題が多く見つかった。

  • ペンの左右を動かしたとき、紙とペンの静止摩擦力が大きかったため動かしたい長さが欠けないことがあった。
  • 直線が曲がってしまう。
  • 二つの文字の高さが合わなかった。
  • ペンを自分の持ってきたい位置に持ってこれなかった。

 解決策として

  • 静止摩擦力よりも大きい力を出す。
  • アームがペンにかかる効力に負けてしまっているため、固定できるようにする。
  • プログラミングを正確にする。
  • 電池の残量が影響している可能性があるため、充電池などで毎回同じ電池残量でできるようにする。

添付ファイル: fileIMG_0410 (3).JPG 7件 [詳細] fileIMG_0303 (4).JPG 19件 [詳細] fileIMG_0301 (3).JPG 16件 [詳細] fileIMG_0300 (3).JPG 18件 [詳細] fileIMG_0299 (3).JPG 21件 [詳細] fileIMG_0298 (4).JPG 17件 [詳細] fileIMG_0296 (5).JPG 23件 [詳細]

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