2014a/Member/gomibakudan/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*課題2の内容 [#y82c2e2a]
[[このリンクを参照のこと:http://yakushi.shinshu-u.ac.jp/r...
*第一斑のメンバー [#j246b168]
-an
-gomibakudan
-nozomigo
-gamigami
*本体 [#r1489cfd]
#ref(./IMG_0049.JPG,10%,上から)
本体を上から撮影。
この機体は主に
-コップを掴む機構と光センサー
-RCX本体とそれを設置する荷台の部分
-ドライブベース
の三つに分けることが出来る。
大なり小なりそれぞれの部分で工夫があるので、順を追って説...
#ref(./IMG_0048.JPG,10%,正面から)
正面から撮影。
このコップを掴む機構はゼミにて松本先生がお手本として皆に...
さらに画像の下部をご覧いただくと、青い光センサーの傍から...
それらとは別に正面の光センサーの位置も調整している。この...
#ref(./IMG_0050.JPG,10%,モーター近辺御開帳)
モーターとアームを繋ぐギアのちょっとした工夫。ゼミ中にも...
#ref(./IMG_0046.JPG,10%,プーリー)
正面からの画像でも見えていたプーリー。この部分は機体の動...
#ref(./IMG_0047.JPG,10%,キャスター)
キャスターの写真。機体の後部、RCX本体の下に取り付けられ重...
#ref(./IMG_0051.JPG,10%,下から)
下から撮影。モーター二つが接触している辺りドライブベース...
#ref(./IMG_0037.JPG,10%,サブ)
サブ。こちらの機体は、機体本体の構造にもプログラムにも触...
-[[anの場合:http://yakushi.shinshu-u.ac.jp/robotics/?2014...
-[[nozomigoの場合:http://yakushi.shinshu-u.ac.jp/robotics...
-[[gamigamiの場合:http://yakushi.shinshu-u.ac.jp/robotics...
*この機体で狙っていた動き [#p7b7864d]
#ref(./setumei.jpg,100%,上から)
赤色の矢印が私が作ったメイン機体、青色の矢印がサブ機体の...
+メイン機がコップAを運ぶ
+サブ機がコップBを動かす
+メイン機がコップBを運ぶ
+サブ機がコップCを動かす
+メイン機がコップCを運ぶ
ただこれだけである。肝としては、メイン機体が紙コップの色...
*プログラム [#af3e0045]
全般に同じ内容を繰り返し過ぎで頭の悪いプログラム。ライン...
#define set_power_L SetPower(OUT_A,1);SetPower(OUT_C,1);...
#define THRESHOLD 45//閾値
#define go_forward OnFwd(OUT_AC);//前進
#define turn_right1 OnFwd(OUT_A);Off(OUT_C);//右折
#define turn_left1 Off(OUT_A);OnFwd(OUT_C);//左折
#define STEP 1
#define U_turn OnFwd(OUT_A);OnRev(OUT_C);Wait(180);Off(O...
今回は光センサー二つでラインを挟むようにしてライントレー...
/*コップを持ち上げる、下ろす動きをマクロ化*/
#define cup_up OnFwd(OUT_B);Wait(130);Off(OUT_B);
#define cup_down OnRev(OUT_B);Wait(130);Off(OUT_B);
/*グローバル変数。コップの色に応じて1〜3の値をとり、点A...
int number=0;
グローバル変数は全てのタスクに作用するので、あまり勧めら...
/*論理積を使ったライントレースのサブルーチン*/
sub line(){
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){//センサ...
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){//...
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){//...
turn_left1;
Wait(STEP);
}else{go_forward;//両方黒
Wait(STEP);
}
}
今回のプログラムの失敗、一番の間違いがこのライントレース...
プログラムの内容としては、論理積を使って直進、右折、左折...
ここからは紙コップを掴んだ後に行うパターン分けされた運搬...
イメージがしやすいように、「この機体で狙っていた動き」で...
#ref(./setumei.jpg,30%,上から)
/*紙コップを掴んだ後に紙コップAがあった場所に辿り着いて...
sub carry_cup(){
if(number==1){//紙コップ1へと向かうプログラム
while((SENSOR_2<47)&&(SENSOR_2>35)){
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
上のライントレースに関するサブルーチンの箇所でも書いたが...
ライントレースを括っている"while"の条件を日本語に起こすと...
go_forward;
Wait(10);//紙コップに完全に接触するまで前進。そこから...
Off(OUT_AC);
cup_down;
U_turn;
紙コップを被せて再び次のコップをとる為に方向転換をしてラ...
while((SENSOR_2<47)&&(SENSOR_2>35)){//紙コップBかCを認...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
#ref(./setumei.jpg,30%,上から)
}else if(number==2){
while((SENSOR_1>THRESHOLD)||(SENSOR_3>THRESHOLD)){//交...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
紙コップ2から一番近い交差点までを論理和でもってしてライン...
turn_right0;
Wait(75);//コップ2の逆方向を向かせる
go_forward;
Wait(100);
U_turn;//交差点でそのまま左折するとコップ2を押してし...
交差点から紙コップ2へ向かうのだが、車体の大きさに対して交...
while((SENSOR_2<47)&&(SENSOR_2>35)){//紙コップ2を認識...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
go_forward;
Wait(20);//紙コップに完全に接触するまで前進。そこから...
Off(OUT_AC);
cup_down;
OnRev(OUT_AC);
Wait(130);
紙コップを被せた後に紙コップが揃えられる軸に戻る。
while((SENSOR_1>THRESHOLD)||(SENSOR_3>THRESHOLD)){//交...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
turn_left0;
Wait(75);//軸にそって紙コップBかCに向かせる
while((SENSOR_2>35)&&(SENSOR_2<47)){//紙コップを認識す...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
#ref(./setumei.jpg,30%,上から)
}else{
while((SENSOR_1>THRESHOLD)||(SENSOR_3)>THRESHOLD){//交...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
go_forward;
Wait(10);
while((SENSOR_1>THRESHOLD)||(SENSOR_3)>THRESHOLD){//交...
go_forward;
}
ここでは一つの用紙中央にある交差点まで向かわせてから紙コ...
turn_right0;
Wait(75);
while((SENSOR_2>35)&&(SENSOR_2<47)){//紙コップを認識す...
go_forward;
}
go_forward;
Wait(25);
Off(OUT_AC);
cup_down;
紙コップ3を認識するまで前進し紙コップを被せる。一枚の用紙...
OnRev(OUT_AC);
Wait(110);
while((SENSOR_1>THRESHOLD)||(SENSOR_3)>THRESHOLD){//交...
OnRev(OUT_AC);
}
turn_right0;
Wait(75);
}
コップを被せた後は交差点まで後退して、ラインを認識後に右9...
while((SENSOR_2<47)&&(SENSOR_2>35)){//紙コップを認識す...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
}
/*開始直後の紙コップAを掴み振り向くまでの動きをインライ...
void start_dash(){
go_forward;
Wait(120);//スタート地点からでる為の動き
while((SENSOR_1>THRESHOLD)||(SENSOR_3)>THRESHOLD){//交...
go_forward;
}
turn_right0;
Wait(75);
while((SENSOR_2<47)&&(SENSOR_2>35)){//紙コップを認識す...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
go_forward;
Wait(100);//コップに接触するまで
Off(OUT_AC);
if(SENSOR_2>47){//白
number=1;
}else if((SENSOR_2<47)&&(SENSOR_2>37)){
number=2;
}else{
number=3;
}//センサーの値に応じてnumberに値を入れる
cup_up;
U_turn;
}
開始からライントレースを経て紙コップを掴む、色を読み取る...
task main(){
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);//それぞれセンサーを光...
set_power_L;//タイヤの速度を最低に
start_dash();//コップAを掴む
carry_cup();
go_forward;
Wait(50);//コップBに接触するまで
Off(OUT_AC);
if(SENSOR_2>47){
number=1;
}else if((SENSOR_2>35)&&(SENSOR_2<47)){
number=2;
}else{
number=3;
}//センサーの値に応じてnumberに値を入れる
cup_up;
U_turn;
ClearTimer(0);//タイマー設置
"carry_cup()"が紙コップAがあった場所を超えたところからの...
while(Timer(0)<40){
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
carry_cup();
go_forward;
Wait(50);//コップCに接触するまで
Off(OUT_AC);
if(SENSOR_2>47){
number=1;
}else if((SENSOR_2>35)&&(SENSOR_2<47)){
number=2;
}else{
number=3;
}//センサーの値に応じてnumberに値を入れる
cup_up;
U_turn;
ClearTimer(0);//タイマーを初期化
while(Timer(0)<20){
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
carry_cup();
Off(OUT_AC);
}
*まとめ兼反省文 [#i9ea157e]
今見直してハッキリと分かることだが、全般に雑である。先ず...
-黒 35未満
-白 48以上
-青 40前後
と言ったところか。これを見る分には十分に識別できそうだが...
終了行:
#contents
*課題2の内容 [#y82c2e2a]
[[このリンクを参照のこと:http://yakushi.shinshu-u.ac.jp/r...
*第一斑のメンバー [#j246b168]
-an
-gomibakudan
-nozomigo
-gamigami
*本体 [#r1489cfd]
#ref(./IMG_0049.JPG,10%,上から)
本体を上から撮影。
この機体は主に
-コップを掴む機構と光センサー
-RCX本体とそれを設置する荷台の部分
-ドライブベース
の三つに分けることが出来る。
大なり小なりそれぞれの部分で工夫があるので、順を追って説...
#ref(./IMG_0048.JPG,10%,正面から)
正面から撮影。
このコップを掴む機構はゼミにて松本先生がお手本として皆に...
さらに画像の下部をご覧いただくと、青い光センサーの傍から...
それらとは別に正面の光センサーの位置も調整している。この...
#ref(./IMG_0050.JPG,10%,モーター近辺御開帳)
モーターとアームを繋ぐギアのちょっとした工夫。ゼミ中にも...
#ref(./IMG_0046.JPG,10%,プーリー)
正面からの画像でも見えていたプーリー。この部分は機体の動...
#ref(./IMG_0047.JPG,10%,キャスター)
キャスターの写真。機体の後部、RCX本体の下に取り付けられ重...
#ref(./IMG_0051.JPG,10%,下から)
下から撮影。モーター二つが接触している辺りドライブベース...
#ref(./IMG_0037.JPG,10%,サブ)
サブ。こちらの機体は、機体本体の構造にもプログラムにも触...
-[[anの場合:http://yakushi.shinshu-u.ac.jp/robotics/?2014...
-[[nozomigoの場合:http://yakushi.shinshu-u.ac.jp/robotics...
-[[gamigamiの場合:http://yakushi.shinshu-u.ac.jp/robotics...
*この機体で狙っていた動き [#p7b7864d]
#ref(./setumei.jpg,100%,上から)
赤色の矢印が私が作ったメイン機体、青色の矢印がサブ機体の...
+メイン機がコップAを運ぶ
+サブ機がコップBを動かす
+メイン機がコップBを運ぶ
+サブ機がコップCを動かす
+メイン機がコップCを運ぶ
ただこれだけである。肝としては、メイン機体が紙コップの色...
*プログラム [#af3e0045]
全般に同じ内容を繰り返し過ぎで頭の悪いプログラム。ライン...
#define set_power_L SetPower(OUT_A,1);SetPower(OUT_C,1);...
#define THRESHOLD 45//閾値
#define go_forward OnFwd(OUT_AC);//前進
#define turn_right1 OnFwd(OUT_A);Off(OUT_C);//右折
#define turn_left1 Off(OUT_A);OnFwd(OUT_C);//左折
#define STEP 1
#define U_turn OnFwd(OUT_A);OnRev(OUT_C);Wait(180);Off(O...
今回は光センサー二つでラインを挟むようにしてライントレー...
/*コップを持ち上げる、下ろす動きをマクロ化*/
#define cup_up OnFwd(OUT_B);Wait(130);Off(OUT_B);
#define cup_down OnRev(OUT_B);Wait(130);Off(OUT_B);
/*グローバル変数。コップの色に応じて1〜3の値をとり、点A...
int number=0;
グローバル変数は全てのタスクに作用するので、あまり勧めら...
/*論理積を使ったライントレースのサブルーチン*/
sub line(){
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){//センサ...
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){//...
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){//...
turn_left1;
Wait(STEP);
}else{go_forward;//両方黒
Wait(STEP);
}
}
今回のプログラムの失敗、一番の間違いがこのライントレース...
プログラムの内容としては、論理積を使って直進、右折、左折...
ここからは紙コップを掴んだ後に行うパターン分けされた運搬...
イメージがしやすいように、「この機体で狙っていた動き」で...
#ref(./setumei.jpg,30%,上から)
/*紙コップを掴んだ後に紙コップAがあった場所に辿り着いて...
sub carry_cup(){
if(number==1){//紙コップ1へと向かうプログラム
while((SENSOR_2<47)&&(SENSOR_2>35)){
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
上のライントレースに関するサブルーチンの箇所でも書いたが...
ライントレースを括っている"while"の条件を日本語に起こすと...
go_forward;
Wait(10);//紙コップに完全に接触するまで前進。そこから...
Off(OUT_AC);
cup_down;
U_turn;
紙コップを被せて再び次のコップをとる為に方向転換をしてラ...
while((SENSOR_2<47)&&(SENSOR_2>35)){//紙コップBかCを認...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
#ref(./setumei.jpg,30%,上から)
}else if(number==2){
while((SENSOR_1>THRESHOLD)||(SENSOR_3>THRESHOLD)){//交...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
紙コップ2から一番近い交差点までを論理和でもってしてライン...
turn_right0;
Wait(75);//コップ2の逆方向を向かせる
go_forward;
Wait(100);
U_turn;//交差点でそのまま左折するとコップ2を押してし...
交差点から紙コップ2へ向かうのだが、車体の大きさに対して交...
while((SENSOR_2<47)&&(SENSOR_2>35)){//紙コップ2を認識...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
go_forward;
Wait(20);//紙コップに完全に接触するまで前進。そこから...
Off(OUT_AC);
cup_down;
OnRev(OUT_AC);
Wait(130);
紙コップを被せた後に紙コップが揃えられる軸に戻る。
while((SENSOR_1>THRESHOLD)||(SENSOR_3>THRESHOLD)){//交...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
turn_left0;
Wait(75);//軸にそって紙コップBかCに向かせる
while((SENSOR_2>35)&&(SENSOR_2<47)){//紙コップを認識す...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
#ref(./setumei.jpg,30%,上から)
}else{
while((SENSOR_1>THRESHOLD)||(SENSOR_3)>THRESHOLD){//交...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
go_forward;
Wait(10);
while((SENSOR_1>THRESHOLD)||(SENSOR_3)>THRESHOLD){//交...
go_forward;
}
ここでは一つの用紙中央にある交差点まで向かわせてから紙コ...
turn_right0;
Wait(75);
while((SENSOR_2>35)&&(SENSOR_2<47)){//紙コップを認識す...
go_forward;
}
go_forward;
Wait(25);
Off(OUT_AC);
cup_down;
紙コップ3を認識するまで前進し紙コップを被せる。一枚の用紙...
OnRev(OUT_AC);
Wait(110);
while((SENSOR_1>THRESHOLD)||(SENSOR_3)>THRESHOLD){//交...
OnRev(OUT_AC);
}
turn_right0;
Wait(75);
}
コップを被せた後は交差点まで後退して、ラインを認識後に右9...
while((SENSOR_2<47)&&(SENSOR_2>35)){//紙コップを認識す...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
}
/*開始直後の紙コップAを掴み振り向くまでの動きをインライ...
void start_dash(){
go_forward;
Wait(120);//スタート地点からでる為の動き
while((SENSOR_1>THRESHOLD)||(SENSOR_3)>THRESHOLD){//交...
go_forward;
}
turn_right0;
Wait(75);
while((SENSOR_2<47)&&(SENSOR_2>35)){//紙コップを認識す...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
go_forward;
Wait(100);//コップに接触するまで
Off(OUT_AC);
if(SENSOR_2>47){//白
number=1;
}else if((SENSOR_2<47)&&(SENSOR_2>37)){
number=2;
}else{
number=3;
}//センサーの値に応じてnumberに値を入れる
cup_up;
U_turn;
}
開始からライントレースを経て紙コップを掴む、色を読み取る...
task main(){
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);//それぞれセンサーを光...
set_power_L;//タイヤの速度を最低に
start_dash();//コップAを掴む
carry_cup();
go_forward;
Wait(50);//コップBに接触するまで
Off(OUT_AC);
if(SENSOR_2>47){
number=1;
}else if((SENSOR_2>35)&&(SENSOR_2<47)){
number=2;
}else{
number=3;
}//センサーの値に応じてnumberに値を入れる
cup_up;
U_turn;
ClearTimer(0);//タイマー設置
"carry_cup()"が紙コップAがあった場所を超えたところからの...
while(Timer(0)<40){
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
carry_cup();
go_forward;
Wait(50);//コップCに接触するまで
Off(OUT_AC);
if(SENSOR_2>47){
number=1;
}else if((SENSOR_2>35)&&(SENSOR_2<47)){
number=2;
}else{
number=3;
}//センサーの値に応じてnumberに値を入れる
cup_up;
U_turn;
ClearTimer(0);//タイマーを初期化
while(Timer(0)<20){
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP);
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP);
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP);
}else{
go_forward;
Wait(STEP);
}
}
carry_cup();
Off(OUT_AC);
}
*まとめ兼反省文 [#i9ea157e]
今見直してハッキリと分かることだが、全般に雑である。先ず...
-黒 35未満
-白 48以上
-青 40前後
と言ったところか。これを見る分には十分に識別できそうだが...
ページ名: