2017a/Member/nide/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2017a/Member]]
目次
#contents
*課題について [#i14ed69d]
[[2017a/Mission3]]を参照してください。
*ロボットについて [#a9fa43b9]
写真や詳しい情報は[[2017a/Member/kyo/Mission3]]を参照して...
缶収集ロボットを考えるのには積み上げに形を合わせるように...
*プログラムについて [#ga8dafde]
**缶収集ロボットの定義とsubについて [#u3fa5230]
缶収集ロボットの定義は
#define senter 37
#define TURN_right OnFwd(OUT_A);Off(OUT_C);
#define TURN_left OnFwd(OUT_C);Off(OUT_A);
#define overTURN_right OnFwd(OUT_A);OnRev(OUT_C);
#define overTURN_left OnFwd(OUT_C);OnRev(OUT_A);
となっている。前回とは違ってsenterというもので域値を定義...
そして、subは
sub line()
{
SetPower(OUT_AC,1);
SetSensor(SENSOR_2,SENSOR_LIGHT);
if(SENSOR_2 >senter +12){
overTURN_right;
}else if(SENSOR_2 >senter +4){
TURN_right;
}else if(SENSOR_2 >senter +0){
OnFwd(OUT_AC);
}else if(SENSOR_2 >senter -4){
TURN_left;
}else{
SetPower(OUT_C,0);
overTURN_left;
}
}
となっています。缶収集ロボットは前回と同じくライントレー...
**缶積み上げ用ロボットの定義について [#zfd6193c]
次に缶積み上げ用ロボットの定義は
#define ageru(t) OnFwd(OUT_A);Wait(t);Off(OUT_A);
#define sageru(t) OnRev(OUT_A);Wait(t);Off(OUT_A);
#define tukamu OnFwd(OUT_C);Wait(time_a);Off(OUT_C);
#define hanasu OnRev(OUT_C);Wait(time_a);Off(OUT_C);
#define lowpower SetPower(OUT_A,0);
#define conspower SetPower(OUT_A,7);
#define go_forward(t) OnFwd(OUT_B); Wait(t); Off(OUT_B);
#define back(t) OnRev(OUT_B); Wait(t); Off(OUT_B);
ageruとsageruは見たとおり、アームを上げ下げするために使わ...
**動かそうとした缶収集のプログラムについて [#h45fc11e]
task main()
{
ClearMessage(); //メッセージをクリアしている。//
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetSensor(SENSOR_2,SESNOR_LIGHT);
OnFwd(OUT_AC);
until(SENSOR_2<senter);
Wait(20);
Off(OUT_AC);
Wait(90);
まずスタート地点でsenterの値を取るまで前進させてその後に...
while(Message()==0){
line();
}
Off(OUT_AC);
SendMessage(2); //相手にメッセージを送る//
Wait(50);
OnFwd(OUT_AC);
until(Message()==3);
Off(OUT_AC);
その後、こちらのメッセージが変わるまでline()を実行してそ...
until(Message()==4);
OnFwd(OUT_AC);
until(Message()==3);
Off(OUT_AC);
これもメッセージが切り替わるまで待ったり進んだりしている...
until(Message()==5);
OnRev(OUT_AC);
Wait(100);
OnFwd(OUT_A);
Wait(70);
OnFwd(OUT_C);
until(SENSOR_2<37);
Wait(20);
Off(OUT_AC);
Wait(90);
while(Message()==5){
line();
}
Off(OUT_AC);
SendMessage(7);
Wait(50);
OnFwd(OUT_AC);
until(Message()==3);
Off(OUT_AC);
until(Message()==8);
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
}
ここで特に変わったことはない。混乱をしないようにメッセー...
**動かそうとした缶積み上げ用ロボットのプログラム [#v2353e...
task main()
{
SetSensor(SENSOR_1,SENSOR_TOUCH);
int n=0;
int time_a=40;
ClearMessage();
SetPower(OUT_B,3);
back(320);
定義で述べたようにtime_aの時間を決めている。またnを使うこ...
ClearTimer(0);
while(FastTimer(0)<150){
SendMessage(1);
Wait(100);
if(Message()==0){
ClearTimer(0);
}
}
ClearTimer(0)を使うことでその後の指定時間内に繰り返しでメ...
while(true){
Off(OUT_AC);
if(SENSOR_1==1){
n++;
SendMessage(3);
}
SENSORに触れた時にnの値をプラスしてメッセージを送る。
if(n==1){
tukamu;
ageru(450);
Wait(100);
Off(OUT_AC);
SendMessage(4);
n++;
}
この時に缶を上げてその場で止めている。その後収集ロボット...
if(n==3){
lowpower;
sageru(30);
hanasu;
Wait(100);
sageru(50);
tukamu;
conspower;
ageru(380);
Off(OUT_AC);
n++;
SendMessage(5);
}
ゆっくりと降ろして缶が倒れないようにして缶を離して、その...
if(n==4){
Wait(200);
ClearTimer(0);
while(FastTimer(0)<150&&Message()==2){
SendMessage(6);
Wait(100);
if(Message()==2){
ClearTimer(0);
}
}
}
集める缶の数が不足しているのでこれで上記と同じようになっ...
if(n==5){
lowpower;
sageru(30);
hanasu;
Wait(100);
ageru(380);
SendMessage(8);
back(250);
n++;
}
これで三缶を積み上げることをやった後収集ロボット後ろに動...
if(n>=6){
Off(OUT_AC);
}
}
}
これで止まり続ける。全体的に見るといタッチされても大丈夫...
うまくいくはずであったのだが、うまくいかなかった。そのう...
**実際のプログラム [#u6df46bf]
片方が
task main()
{
ClearMessage();
SetSensor(SENSOR_2,SENSOR_LIGHT);
OnFwd(OUT_AC);
until(SENSOR_2<37);
Wait(20);
Off(OUT_AC);
while(Message()==0){
line();
}
until(Message()==1);
Off(OUT_AC);
Wait(100);
OnFwd(OUT_AC);
Wait(280);
Off(OUT_AC);
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
}
これは収集のものをしているものであり、もう一方は
task main()
{
ClearMessage();
ClearTimer(0);
while(FastTimer(0)<7200){
SendMessage(1);
}
とメッセージを送り続けるだけのものとなっている。
*アドバイスとして [#b6598818]
一台に繋げようが二台で通信しようがまずさっさとロボットの...
*感想 [#h376439d]
この講義で3ヶ月間やり続けて楽しいこともあったが、自分の...
終了行:
[[2017a/Member]]
目次
#contents
*課題について [#i14ed69d]
[[2017a/Mission3]]を参照してください。
*ロボットについて [#a9fa43b9]
写真や詳しい情報は[[2017a/Member/kyo/Mission3]]を参照して...
缶収集ロボットを考えるのには積み上げに形を合わせるように...
*プログラムについて [#ga8dafde]
**缶収集ロボットの定義とsubについて [#u3fa5230]
缶収集ロボットの定義は
#define senter 37
#define TURN_right OnFwd(OUT_A);Off(OUT_C);
#define TURN_left OnFwd(OUT_C);Off(OUT_A);
#define overTURN_right OnFwd(OUT_A);OnRev(OUT_C);
#define overTURN_left OnFwd(OUT_C);OnRev(OUT_A);
となっている。前回とは違ってsenterというもので域値を定義...
そして、subは
sub line()
{
SetPower(OUT_AC,1);
SetSensor(SENSOR_2,SENSOR_LIGHT);
if(SENSOR_2 >senter +12){
overTURN_right;
}else if(SENSOR_2 >senter +4){
TURN_right;
}else if(SENSOR_2 >senter +0){
OnFwd(OUT_AC);
}else if(SENSOR_2 >senter -4){
TURN_left;
}else{
SetPower(OUT_C,0);
overTURN_left;
}
}
となっています。缶収集ロボットは前回と同じくライントレー...
**缶積み上げ用ロボットの定義について [#zfd6193c]
次に缶積み上げ用ロボットの定義は
#define ageru(t) OnFwd(OUT_A);Wait(t);Off(OUT_A);
#define sageru(t) OnRev(OUT_A);Wait(t);Off(OUT_A);
#define tukamu OnFwd(OUT_C);Wait(time_a);Off(OUT_C);
#define hanasu OnRev(OUT_C);Wait(time_a);Off(OUT_C);
#define lowpower SetPower(OUT_A,0);
#define conspower SetPower(OUT_A,7);
#define go_forward(t) OnFwd(OUT_B); Wait(t); Off(OUT_B);
#define back(t) OnRev(OUT_B); Wait(t); Off(OUT_B);
ageruとsageruは見たとおり、アームを上げ下げするために使わ...
**動かそうとした缶収集のプログラムについて [#h45fc11e]
task main()
{
ClearMessage(); //メッセージをクリアしている。//
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetSensor(SENSOR_2,SESNOR_LIGHT);
OnFwd(OUT_AC);
until(SENSOR_2<senter);
Wait(20);
Off(OUT_AC);
Wait(90);
まずスタート地点でsenterの値を取るまで前進させてその後に...
while(Message()==0){
line();
}
Off(OUT_AC);
SendMessage(2); //相手にメッセージを送る//
Wait(50);
OnFwd(OUT_AC);
until(Message()==3);
Off(OUT_AC);
その後、こちらのメッセージが変わるまでline()を実行してそ...
until(Message()==4);
OnFwd(OUT_AC);
until(Message()==3);
Off(OUT_AC);
これもメッセージが切り替わるまで待ったり進んだりしている...
until(Message()==5);
OnRev(OUT_AC);
Wait(100);
OnFwd(OUT_A);
Wait(70);
OnFwd(OUT_C);
until(SENSOR_2<37);
Wait(20);
Off(OUT_AC);
Wait(90);
while(Message()==5){
line();
}
Off(OUT_AC);
SendMessage(7);
Wait(50);
OnFwd(OUT_AC);
until(Message()==3);
Off(OUT_AC);
until(Message()==8);
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
}
ここで特に変わったことはない。混乱をしないようにメッセー...
**動かそうとした缶積み上げ用ロボットのプログラム [#v2353e...
task main()
{
SetSensor(SENSOR_1,SENSOR_TOUCH);
int n=0;
int time_a=40;
ClearMessage();
SetPower(OUT_B,3);
back(320);
定義で述べたようにtime_aの時間を決めている。またnを使うこ...
ClearTimer(0);
while(FastTimer(0)<150){
SendMessage(1);
Wait(100);
if(Message()==0){
ClearTimer(0);
}
}
ClearTimer(0)を使うことでその後の指定時間内に繰り返しでメ...
while(true){
Off(OUT_AC);
if(SENSOR_1==1){
n++;
SendMessage(3);
}
SENSORに触れた時にnの値をプラスしてメッセージを送る。
if(n==1){
tukamu;
ageru(450);
Wait(100);
Off(OUT_AC);
SendMessage(4);
n++;
}
この時に缶を上げてその場で止めている。その後収集ロボット...
if(n==3){
lowpower;
sageru(30);
hanasu;
Wait(100);
sageru(50);
tukamu;
conspower;
ageru(380);
Off(OUT_AC);
n++;
SendMessage(5);
}
ゆっくりと降ろして缶が倒れないようにして缶を離して、その...
if(n==4){
Wait(200);
ClearTimer(0);
while(FastTimer(0)<150&&Message()==2){
SendMessage(6);
Wait(100);
if(Message()==2){
ClearTimer(0);
}
}
}
集める缶の数が不足しているのでこれで上記と同じようになっ...
if(n==5){
lowpower;
sageru(30);
hanasu;
Wait(100);
ageru(380);
SendMessage(8);
back(250);
n++;
}
これで三缶を積み上げることをやった後収集ロボット後ろに動...
if(n>=6){
Off(OUT_AC);
}
}
}
これで止まり続ける。全体的に見るといタッチされても大丈夫...
うまくいくはずであったのだが、うまくいかなかった。そのう...
**実際のプログラム [#u6df46bf]
片方が
task main()
{
ClearMessage();
SetSensor(SENSOR_2,SENSOR_LIGHT);
OnFwd(OUT_AC);
until(SENSOR_2<37);
Wait(20);
Off(OUT_AC);
while(Message()==0){
line();
}
until(Message()==1);
Off(OUT_AC);
Wait(100);
OnFwd(OUT_AC);
Wait(280);
Off(OUT_AC);
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
}
これは収集のものをしているものであり、もう一方は
task main()
{
ClearMessage();
ClearTimer(0);
while(FastTimer(0)<7200){
SendMessage(1);
}
とメッセージを送り続けるだけのものとなっている。
*アドバイスとして [#b6598818]
一台に繋げようが二台で通信しようがまずさっさとロボットの...
*感想 [#h376439d]
この講義で3ヶ月間やり続けて楽しいこともあったが、自分の...
ページ名: