目次

課題の説明

ロボットの説明

本体

image[1].jpeg

本体には3つのモータを使用。

その内2つは左右のタイヤに接続されており、NXTの移動を担当している。

残る1つは、後述するアームの上下を担当している。

アーム

image[2].jpeg

上の画像のものが、アームである。

image[4].jpg

画像のように、モータが動くことでペンが上下する仕組みとなっている

計画

tou.png

我々の班は漢字を縦と横と左右斜め45度の、4種類の直線で表せると考えた。

そう考えることで、単純なマクロを複数用意することでプログラミングが容易になると考え、その方針で今回の課題に取り組んだ。

理想的なマクロをつくり、NXTが理想的に動けば、上の画像の通りのものが完成するはずである。

プログラム

#define onecm RotateMotorEx(OUT_BC,50,18,0,true,true);     //1cm前進
#define twocm RotateMotorEx(OUT_BC,50,37,0,true,true);     //2cm前進
#define threecm RotateMotorEx(OUT_BC,50,56,0,true,true);    //3cm前進
#define fourcm RotateMotorEx(OUT_BC,50,77,0,true,true);     //4cm前進
#define fivecm RotateMotorEx(OUT_BC,50,99,0,true,true);     //5cm前進
#define sevencm RotateMotorEx(OUT_BC,50,142,0,true,true);    //7cm前進
#define eightcm RotateMotorEx(OUT_BC,50,163,0,true,true);     //8cm前進
#define tencm RotateMotorEx(OUT_BC,50,204,0,true,true);       //10cm前進
#define fifteencm RotateMotorEx(OUT_BC,50,308,0,true,true);   //15cm前進
#define left45 RotateMotorEx(OUT_BC,50,201,0,true,true);Off(OUT_BC);Wait(300);RotateMotorEx(OUT_BC,50,88,-100,true,true);Off(OUT_BC);Wait(300);RotateMotorEx(OUT_BC,-50,203,0,true,true);//左に45度回転
#define left90 RotateMotorEx(OUT_BC,50,203,0,true,true);Off(OUT_BC);Wait(300);RotateMotorEx(OUT_BC,50,184,-100,true,true);Off(OUT_BC);Wait(300);RotateMotorEx(OUT_BC,-50,187,0,true,true);//左に90度回転
#define right45 RotateMotorEx(OUT_BC,50,190,0,true,true);Off(OUT_BC);Wait(300);RotateMotorEx(OUT_BC,50,93,100,true,true);Off(OUT_BC);Wait(300);RotateMotorEx(OUT_BC,-50,192,0,true,true);//右に45度回転
#define right90 RotateMotorEx(OUT_BC,50,183,0,true,true);Off(OUT_BC);Wait(300);RotateMotorEx(OUT_BC,50,185,100,true,true);Off(OUT_BC);Wait(300);RotateMotorEx(OUT_BC,-50,188,0,true,true);//右に90度回転
#define up RotateMotor(OUT_A,-40,90);Off(OUT_A);Wait(500);    //ペンを上げる
#define down RotateMotor(OUT_A,40,90);Off(OUT_A);Wait(500);   //ペンを下げる
#define b_onecm RotateMotorEx(OUT_BC,-50,18,0,true,true);     //1cm後退
#define b_twocm RotateMotorEx(OUT_BC,-50,37,0,true,true);     //2cm後退
#define b_threecm RotateMotorEx(OUT_BC,-50,56,0,true,true);   //3cm後退
#define b_fourcm RotateMotorEx(OUT_BC,-50,77,0,true,true);    //4cm後退
#define b_fivecm RotateMotorEx(OUT_BC,-50,99,0,true,true);    //5cm後退
#define b_sevencm RotateMotorEx(OUT_BC,-50,142,0,true,true);   //7cm後退
#define b_eightcm RotateMotorEx(OUT_BC,-50,163,0,true,true);   //8cm後退
#define b_tencm RotateMotorEx(OUT_BC,-50,204,0,true,true);     //10cm後退
#define b_fifteencm RotateMotorEx(OUT_BC,-50,308,0,true,true); //15cm後退

task main()
{
 down;//ここから草冠//
 fifteencm;up;b_fourcm;right90;b_twocm;down;fourcm;up;b_twocm;right90;sevencm;
 left90;b_twocm;down;fourcm;up;//ここまでが草冠// 
 
 twocm;//草冠から月へ移動//
 right90;fourcm;RotateMotorEx(OUT_BC,50,183,0,true,true);Off(OUT_BC);Wait(300);
 RotateMotorEx(OUT_BC,50,190,100,true,true);Off(OUT_BC);Wait(300);
 RotateMotorEx(OUT_BC,-50,188,0,true,true);b_fifteencm;
 
 down;//ここから月//
 fifteencm;up;right90;down;fourcm;up;onecm;right90;down;fifteencm;up;b_fivecm;right90;
 down;fourcm;up;onecm;right90;fivecm;onecm;right90;down;fourcm;up;//ここまで月// 
 
 onecm;//月から右上部分へ移動//
 threecm;threecm;right90;b_threecm;b_threecm;
 
 down;//ここから右上部分//
 threecm;up;left90;b_fourcm;down;eightcm;up;b_fourcm;right45;b_threecm;down;onecm;
 up;twocm;down;eightcm;up;b_sevencm;right90;b_threecm;down;onecm;up;twocm;down;eightcm;
 up;b_eightcm;left45;fourcm;right90;b_fivecm;b_onecm;down;tencm;up;//ここまで右上部分// 

 b_fivecm;//右上部分から右下部分へ移動//
 left90;twocm;
 
 down;//ここから右下部分//
 eightcm;up;b_fourcm;left45;b_fourcm;onecm;down;twocm;up;threecm;
 down;threecm;up;b_threecm;right90;b_fourcm;down;twocm;up;threecm;down;threecm;up;//完成//
}

結果

pentou.jpg

実際は理想のものとは程遠く、微調整をしたうえでもこのように歪なものになった。

苦労や行き詰ったところ・反省点

苦労・行き詰ったところ、その解決策

しかしそれだと、腕の重さで重心の位置が右上のところになってしまい、まっすぐ進まず不安定だったので、急遽今回のロボットを組み立てた。

それまで組み立てたプログラムが無駄になってしまったが、ロボットは安定した動きをするようになった。

この点は、RotateMotorExを用いて、モータの元々の出力の違いとともに解消することができた。

新しいロボットを作るという案もあったが時間的にも精神的にも厳しかったので、

結局それまでの路線のまま進め、最後はNXTに実際に文字を書かせてその都度微調整をするという形に落ち着いた。

反省点

文字を書くという課題に我々の動き回るロボットは向かない、と早めに気づいていれば、

他のロボットを作りもっといいものができたはずだ。

感想

班員に救われた部分が大きく、チームワークが大事だと感じた。

木村君はロボット製作を、田中君は課題解決の方針の考察やマクロの微調整、問題点の解決法の考察を一緒にやってくれた。

今回の結果や反省点を踏まえて、今後の課題に取り組んでいきたい。


添付ファイル: filetounxt.jpg 137件 [詳細] filepentou.jpg 239件 [詳細] fileimage[4].jpg 218件 [詳細] fileimage[1].jpeg 221件 [詳細] fileimage[2].jpeg 239件 [詳細] filetou.png 195件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-06-12 (金) 16:31:38