ロボットを使って「矢作」を書く

目次

概要

  • 課題が住んでいる(いた)地域にゆかりのある名称であったので、私の実家、愛知にある地域名「矢作」を書くことにした。
  • ロボットが前進、後退、左右への動きを行うことで「矢作」という字を書く。

また、前進、後退と左右の動きを組み合わせて動かすことで斜めへの移動が可能となっている。

  • ペンは当初上げ下げする予定だったが、ロボットの調整が上手くいかなかったため文字は一筆書きで書かれている。

(ただし、プログラミングにはペンの上げ下げが含まれている)

  • 正しい書き順で動くため、プログラミングの説明を行うときは「矢」の1画目、「矢」の2画目と説明をしていく。

ロボットの作成と説明

写真1モーターA:Aのモーターは前後の動きを担当。

・説明:OnFwd(OUT_A)で前進、OnRev(OUT_A)で後退。

前進、後退

写真2モーターB(2つの歯車で挟んでいる部分):Bのモーターは左右への動きを担当。

・説明:OnFwd(OUT_)で正面から見て右へ、OnRev(OUT_B)で巻き戻す。

左右への動き

写真3モーターC:Cのモーターはペンの上げ下げを担当。

・説明:OnFwd(OUT_C)でペンを上げ、OnRev(OUT_C)でペンを下げる。

ペンの上げ下げ

☆全体の動きに関する説明

モーターC(篇の上げ下げを担当)はシーソーに例えると真ん中の作用点のような役割を果たしている。ただ、実際のシーソーと異なるのは、人が座る力点部分を操作することでペンを動かすのではなく、モーターCを動かすことで強制的にシーソーを動かしていると言う点だ。シーソーの片側にペンを、もう一方にバランスをとるためのペンより少し軽めの重りをつけた。よって、モーターCを動かすことでバランスを保っていたシーソーが傾きペンを上げたり下げたり出来るようになっていた。しかし、実際に書く時になるとモーターAによる前後の動きが機体を揺らしてしまい、シーソーのバランスが崩れたり、モーターBを動かすことでペンのついた方の長さが変わってしまいモーターCの動きのみではペンを持ち上げることが出来なくなっていた。

「矢」のプログラミング

#define PEN_TIME (4) //ペンを動かす時間
#define PEN_UP OnFwd(OUT_C);Wait(PEN_TIME);Off(OUT_C) ; //ペンを上げる動作
#define PEN_DOWN OnRev(OUT_C);Wait(PEN_TIME);Off(OUT_C); //ペンを下げる動作
#define FOWRD(FWD_TIME) OnFwd(OUT_A);Wait(FWD_TIME);Off(OUT_A); //前進する
#define BACK(BACK_TIME) OnRev(OUT_A);Wait(BACK_TIME);Off(OUT_A); //後退する
#define MIGIUE(migiue_time) OnRev(OUT_B);OnFwd(OUT_A);Wait(migiue_time);Off(OUT_AB); //右上に移動する
#define MIGISITA(migisita_time) OnRev(OUT_B);OnRev(OUT_A);Wait(migisita_time);Off(OUT_AB);//右下に移動する
#define HIDARISITA(hidarisita_time) OnFwd(OUT_B);OnRev(OUT_A);Wait(hidarisita_time);Off(OUT_AB);//左下に移動する
task main
{
PEN_DOWN(PEN_TIME);
Wait(100);
MIGIUE(30);
PEN_UP(PEN_TIME);   //1画目

Wait(100);
HIDARISITA(15); 
PEN_DOWN(PEN_TIME);
Wait(100); 
OnRev(OUT_B);
Wait(40);
Off(OUT_B);
PEN_UP(PEN_TIME);   //2画目

Wait(100);
OnFwd(OUT_B);
Wait(25);
Off(OUT_B);
Wait(100);
PEN_DOWN(PEN_TIME);
Wait(100);
BACK(23);
PEN_UP(PEN_TIME);   //4画目途中 

Wait(100);
OnFwd(OUT_B);
Wait(38);
Off(OUT_B);
PEN_DOWN(PEN_TIME);
Wait(100);
OnRev(OUT_B);
Wait(80);
Off(OUT_B);
PEN_UP(PEN_TIME);   //3画目 

Wait(100);
OnFwd(OUT_B);
Wait(35);
Off(OUT_B);
PEN_DOWN(PEN_TIME);
Wait(100);
HIDARISITA(30);
PEN_UP(PEN_TIME);   //4画目の払い

Wait(100);
MIGIUE(30);
PEN_DOWN(PEN_TIME);
Wait(100);
MIGISITA(30);
PEN_UP(5);   //5画目

Wait(150);
OnFwd(OUT_B);
Wait(38);
Off(OUT_B);
BACK(10); //次の字への移動

「作」のプログラミング

PEN_DOWN(PEN_TIME);
Wait(150);
HIDARISITA(30);   //1画目

Wait(100);
MIGIUE(15);
Wait(100);
BACK(35);
PEN_UP(5);   //2画目左側終える

Wait(100);
FOWRD(35);
OnRev(OUT_B);
Wait(10);
Off(OUT_B);
PEN_DOWN(PEN_TIME);
Wait(100);
MIGIUE(30);   //3画目

Wait(100);
HIDARISITA(15);
OnRev(OUT_B);
Wait(60);
Off(OUT_B);
PEN_UP(PEN_TIME);   //4画目

Wait(150);
OnFwd(OUT_B);
Wait(30);
Off(OUT_B);
PEN_DOWN(PEN_TIME);
Wait(100);
BACK(40);
PEN_UP(PEN_TIME);   //5画目 

Wait(100);
FOWRD(30);
PEN_DOWN(PEN_TIME);
Wait(100);
OnRev(OUT_B);
Wait(10);
Off(OUT_B);
PEN_UP(PEN_TIME);   //6画目

Wait(100);
HIDARISITA(10);
PEN_DOWN(PEN_TIME);
Wait(100);
OnRev(OUT_B);
Wait(10);
Off(OUT_B);   //7画目
}

反省

左右への動き

 上の画像を見ると、ペンの付いたパーツを左右に動かすための大きな2つの歯車がある。これは、私たちの班がロボットに前後だけでなく左右の動きを加えたかったため取り付けた部分だった。予定ではプログラミングの中で、ペン*1の付いているパーツ*2が動く距離を調節することで、そのパーツが歯車にかからない位遠い距離までいかないようにしたり、逆に、巻き取りすぎてBのモーターに負荷がかからないようにしたかった。また、そうならないように事前の準備では何度もプログラミングを調節した。しかし、本番のお披露目会では「作」の4画目のOnRev(OUT_B)の部分で、そのパーツ*3を巻き取りすぎたためにBのモーターに負荷がかかったため、B周りのパーツが本体から外れてしまった。

ペンの上げ下げの機構

 次に、上の写真ではペンの部分は上がっているが、実際にペンを付けてみるとまともに上がらなかった。当初の想定では、Cのモーター(写真3)を動かすことでペンの上げ下げを行おうとしていた。しかし、Cのモーターだけで行えるほど各部品は軽くなく、パワーも足りなかったため持ち上がらなかったと思われる。本来であればCのモーターに歯車をかませることでパワーを増やし、Cのモーターにかかる負担を減らすべきだった。または、ロボット自体の軽量化を行うべきだった。それに気づいたのは本番直前に先生に指摘されてからだったのだが…。

本番では書けなかったので後に書いてみたもの

 そして、完成したのが上の「矢作」だ。(文字といえばもじだが。失作にならなかっただけましか。)

改善点としては、〇車部分の上部を上から別のパーツで抑えることで、Bパーツ周辺が簡単に外れないようにすること。尚且つ、巻き取り過ぎないようにプログラミングを調節すること。Cのモーターに歯車をかませることでパワーを上げて、ペンが付いた状態でも持ち上げられるようにすること。もしくは、ペン部分に直接モーターをつけることでペンの上げ下げを可能にすること。

感想

 最後に、班員と集って試行錯誤を繰り返したことは辛かったがとても楽しかった。だが、そうであるが故に本番で上手く書けなかったのがとても悔しかった。EV3のプリンターや、同じRISでも「岐阜」や「松本」などを書いたロボット達はとても精巧に作られていた。私たちの一番の反省はロボット製作においてアイデアが足りなかったことだ。次の課題では、この反省を活かして講義に取り組みたい。

 


*1 本番では黄色いパーツ部分にペンが付いていた。
*2 灰色のギザギザが上についている黒いブロックのことを指す。
*3 注2のパーツのこと

添付ファイル: file理想のペン上げ.jpg 55件 [詳細] file前進、後退.jpg 71件 [詳細] file実際に書いたもの.jpg 84件 [詳細] file横の動きの限界.jpg 76件 [詳細] file横に引ける動きの限界.jpg 72件 [詳細] fileペンの上げ下げ.jpg 33件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-01-15 (月) 14:06:18