2018b/Member

目次

課題1:書道ロボット

これまで住んだことのある都道府県名、市町村名、地区名などの中から2文字以上のものを選び、それをA4の紙を書くロボットを製作する。 [#j022f89b]

ロボットについて

構造

基本的にはボールをシュートするロボットと同じ形。 アームの部分の歯車を外し、単純にアームの先端を上下させる形のロボットに作り変えた。 /http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&pcmd=open&file=850681F7-5C2A-4E7A-B186-E2C14BFA99BE.jpeg&refer=2018b%2FMember%2Fyamada%2FMission1

本体

最初に作った基本形をそのまま用いた。 タイヤを外れにくくするためにタイヤの外側に余った部品を適当にくっつけた以外は何も手を加えていない。 http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&pcmd=open&file=E8F06148-D040-44AD-93CC-F5AD0ED875C5.jpeg&refer=2018b%2FMember%2Fyamada%2FMission1

アーム

説明書にあったボールをシュートするロボットのアームをもとにして作った。 構造のところに書いたように、歯車を外しアームの先端を上下できるようにした。 先端の隙間にペンを差し込み、適当な部品で押さえつけた後にヘアゴムでペンを固定する仕組みにした。 固定したペンの傾きが悪かったために車体を前に進めながら文字を書くときにペン先の摩擦が強くなり、滑らかに字を書くことができなかったのが欠点となってしまった。 http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&pcmd=open&file=A7F87AE8-580F-4359-9026-1BB97ACE15C1.jpeg&refer=2018b%2FMember%2Fyamada%2FMission1

ロボットの改善点

・本体を雑に作ってしまったためか部品がタイヤに当たり抵抗になってしまうという問題が度々発生した。もう少し丁寧に作るべきだった。

・アームの部分を車体の正面につけられるとプログラムの調整が多少楽になったのではないか?

プログラムについて

挑戦した文字

  サッポロ     漢字だと幌が難しいのでカタカナに挑戦

予定した書き順

http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&pcmd=open&file=91586496-067C-4D37-AC6B-DAE92801A4C8.jpeg&refer=2018b%2FMember%2Fyamada%2FMission1

*次のプログラム中の(図)は書き順の図中に示した。

プログラム

プログラムで表示される行数を元に行数を書いたので少しずれてしまいました。

  task main(){
   OnFwd(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);
   OnFwd(OUT_BC,30);
   Wait(500);
   Off(OUT_BC);
   Wait(1000);
   OnRev(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);         //4から15行目  サの1画目(図)
   OnFwd(OUT_B,30);
   Wait(1000);
   Off(OUT_B);
   Wait(1000);
   OnFwd(OUT_C,30);
   Wait(1000);
   Off(OUT_C);
   Wait(1000);
   OnRev(OUT_BC,30);
   Wait(800);
   Off(OUT_BC);
   Wait(1000);        //16から27行目  サの2画目の始点まで移動
   OnFwd(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);
   OnRev(OUT_BC,30);
   Wait(500);
   Off(OUT_BC);
   Wait(1000);
   OnRev(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);        //28から39行目  サの2画目(図◆
   OnFwd(OUT_BC,30);
   Wait(1100);
   Off(OUT_BC);
   Wait(1000);
   OnFwd(OUT_C,30);
   Wait(2100);
   Off(OUT_C);
   Wait(1000);
   OnRev(OUT_BC,30);
   Wait(400);
   Off(OUT_BC);
   Wait(1000);       //40から51行目  サの3画目の始点まで移動
   OnFwd(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);
   OnRev(OUT_BC,30);
   Wait(700);
   Off(OUT_BC);
   Wait(1000);
   OnRev(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);        //52から63行目  サの3画目(図)
   OnFwd(OUT_B,30);
   Wait(2100);
   Off(OUT_B);
   Wait(1000);
   OnRev(OUT_BC,30);
   Wait(1200);
   Off(OUT_BC);   
   Wait(1000);        //64から71行目  ツの1画目の始点まで移動
   OnFwd(OUT_A,30);    
   Wait(150);
   Off(OUT_A);
   Wait(1000);
   OnRev(OUT_BC,30);
   Wait(300);
   Off(OUT_BC);
   Wait(1000);
   OnRev(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);           //72から83行目  ツの1画目(図)
   OnFwd(OUT_B,30);
   Wait(700);
   Off(OUT_B);
   Wait(1000);
   OnFwd(OUT_C,30);
   Wait(500);
   Off(OUT_C);
   Wait(1000);
   OnRev(OUT_BC,30);
   Wait(400);
   Off(OUT_BC);
   Wait(1000);        //84から95行目  ツの2画目の始点まで移動 
   OnFwd(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);
   OnRev(OUT_BC,30);
   Wait(300);
   Off(OUT_BC);
   Wait(1000);
   OnRev(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);      //96から107行目   ツの2画目(図)
   OnFwd(OUT_B,30);
   Wait(600);
   Off(OUT_B);
   Wait(1000);
   OnFwd(OUT_C,30);
   Wait(600);
   Off(OUT_C);
   Wait(1000);       //108から115行目 ツの3画目の始点まで移動
   OnFwd(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);
   OnRev(OUT_BC,30);
   Wait(700);
   Off(OUT_BC);
   Wait(1000);
   OnRev(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);       //116から127行目 ツの2画目(図)
   OnFwd(OUT_BC,30);
   Wait(2000);
   Off(OUT_BC);
   Wait(1200);
   OnFwd(OUT_C,30);
   Wait(2100);
   Off(OUT_C);
   Wait(1000);       //128から135行目 ポの1画目の始点まで移動
   OnFwd(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);
   OnRev(OUT_BC,30);
   Wait(700);
   Off(OUT_BC);
   Wait(1000);
   OnRev(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);      //136から147行目 ポの1画目(図)
   OnRev(OUT_BC,30);
   Wait(200);
   Off(OUT_BC);
   Wait(1000);
   OnFwd(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);
   OnRev(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);      //148から159行目 ポの半濁点を点で表現(図)
   OnFwd(OUT_BC,30);
   Wait(700);
   Off(OUT_BC);
   Wait(1000);
   OnFwd(OUT_B,30);
   Wait(2000);
   Off(OUT_B);
   Wait(1000);
   OnRev(OUT_BC,30);
   Wait(1200);
   Off(OUT_BC);
   Wait(1000);      //160から171行目 ポの2画目の始点まで移動
   OnFwd(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);
   OnRev(OUT_BC,30);
   Wait(800);
   Off(OUT_BC);
   Wait(1000);
   OnRev(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);      //172から183行目 ポの2画目(図)
   OnFwd(OUT_BC,30);
   Wait(600);
   Off(OUT_BC);
   Wait(1000);
   OnFwd(OUT_C,30);
   Wait(300);
   Off(OUT_C);
   Wait(1000);     //184から191行目 ポの3画目の始点まで移動
   OnFwd(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);
   OnRev(OUT_BC,30);
   Wait(300);
   Off(OUT_BC);
   Wait(1000);
   OnRev(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);      //192から203行目 ポの3画目(図)
   OnFwd(OUT_B,30);
   Wait(600);
   Off(OUT_B);
   Wait(1000);
   OnRev(OUT_BC,30);
   Wait(150);
   Off(OUT_BC);
   Wait(1000);     //204から211行目 ポの4画目の始点まで移動
   OnFwd(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);
   OnRev(OUT_BC,30);
   Wait(300);
   Off(OUT_BC);
   Wait(1000);
   OnRev(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);     //212から223行目 ポの4画目(図ァ
   OnFwd(OUT_C,30);
   Wait(300);
   Off(OUT_C);
   Wait(1000);
   OnFwd(OUT_BC,30);
   Wait(2000);
   Off(OUT_BC);
   Wait(1000);     //224から231行目 ロの始点まで移動
   OnFwd(OUT_A,30);
   Wait(150);
   Off(OUT_A);
   Wait(1000);
   OnFwd(OUT_C,30);
   Wait(12000);
   Off(OUT_B);
   Wait(1000);     //232から239行目 ロを円で表現(図)
  }

実際に出来上がった文字

http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&pcmd=open&file=850377F5-773B-4FC5-B580-90063E554248.jpeg&refer=2018b%2FMember%2Fyamada%2FMission1 *薄かったためボールペンで重ね書きしてある。

始める場所を考えればはみ出る量が少しは減ったのではないか。

プログラムの工夫

・できるだけ繊細な動きを可能にするために出力を控えめにした。

・右左折や旋回をするときに急に動きを変えることで紙がずれてしまわないように一つ一つの動きの間に1秒間の静止時間を設けた。

プログラムの反省点

・関数などを使うことができず、単純な命令を羅列してしまったためとても長いプログラムとなってしまった。

・全て秒数を指定するプログラムを用いたためにその時の電池残量に合わせて一々調整をすることが必要となってしまった。

・時間が足りずロの部分をサボってしまった。

全体を通しての考察

ロボットを作る段階で本体の作り直しを面倒臭がって作り直さない、関数を使いこなせるようになるのが面倒で単純な命令を羅列するなど、一手間を惜しんで逆に面倒な方法をとるという典型的なミスを犯してしまった。特に関数についてはこれからも重要となる技術であるので、まずは次回までに確実に使えるようにしておくことが必要と感じた。また、次回は行き当たりばったりな計画ではなく後のことをきちんと考えた上で最も簡単で正確なプログラムを作れるようにすることが必要であると感じた。


添付ファイル: file91586496-067C-4D37-AC6B-DAE92801A4C8.jpeg 13件 [詳細] file850377F5-773B-4FC5-B580-90063E554248.jpeg 16件 [詳細] fileE8F06148-D040-44AD-93CC-F5AD0ED875C5.jpeg 9件 [詳細] fileA7F87AE8-580F-4359-9026-1BB97ACE15C1.jpeg 9件 [詳細] file850681F7-5C2A-4E7A-B186-E2C14BFA99BE.jpeg 20件 [詳細]

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