- 追加された行はこの色です。
- 削除された行はこの色です。
*書道ロボa2L [#x2a6ac62]
#contents
**ロボット name「 」[#c48337eb]
**ロボット [#c48337eb]
このロボットは指定した文字を書くために作られ、もともとキャタピラ型だったものを都合上タイヤの方が動きやすいだろうということで急きょタイヤ型にチェンジし、また、数々の試行錯誤を重ねたのちに出来上がった2aLの初号機である。
***作成過程 [#x8c310e8]
1 基礎部分・・・授業の初めの方で作った物を少し改造して使用
2 アーム部分・・・メンバーが自宅にて作成して来たものを使用
3 接合&調整・・・ロボティクス授業時間内に進行、完了。
***工夫(特徴) [#ba46ec93]
アーム部分においてただ腕を振り下ろす仕組みではなく、ギアを駆使してペンを垂直に降ろせるようなものを作った。ギアは低速で、確実に降ろしたい場所におろせるように工夫。また、マシンの旋回のことを考え、ペンの位置をマシンの中央部に設置。マシン自体はバランスをとるために正面から見たときにできるだけ左右対称になるように心がけた。
**「木」の字を書くプログラム [#d24ca4f0]
#define PEN_TIME 10
sub pendown() //ペンを下ろす
{ OnFwd(OUT_B);
Wait(PEN_TIME);
Off(OUT_B);
}
sub penup() //ペンを上げる
{
OnRev(OUT_B);
Wait(PEN_TIME);
Off(OUT_B);
}
task main()
{
pendown(); //1画目
OnFwd(OUT_A+OUT_C);
Wait(120);
Off(OUT_A+OUT_C);
penup();
OnFwd(OUT_A); //線を書かずに2画目へと移動
OnRev(OUT_C);
Wait(92);
OnFwd(OUT_A+OUT_C);
Wait(50);
Off(OUT_A+OUT_C);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(92);
OnFwd(OUT_A+OUT_C);
Wait(60);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(92);
Off(OUT_A+OUT_C);
pendown(); //2画目
OnFwd(OUT_A+OUT_C);
Wait(150);
Off(OUT_A+OUT_C);
penup();
OnRev(OUT_A+OUT_C); //線を書かずに後退、3画目へと移動
Wait(100);
Off(OUT_A+OUT_C);
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(35);
pendown(); //3画目
OnFwd(OUT_A+OUT_C);
Wait(100);
Off(OUT_A+OUT_C);
penup();
OnRev(OUT_A+OUT_C); //ペンを上げ、次の4画目のため向きを変える
Wait(100);
Off(OUT_A+OUT_C);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(70);
pendown(); //4画目
OnFwd(OUT_A+OUT_C);
Wait(100);
Off(OUT_A+OUT_C);
penup();
}
**「田」の字を書くプログラム [#j558415a]
#define TURN_TIME 93
sub turnright()
sub turnright() //右に90度曲がる
{
OnRev(OUT_A); OnFwd(OUT_C);
Wait(TURN_TIME);
Off(OUT_A+OUT_C);
}
sub turnleft()
sub turnleft() //左に90度曲がる
{
OnFwd(OUT_A); OnRev(OUT_C);
Wait(TURN_TIME);
Off(OUT_A+OUT_C);
}
sub pendown()
sub pendown() //ペンを下げる
{
OnFwd(OUT_B);
Wait(10);
Off(OUT_B);
}
sub penup()
sub penup() //ペンを上げる
{
OnRev(OUT_B);
Wait(10);
Off(OUT_B);
}
task main()
{
pendown();
pendown(); //一画目、田の中の十字の横棒
OnFwd(OUT_A+OUT_C);
Wait(115);
Off(OUT_A+OUT_C);
penup();
OnRev(OUT_A+OUT_C);
Wait(60);
Off(OUT_A+OUT_C);
turnleft();
OnFwd(OUT_A+OUT_C);
Wait(42);
Off(OUT_A+OUT_C);
pendown();
pendown(); //二画目、田の中の十字の縦棒
OnRev(OUT_A+OUT_C);
Wait(100);
Off(OUT_A+OUT_C);
penup();
turnleft();
OnRev(OUT_A+OUT_C);
Wait(53);
Off(OUT_A+OUT_C);
pendown();
pendown(); //三画目、田の底辺
OnFwd(OUT_A+OUT_C);
Wait(100);
Off(OUT_A+OUT_C);
penup();
turnright();
pendown();
pendown(); //四画目、田の左辺
OnFwd(OUT_A+OUT_C);
Wait(100);
Off(OUT_A+OUT_C);
penup();
turnright();
pendown();
pendown(); //五画目、田の上辺
OnFwd(OUT_A+OUT_C);
Wait(120);
Off(OUT_A+OUT_C);
penup();
OnRev(OUT_A); OnFwd(OUT_C);
Wait(100);
Off(OUT_A+OUT_C);
pendown();
pendown(); //六画目、右辺
OnFwd(OUT_A+OUT_C);
Wait(95);
Off(OUT_A+OUT_C);
penup();
}
**プログラム作成にあたっての考察 [#l6675e8f]
ロボットの構造上の「ペンが回転軸の中心にある」という利点を最大限に生かすようプログラムを組みました。ペンが回転軸の中心にある、すなわちロボットの通った軌跡を線として表すことができる。この特性により、角をプログラムでは回転運動のみで、何度も交わる画も、後退を取り入れることによりより正確に表せるようになっています。
**反省と感想etc [#vefaf9cb]
ペンを回転軸の中心に持ってくるという案により、プログラム面での文字の構成は当初予想していた通り容易に達成することができました。
しかし、ペン事態を支えるアームの強度が足りなかったため、回転時にペン先を点として固定することができず、回転時に一度ペンを紙面から離さねばならない問題が生じてしまい、それを期間内には改善することできなかったのが残念でした。
さらに、ロボットの動き方として一番動きやすい方法を考えるとものによっては、違う書き順でないとプログラムが大変になってしまい、結局本来の画数でなくなってしまったりしました。
また、プログラムの構成を前提としたロボットの設計だったため、重量が予想以上に重くなってしまったので、今後は一方にのみとらわれず、全体を見て設計をできるようにしたい。
次の課題では「強度」という観点に対してより重点を置き、設計をしていこうと考えています。
ついしん、いろいろな関係により写真のupができなくてすみませんでした。次回はできる限り努力します。
コメントお待ちしてます!!
#comment