&size(20){目次};
#contents
*課題について [#n48970b1]
**課題の内容 [#b2567e30]
「A4の紙に松本の大学生活を表す漢字一文字を書くロボットを製作せよ」という課題である。

課題の内容に関して詳しくはこちら[[課題1>2017a/Mission1]]
**選んだ漢字 [#n03c853e]
松本での大学生活では、一人暮らしも寂しく里帰りがしたいという意味を込めて&color(#32cd32){「里」};という漢字にした。

*ロボット本体について [#a885785c]
ロボットの大きな分類として、%%%ロボットが動き回り字を書くタイプ%%%と%%%横と縦の動きが別々に独立しているX-Y座標型タイプ%%%の2種類があるが、今回はプログラムが比較的簡単にできる後者のほうを採用した。~
工夫した所としては、回転速度が遅いほうが細かな動きができ、RISは速度調節ができないという点から、できるだけ本体で回転速度を落とすという設計にした。そしてなるべくコンパクトかつ重心がずれないように本体の作成をした。
#ref(./全体像.jpg,50%,全体像)
**アーム駆動部分 [#k2a34c02]
#ref(./アーム駆動部分.jpg,50%,アーム駆動部分)
アーム駆動部分は写真の通りの形状にした。初め噛み合う歯車が一つでやった時にはグラグラして不安定だったため、3つに増やすことで安定性を高めることができた。


#ref(./速度調節ギア.jpg,40%,速度調節ギア)
アーム移動の速度を落とすために写真のような速度調節ギアをつけることで速度を落とすことに成功した。

#ref(./可動範囲.jpg,40%,可動範囲)
2つの歯車が嚙み合っていれば動くため可動範囲を増やすことができた。写真のようなところまで動かすことができるためコンパクトでありながらも長い可動範囲にするということを実現できた。

**ペンを上げるアーム部分 [#ff63dcf9]
#ref(./ペンを上げる部分.jpg,50%,ペンを上げるアーム部分)
 漢字を書くためにペンを上げ下げする部分はこのようにした。ギアが一つだけだと回転速度が速すぎて微調節ができなかったため写真のように組み合わせて速度を落とした。~
 ペンの固定には付属のゴムを使ったが、取り外しのしやすいよう工夫した。
**タイヤ部分 [#j03428eb]
#ref(./左タイヤ.jpg,50%,左タイヤ)
#ref(./右タイヤ.jpg,50%,右タイヤ)
タイヤについても速度を落とすため、小さな歯車に大きな歯車を嚙ませ速度調節をした。
*プログラムについて [#w8081b71]
 プログラムについては、なるべくわかりやすく、シンプルに作るよう心掛けた。
**書き順や漢字の書き方 [#o3968b8f]
#ref(./書き方.png,50%,書き順)
 書き方についてはできるだけ動きに無駄が出ないよう、写真のように書いた。~
 ロボットの設計上、下から上に向かって線を描くことはできなかった。
**プログラムの内容 [#id732b04]
***#define、サブルーチンの説明 [#l2df8a43]

 #define arm_right(t)   OnRev(OUT_A);Wait(t);Off(OUT_A); //アーム右移動
 #define arm_left(t) OnFwd(OUT_A);Wait(t);Off(OUT_A);  //アーム左移動
 #define move_fwd(t)   OnRev(OUT_C);Wait(t);Off(OUT_C); //前進
 #define move_rev(t)   OnFwd(OUT_C);Wait(t);Off(OUT_C); //後退

 sub arm_down()
 {
  OnFwd(OUT_B);   //ペンを下げる
  Wait(110);
  Off(OUT_B);
    OnFwd(OUT_B);   //ペンを下げる
    Wait(110);
    Off(OUT_B);
 }

 sub arm_up()
 {
  OnRev(OUT_B);   //ペンを上げる
  Wait(125);
  Off(OUT_B);
    OnRev(OUT_B);   //ペンを上げる
    Wait(125);
    Off(OUT_B);
 }

 X-Y軸型のロボットの動きはは6つの動作で構成されるので、このように定義した。

***漢字を書くプログラム [#kd06fa23]

  task main()
 {
  arm_down();
  arm_right(1000);
  arm_up();
  arm_left(250);
  move_fwd(65);
  arm_down();
  arm_left(500);
  arm_up();
  move_fwd(65);
  arm_down();
  arm_right(500);
  arm_up();
  move_fwd(65);
  arm_down();
  arm_left(500);
  arm_up();
  move_fwd(65);
  arm_down();
  arm_right(500);
  move_rev(130);
  arm_up();
  move_fwd(130);
  arm_left(500);
  arm_down();
  move_rev(130);
  arm_up();
  move_fwd(130);
  arm_right(250);
  move_rev(25);
  arm_down();
  move_rev(260);
  arm_up();
    arm_down();       //1画目
    arm_right(1000);
    arm_up();
    arm_left(250);
    move_fwd(65);
    arm_down();    //2画目
    arm_left(500);
    arm_up();
    move_fwd(65);
    arm_down();       //3画目
    arm_right(500);
    arm_up();
    move_fwd(65);
    arm_down();       //4画目
    arm_left(500);
    arm_up();
    move_fwd(65);
    arm_down();       //5画目
    arm_right(500);
    move_rev(130);    //6画目
    arm_up();
    move_fwd(130);
    arm_left(500);
    arm_down();       //7画目
    move_rev(130);
    arm_up();
    move_fwd(130);
    arm_right(250);
    move_rev(25);
    arm_down();       //8画目
    move_rev(260);   
    arm_up();
  }
 定義したものをひたすら使い、秒数の調整をした。

*完成した漢字について [#w409929a]
#ref(./完成した漢字.jpg,15%,完成した漢字)
 ところどころはみ出してしまったところもあったが、人間の書く能力と何ら変わりがない漢字を機械で再現することができたので満足である。反省点としてはペンを上げるときに余分な部分を書いてしまっていたのでペンを上げる機構にまだ改善の余地はあったと思う。
*まとめ [#w20d7dc6]
 今回は、初めて自らプログラムを作りロボットを動かしたがはじめてにしてはまずまずの結果だったと思う。しかし、漢字としては曲線もなく簡単な漢字だったため、今後の課題としては複雑な動きができ、かつわかりやすく明瞭なプログラムを作り上げるということになるだろう。~
 mission2に向けて、最終的な目標を見据えてそこに向かい具体的な方法を考えていくというスタンスで、さらなる高みを目指し追求し続けることを大切にしていきたい。~
 今回の課題は自分一人の力だけでは成し遂げられなかったものだと思うので、チームの仲間への感謝とチームワークを重視し挑戦を続けていこうと思う。~



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS