2018b/Member

目次

課題1

 これまで住んだことのある都道府県名、市町村名、地区名などの中から 2文字以上のものを選び、それをA4の紙を書くロボットを製作せよ。

 ということで、書く文字は”大村”にした。※長野県松本市にあります。

ロボット

全体像

 書く上で、X軸はロボット全体の移動、Y軸はアームの移動で文字を書くように考えた。

imagefull1.jpeg

 全体像         ↑ここにペンを付ける。

アーム (モータA)

 モータAはマジックハンドの要領でY座標を指定する。

アーム.JPG

 部品の数が少ない等の理由から、屈折部分は一つとした。

台車 (モータB・C)

 台車部分にはモータB・モータC使用し、一つでX座標、もう一つでペンを上下移動させる。

imageDodai1.JPG

ペンの上下 (モータB)

 ペンの上下の変化については、アーム自体を持ち上げる構造としてみた。

こちらが使用したギア Z軸モータ.JPG

                      こちらは角度調整用のツマミ代わり

 モータBにかかる負荷が大きい為、最小のギアを使用してギア比をできるだけ高くすることで、負荷の軽減を試みた。

X軸 (モータC)

 左から右に向かって書くため、モータCの前転で右に、後転で左に向かうようにする。

x軸モータ.JPG

プログラム

書き順

 文字を書く順番はこの通り。

書順.JPG

マクロ

 よく使う「ペンの上下移動」はマクロで宣言する。

#define pen_up RotateMotor(OUT_B, 20, -60);Off(OUT_B);
#define pen_down RotateMotor(OUT_B,20,60);Float(OUT_B);Wait(1000);Off(OUT_B);

メイン処理

 残りのプログラムは全て、メイン処理にて行った。

 一文字目:

         移動

task main(){
    ResetTachoCount(OUT_ABC);

    pen_up;
    RotateMotor(OUT_A, 30, 30);

    ・   大:一画目+移動

    pen_down;
    RotateMotor(OUT_C, 30, 180);

    pen_up;
    RotateMotor(OUT_C, 30, -90);
    RotateMotor(OUT_A, 30, -30);

    ・   大:二画目+移動

    pen_down;
    RotateMotor(OUT_A, 30, 30);
    OnFwd(OUT_A,20);
    OnFwd(OUT_C,-20);
    Wait(1000);
    Off(OUT_AC);

    pen_up;
    OnFwd(OUT_A,-20);
    OnFwd(OUT_C,20);
    Wait(850);
    Off(OUT_AC);

         大:三画目

    pen_down;
    OnFwd(OUT_A,20);
    OnFwd(OUT_C,20);
    Wait(1000);

 二文字目:

         移動

    ResetTachoCount(OUT_ABC);
    pen_up;
    RotateMotor(OUT_A, 30, -60);

    ・   村:一画目+移動  

    pen_down;
    RotateMotor(OUT_C, 30, 90);

    pen_up;
    RotateMotor(OUT_C, 30, -45);
    RotateMotor(OUT_A, 30, -20);

    ・   村:二画目+移動

    pen_down;
    RotateMotor(OUT_A, 30,80);

    pen_up;
    RotateMotor(OUT_A, 30, -60);

    ・   村:三画目+移動

    pen_down;
    OnFwd(OUT_A,20);
    OnFwd(OUT_C,-20);
    Wait(500);
    Off(OUT_AC);

    pen_up;
    OnFwd(OUT_A,-20);
    OnFwd(OUT_C,20);
    Wait(470);
    Off(OUT_AC);

         村:四画目

    pen_down;
    OnFwd(OUT_A,20);
    OnFwd(OUT_C,20);
    Wait(300);
    Off(OUT_AC);

         移動

    pen_up;
    RotateMotor(OUT_C,20,15);
    RotateMotor(OUT_A,20,-30);

    ・   村:五画目+移動

    pen_down;
    RotateMotor(OUT_C, 30, 80);

    pen_up;
    RotateMotor(OUT_C, 40, -30);
    RotateMotor(OUT_A, 30, -20);

    ・   村:六画目+移動

    pen_down;
    RotateMotor(OUT_A,20, 80);

    pen_up;
    RotateMotor(OUT_C,40,-30);
    RotateMotor(OUT_A,20,-40);

         村:七画目+ちょっと移動

    pen_down;
    Wait(500);

    pen_up;
    RotateMotor(OUT_C,30,180);
    Off(OUT_ABC);
}

結果

 試運転。こんな感じになった。 結果.JPG

 本番では、ペン先が下がりきらず最後まで書くことができなかった。悔しい。

反省

  • アームを持ち上げる構造は、始めはモータBに直接取り付けて行っていたが、パワーバランスや電池の消耗の関係からギアを使って負荷の軽減をしたが、その分、パーツ数が多くなってしまい、モータCの負荷が多くなった。
  • ペンを操作する点が構造上高くなっており、そのため、筆圧が十分にかからない、ペン先がブレて字自体がずれてしまうといった問題に適切な対処を行えなかった。自分がいつもどの位置でペンを持っているかを考慮すれば、このような構造にはできないと思った。
  • 長さ等の比をできるだけ揃えるために
    RotateMotor(出力モータ, 速度, 回転角);
     の関数を使用したが、斜線ができないので、仕方なく斜線部分のみ時間制御にした。また、
    RotateMotorEx(出力モータ, 速度, 回転角, 同期比率, 同期の有無, ブレーキの有無);
     の関数を使うことも考えたが、比率の調整が上手くいかず断念した。
  • 今回の反省を活かし、普段何気なく行っている事も振り返って、より効率的なロボットを制作できるようにしていきたい。

添付ファイル: file書順.JPG [詳細] file結果.JPG 1件 [詳細] filex軸モータ.JPG [詳細] fileZ軸モータ.JPG [詳細] fileアーム.JPG [詳細] fileimageDodai1.JPG [詳細] fileimagefull1.jpeg [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-11-21 (水) 18:12:44 (24d)