2015b/Member

車型書道ロボット

  今回私たちのチームでは、最初に作った車型ロボットの前に筆ペンをつけた、きわめて単純な構造の書道ロボを作りました。

全体図

 撮影後、サインペンから書きやすい筆ペンに変えました

車型書道ロボット

  固定方法はゴム二本と以下の写真に写っている固定器具。筆ペンが思っていたより太く、モーターの回転する部分につけるジョイントがうまくはまらず、緩みかけていたりしたので、これはあまり望ましくなく感じました。

今回の字

  自分の住んでた町の名前である『清田』の『清』を書こうと思い立ちました。

「清」の書き順

字を書くにあたって

  さんずいの斜線と、『つくり』の縦線が大きな課題でした。そのためには、45度および90度の方向転換のプログラムを構築する必要がありました。しかしそれだけではなく、書き順どおりに縦の線を描くために、ロボットを直接、書き始めのところまでもっていくこともしなければならないので、動く距離の検証も必須でした。 つまり、

,泙辰垢袷或覆靴董△修靴篤韻己だけ後退して戻ってくる
▲蹈椒奪箸90度、45度に方向転換させる
0銘屬鯆汗瓩垢襪燭瓩冒或福後退する(わかりやすく言うと、紙を座標グラフのようににとらえて、x軸方向に〜、y軸方向に〜だけ移動させる、というようなことである。)
ぅ撻鵑鮠紊臆爾欧垢

 というようにこれら4つの動きによって、自分たちのロボットは字が書けるのである。

プログラム

定義

#define do90_1 Off(OUT_AB);RotateMotor(OUT_A,40,190);Off(OUT_A);RotateMotor(OUT_B,40,-190);Off(OUT_B);Wait(300);//反時計周りに90度の方向転換
#define do90_2 Off(OUT_AB);RotateMotor(OUT_B,40,190);Off(OUT_B);RotateMotor(OUT_A,40,-190);Off(OUT_A);Wait(300);//時計回りに90度の方向転換
#define do45_1 Off(OUT_AB);RotateMotor(OUT_A,40,90);Off(OUT_A);RotateMotor(OUT_B,40,-90);Off(OUT_B);Wait(300);//反時計回りに45度の方向転換
#define do45_2 Off(OUT_AB);RotateMotor(OUT_B,40,90);Off(OUT_B);RotateMotor(OUT_A,40,-90);Off(OUT_A);Wait(300);//時計回りに45度の方向転換
#define do135x_1 Off(OUT_AB);RotateMotor(OUT_A,40,320);Off(OUT_A);RotateMotor(OUT_B,40,-240);Off(OUT_B);Wait(300);//反時計回りに約135度の方向転換
#define do135x_2 Off(OUT_AB);RotateMotor(OUT_B,40,320);Off(OUT_B);RotateMotor(OUT_A,40,-240);Off(OUT_A);Wait(300);//時計回りに約135度の方向転換
#define pen_d Off(OUT_C);RotateMotor(OUT_C,20,-20);Off(OUT_C);Wait(300);//ペンを下げる
#define pen_u Off(OUT_C);RotateMotor(OUT_C,60,20);Off(OUT_C);Wait(300);//ペンを上げる
#define zen(t1)Off(OUT_AB);ResetTachoCount(OUT_AB);RotateMotorEx(OUT_AB,40,t1,0,true,true);Off(OUT_AB);Wait(300);//前進
#define kou(t2) Off(OUT_AB);ResetTachoCount(OUT_AB);RotateMotorEx(OUT_AB,40,-t2,0,true,true);Off(OUT_AB);Wait(300);//後退
#define kaku(t3) pen_d;zen(t3);pen_u;kou(t3);Wait(300);//ペン下げ、前進、ペン上げ、元の位置まで後退
#define tate_1 kou(110);do90_1;zen(200);do90_2;kaku(80);do90_1;kou(200);do90_2;zen(110);//五番目の縦線を書いて元の位置に戻る
#define tate_2 kou(80);do90_1;zen(180);do90_2;kaku(140);do90_1;kou(180);do90_2;zen(80);//八番目の縦線を書いて元の位置に戻る
#define tate_3 kou(80);do90_1;zen(290);do90_2;kaku(140);do90_1;kou(290);do90_2;zen(80);//九番目の縦線を書いて元の位置に戻る
#define slash_1(t5) do45_1;kaku(t5);do45_2;//さんずいの1,2番めの線を書いて戻る
#define slash_2(t6) dox_1;kaku(t6);dox_2;//さんずいの3番目の線を書いて戻る

   プログラムの隣に何のための動作であるか記載しております(最初に、90do_1と書いたので、ダウンロードできず、急きょ上記のように順番を変えただけの名前にしました。ややこしい・・・)

定義に使ったプログラムについて

 初めて動かしたとき、OnFwd()OnRev()のプログラムを使っていたため、三輪車ではうまく直進することができませんでした。そこで、過去の記録をもとに、角度計算によるモーター回転のプログラムを利用し、少しでも直進性を高めました。次に、ペンの上げ下げを行っていると、回数を経るごとに、だんだん元の位置から下がってしまい、常に筆が紙につく状態になってしまいました。自分たちは、ペンを戻す時のモーターの力を少し強くすることで、この問題を解決しました。

本文

task main()
{
slash_1(60);//1番目
zen(80);slash_1(60);//2番目
zen(270);slash_2(60);//3番目
kou(290);do90_1;zen(60);kaku(100);kou(60);do90_2;//4番目
tate_1;//5番目
zen(20);do90_1;zen(80);kaku(40);kou(80);do90_2;//6番目
zen(20);do90_1;zen(50);kaku(130);kou(50);do90_2;//7番目
zen(40);tate_2;//8番目
do90_1;zen(80);kaku(90);kou(80);do90_2;//9−1番目
tate_3;//9−2番目
zen(30);do90_1;zen(80);kaku(90);kou(80);do90_2;//10番目
zen(30);do90_1;zen(80);kaku(90);kou(80);do90_2;//11番目
}

 横に『清』の書順にあたる番号を記載しています。(なお、9番目は二回に分けて書かせております)プログラムの途中にあるzen()kou()は、筆を書き始めの位置にまでもっていくためのプログラムです。

書いた結果

 『月』の上の部分が少しずれてしまった。本番の数日前から電池を入れ替えて、本番に近づけた検証をすべきだった

かけた文字

反省点、及び次の課題に向けての改善点

チームワーク

  ロボットを作成するための準備が遅れたことが、何よりの反省点であるとみました。その結果、せっかくお互い考えていたアイデアを生かしたロボットをつくることができませんでした。相棒との意思疎通もなおざりで、チームとして連携をうまくとれなかったのが一番の原因であると思います。チームとしての自覚を認識していき、相棒と共にロボットを作っていくことが重要である、そのことを忘れないようにすることで解決していこうと思いました。

技術面

 レゴの歯車の部品の上手な使い方が分からず、ペンの上げ下げの動作が雑なものになってしまいました。今回、発表会に出されたロボットの多くが歯車を活用していました。また、三輪車でしたので、OnFwd、OnRevの動作では、あまりにもずれが生じて、角度計算によってタイヤを動かすことになりました。あるチームのロボットは、四輪にして、一つのモーターでそれを動かすことで、OnFwdによる、かなり正確な直進動作を成しえていました。こうしたちょっとした工夫や発想が僕らのチームに足りなかったので、次回は他の人の過去の作品などをもっと参照にして、自分たちだけのオリジナルを求めていきたいと思いました。


添付ファイル: file40547.png 98件 [詳細] fileIMG_3197.JPG 101件 [詳細] fileIMG_3188.JPG 107件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-11-26 (木) 15:19:31