2015a/Member 目次
ロボティクス入門ゼミ課題1のレポート
課題1の内容は書道ロボットを作ることです。
詳しい内容はA4サイズの紙に、自分の名前に含まれていて7画以上の字を書くこと。なければ合計で7画以上になるように字を書くことである。ただしプログラムができるだけ簡単になるように書くこと。
私は杉の字を書くことにした。始める前は気が付かなかったがこの文字が名前に含まれていることは 、とても運のいいことだった。
文字を書くためには、紙面縦向き、紙面横向きそしてぺんを上下させる動きが必要だった。
この写真のままだと大きすぎて持ち運びに不便だが、ロボットの上と下のパーツは簡単に外して持ち運べる。
モーターは3つしかなく、ここで2つのモーターを使うと横向きの動きとペンを持ち上げる動作が出来なくなるので、1つのモーターだけで縦向きに動けるようにした。
OnFwdで前進、OnRevで後進をする。
RCXでは移動の速さを調節することが出来ず、wait(t)の中のtを変えるだけでは書きたい長さの線を書けなかったので、Offとfloatを使い分けて動く距離を調節した。
下の写真のように歯車と洗濯板の様なギザギザな板を組み合わせて、ペンとぺんを上下させる部分を横に移動できるようにした。
しかし、歯車が一つだけだと横に動く時速過ぎて安定せず、動かし過ぎて板から落ちてしまうことが多かった。 私たちは横に動く速さを調節するために大きさの違う歯車を組み合わせてゆっくり動けるようにした。
モーターを回転させると写真のひし形の部分が潰れてペンを上下させるようになっている。
ここでもモーターの回転が速すぎるため、ペンが紙にすごい速さで押し付けられてしまうという問題が起きたが再び複数の歯車を組み合わせて速さを調節した。
上の写真と同じ部分を上から映した写真です。
#define kaku OnFwd(OUT_B);Wait(20);Off(OUT_B);//ペンを紙につける #define kakanai OnRev(OUT_B);Wait(20);Off(OUT_B);//ペンを上げる #define go_forwardA(t) OnFwd(OUT_A);Wait(t);Float(OUT_A);Wait(100); //前進 #define back_forwardA(t) OnRev(OUT_A);Wait(t);Float(OUT_A);Wait(100);//後進 #define go_stop(t) OnFwd(OUT_A);Wait(t);Off(OUT_A);Wait(100);//前進、急停止 #define go_forwardC(t) OnFwd(OUT_C);Wait(t);Float(OUT_C);Wait(100);//右 #define back_forwardC(t) OnRev(OUT_C); Wait(t);Float(OUT_C);Wait(100);//左 #define left_sita(t) OnRev(OUT_AC);Wait(t);Float(OUT_AC);Wait(100);//左下 #define left_ue(t) OnRev(OUT_C);OnFwd(OUT_A);Wait(t);Float(OUT_AC);Wait(100);//左上
ここまでが動きを定義するプログラム
task main () { kaku; go_forwardC(55);//木の横線 1番 kakanai; go_stop(15);//2番 back_forwardC(20);//3番 kaku; back_forwardA(40);//木の縦線 4番 kakanai; go_forwardC(25);//5番 kaku; left_ue(20);//木の斜めの線 6番 left_sita(25);//木の斜めの線 7番 kakanai; go_forwardC(40);//8番 go_forwardA(30);//9番 go_forwardC(40);//10番 repeat(3) { kaku; left_sita(10);//11番、14番、17番 kakanai; go_stop(15);//12番、15番、18番 go_forwardC(30);//13番、16番、19番 }//さんづくりの線 }
写真に書いてある番号とプログラムに書いてある番号が同じになっている。
連続で移動させるとバランスを崩し大切なロボットが壊れたり、紙から筆がはみ出したとき被害が大きくなるので、一つの線を書くごとに1秒止まるようにプログラムを作った。
紙面縦向きの移動はスピードが出過ぎて長さを調節することが難しかった。 なので私たちはoffとfloatを使い分けて長さを調節した。
go_forwardは止まるときにfloatを使ってモーターの回転を止める。go_stopは止まるときOffを使って急停止させる。go_forwardの方が1.5倍ほど長く線かいた。
repeatの中のプログラム1回でさんづくりの線が1本書ける。18番と19番は特に必要のない動きです。
筆ペンを使って教室で書いたものです。
名前ペンを使って自室で書いたものです。筆ペンの時と同じプログラムを使ってます。
同じプログラムのはずなのに書いた場所、使った筆記用具の違いで少し字が変わってしまった。
私は運が良かった何故なら7画丁度の文字を名前にもっていたからです。他のメンバーはプログラムを書くのが大変そうでした。
文字を書き始めるときペンをどれだけ紙から離した状態にするか決めるのがとても大変でした。少しでも紙からの距離が遠いと線が描けず、近いとロボットが止まってしまう。結局紙から1センチくらい離すのが一番いいと分かるまで何度も作業を繰り返しました。
書く時に紙を抑えて置かないと紙がずれてうまく書けないのは最後まで改善できなかった。
私は不器用なのでロボットを作るのはほとんどほかのメンバーにやってもらいました。次の課題ではロボット作りにも貢献できるようにしたいです。