2016a/Member/kaito/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*今回の課題 [#m07b31c5]
今回は二つのロボットをつかい紙コップを運び重ねるというも...
基本ルール~
・紙コップはC地点、D地点にそれぞれ3個ずつおき、これを交互...
・ロボット2台はそれぞれA地点、B地点からスタートし、一体型...
他にも様々ありますがこの2点を守ればだいたい良いでしょう。~
得点の計算方法は~
・1段目の紙コップ3点、2段目の紙コップ6点、・・、n段目のコ...
・奇数段目にあるDのコップと偶数段目にあるCのコップは0点~
です。~
この他にもすべての班(自分の班を含む)がつける技術点があ...
*ロボットについて [#qc1f5837]
私たちはロボットを2台作り、紙コップを運ぶロボット、紙コッ...
まずは紙コップを運ぶロボットから見ていこうと思います。
#ref(ロボット54.jpg)
このロボットでは少し切れていますがむらさきの円を描いてい...
次に紙コップを重ねるロボットを見ていこうと思います。~
#ref(ロボット 1.jpg)
このロボットは前についている光センサーで紙コップの白を感...
そして赤で囲った部分で紙コップを持ち上げ、重ねます。~
#ref(ロボット6.jpg)
このロボットの工夫したところは様々ありますが、この赤い部...
*プログラミングについて (ドライブベース)[#i328a60a]
私たちはロボットを二つ作ったためドライブベース用とアーム...
まずは定義したプログラムから
#define THRESHOLD 42 //閾値
#define gofw OnFwd(OUT_AC);Wait(5); //前へ5秒すすむ
#define turn_left Off(OUT_A); OnFwd(OUT_C); //左へ...
#define senkai_left OnFwd(OUT_C);OnRev(OUT_A);Wait(63); ...
#define turn_right OnFwd(OUT_A); Off(OUT_C); //右...
#define senkai_right OnFwd(OUT_A);OnRev(OUT_C);Wait(60);...
#define senkai OnFwd(OUT_A);OnRev(OUT_C);Wait(90); //...
#define STEP 1 //0.1秒ごとに色を認識
#define B_up OnFwd(OUT_B);Wait(80);Off(OUT_B); //囲い...
#define B_down OnRev(OUT_B);Wait(80);Off(OUT_B); //囲...
#define back OnRev(OUT_AC);Wait(move_time);Off(OUT_AC); ...
#define tyousei_l(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t); ...
#define tyousei_r(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t); ...
#define watasu OnFwd(OUT_AC);Wait(120);Off(OUT_AC);OnRev...
intint move_time; //もう一つのロボへ紙コップを渡す
なぜ左旋回や右旋回が多いかというと、交差点や紙コップを渡...
~ここからはサブルーチンを紹介していきます。~
内容に関しては1回課題、2回課題の内容とかぶる部分につい...
・直進するサブルーチン~
void line_follow(int t) //t秒で動く
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
ClearTimer(0);
while (Timer(0)<t) { //タイマーがt以下の...
if (SENSOR_2 < THRESHOLD){
turn_left;
} else {
turn_right;
}
Wait(STEP);
}Off(OUT_AC);
}
簡単に説明しますと。普通のライントレースです。タイマーを...
・交差点を直進するサブルーチン~
sub crossing_fwd()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
int n=0; //カウンターをセット
while(n<10){ //nが10以下の時この操作を繰...
if (SENSOR_2 < THRESHOLD){
turn_left;n++; //左へ曲がったとき、カウンタ...
} else {
turn_right;n=0; //右へ曲がった時は増やさな...
}
Wait(STEP);
}Off(OUT_AC);Wait(100);gofw; //カウンターが10...
}
・交差点を止まるサブルーチン~
sub crossing_stop()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
int n=0;
while(n<10){
if (SENSOR_2 < THRESHOLD){
turn_left;n++;
} else {
turn_right;n=0;
}
Wait(STEP);
}Off(OUT_AC);Wait(100);
}
これは途中まで交差点を直進するサブルーチンと同じで、最後...
・交差点を右へ曲がるサブルーチン~
sub crossing_right()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
int n=0;
while(n<10){
if (SENSOR_2 < THRESHOLD){
turn_left;n++;
} else {
turn_right;n=0;
}
Wait(STEP);
}Off(OUT_AC);Wait(100);senkai_right;OnFwd(OUT_AC);Wait(...
}
これも同じく、最後に右へ曲がるだけです~
しかしこのライントレースは左側なので右へ曲がるときは直進...
sub crossing_left()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
int n=0;
while(n<10){
if (SENSOR_2 < THRESHOLD){
turn_left;n++;
} else {
turn_right;n=0;
}
Wait(STEP);
}Off(OUT_AC);Wait(100);senkai_left;
}
これも同じく、違うのは最後に左へ曲がるだけです。
~最後は実際のプログラムですがとても長くなってしまったので...
まずはA地点からP交差点へ行くのですが、その間の半径5センチ...
だいたいはこのような動きをします~
*プログラムについて(アーム) [#mf433ac9]
アームのプログラムについては腕の上げ下げと手の開け閉めだ...
最初に定義したプログラムから見ていきましょう。
#define nigiru OnFwd(OUT_A);Wait(move_timeA);Off(OUT_A);...
#define hanasu OnRev(OUT_A);Wait(350);Off(OUT_A); ...
#define arm_up OnFwd(OUT_C);Wait(move_timeB);Off(OUT_C);...
#define arm_down OnRev(OUT_C);Wait(500);Off(OUT_C); ...
#define s_arm_down OnRev(OUT_C);Wait(200);Off(OUT_C); ...
int move_timeA; //上記にあるムーブタイムを設置
int move_timeB; // 上に同じく
次に実際に動いたプログラムを見ていきましょう。~
task main()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
int n=0; //カウンターを設置
while(n<=2) //nが2以下の時下の動作を繰り替えす
{if(SENSOR_1>50)
{move_timeA=400; //move_timeAを4秒に設定
move_timeB=800; //move_timeBを8秒に設定
s_arm_down;hanasu;arm_down; //少しアームを下げ、手...
nigiru;move_timeB=move_timeB+80; //8,8秒握ります
arm_up;move_timeA=move_timeA+1; //4,01秒握ります
n++; //カウンターが増えます
}
}
s_arm_down;hanasu;arm_up;Off(OUT_A); //最後には、コップ...
}
*結果 [#t2532dfb]
私たちの班は、紙コップを一つも円の中に入れることができな...
しかし、技術点では10.6点となかなかの評価をもらいました。
ロボットのアームの完成度がかなり良かったからだと思います。
*まとめ [#v1145a5a]
今回の課題の二つのロボを使ってコップを重ねるという作業は...
終了行:
#contents
*今回の課題 [#m07b31c5]
今回は二つのロボットをつかい紙コップを運び重ねるというも...
基本ルール~
・紙コップはC地点、D地点にそれぞれ3個ずつおき、これを交互...
・ロボット2台はそれぞれA地点、B地点からスタートし、一体型...
他にも様々ありますがこの2点を守ればだいたい良いでしょう。~
得点の計算方法は~
・1段目の紙コップ3点、2段目の紙コップ6点、・・、n段目のコ...
・奇数段目にあるDのコップと偶数段目にあるCのコップは0点~
です。~
この他にもすべての班(自分の班を含む)がつける技術点があ...
*ロボットについて [#qc1f5837]
私たちはロボットを2台作り、紙コップを運ぶロボット、紙コッ...
まずは紙コップを運ぶロボットから見ていこうと思います。
#ref(ロボット54.jpg)
このロボットでは少し切れていますがむらさきの円を描いてい...
次に紙コップを重ねるロボットを見ていこうと思います。~
#ref(ロボット 1.jpg)
このロボットは前についている光センサーで紙コップの白を感...
そして赤で囲った部分で紙コップを持ち上げ、重ねます。~
#ref(ロボット6.jpg)
このロボットの工夫したところは様々ありますが、この赤い部...
*プログラミングについて (ドライブベース)[#i328a60a]
私たちはロボットを二つ作ったためドライブベース用とアーム...
まずは定義したプログラムから
#define THRESHOLD 42 //閾値
#define gofw OnFwd(OUT_AC);Wait(5); //前へ5秒すすむ
#define turn_left Off(OUT_A); OnFwd(OUT_C); //左へ...
#define senkai_left OnFwd(OUT_C);OnRev(OUT_A);Wait(63); ...
#define turn_right OnFwd(OUT_A); Off(OUT_C); //右...
#define senkai_right OnFwd(OUT_A);OnRev(OUT_C);Wait(60);...
#define senkai OnFwd(OUT_A);OnRev(OUT_C);Wait(90); //...
#define STEP 1 //0.1秒ごとに色を認識
#define B_up OnFwd(OUT_B);Wait(80);Off(OUT_B); //囲い...
#define B_down OnRev(OUT_B);Wait(80);Off(OUT_B); //囲...
#define back OnRev(OUT_AC);Wait(move_time);Off(OUT_AC); ...
#define tyousei_l(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t); ...
#define tyousei_r(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t); ...
#define watasu OnFwd(OUT_AC);Wait(120);Off(OUT_AC);OnRev...
intint move_time; //もう一つのロボへ紙コップを渡す
なぜ左旋回や右旋回が多いかというと、交差点や紙コップを渡...
~ここからはサブルーチンを紹介していきます。~
内容に関しては1回課題、2回課題の内容とかぶる部分につい...
・直進するサブルーチン~
void line_follow(int t) //t秒で動く
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
ClearTimer(0);
while (Timer(0)<t) { //タイマーがt以下の...
if (SENSOR_2 < THRESHOLD){
turn_left;
} else {
turn_right;
}
Wait(STEP);
}Off(OUT_AC);
}
簡単に説明しますと。普通のライントレースです。タイマーを...
・交差点を直進するサブルーチン~
sub crossing_fwd()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
int n=0; //カウンターをセット
while(n<10){ //nが10以下の時この操作を繰...
if (SENSOR_2 < THRESHOLD){
turn_left;n++; //左へ曲がったとき、カウンタ...
} else {
turn_right;n=0; //右へ曲がった時は増やさな...
}
Wait(STEP);
}Off(OUT_AC);Wait(100);gofw; //カウンターが10...
}
・交差点を止まるサブルーチン~
sub crossing_stop()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
int n=0;
while(n<10){
if (SENSOR_2 < THRESHOLD){
turn_left;n++;
} else {
turn_right;n=0;
}
Wait(STEP);
}Off(OUT_AC);Wait(100);
}
これは途中まで交差点を直進するサブルーチンと同じで、最後...
・交差点を右へ曲がるサブルーチン~
sub crossing_right()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
int n=0;
while(n<10){
if (SENSOR_2 < THRESHOLD){
turn_left;n++;
} else {
turn_right;n=0;
}
Wait(STEP);
}Off(OUT_AC);Wait(100);senkai_right;OnFwd(OUT_AC);Wait(...
}
これも同じく、最後に右へ曲がるだけです~
しかしこのライントレースは左側なので右へ曲がるときは直進...
sub crossing_left()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
int n=0;
while(n<10){
if (SENSOR_2 < THRESHOLD){
turn_left;n++;
} else {
turn_right;n=0;
}
Wait(STEP);
}Off(OUT_AC);Wait(100);senkai_left;
}
これも同じく、違うのは最後に左へ曲がるだけです。
~最後は実際のプログラムですがとても長くなってしまったので...
まずはA地点からP交差点へ行くのですが、その間の半径5センチ...
だいたいはこのような動きをします~
*プログラムについて(アーム) [#mf433ac9]
アームのプログラムについては腕の上げ下げと手の開け閉めだ...
最初に定義したプログラムから見ていきましょう。
#define nigiru OnFwd(OUT_A);Wait(move_timeA);Off(OUT_A);...
#define hanasu OnRev(OUT_A);Wait(350);Off(OUT_A); ...
#define arm_up OnFwd(OUT_C);Wait(move_timeB);Off(OUT_C);...
#define arm_down OnRev(OUT_C);Wait(500);Off(OUT_C); ...
#define s_arm_down OnRev(OUT_C);Wait(200);Off(OUT_C); ...
int move_timeA; //上記にあるムーブタイムを設置
int move_timeB; // 上に同じく
次に実際に動いたプログラムを見ていきましょう。~
task main()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
int n=0; //カウンターを設置
while(n<=2) //nが2以下の時下の動作を繰り替えす
{if(SENSOR_1>50)
{move_timeA=400; //move_timeAを4秒に設定
move_timeB=800; //move_timeBを8秒に設定
s_arm_down;hanasu;arm_down; //少しアームを下げ、手...
nigiru;move_timeB=move_timeB+80; //8,8秒握ります
arm_up;move_timeA=move_timeA+1; //4,01秒握ります
n++; //カウンターが増えます
}
}
s_arm_down;hanasu;arm_up;Off(OUT_A); //最後には、コップ...
}
*結果 [#t2532dfb]
私たちの班は、紙コップを一つも円の中に入れることができな...
しかし、技術点では10.6点となかなかの評価をもらいました。
ロボットのアームの完成度がかなり良かったからだと思います。
*まとめ [#v1145a5a]
今回の課題の二つのロボを使ってコップを重ねるという作業は...
ページ名: