2019a/Member 目次

課題について

自分たちの出身地が神戸だったので,今回の課題にその地名を使いました.

ロボット本体の説明

 まず最初に元となるような形を作り,その後何回か作り直し今の形に至りました.安定性を図るために後輪を一つ増やそうと試みましたが,回転の際に後輪同士がぶつかったり重心よりも十分に距離をとることができなかったので結局三輪に落ち着きました.筆を上げる仕組みはいたってシンプルで,モーターに棒状のパーツをつけた歯車をつけ,そこに輪ゴムで筆記用具を固定しました.

ロボット

プログラムの説明

 全体的な流れとして,まず神戸と書く際に必要な手順をまとめ,次にサブルーティンを使用し数字だけ入れる状態に設定し,最後に実際に動かしながら微調整をしました.また動作の際に誤差が出ないよう「Wait」を使用し一つずつ動作を行うようにしました.

 また,プログラムを入力する上で,以下の画像のように「神戸」を合計16画に分けてコースを考えました.

文字コース

 まずここでサブルーティンなどを使いある程度のプログラムを設定します.

#define PEN_TIME 100      /ペンを上に上げ下げするためのモーターの稼働時間
#define pen_rize OnRev(OUT_A,50);Wait(PEN_TIME);Off(OUT_A);      /ペンを上げる
#define pen_down OnFwd(OUT_A,50);Wait(PEN_TIME);Off(OUT_A);      /ペンを下げる
#define W Wait(700);      /誤差軽減のための動作と動作の間の待ち時間
sub rotation_right(long t)
{OnFwd(OUT_C,50);OnRev(OUT_B,50);Wait(t);Off(OUT_BC);}  /右回転

sub rotation_left(long t)
{OnFwd(OUT_B,50);OnRev(OUT_C,50);Wait(t);Off(OUT_BC);}  /左回転

sub go_straight(long t)
{OnFwd(OUT_BC,50);Wait(t);Off(OUT_BC);}  /前進

sub back_straight(long t)
{OnRev(OUT_BC,50);Wait(t);Off(OUT_BC);}  /後進

sub curve_right(long t)
{OnFwd(OUT_C,50);OnFwd(OUT_B,15);Wait(t);Off(OUT_BC);}  /右カーブ

sub back_curve_right(long t)
{OnRev(OUT_C,50);OnRev(OUT_B,15);Wait(t);Off(OUT_BC);}  /上の逆

「神」の文字のプログラム

 次に「神」の文字を書くのに必要な手順を数字を考えずにそのままプログラムにします.その後,数字を入れる→実際に動かす→数字を変えて微調整,を繰り返しました.

task main()
{
    go_straight(100);  /_萍
    W;

    pen_rize;  /画目の準備
    W;
    go_straight(100);
    W;
    rotation_right(550);
    W;
    go_straight(100);
    W;
    pen_down;
    W;

    back_straight(100);  /画目
    W;

    rotation_left(400);  /2萍椶僚猗
    W;

    curve_right(700);  /2萍
    W;

    pen_rize;  /げ萍椶僚猗
    W;
    back_curve_right(450);
    W;
    rotation_left(400);
    W;
    pen_down;
    W;

    go_straight(100);  /げ萍
    W;

    pen_rize;  /ゲ萍椶僚猗
    W;
    back_straight(100);
    W;
    rotation_right(400);
    W;
    pen_down;
    W;

    go_straight(450);  /ゲ萍
    W;

    pen_rize;  /Σ萍椶僚猗
    W;
    rotation_left(600);
    W;
    go_straight(200);
    W;
    rotation_left(600);
    W;
    go_straight(350);
    W;
    pen_down;
    W;

    go_straight(200);  /Σ萍
    W;

    rotation_right(650);  /Р萍椶僚猗
    W;

    go_straight(250);  /Р萍
    W;

    rotation_right(650);  /┣萍椶僚猗
    W;

    go_straight(200);  /┣萍
    W;

    rotation_right(650);  /画目の準備
    W;

    go_straight(250);  /画目
    W;

    pen_rize;  /画目の準備
    W;
    rotation_right(650);
    W;
    go_straight(150);
    W;
    rotation_right(650);
    W;
    pen_down;
    W;

    go_straight(250);  /画目
    W;

    pen_rize;  /画目の準備
    W;
    back_straight(125);
    W;
    rotation_right(600);
    W;
    back_straight(250);
    W;
    pen_down;
    W;

    go_straight(600);  /画目
    W;

「戸」の文字のプログラム

    pen_rize;  /画目の準備
    W;
    go_straight(200);
    W;
    rotation_right(600);
    W;
    pen_down;
    W;

    go_straight(300);  /画目
    W;

    pen_rize;  /画目の準備
    W;
    rotation_left(600);
    W;
    go_straight(150);
    W;
    rotation_left(600);
    W;
    pen_down;
    W;

    go_straight(300);  /画目
    W;

    rotation_right(650);  /画目の準備
    W;

    go_straight(150);  /画目
    W;

    rotation_right(650);  /画目の準備
    W;

    go_straight(300);  /画目
    W;

    pen_rize;  /芦萍椶僚猗
    W;
    rotation_left(650);
    W;
    back_straight(150);
    W;
    pen_down;
    W;

    go_straight(150);  /芦萍
    W;
    curve_right(500);
}

結果

多少のズレはあったものの、無事文字を書くことができました。

完成図

考察

 誤差の出ないようにプログラムしたつもりだったのですが,実際に動かしてみると大きくずれてしまうことが多々ありました.車型のロボットだと動作の際に全体を動かしてしまうので誤差が起きやすかったようです.ペン自体を横移動させるロボットのほうが動かす部分が少なく,反動も小さくなるのでもっと考えてから製作に取り掛かるべきでした.他にも誤差を少なくすることのできる構造もあると思うので,次回からはプログラムだけでなくロボットの構造ももっと工夫するようにしたいと思いました.


添付ファイル: filearm_5.png 3件 [詳細] filekobe_2.png 4件 [詳細] filekobe.png 6件 [詳細] fileIMG_3567.PNG 17件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-07-26 (金) 21:48:57 (29d)