今回の課題レポートは書道ロボットで自分の漢字を書き出すというものです。

私は自分の漢字から「添」という文字を選び、プログラムを作成していくことに決断しました。

先に結果を述べ、そのあとに考察と反省を述べていきます。

書道ロボット製作の結果

ロボットの画像

DSC_0187.jpg DSC_0186.jpg

組まれたプログラム

定義

#define hijimigi(s,t) OnRev(OUT_C,s);Wait(t);
#define tekubimigi(s,t) OnFwd(OUT_B,s);Wait(t);
#define downpen OnFwd(OUT_A,10);Wait(1900);Float(OUT_A);
#define uppen OnRev(OUT_A,10);Wait(1000);Float(OUT_A);
#define tekubihidari(s,t) OnRev(OUT_B,s);Wait(t);
#define hijihidari(s,t) OnFwd(OUT_C,s);Wait(t);
#define douji(x,y,z) OnFwd(OUT_B,x);OnRev(OUT_C,y);Wait(z);
#define kyuukei Off(OUT_ABC);Wait(1000);

まず作成した機械を人間の腕として見る。リモコンの近くにあるモーターから順に「肘」「手首」「指」と見てプログラム名に[hijimigi]など簡単に判別出来るように名前を付けた。

例を挙げると、引数に与えた値が0以上ならば[hijimigi]でリモコン側から数えて一つ目のモーターが右に曲がり、[tekubihidari]で二つ目のモーターが左に曲がる。[uppen],[downpen]はペンを上げる、下げるという動作を表している。

[douji]は時計回りを正として肘と手首を同時に動かす動作である。[kyuukei]は動作を確認するための時間を空けるために定義したものであったが、除くことにより不具合が生じることがあったためプログラムに残している。

プログラムの内容

sub sanzui(){//さんずいを書き始める
    hijihidari(15,300);
    kyuukei;
    OnFwd(OUT_A,10);Wait(2000);Float(OUT_A);//最初の一太刀
    kyuukei;
    douji(30,-15,180);
    kyuukei;
    uppen;//一画目終了
    kyuukei;
    douji(25,-20,600);
    kyuukei;
    downpen;
    kyuukei;
    tekubimigi(30,150);
    kyuukei;
    uppen;//二画目終了
    kyuukei;
    douji(20,-20,600);
    kyuukei;
    downpen;
    kyuukei;
    douji(-20,25,250);
    kyuukei;
    uppen;//三画目終了
} 

sub uenoyatu(){//添の上のほうを書き始める
    douji(-25,25,1000);
    kyuukei;
    downpen;
    kyuukei;
    douji(-32,20,400);//四画目終了  ここからアームがおかしくなる
    kyuukei;
    uppen;
    douji(-25,30,200);
    kyuukei;
    downpen;
    kyuukei;
    douji(25,17,400);//五画目終了
    kyuukei;
    uppen;
    douji(20,-20,400);
    kyuukei;
    downpen;
    kyuukei;
    douji(-40,20,350);//六画目終了
    kyuukei;
    uppen;
    douji(30,-15,300);
    kyuukei;
    downpen;
    kyuukei;
    douji(18,30,300);//七画目終了
    kyuukei;
    uppen;
}

sub syoumodoki(){//添の下の小の部分を書き始める
    douji(-30,-30,200);
    kyuukei;
    downpen;
    kyuukei;
    douji(-35,30,400);
    kyuukei;
    douji(10,-30,260);//八画目終了
    kyuukei;
    uppen;
    hijihidari(30,400);
    kyuukei;
    downpen;
    kyuukei;
    douji(-30,35,200);//九画目終了
    kyuukei;
    uppen;
    tekubimigi(30,300);
    kyuukei;
    downpen;
    kyuukei;
    hijimigi(35,200);//十画目終了
    kyuukei;
    uppen;
    tekubimigi(30,100);
    kyuukei;
    downpen;
    kyuukei;
    hijimigi(35,150);//十一画目終了
    kyuukei;
}

task main(){
    sanzui();
    kyuukei;
    kyuukei;
    uenoyatu();
    kyuukei;
    kyuukei;
    syoumodoki();
    OnRev(OUT_A,10);//ペンを上げて終了
    Wait(2000);
}

書き出された「添」という文字

注)時計まわりに90度回転させて見るのが正しい見方である。

DSC_0190.jpg

作成時間

ロボットの組み立て時間 約4時間

プログラム作成時間 約13時間

レポート作成時間 約2時間半

考察と反省

ここでは前に示されたような字を描くロボットの製作過程での克服した点、その反対に克服できなかった点を述べていく。

ロボットの組み立て

グループ三人で集まり自分が思い描く書道ロボットを説明していき、どのロボットが漢字を上手く描くことが出来るかを考え、意見を一致させて作りだすことが出来た。頭の中ではどんな字も描けるロボットになっていました。

この時に考えられる最良の策を試しているので反省点は無い

プログラム制作初期

メンバーが様々な問題に気づき始めました

解決可能だった問題

解決には至らなかった問題

プログラム制作中盤

複雑な動きをするようになり現れた問題を解決していく

解決した問題

プログラム制作終盤

初期に解決出来なかった問題はまだ解決出来ないまま諦め、最善の策を見つけることにした。

対応した問題

対応できなかった問題

感想

プログラムを組む前のロボットを造る過程でどのようなプログラムを作り動かすのか、それは簡単なプログラムなのか、繰り返しの動作が有効なのかなど色々なことを考えていかなければならないということを痛感しました。

困難だと感じたら立ち止まり、続けるべきか否かをゆっくりと考え、諦めることを躊躇しないということも重要だと思いました。


添付ファイル: fileDSC_0187.jpg 369件 [詳細] fileDSC_0186.jpg 317件 [詳細] fileDSC_0190.jpg 317件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-08-10 (月) 23:09:52