2018a/Member

書道ロボット

課題

  • ペンで字を書くロボットを作り地元の地名2文字を書かせる。

ロボット

  • アーム型ロボット
  • モーターA : 手首(ペン上げ下げ)
  • モーターB : 肘関節
  • モーターC : 肩関節
    robo2.jpg

プログラム

#define arm_12 RotateMotorEx(OUT_BC,50,-100,8,true,true)
#define penDW RotateMotor(OUT_A,50,90);
#define penUP RotateMotor(OUT_A,50,-86);
#define re ResetTachoCount(OUT_BC);

task main()
{
 RotateMotor(OUT_C,30,85);
 RotateMotor(OUT_A,30,60);
 Wait(500);
 penDW;                        //点1
 penUP;
 RotateMotor(OUT_C,30,-18);
 RotateMotor(OUT_B,30,-15);
 Wait(500);
 penDW;                        //点2
 penUP;
 Wait(500);
 RotateMotor(OUT_C,30,-18);
 RotateMotor(OUT_B,30,-15);
 Wait(500);
 penDW;                           //横1
 RotateMotorEx(OUT_BC,30,40,1true,true);
 Wait(500);
 penUP;
 Wait(500);
 Off(OUT_A);
 RotateMotor(OUT_C,30,-18);
 RotateMotor(OUT_B,30,-20);
 penDW;                              //縦1
 RotateMotor(OUT_C,30,-25);
 Wait(500);
 penUP;
 Wait(500);
 Off(OUT_A);
 RotateMotor(OUT_C,30,-10);
 RotateMotor(OUT_B,30,-20);
 Wait(500);
 penDW;
 Wait(500);
 RotateMotor(OUT_B,30,7);
 Off(OUT_B);
 RotateMotorEx(OUT_BC,30,40,10,true,true);
 Off(OUT_BC);
 RotateMotor(OUT_B,30,-7);
 penUP;
 Wait(500);
 Off(OUT_A);
 RotateMotor(OUT_C,30,10);
 RotateMotor(OUT_B,30,20);
 penDW;                           //口1
 RotateMotor(OUT_C,60,33);
 Off(OUT_A);
 Wait(500);
 RotateMotorEx(OUT_BC,30,-60,10,true,true);
 Off(OUT_BC)
 RotateMotor(OUT_C,30,-50);
 Wait(500);
 penUP;
 Wait(500);
 RotateMotor(OUT_C,30,27); 
 RotateMotor(OUT_B,30,27);
 penDW;                                 //田1
 RotateMotor(OUT_B,40,30); 
 penUP;
 Off(OUT_A);
 RotateMotor(OUT_B,30,28);
 RotateMotor(OUT_C,30,30);
 penDW                                  //口
 RotateMotor(OUT_B,30,-33);
 Wait(500);
 Off(OUT_A);
 RotateMotorEx(OUT_BC,30,-60,-5,true,true);
 Off(OUT_BC);
 RotateMotor(OUT_B,50,27);
 Wait(500);
 RotateMotorEx(OUT_BC,30,60,12,true,true);
 Wait(500);
 penUP;
 Wait(500);
 RotateMotor(OUT_B,30,-5);
 Wait(500);
 penDW;
 Wait(500);
 Off(OUT_A);
 RotateMotorEx(OUT_BC,30,-50,-5,true,true);
 Off(OUT_BC);
 Wait(500);
 penUP;
 Off(OUT_A);
} 

ロボット製作

形の決定

  • はじめはX-Y型にしようと思ったが、NXTのパーツだと少し難易度が高いと判断し、ロボットだけは簡単に製作できるアーム型にした。
  • 反省...プログラミングの難易度が高くなることをあまり考慮していなかった。

製作

  • モーターを2つ連結させ腕の形にし、残った1つのモーターでペンの上げ下げのための手首を製作した。
    robo3.jpg
  • 手首モーターとペンを離して紙に対してペンを斜めに当てることでブレをなくそうとした。
    robo1.jpg
  • 欠点...制御がしにくなる。
  • この時点での課題...アームが重すぎてパーツがもたない、傾く、ぶれる。
  • 解決策1...補強
    robo4.jpg
  • 解決策2...タイヤで本体の重量UP&ブレ減少
    robo7.jpg

プログラム製作

課題

  • 最初の課題...肩関節モーターだけ、肘関節モーターだけでは線をまっすぐかけない。
  • 解決策...RotateMotorExを使って肩関節モーターと肘関節モーターを同期させる。
  • 次の課題...まだぶれる。
  • 解決策...Wait(500)を使って1画1画止めながら書く。
  • その次の課題...電池の消耗が激しく、軌道が変わってしまう。
  • 解決策...モーターのパワーを50から30に落とす。
    robo6.jpg

最後まで残った課題

  • きれいに書けない
  • 同じプログラムでもアームの位置関係によって全く違う軌道になる。
  • サインコサインなどを使えばもう少し簡単にきれいに書けたかもしれない


添付ファイル: filerobo8.jpg 12件 [詳細] filerobo7.jpg 27件 [詳細] filerobo6.jpg 23件 [詳細] filerobo5.jpg 22件 [詳細] filerobo4.jpg 27件 [詳細] filerobo3.jpg 30件 [詳細] filerobo1.jpg 31件 [詳細] filerobo2.jpg 27件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-06-07 (木) 21:02:04 (442d)