[[2018a/Member]]

*課題1 [#gc7b5831]

紙にペンで10角以上に文字の2文字をA4の紙一枚に書くロボットを製作する。
今回は、自分の生まれ育った「品川」を書くことにした。

*自走式筆記ロボットの設計について [#k309a7bb]

使用機:LEGO MINDSTORM NXT

**設計思想 [#h0e9d2cc]

XY型やアーム型などいろいろな形を考えたがNXTのパーツ数では実現が難しく、二輪を軸として中心にペンの降上機を取り付けるシンプルな構造が一番上手く行きそうだという結論に至った。

**ロボットの解説 [#d7a825c7]
ロボットは二輪モーターと可動式の車輪一つの三輪とした、ここでこの構造の最大のメリットである、回転において始まりと終わりの位置が変わらないというものを活かすべくペンの位置を正確に補正する機構を用意した.

#ref(2018a/Member/ryota/Mission1/Image_72c1e9a.jpg,50%)

車輪の軸の中心に正確にペン先が落ちるように補整機をつけた.これによって回転時のブレを抑えることができた.(後述の通り不十分であった)

#ref(2018a/Member/ryota/Mission1/Image_db98195.jpg,50%)

三輪の場合,重心が高いため回転時に転倒するというトラブルに見舞われたが,幅の広い四輪にすることでかなり安定した.また,後輪を全誘導式にしてトラブルを避けた.

#ref(2018a/Member/ryota/Mission1/Image_55af03b.jpg,50%)


**反省点 [#zbaa4990]
ロボットの回転軸を長めにとったつもりであったが,足りずプログラムでゆっくり動作させようにも限界がありブレを制御しきれなかった.ペンの上げ下げ時に於いてもブレが大きかったため,モーターの回転によって直接行うよりも,もう少し機構について思案するべきであった.また,文字を書くという性質上,高い精度が求められるという前提に忠実に車輪幅を大きくしたり,モーターに減速ギアを噛ませたり,改善するべき点はたくさんあった.

*プログラム [#n94d855c]

**定義 [#b1fdd2d6]

#define penUP OnFwd(OUT_C,-20);Wait(100);Off(OUT_C);  //ペンを上げる
#define penDW OnFwd(OUT_C,20);Wait(100);Off(OUT_C);  //ペンを下げる
#define kuchi OnFwd(OUT_AB,20);Wait(100);Off(OUT_AB);   //多用する進む動作(短)
#define forward OnFwd(OUT_AB,20);Wait(1000);Off(OUT_AB);   //多用する進む動作(長)
#define rotate RotateMotorEx(OUT_AB,20,200,100,true,false);Wait(100);Off(OUT_AB);  //ペン先固定回転

**プログラム本編 [#df38c59d]

task main()
{
 repeat(4){
   kuchi
   rotate    //品の口
  }
   penUP
   forward
   penDW      //品の一つ目の口から二つ目の口へ移動
 repeat(4){
   kuchi
   rotate
  }
   penUP
   forward
   penDW   //品の二つ目の口から三つ目の口へ移動
 repeat(4){
   kuchi
   rotate
  }      //品
   penUP
   forward  //品から川へ移動
   penDW
   forward   //川の一画目
   penUP
   OnFwd(OUT_A,30);
   Wait(2000);
   Off(OUT_A);
   OnFwd(OUT_B,-30);
   Wait(2200);
   Off(OUT_B);
   OnFwd(OUT_AB,20);
   Wait(2000);
   Off(OUT_AB);  //川の二画目へ移動
   penDW
   forward    //川の二画目
   penUP
   OnFwd(OUT_B,-30);
   Wait(2000);
   Off(OUT_B);
   OnFwd(OUT_A,30);
   Wait(1700);
   Off(OUT_A);
   OnFwd(OUT_AB,20);
   Wait(2000);
   Off(OUT_AB);   //川の三画目へ移動
   penDW
   forward    //川
}
**工夫点 [#ibdf09ad]

このプログラムは目的の文字を書けるようにモーターの秒数だけを調節した非常にシンプルなプログラムである.二輪を同時に回転させ,かつゆっくりと回転させることによってよってズレを克服した.このミッション時間制限は無いので,一つ一つの動きを順序立てて正確にし,できるだけ理論通りに動くように工夫した.また規則的な動きを取り入れることによって定義したプログラムを有効に活用できた(90度運動など)

**反省点[#dd39bb1c]
**反省点[#dd39bb1c]

今回一見シンプルに思われる自走式を選択したが,先生が仰っていた通りプログラムが煩雑になり,定義を組み合わせるようなプログラムにはならなかった.そのため調整などに相当の時間を要し文字を完成させても,再現性に欠けるプログラムになってしまった.
上記の通りロボットのハードがプログラムの足を引っ張ってしまったといえるので,ハードについて別の検討をすればプログラムについても簡潔にでき多と思いました.

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS