2015a/Member/Lawrence/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2015a/Member]]
#contents
*はじめに [#z1892c80]
構想を決めるのに、そのロボットの調整に多くの時間を費やした。
&br;チーム内で完全に意見が分かれ、始めは、シンプルさを追求して、
&br;走行に、二つのモーターをそれぞれの車輪に使用し、一つの筆ペンをつける構想が思い浮かんだが、&br;プログラム上、何度も、走る方向を定めるというのは多大な労力を要する上に、プログラムが長くなってしまうという理由で、モーターを一つだけ、固定された車輪に使用し、残りの二つはペンに使用するという方式に決定した。
#ref(Robotitself.jpg);
上の写真はロボットの最終的なフォルム
*苦労話 [#j8ae1fd7]
二本のアームを使用するということで、その両者のプログラム的な微調整に、かなりの試行錯誤を要求された。
&br;何度もプログラムの数値のみを書き直して、それぞれのアームが、しっかりと紙にくっついているのか、それとも離れているのか、また、横の画数を書くときには、その距離をアームだけのパワーバランスだけで、調整するので、横から眺めながら、慎重に位置を調整した。
&br;途中、どうしても、パワー調整だけでは、どうしようもなくなったので、アームの位置自体を変えたり、また、その重量的なバランスの不安定さから、本体との重さをブロックの位置を調整するなどして、再配置した。
&br;また、ペン自体も書くときに不安定になりがちだったので、筆の柔軟性を保つということに重点をおいて、部品を継ぎ足すなどをして固定を試みた。
*プログラミング [#d28cb177]
モーターの制御には、調整が数値でしやすいように、RotateMotor関数を使用し、回転数を指定することで、ペンを操作した。
&br;また、マクロをあらかじめたくさん設定して、できるだけ、task main()内が短い行数になるように、努力した。また、そのマクロの名前は比較的わかりやすさを追求した結果、その画数を使用した。
#define ikkaku() RotateMoter(OUT_A,30,100);Off(OUT_A);OnFwd(OUT_C,30);Wait(200);Off(OUT_C);
[一画目]
+筆をおろす
+車体を後ろに少し移動する
#define nikaku() RotateMoter(OUT_B,30,50);Off(OUT_B);RotateMotor(OUT_A,30,50);Off(OUT_A);RotateMotor(OUT_B,30,-50);Off(OUT_B);RotateMotor(OUT_A,30,-60);Off(OUT_A);
[二画目]
+筆を上げる
+筆の位置を奥に移動させる
+筆をおろす
+筆を手前に戻す
#define sankakuyonkaku() RotateMotor(OUT_B,30,50);Off(OUT_B);RotateMotor(OUT_A,30,30);Off(OUT_A);RotateMotor(OUT_B,30,-30);Off(OUT_B);OnFwd(OUT_C,35);Wait(200);Off(OUT_C);RotateMotor(OUT_B,30,30);Off(OUT_B);RotateMotor(OUT_A,30,-10);Off(OUT_A);RotateMotor(OUT_B,30,30);Off(OUT_B);OnRev(OUT_C,35);Wait(200);Off(OUT_C);RotateMotor(OUT_B,30,30);Off(OUT_B);
[三画、四画目]
+筆を上げる
+筆の位置を少し、奥に移動させる
+筆を下げる
+車体を少し後ろに下げる
+筆を上げる
+筆を手前に移動させる
+筆を下す
+車体を前に戻す
+筆を上げる
#define gokaku() RotateMotor(OUT_A,30,50);Off(OUT_A);OnFwd(OUT_C,30);Wait(400);Off(OUT_C);RotateMotor(OUT_B,30,-30);Off(OUT_B);RotateMotor(OUT_A,30,50);Off(OUT_B);RotateMotor(OUT_B,30,30);Off(OUT_B);
[五画目]
+筆を手前に戻す
+車体を奥に移動する
+筆を下す
+筆を奥に移動する
+筆を上げる
#define rokunanahakkaku() RotateMotor(OUT_A,30,-10);Off(OUT_A);OnFwd(OUT_C,30);Wait(300);Off(OUT_C);RotateMotor(OUT_B,30,-30);Off(OUT_B);OnFwd(OUT_C,30);Wait(500);Off(OUT_C);RotateMotor(OUT_B,30,30);Off(OUT_B);RotateMotor(OUT_A,30,-10);Off(OUT_A);RotateMotor(OUT_B,30,-30);Off(OUT_B);OnRev(OUT_C,30);Wait(500);Off(OUT_C);RotateMotor(OUT_B,30,30);Off(OUT_B);RotateMotor(OUT_A,30,-10);Off(OUT_A);RotateMotor(OUT_B,30,-30);Off(OUT_B);OnFwd(OUT_C,30);Wait(500);Off(OUT_C);
[六、七、八画]
+筆を手前に戻す
+車体を奥に移動する
+筆を下す
+車体を奥に移動する
+筆を上げる
+筆を手前に戻す
+筆を下す
+車体を手前に戻す
+筆を上げる
+筆を手前に戻す
+筆を下す
+車体を奥に移動する
#define kyujujuichikaku() RotateMotor(OUT_A,30,50);Off(OUT_A);RotateMotor(OUT_B,30,30);Off(OUT_B);OnFwd(OUT_C,30);Wait(500);Off(OUT_C);RotateMotor(OUT_B,30,-30);Off(OUT_B);RotateMotor(OUT_A,30,-50);Off(OUT_A);RotateMotor(OUT_B,30,30);Off(OUT_B);OnFwd(OUT_C,30);Wait(500);Off(OUT_C);RotateMotor(OUT_B,30,-30);Off(OUT_B);RotateMotor(OUT_A,30,50);Off(OUT_A);RotateMotor(OUT_B,30,30);Off(OUT_B);
[九、十、十一]
+筆を奥に移動する
+筆を上げる
+車体を奥に移動する
+筆を下す
+筆を手前に戻す
+筆を上げる
+車体を奥に移動する
+筆を下す
+筆を奥に移動する
+筆を上げる
#define junikaku() RotateMotor(OUT_A,30,-30);Off(OUT_A);OnFwd(OUT_C,30);Wait(500);Off(OUT_C);RotateMotor(OUT_B,30,-30);Off(OUT_B);OnFwd(OUT_C,30);Wait(1000);Off(OUT_C);
[十二]
+筆を手前に戻す
+車体を奥に移動する
+筆を下す
+車体を奥に移動する
#define jusankaku() RotateMotor(OUT_A,30,-80);Off(OUT_A);
[十三]
+筆を手前に戻す
#define juyonkaku() OnRev(OUT_C,30);Wait(2000);Off(OUT_C);
[十四]
+車体を手前に戻す
task main()
{
ikkaku()
nikaku()
sanyonkaku()
gokaku()
rokunanahakkaku()
kyujujuichikaku()
junikaku()
jusankaku()
juyonkaku()
}
*まとめ [#be85e176]
総じて、プログラムを書くのに思ったよりも、マシンが思い通りにうごかなかったので、時間がかかった。&br;最終的に、うまく字が書けなかったが、試行錯誤の上で(プログラムと、本体とのバランスを調整すること)、こういう風にすれば、うまくいく確率があがって、こういう風にしたら、失敗するということが、目に見えてわかったので、ロボットを製作するうえでの、直感力を培ったと自負できる。&br;理想としていた字とはかけ離れてしまったが、ロボットを動かすという技術に触れることができて、満足であった。
#ref(kanji.jpg);
上の写真は理想としていた字(ロボットなので、かくかくしたものを理想とした)
終了行:
[[2015a/Member]]
#contents
*はじめに [#z1892c80]
構想を決めるのに、そのロボットの調整に多くの時間を費やした。
&br;チーム内で完全に意見が分かれ、始めは、シンプルさを追求して、
&br;走行に、二つのモーターをそれぞれの車輪に使用し、一つの筆ペンをつける構想が思い浮かんだが、&br;プログラム上、何度も、走る方向を定めるというのは多大な労力を要する上に、プログラムが長くなってしまうという理由で、モーターを一つだけ、固定された車輪に使用し、残りの二つはペンに使用するという方式に決定した。
#ref(Robotitself.jpg);
上の写真はロボットの最終的なフォルム
*苦労話 [#j8ae1fd7]
二本のアームを使用するということで、その両者のプログラム的な微調整に、かなりの試行錯誤を要求された。
&br;何度もプログラムの数値のみを書き直して、それぞれのアームが、しっかりと紙にくっついているのか、それとも離れているのか、また、横の画数を書くときには、その距離をアームだけのパワーバランスだけで、調整するので、横から眺めながら、慎重に位置を調整した。
&br;途中、どうしても、パワー調整だけでは、どうしようもなくなったので、アームの位置自体を変えたり、また、その重量的なバランスの不安定さから、本体との重さをブロックの位置を調整するなどして、再配置した。
&br;また、ペン自体も書くときに不安定になりがちだったので、筆の柔軟性を保つということに重点をおいて、部品を継ぎ足すなどをして固定を試みた。
*プログラミング [#d28cb177]
モーターの制御には、調整が数値でしやすいように、RotateMotor関数を使用し、回転数を指定することで、ペンを操作した。
&br;また、マクロをあらかじめたくさん設定して、できるだけ、task main()内が短い行数になるように、努力した。また、そのマクロの名前は比較的わかりやすさを追求した結果、その画数を使用した。
#define ikkaku() RotateMoter(OUT_A,30,100);Off(OUT_A);OnFwd(OUT_C,30);Wait(200);Off(OUT_C);
[一画目]
+筆をおろす
+車体を後ろに少し移動する
#define nikaku() RotateMoter(OUT_B,30,50);Off(OUT_B);RotateMotor(OUT_A,30,50);Off(OUT_A);RotateMotor(OUT_B,30,-50);Off(OUT_B);RotateMotor(OUT_A,30,-60);Off(OUT_A);
[二画目]
+筆を上げる
+筆の位置を奥に移動させる
+筆をおろす
+筆を手前に戻す
#define sankakuyonkaku() RotateMotor(OUT_B,30,50);Off(OUT_B);RotateMotor(OUT_A,30,30);Off(OUT_A);RotateMotor(OUT_B,30,-30);Off(OUT_B);OnFwd(OUT_C,35);Wait(200);Off(OUT_C);RotateMotor(OUT_B,30,30);Off(OUT_B);RotateMotor(OUT_A,30,-10);Off(OUT_A);RotateMotor(OUT_B,30,30);Off(OUT_B);OnRev(OUT_C,35);Wait(200);Off(OUT_C);RotateMotor(OUT_B,30,30);Off(OUT_B);
[三画、四画目]
+筆を上げる
+筆の位置を少し、奥に移動させる
+筆を下げる
+車体を少し後ろに下げる
+筆を上げる
+筆を手前に移動させる
+筆を下す
+車体を前に戻す
+筆を上げる
#define gokaku() RotateMotor(OUT_A,30,50);Off(OUT_A);OnFwd(OUT_C,30);Wait(400);Off(OUT_C);RotateMotor(OUT_B,30,-30);Off(OUT_B);RotateMotor(OUT_A,30,50);Off(OUT_B);RotateMotor(OUT_B,30,30);Off(OUT_B);
[五画目]
+筆を手前に戻す
+車体を奥に移動する
+筆を下す
+筆を奥に移動する
+筆を上げる
#define rokunanahakkaku() RotateMotor(OUT_A,30,-10);Off(OUT_A);OnFwd(OUT_C,30);Wait(300);Off(OUT_C);RotateMotor(OUT_B,30,-30);Off(OUT_B);OnFwd(OUT_C,30);Wait(500);Off(OUT_C);RotateMotor(OUT_B,30,30);Off(OUT_B);RotateMotor(OUT_A,30,-10);Off(OUT_A);RotateMotor(OUT_B,30,-30);Off(OUT_B);OnRev(OUT_C,30);Wait(500);Off(OUT_C);RotateMotor(OUT_B,30,30);Off(OUT_B);RotateMotor(OUT_A,30,-10);Off(OUT_A);RotateMotor(OUT_B,30,-30);Off(OUT_B);OnFwd(OUT_C,30);Wait(500);Off(OUT_C);
[六、七、八画]
+筆を手前に戻す
+車体を奥に移動する
+筆を下す
+車体を奥に移動する
+筆を上げる
+筆を手前に戻す
+筆を下す
+車体を手前に戻す
+筆を上げる
+筆を手前に戻す
+筆を下す
+車体を奥に移動する
#define kyujujuichikaku() RotateMotor(OUT_A,30,50);Off(OUT_A);RotateMotor(OUT_B,30,30);Off(OUT_B);OnFwd(OUT_C,30);Wait(500);Off(OUT_C);RotateMotor(OUT_B,30,-30);Off(OUT_B);RotateMotor(OUT_A,30,-50);Off(OUT_A);RotateMotor(OUT_B,30,30);Off(OUT_B);OnFwd(OUT_C,30);Wait(500);Off(OUT_C);RotateMotor(OUT_B,30,-30);Off(OUT_B);RotateMotor(OUT_A,30,50);Off(OUT_A);RotateMotor(OUT_B,30,30);Off(OUT_B);
[九、十、十一]
+筆を奥に移動する
+筆を上げる
+車体を奥に移動する
+筆を下す
+筆を手前に戻す
+筆を上げる
+車体を奥に移動する
+筆を下す
+筆を奥に移動する
+筆を上げる
#define junikaku() RotateMotor(OUT_A,30,-30);Off(OUT_A);OnFwd(OUT_C,30);Wait(500);Off(OUT_C);RotateMotor(OUT_B,30,-30);Off(OUT_B);OnFwd(OUT_C,30);Wait(1000);Off(OUT_C);
[十二]
+筆を手前に戻す
+車体を奥に移動する
+筆を下す
+車体を奥に移動する
#define jusankaku() RotateMotor(OUT_A,30,-80);Off(OUT_A);
[十三]
+筆を手前に戻す
#define juyonkaku() OnRev(OUT_C,30);Wait(2000);Off(OUT_C);
[十四]
+車体を手前に戻す
task main()
{
ikkaku()
nikaku()
sanyonkaku()
gokaku()
rokunanahakkaku()
kyujujuichikaku()
junikaku()
jusankaku()
juyonkaku()
}
*まとめ [#be85e176]
総じて、プログラムを書くのに思ったよりも、マシンが思い通りにうごかなかったので、時間がかかった。&br;最終的に、うまく字が書けなかったが、試行錯誤の上で(プログラムと、本体とのバランスを調整すること)、こういう風にすれば、うまくいく確率があがって、こういう風にしたら、失敗するということが、目に見えてわかったので、ロボットを製作するうえでの、直感力を培ったと自負できる。&br;理想としていた字とはかけ離れてしまったが、ロボットを動かすという技術に触れることができて、満足であった。
#ref(kanji.jpg);
上の写真は理想としていた字(ロボットなので、かくかくしたものを理想とした)
ページ名: