2013b/Member/matan/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2013b/MemberOnly/進行状況]]
*今回の課題 [#udf5a3a9]
今回の課題はロボコンでした。コース上にある空き缶を集め、ゴールに積み上げて得点を競い合うものでした。
&ref(robocon3.png);
得点の配点の内容は…
得点の目安:
空き缶を取りにいくまでの動作 (2点)
空き缶を掴む動作 (4点)
空き缶をを運ぶ動作(2点)
空き缶を積み上げる動作(5点)
2台のRCXまたはNXTの連携の良さ(3点)
自立型のロボットとしての形や動作の美しさ、斬新さ(2点)
その他 (2点)
計20点で評価される。
*マイロボットの説明 [#lbd8afa1]
私たちの班は、エレベーター式にしました。アームのついている部分をモーターで巻き上げ缶を上に積み上げるものでした。駆動するモーターとは別に、アームを上に固定し安定させるために、もう一つ配線をつなげていないモーターを取り付けました。
&ref(robocon2.png);
*プログラム [#y57cfdbc]
このプログラムは理想のものです。ロボットが想像通り上手くいっていれば、使うはずでした。
**ライントレース側のプログラム [#h002361f]
#define OPEN 1 //缶を発見したことを知らせる
#define GO 2 //缶を掴んだことを知らせる
#define PUT 3 //ゴールに到着したことを知らせる
#define BACK 4 //ゴールに缶を置いたことを知らせる
#define THERESHOLD 47 //しきい値
#define HIPOWER 3
#define LOWPOWER 2
#define set_power_H SetPower(OUT_AC,HIPOWER);
#define set_power_L SetPower(OUT_AC,LOWPOWER);
#define go_forward set_power_H; OnRev(OUT_AC); //直進する
#define turn_left1 set_power_L;\OnFwd(OUT_A); OnRev(OUT_C); //左旋回する
#define turn_left0 set_power_L;\OnRev(OUT_C); Off(OUT_A); //左折する
#define turn_right0 set_power_L;\OnRev(OUT_A); Off(OUT_C); //右折する
#define turn_right1 set_power_L;\OnFwd(OUT_C); OnRev(OUT_A); //右旋回する
#define STEP 1
#define nMAX 35
#define short_break Off(OUT_AC); Wait(100); //小休止する
#define cross_line go_forward set_power_H;\OnFwd(OUT_AC); Wait(20); short_break; //交差点を通過する
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
int nOnline=0;
ClearTimer(1);
while (FastTimer(1) <= 500) {
go_forward;
if (SENSOR_3 > 48) { //缶を発見
SendMessage(OPEN); //アームを開くように指示
Off(OUT_AC);
}
until (Message() == GO); //アームの動作が終了時
go_forward; //再び直進
}
ClearTimer(0);
while (true) {
if (SENSOR_1 < THERESHOLD -4) {
turn_right1;
} else {
if (SENSOR_1 < THERESHOLD -2) {
turn_right0;
} else if (SENSOR_1 < THERESHOLD +2) {
go_forward;
} else if (SENSOR_1 < THERESHOLD +4) {
turn_left0;
} else {
turn_left1;
}
if (SENSOR_3 > 48) {
SendMessage(OPEN);
Off(OUT_AC);
}
if (nOnline == 8) {
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(300);
SendMessage(PUT);
}
until (Message() == GO);
while (FastTimer(0) < nMAX) {
if (SENSOR_1 < THERESHOLD -4) {
turn_right1;
} else {
if (SENSOR_1 < THERESHOLD -2) {
turn_right0;
} else if (SENSOR_1 < THERESHOLD +2) {
go_forward;
} else if (SENSOR_1 < THERESHOLD +4) {
turn_left0;
} else {
turn_left1;
}
ClearTimer(0);
}
Wait(STEP);
}
turn_left1; Wait(nMAX*STEP);
cross_line;
nOnline++;
PlaySound(SOUND_CLICK);
ClearTimer(0);
if (SENSOR_3 > 48) { //缶を発見
SendMessage(OPEN); //アームを開くように指示
Off(OUT_AC);
}
until (Message() == BACK);
OnRev(OUT_AC);
Wait(100);
}
}
**アーム側のプログラム [#zd05de34]
#define OPEN 1
#define GO 2
#define PUT 3
#define BACK 4
#define PowerA SetPower(OUT_A,0); // アームを開ける為のパワー
#define PowerB SetPower(OUT_A,7); // アームを閉じ、缶を掴み続けるパワー
#define PowerC SetPower(OUT_C,0); // アームを下ろすのと、アームを上で固定するパワー
#define PowerD SetPower(OUT_C,10); // アームを上げる為のパワー
task main()
{
ClearMessage();
while (true) {
PowerC; OnFwd(OUT_C);
until (Message() == OPEN);
PowerA; OnRev(OUT_A);
Wait(40);
PowerC; OnRev(OUT_C);
Wait(90);
PowerB; OnFwd(OUT_A);
Wait(40);
PowerD; OnFwd(OUT_C);
Wait(160);
SendMessage(GO);
PowerC; OnFwd(OUT_C);
until (Message() == PUT);
PowerC; OnRev(OUT_C);
Wait(50);
PowerA; OnRev(OUT_A);
Wait(40);
SendMessage(BACK);
}
Wait(10);
}
*苦労した点 [#y75617c8]
今回のロボットは変更点が特に多かった。最終的にプログラムの面では、缶を運搬時にメロディーを流すなど、かなり完成されたものであった。しかし、二台のロボットの連携が上手くいかなかったこと、ロボット自体の構造に少し無理があったことが災いしライントレースをして缶を積み上げることはできなかった。本番では、手堅く一つの缶にしぼりゴールを目指した。 班の製作に移り変わった当初は、分離型にしようとしていました。しかし、製作していくうちに合体型の方が、成功率・安定性・プログラムの量の三つの点で優れている!と感じました。そこで、合体型を作り始めました。まずは大まかな構造を話し合いエレベーター式にしようと決めました。
&ref(robocon1.png);
構造上の最大の問題点は、前部分のエレベーターをどう支えるかでした。これは、後部に支えを作ることで解決はしましたが、車体全体の重さがかなり重くなってしまいました。この影響により、車輪が重さに耐えきれず進まなくなてしまいました。そこで、先生からの助言もありエレベーターの下のタイヤを、駆動輪に変更しました。それによりこの問題は解決しました。駆動輪のは、ディファレンシャルギアを使いました。
今回のロボットは変更点が特に多かった。最終的にプログラムの面では、缶を運搬時にメロディーを流すなど、かなり完成されたものであった。しかし、二台のロボットの連携が上手くいかなかったこと、ロボット自体の構造に少し無理があったことが災いしライントレースをして缶を積み上げることはできなかった。本番では、手堅く一つの缶にしぼりゴールを目指した。 班の製作に移り変わった当初は、分離型にしようとしていました。しかし、製作していくうちに合体型の方が、成功率・安定性・プログラムの量の三つの点で優れている!と感じました。そこで、合体型を作り始めました。まずは大まかな構造を話し合いエレベーター式にしようと決めました。
構造上の最大の問題点は、前部分のエレベーターをどう支えるかでした。これは、後部に支えを作ることで解決はしましたが、車体全体の重さがかなり重くなってしまいました。この影響により、車輪が重さに耐えきれず進まなくなてしまいました。そこで、先生からの助言もありエレベーターの下のタイヤを、駆動輪に変更しました。それによりこの問題は解決しました。駆動輪のは、ディファレンシャルギアを使いました。
&ref(robocon4.JPG);
*反省 [#b06b11c2]
プログラムはearthが、とてもがんばってくれました。ロボットの構造自体は多大な時間をかけたが、まだまだでした。特に、アームとエレベーターの固定を考えるべきであったと思いました。このプログラムを是非使って成功させたかった。しかし、この講義を受講できて良かった。とても楽しかった。班のみんなありがとう。
終了行:
[[2013b/MemberOnly/進行状況]]
*今回の課題 [#udf5a3a9]
今回の課題はロボコンでした。コース上にある空き缶を集め、ゴールに積み上げて得点を競い合うものでした。
&ref(robocon3.png);
得点の配点の内容は…
得点の目安:
空き缶を取りにいくまでの動作 (2点)
空き缶を掴む動作 (4点)
空き缶をを運ぶ動作(2点)
空き缶を積み上げる動作(5点)
2台のRCXまたはNXTの連携の良さ(3点)
自立型のロボットとしての形や動作の美しさ、斬新さ(2点)
その他 (2点)
計20点で評価される。
*マイロボットの説明 [#lbd8afa1]
私たちの班は、エレベーター式にしました。アームのついている部分をモーターで巻き上げ缶を上に積み上げるものでした。駆動するモーターとは別に、アームを上に固定し安定させるために、もう一つ配線をつなげていないモーターを取り付けました。
&ref(robocon2.png);
*プログラム [#y57cfdbc]
このプログラムは理想のものです。ロボットが想像通り上手くいっていれば、使うはずでした。
**ライントレース側のプログラム [#h002361f]
#define OPEN 1 //缶を発見したことを知らせる
#define GO 2 //缶を掴んだことを知らせる
#define PUT 3 //ゴールに到着したことを知らせる
#define BACK 4 //ゴールに缶を置いたことを知らせる
#define THERESHOLD 47 //しきい値
#define HIPOWER 3
#define LOWPOWER 2
#define set_power_H SetPower(OUT_AC,HIPOWER);
#define set_power_L SetPower(OUT_AC,LOWPOWER);
#define go_forward set_power_H; OnRev(OUT_AC); //直進する
#define turn_left1 set_power_L;\OnFwd(OUT_A); OnRev(OUT_C); //左旋回する
#define turn_left0 set_power_L;\OnRev(OUT_C); Off(OUT_A); //左折する
#define turn_right0 set_power_L;\OnRev(OUT_A); Off(OUT_C); //右折する
#define turn_right1 set_power_L;\OnFwd(OUT_C); OnRev(OUT_A); //右旋回する
#define STEP 1
#define nMAX 35
#define short_break Off(OUT_AC); Wait(100); //小休止する
#define cross_line go_forward set_power_H;\OnFwd(OUT_AC); Wait(20); short_break; //交差点を通過する
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
int nOnline=0;
ClearTimer(1);
while (FastTimer(1) <= 500) {
go_forward;
if (SENSOR_3 > 48) { //缶を発見
SendMessage(OPEN); //アームを開くように指示
Off(OUT_AC);
}
until (Message() == GO); //アームの動作が終了時
go_forward; //再び直進
}
ClearTimer(0);
while (true) {
if (SENSOR_1 < THERESHOLD -4) {
turn_right1;
} else {
if (SENSOR_1 < THERESHOLD -2) {
turn_right0;
} else if (SENSOR_1 < THERESHOLD +2) {
go_forward;
} else if (SENSOR_1 < THERESHOLD +4) {
turn_left0;
} else {
turn_left1;
}
if (SENSOR_3 > 48) {
SendMessage(OPEN);
Off(OUT_AC);
}
if (nOnline == 8) {
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(300);
SendMessage(PUT);
}
until (Message() == GO);
while (FastTimer(0) < nMAX) {
if (SENSOR_1 < THERESHOLD -4) {
turn_right1;
} else {
if (SENSOR_1 < THERESHOLD -2) {
turn_right0;
} else if (SENSOR_1 < THERESHOLD +2) {
go_forward;
} else if (SENSOR_1 < THERESHOLD +4) {
turn_left0;
} else {
turn_left1;
}
ClearTimer(0);
}
Wait(STEP);
}
turn_left1; Wait(nMAX*STEP);
cross_line;
nOnline++;
PlaySound(SOUND_CLICK);
ClearTimer(0);
if (SENSOR_3 > 48) { //缶を発見
SendMessage(OPEN); //アームを開くように指示
Off(OUT_AC);
}
until (Message() == BACK);
OnRev(OUT_AC);
Wait(100);
}
}
**アーム側のプログラム [#zd05de34]
#define OPEN 1
#define GO 2
#define PUT 3
#define BACK 4
#define PowerA SetPower(OUT_A,0); // アームを開ける為のパワー
#define PowerB SetPower(OUT_A,7); // アームを閉じ、缶を掴み続けるパワー
#define PowerC SetPower(OUT_C,0); // アームを下ろすのと、アームを上で固定するパワー
#define PowerD SetPower(OUT_C,10); // アームを上げる為のパワー
task main()
{
ClearMessage();
while (true) {
PowerC; OnFwd(OUT_C);
until (Message() == OPEN);
PowerA; OnRev(OUT_A);
Wait(40);
PowerC; OnRev(OUT_C);
Wait(90);
PowerB; OnFwd(OUT_A);
Wait(40);
PowerD; OnFwd(OUT_C);
Wait(160);
SendMessage(GO);
PowerC; OnFwd(OUT_C);
until (Message() == PUT);
PowerC; OnRev(OUT_C);
Wait(50);
PowerA; OnRev(OUT_A);
Wait(40);
SendMessage(BACK);
}
Wait(10);
}
*苦労した点 [#y75617c8]
今回のロボットは変更点が特に多かった。最終的にプログラムの面では、缶を運搬時にメロディーを流すなど、かなり完成されたものであった。しかし、二台のロボットの連携が上手くいかなかったこと、ロボット自体の構造に少し無理があったことが災いしライントレースをして缶を積み上げることはできなかった。本番では、手堅く一つの缶にしぼりゴールを目指した。 班の製作に移り変わった当初は、分離型にしようとしていました。しかし、製作していくうちに合体型の方が、成功率・安定性・プログラムの量の三つの点で優れている!と感じました。そこで、合体型を作り始めました。まずは大まかな構造を話し合いエレベーター式にしようと決めました。
&ref(robocon1.png);
構造上の最大の問題点は、前部分のエレベーターをどう支えるかでした。これは、後部に支えを作ることで解決はしましたが、車体全体の重さがかなり重くなってしまいました。この影響により、車輪が重さに耐えきれず進まなくなてしまいました。そこで、先生からの助言もありエレベーターの下のタイヤを、駆動輪に変更しました。それによりこの問題は解決しました。駆動輪のは、ディファレンシャルギアを使いました。
今回のロボットは変更点が特に多かった。最終的にプログラムの面では、缶を運搬時にメロディーを流すなど、かなり完成されたものであった。しかし、二台のロボットの連携が上手くいかなかったこと、ロボット自体の構造に少し無理があったことが災いしライントレースをして缶を積み上げることはできなかった。本番では、手堅く一つの缶にしぼりゴールを目指した。 班の製作に移り変わった当初は、分離型にしようとしていました。しかし、製作していくうちに合体型の方が、成功率・安定性・プログラムの量の三つの点で優れている!と感じました。そこで、合体型を作り始めました。まずは大まかな構造を話し合いエレベーター式にしようと決めました。
構造上の最大の問題点は、前部分のエレベーターをどう支えるかでした。これは、後部に支えを作ることで解決はしましたが、車体全体の重さがかなり重くなってしまいました。この影響により、車輪が重さに耐えきれず進まなくなてしまいました。そこで、先生からの助言もありエレベーターの下のタイヤを、駆動輪に変更しました。それによりこの問題は解決しました。駆動輪のは、ディファレンシャルギアを使いました。
&ref(robocon4.JPG);
*反省 [#b06b11c2]
プログラムはearthが、とてもがんばってくれました。ロボットの構造自体は多大な時間をかけたが、まだまだでした。特に、アームとエレベーターの固定を考えるべきであったと思いました。このプログラムを是非使って成功させたかった。しかし、この講義を受講できて良かった。とても楽しかった。班のみんなありがとう。
ページ名: