2018a/Member/yossi/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2018a/Member]]
#contents
*課題3 [#ob6e9718]
〜空き缶を分別して所定の場所に運べ〜
*ロボット [#rc5d097c]
1.下の缶を押さえる 2.上の缶を押さえる 3.上の缶を少し持...
という動作をさせ、課題を達成させようとした。そのため、ロ...
実際に完成したロボットの写真、主なパーツの説明は以下
#ref(./IMG_3713.JPG,60%,ロボットの写真 正面)
#ref(./IMG_3663.JPG,51%,ロボットの写真 真横)
**各パーツの説明 [#vb129a3d]
***?下の缶を押さえるパーツ [#cbc3e1cb]
?の正面にモーターを直接つけている。
~ 光センサーもこの部分と一体となっており、ライントレー...
また、地面に向かって伸びている黒い曲がったパーツは、...
***?移動パーツ [#g4637e62]
ほぼマニュアルに書いてあったものと同様。全体的に缶と...
***?真ん中の缶を押し倒すパーツ [#y935b307]
RCX本体同士を支える四本の支柱の間に差し込む形で設置し...
モーターは後ろ側についていて、直接押し出す部分のレー...
この時、出し過ぎたり、戻しすぎたりしないようにレール...
***?上の缶をつかむパーツ [#r9b2dba2]
レールを敷いて横倒しにしたモーターが動くようにしてい...
ブロックの裏と表が混じっているが、これはモーターが左...
***?缶を持ち上げるためのパーツ [#p2027413]
ほぼマニュアルにあったキャタピラと一緒だが、正立した...
***?おもり [#k0a9b601]
全体的に前によった重心を後ろに持っていくための部分。%...
*プログラム [#kf9848e4]
させたかった動作はロボットの説明上部に書いた通りであるが...
実際に使用したプログラムは以下
**下のRCX [#m084f8cd]
/*値定義*/
#define LOWPOWER 1
#define HIGHPOWER 6
#define BLACK 39 /*黒の閾値*/
#define WHITE 40 /*白の閾値*/
/*動作定義*/
#define turn_r OnFwd(OUT_A);OnRev(OUT_C);SetPower(OUT_AC...
#define turn_l OnFwd(OUT_C);OnRev(OUT_A);SetPower(OUT_AC...
#define go OnFwd(OUT_AC);SetPower(OUT_AC,LOWPOWER); ...
#define grip_sita Off(OUT_B);SetPower(OUT_B,LOWPOWER);On...
#define release Off(OUT_B);SetPower(OUT_B,LOWPOWER);OnRe...
#define stay Off(OUT_AC); ...
/*通信用定義*/
#define GRIP_UE 11 /*上の缶を掴ませる*/
#define STAY 12 /*静止させる*/
#define RELEASE 13 /*上の缶を放させる*/
#define GO_TRACE 14 /*トレース動作に戻る*/
#define PUSH 15 /*真ん中の缶を落とさせる*/
#define LIFT_DOWN 16 /*上の缶を下ろさせる*/
task main(){
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
ClearMessage();
int blackN = 0; /*T字路の判断に使用*/
while(blackN <= 1){
if(SENSOR_1 >= WHITE && SENSOR_3>= WHITE){ /*...
go;
}else if(SENSOR_3 <= BLACK && blackN == 0){ /*...
go;Wait(50); /*少し進んでから右折させ...
stay;Wait(50);
turn_r;
Wait(125);
blackN++; /*黒に入った回数をカウント*/
}else if(SENSOR_3 <= BLACK && blackN == 1){ /*...
stay;
blackN++;
}
stay;Wait(30); /*一時停止*/
}
grip_sita;Wait(60);Off(OUT_B); /*下の缶を掴む*/
SendMessage(GRIP_UE);Wait(800); /*上の缶を掴む...
while(Message() == GO_TRACE){ /*少し進んでからライン...
SendMessage(STAY);
stay;Wait(50);
OnFwd(OUT_AC);Wait(300);stay; /*直進させて2つ目の...
ClearMessage(); /*while文を抜ける*/
}
}
**上のRCX [#ofcf341a]
/*値定義*/
#define LOWPOWER 2
/*動作定義*/
#define grip_ue OnFwd(OUT_C);SetPower(OUT_C,LOWPOWER);Wa...
#define release OnRev(OUT_C);SetPower(OUT_C,LOWPOWER);Wa...
#define lift_up OnFwd(OUT_A);SetPower(OUT_A,LOWPOWER);Wa...
#define lift_down OnRev(OUT_A);SetPower(OUT_A,LOWPOWER);...
#define push OnFwd(OUT_B);SetPower(OUT_B,LOWPOWER);Wait(...
#define reload OnRev(OUT_B);SetPower(OUT_B,LOWPOWER);Wai...
#define stay Off(OUT_AC); /*静止*/ ...
/*通信用定義*/
#define GRIP_UE 11 /*上の缶を持ち上げる*/
#define STAY 12 /*静止する*/
#define RELEASE 13 /*上の缶を放す*/
#define GO_TRACE 14 /*トレース動作に戻させる*/
#define PUSH 15 /*真ん中の缶を落とす*/
#define LIFT_DOWN 16 /*上の缶を下ろす*/
task main(){
ClearMessage();
int CT1=0; /*缶タワー1に対する動作の区別に使用*/
while(CT1 == 0){
if(Message()==GRIP_UE){
grip_ue; /*上の缶を掴む*/
stay;Wait(50);
CT1++; /*缶タワー1に対する操作の...
}else{
stay;
}
}
lift_up; /*上の缶を持ち上げる*/
stay;Wait(50);
push; /*缶を押し倒す*/
Wait(50);
reload; /*落とすのに使った部分を戻す*/
stay;Wait(50);
lift_down; /*上の缶を下ろす*/
SendMessage(GO_TRACE); /*トレースを再開しても...
}
*反省点など [#f0d36bd8]
本番ではライントレースの時点で失敗してしまった。おそらく...
また、RCX本体の通信部分が、このロボットは空間図形的に垂直...
上の缶を持ち上げる部分も、つかむ部分も、コンベア型だと安...
終了行:
[[2018a/Member]]
#contents
*課題3 [#ob6e9718]
〜空き缶を分別して所定の場所に運べ〜
*ロボット [#rc5d097c]
1.下の缶を押さえる 2.上の缶を押さえる 3.上の缶を少し持...
という動作をさせ、課題を達成させようとした。そのため、ロ...
実際に完成したロボットの写真、主なパーツの説明は以下
#ref(./IMG_3713.JPG,60%,ロボットの写真 正面)
#ref(./IMG_3663.JPG,51%,ロボットの写真 真横)
**各パーツの説明 [#vb129a3d]
***?下の缶を押さえるパーツ [#cbc3e1cb]
?の正面にモーターを直接つけている。
~ 光センサーもこの部分と一体となっており、ライントレー...
また、地面に向かって伸びている黒い曲がったパーツは、...
***?移動パーツ [#g4637e62]
ほぼマニュアルに書いてあったものと同様。全体的に缶と...
***?真ん中の缶を押し倒すパーツ [#y935b307]
RCX本体同士を支える四本の支柱の間に差し込む形で設置し...
モーターは後ろ側についていて、直接押し出す部分のレー...
この時、出し過ぎたり、戻しすぎたりしないようにレール...
***?上の缶をつかむパーツ [#r9b2dba2]
レールを敷いて横倒しにしたモーターが動くようにしてい...
ブロックの裏と表が混じっているが、これはモーターが左...
***?缶を持ち上げるためのパーツ [#p2027413]
ほぼマニュアルにあったキャタピラと一緒だが、正立した...
***?おもり [#k0a9b601]
全体的に前によった重心を後ろに持っていくための部分。%...
*プログラム [#kf9848e4]
させたかった動作はロボットの説明上部に書いた通りであるが...
実際に使用したプログラムは以下
**下のRCX [#m084f8cd]
/*値定義*/
#define LOWPOWER 1
#define HIGHPOWER 6
#define BLACK 39 /*黒の閾値*/
#define WHITE 40 /*白の閾値*/
/*動作定義*/
#define turn_r OnFwd(OUT_A);OnRev(OUT_C);SetPower(OUT_AC...
#define turn_l OnFwd(OUT_C);OnRev(OUT_A);SetPower(OUT_AC...
#define go OnFwd(OUT_AC);SetPower(OUT_AC,LOWPOWER); ...
#define grip_sita Off(OUT_B);SetPower(OUT_B,LOWPOWER);On...
#define release Off(OUT_B);SetPower(OUT_B,LOWPOWER);OnRe...
#define stay Off(OUT_AC); ...
/*通信用定義*/
#define GRIP_UE 11 /*上の缶を掴ませる*/
#define STAY 12 /*静止させる*/
#define RELEASE 13 /*上の缶を放させる*/
#define GO_TRACE 14 /*トレース動作に戻る*/
#define PUSH 15 /*真ん中の缶を落とさせる*/
#define LIFT_DOWN 16 /*上の缶を下ろさせる*/
task main(){
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
ClearMessage();
int blackN = 0; /*T字路の判断に使用*/
while(blackN <= 1){
if(SENSOR_1 >= WHITE && SENSOR_3>= WHITE){ /*...
go;
}else if(SENSOR_3 <= BLACK && blackN == 0){ /*...
go;Wait(50); /*少し進んでから右折させ...
stay;Wait(50);
turn_r;
Wait(125);
blackN++; /*黒に入った回数をカウント*/
}else if(SENSOR_3 <= BLACK && blackN == 1){ /*...
stay;
blackN++;
}
stay;Wait(30); /*一時停止*/
}
grip_sita;Wait(60);Off(OUT_B); /*下の缶を掴む*/
SendMessage(GRIP_UE);Wait(800); /*上の缶を掴む...
while(Message() == GO_TRACE){ /*少し進んでからライン...
SendMessage(STAY);
stay;Wait(50);
OnFwd(OUT_AC);Wait(300);stay; /*直進させて2つ目の...
ClearMessage(); /*while文を抜ける*/
}
}
**上のRCX [#ofcf341a]
/*値定義*/
#define LOWPOWER 2
/*動作定義*/
#define grip_ue OnFwd(OUT_C);SetPower(OUT_C,LOWPOWER);Wa...
#define release OnRev(OUT_C);SetPower(OUT_C,LOWPOWER);Wa...
#define lift_up OnFwd(OUT_A);SetPower(OUT_A,LOWPOWER);Wa...
#define lift_down OnRev(OUT_A);SetPower(OUT_A,LOWPOWER);...
#define push OnFwd(OUT_B);SetPower(OUT_B,LOWPOWER);Wait(...
#define reload OnRev(OUT_B);SetPower(OUT_B,LOWPOWER);Wai...
#define stay Off(OUT_AC); /*静止*/ ...
/*通信用定義*/
#define GRIP_UE 11 /*上の缶を持ち上げる*/
#define STAY 12 /*静止する*/
#define RELEASE 13 /*上の缶を放す*/
#define GO_TRACE 14 /*トレース動作に戻させる*/
#define PUSH 15 /*真ん中の缶を落とす*/
#define LIFT_DOWN 16 /*上の缶を下ろす*/
task main(){
ClearMessage();
int CT1=0; /*缶タワー1に対する動作の区別に使用*/
while(CT1 == 0){
if(Message()==GRIP_UE){
grip_ue; /*上の缶を掴む*/
stay;Wait(50);
CT1++; /*缶タワー1に対する操作の...
}else{
stay;
}
}
lift_up; /*上の缶を持ち上げる*/
stay;Wait(50);
push; /*缶を押し倒す*/
Wait(50);
reload; /*落とすのに使った部分を戻す*/
stay;Wait(50);
lift_down; /*上の缶を下ろす*/
SendMessage(GO_TRACE); /*トレースを再開しても...
}
*反省点など [#f0d36bd8]
本番ではライントレースの時点で失敗してしまった。おそらく...
また、RCX本体の通信部分が、このロボットは空間図形的に垂直...
上の缶を持ち上げる部分も、つかむ部分も、コンベア型だと安...
ページ名: