課題

課題についての概要

課題1のページ より要約すると、松本の大学生活を表す漢字を書くロボットを作る、ということである。

選んだ文字

松本市に来てから、晴れの日が多いように感じたので青空の「青」を選んだ。

ロボットの概要

全体

縦移動、横移動、ペン制御の機能それぞれに1個づつモーターを使用し、広範な移動ができるロボットを作成した。

このロボットは2つの小さなロボットが組み合わさって1つのロボットを構成しており、大まかな機体の作りはta.kashi氏のロボットを参考にした。

挙動としては、縦方向横方向ともに問題なく動作する。ただ、線を引く際に横方向に多少引っ掛かりが生じた。

この機体なら、おそらくプログラミングさえ工夫すればどんな漢字でも書けるであろう。


IMG_1262.JPG


IMG_1263.JPG


IMG_1265.JPG

縦軸稼働部分

縦移動をするための部分。右後ろのタイヤにモーターを取り付け、大きなタイヤを使う事で、機体が重くても少ない力で縦方向にスムーズに移動できるつくりになっている。

レールは、上方向からの力(ロボットの重さ)で走行中に折れてしまわないよう、2ブロック貫通して固定するピンを可能な限り使用して補強した。そのため、走行中にレールが折れてしまうといったようなことは起こらなかった。


IMG_1269.JPG


IMG_1268.JPG


IMG_1267.JPG


横軸稼働部分

横移動をするための部分。レールの上に小さな車を乗せて走らせることで可能にした。

運転手は車の重心を後ろにし、前に転倒しないようにするため乗車させた。ただ、線を引く時の挙動を見ると、少し後ろに重心を寄せ過ぎたかもしれない。

また、アームの太さをレールの内幅に合わせることで、横にも倒れないようにした。

IMG_1270.JPG


ペン稼働部分

ペンを上下させる部分。パーツを組み合わせてシンプルに動くようにした。

また、初めはペンの取り付けに輪ゴムを使用していたが、テープで固定した方がペン圧が安定する事がわかったので、テープを使用した。

IMG_1286.JPG


IMG_1281.JPG


結果


IMG_1289.JPG


使用したプログラム

#define runfwd  Off(OUT_C);OnFwd(OUT_C,15);Wait(125);Off(OUT_C);   //縦軸前進
#define runback Off(OUT_C);OnRev(OUT_C,15);Wait(125);Off(OUT_C);   //縦軸後退
#define runle   Off(OUT_B);OnFwd(OUT_B,30);Wait(125);Off(OUT_B);   //横軸左移動
#define runri   Off(OUT_B);OnRev(OUT_B,30);Wait(125);Off(OUT_B);   //横軸右移動
#define pendown    Off(OUT_A);OnFwd(OUT_A,15);Wait(450);Off(OUT_A);  //ペン下降
#define penup      Off(OUT_A);OnRev(OUT_A,25);Wait(500);Off(OUT_A);  //ペン上昇

task main ()
{
 pendown;                                                             //‘り
 runle;
 runle;
 runle;
 runle;
 penup;                                                               //“瓦
 Off(OUT_C);OnRev(OUT_C,15);Wait(125);Off(OUT_C);  //半マス後退
 runri;
 pendown;                                                             //入り
 runri;
 runri;
 penup;                                                               //抜き
 runri;
 Off(OUT_C);OnRev(OUT_C,15);Wait(125);Off(OUT_C);  //半マス後退
 pendown;                                                             //Fり
 runle;
 runle;
 runle;
 runle;
 penup;                                                               //H瓦
 runback;
 runback;
 runri;
 pendown;                                                             //てり
 runri;
 runri;
 penup;                                                               //と瓦
 runback;
 runle;
 runle;
 pendown;                                                             //テり
 runri;
 runri;
 penup;                                                               
 runback;
 runle;
 runle;
 pendown;                                                             
 runfwd;
 runfwd;
 runfwd;
 Off(OUT_C);
 penup;                                                               
 Wait(64);
 pendown;                                                             
 runri;
 runri;
 Off(OUT_B);
 penup;                                                               
 Wait(64);
 pendown;                                                             
 runback;
 runback;
 runback;
 Off(OUT_C);
 penup;                                                               
 Wait(64);
 pendown;                                                             
 Off(OUT_B);OnFwd(OUT_B,30);Wait(64);Off(OUT_B);  //左方向半マス移動
 penup;                                                               //ト瓦
 Off(OUT_B);OnFwd(OUT_B,30);Wait(64);Off(OUT_B);  //左方向半マス移動
 runfwd;
 runfwd;
 runfwd;
 runfwd;
 pendown;                                                             //ζり
 runfwd;
 runfwd;
 runfwd
 penup;                                                               //θ瓦
}

*コメント中の番号は、下記の解説の二つ目の図の番号に対応している。

解説

図1


プログラムの単純さを重視したため、上の図のように、漢字をマス目として捉え、上下左右1マスずつ移動できるようマクロを組んだ。

(この図上の2×2を1マスとし、0.5マス分の移動はそれぞれ別にプログラムした。)

このマクロを使用すれば、角ばっている漢字であればまず書けないことはないだろう。

工夫した点として、この機体は右から左に線を引くのは得意だが、左から右に線を引くのはあまり得意ではないので(上下に線を引くのは全く問題ないのだが)、できるだけ右から左へ線を引くようプログラムした。

字を書くスピードは、速いほうであると思う。1枚を1〜2分で書き上げる事ができる。

それに加えて、ペンの上げ下げにもマクロを使用した。

ペンの上下は、上げるプログラムと下げるプログラムの設定をOnFwdとOnRevだけ変えて同じにすると、だんだんペンが沈んでいってしまうので、

下げる際より上げる際にモーターを少し大きく回す事で、常に同じ位置にペンを落とせるようにした。

図2

上のように進むようプログラムした。赤線が移動で、青線が線を引く箇所を示している。

反省点

・ペン稼働部分の構造上の問題か、ペンを上下させるだけでは終始筆圧が安定せず、プログラミングだけでは管理しきれなかった。

・横軸稼働部分の前輪が少し浮き上がって空回りし、思うように横方向には線が引けなかった。

・プログラミングの細かい微調整が必要で、時間が掛かった。

・なぜか線が震えた。これはテープの固定を1枚から2枚に変えれば解決するかもしれない。

まとめ

当初から作ろうと思っていた、X軸Y軸でペンを制御できるロボットを作ることができたので、ロボットの原案を設計したta.kashi氏には感謝したい。

機体は5時間程度で組み上がった。作るのに苦戦した箇所は、横軸稼働部分だろう。上手くレールの上を走らせるのがとても難しかった。

機体の性質上、移動のプログラミングにはあまり苦労せずに済んだが、ペン圧の調整のプログラミングは発表当日になっても安定しなかった。
その代わり、ペンをテープで固定し、微調整をすれば安定して線を引かせることができ、いい出来の漢字が書けたので個人的には満足している。

文字の再現性としては、やはりペンに左右される。一度ペンを正確な場所に取り付けることができれば、完璧に上で示した結果のように文字を書くことができるが、
5回程度連続して書けば、機体がかける圧力によってペンの位置がずれてしまうため、最終的な文字の再現性はそこまで高くないだろう。

まだ改良の余地が残っているのに、機体を分解しなければいけないのは少し心苦しいが、次の課題で作るロボットは今回の反省を踏まえて作りたい。

IMG_1272A.JPG

添付ファイル: fileIMG_1286.JPG 96件 [詳細] fileIMG_1289.JPG 108件 [詳細] fileIMG_3777.JPG 115件 [詳細] fileIMG_1281.JPG 105件 [詳細] fileIMG_1270.JPG 119件 [詳細] fileIMG_1269.JPG 115件 [詳細] fileIMG_1268.JPG 113件 [詳細] fileIMG_1267.JPG 125件 [詳細] fileAO.jpg 113件 [詳細] fileIMG_1272A.JPG 116件 [詳細] fileIMG_1265.JPG 121件 [詳細] fileIMG_1263.JPG 103件 [詳細] fileIMG_1262.JPG 132件 [詳細]

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