- 追加された行はこの色です。
- 削除された行はこの色です。
[[2006a/A4]]
[[2006a/A4]]~
#contents
*その1:スタートまで空き缶を持っていくロボット [#na8327ff]
#ref(Anomalocaris10a.jpg,nolink);
↑仮の画像かもしれません。
--&size(30){名前:[[アノマロカリス>2006a/A4/ロボコン前の班]]};
**プログラム [#w8afb93a]
#define SR SENSOR_1
#define SC SENSOR_2
#define SL SENSOR_3
#define MR OUT_A
#define MC OUT_B
#define ML OUT_C
#define armdown 260
#define bd 37
#define L 3
#define C 2
#define R 1
#define turn90 81
#define turn180 184
int armposi=0;
void arminit(){
until(SL>=80){
OnRev(MC);
}
Off(MC);
until(SL<80){
OnFwd(MC);
}
Wait(16);
Off(MC);
armposi=0;
}
void S_P(int x , int y){
switch(x){
case 1:
SetPower(ML,y);
break;
case 2:
SetPower(MC,y);
break;
case 3:
SetPower(MR,y);
break;
default:
break;
}
}
task main(){
SetSensor(SL,SENSOR_LIGHT);
SetSensor(SC,SENSOR_TOUCH);
SetSensor(SR,SENSOR_LIGHT);
S_P(L,10);
S_P(C,10);
S_P(R,10);
int direc=1 , Xlinenum=0 ;
int OSL=SL , OSC=SC , OSR=SR ;
int NSL=SL , NSC=SC , NSR=SR;
int kannum=0;
arminit();
while(true){
OSL=NSL;OSR=NSR;OSC=NSC;
NSL=SL; NSR=SR; NSC=SC;
if(NSL<bd && NSR>=bd){
Off(ML);
S_P(L,4);
S_P(R,10);
}
if(NSR<bd && NSL>=bd){
Off(MR);
S_P(R,4);
S_P(L,10);
}
if(NSR>=bd && NSL>=bd){
S_P(R,10); S_P(L,10);
}
OnFwd(MR + ML);
if(NSL<bd && NSR<bd){
S_P(R,10); S_P(L,10);
if(OSL>=bd || OSR>=bd){
Xlinenum=Xlinenum+1;
OSL=NSL;OSR=NSR;
}
if(Xlinenum==2 || Xlinenum==4 ||(Xlinenum==3 && kannum>=1)){
OnFwd(ML + MR);
Wait(86);
if(direc==1 && Xlinenum!=3){
Off(MR +ML );
OnFwd(ML); OnRev(MR);
Wait(turn90);
}
if(direc==-1){
Off(MR +ML );
OnFwd(MR); OnRev(ML);
Wait(turn90);
if(Xlinenum==3 && kannum>=1){
Xlinenum=Xlinenum+1;
}
}
until( SR <bd || SL <bd){
if(direc==1){
OnFwd(ML); OnRev(MR);
}
if(direc==-1){
OnFwd(MR); OnRev(ML);
}
}
Off(MR + ML);
}
if(Xlinenum==5){
S_P(R,10);
S_P(L,10);
Off(MR + ML);
if(direc==1){
OnRev(MR + ML);
Wait(17);
OnRev(ML);
OnFwd(MR);
Wait(turn90);
OnRev(MR + ML);
if(kannum==0){
Wait();
}
if(kannum>=1){
Wait(100);
}
Off(MR + ML);
OnFwd(MR);
OnRev(ML);
Wait(turn90);
}
if(direc==-1){
OnRev(ML);
OnFwd(MR);
Wait(turn180);
}
Off(ML + MR);
ClearTimer(0);
while(direc==1){
if(armposi==0){
if(FastTimer(0)>200){
Off(MR + ML);
OnFwd(MR + ML);
Wait(7);
Off(MR + ML);
OnRev(MR);
Wait(7);
Off(MR + ML);
OnRev(ML);
Wait(10);
Off(MR + ML);
OnRev(MR + ML);
Wait(15);
}
OnRev(MR + ML);
if(SC==1){
Off(MR + ML);
OnFwd(MC);
Wait(armdown);
Off(MC);
armposi=1;
direc=-1;
Xlinenum=1;
Off(MR + ML);
}
}
}
while(direc==-1 && Xlinenum==5){
S_P(R,10); S_P(L,10);
OnRev(ML + MR);
Wait(200);
Off(MR + ML);
Wait(40);
arminit();
OnFwd(MR + ML);
Wait(77);
Off(MR + ML);
OnFwd(MC); Wait(armdown); Off(MC);
OnRev(MR + ML); Wait(140); Off(MR + ML);
ClearTimer(0);
while(FastTimer(0)<400){
SendMessage(1);
PlaySound(SOUND_CLICK) ;
}
arminit();
OnFwd(MR + ML);
Wait(40);
direc=1;
Xlinenum=1;
kannum=kannum+1;
Off(MR + ML);
}
}
}
}
}
--製作:前列の人々
*その2:受け取った空き缶をゴールに運ぶロボット [#f4a60561]
***名前 未定 (募集中) [#o763b392]
*(名前)の制作 [#na34f65e]
(名前)本体の制作者:NRLP、はる、土佐犬、なおき
(名前)のプログラム制作者:NRLP
#ref(Anomalocaris05e.jpg,nolink);
名前:アノマロカリス ver.0.5(仮)
&size(20){''本体の制作者'':[[はる>2006a/A4/ハルの部屋]]、[[土佐犬>2006a/A4/土佐犬の部屋]]、[[なおき>2006a/A4/なおきのページ]]、[[たろう>2006a/A4/たろうのページ]]};~
&size(20){''プログラム制作者'':[[NRLP>2006a/A4/NRLPの研究室]]};
**製作過程 [#r44536d6]
+とりあえずA4班が二手に分かれて製作を開始する。
+こちらはゴール担当となり、如何にしてゴールを目指すか考える。
+パワー重視で走行はキャタピラとしてキャタピラを組む。
+キャタピラのみで走らせてみるが、動きがあまりに歪なため、急遽タイヤに変更、ギヤ比を間違えて爆走したりといったハプニングはあったもののうまく走るようになる。
+うまく摑んで運べるようなアームを必死で作る。
+ハード製作と同時進行で大体の走行プログラムを組む。
+とりあえず運べるようにはなり、ここで微調整を繰り返す。
+相方のロボと組んで本番のテストを繰り返す。
+完成!
#ref(Anomalocaris05f.jpg,nolink);
#ref(Anomalocaris05g.jpg,nolink);
***盲目のプログラム [#p63f6875]
プログラムをここらへんにでもよろしく!
**苦労した点 [#y655d84f]
-マシンの前後の重心のバランスをとること。
-缶をゴールに入れる時になかなか缶が木を超えなかった。
-入れた後の誤差修正
-
-部品不足。
**工夫した点 [#rd2bf6f3]
*感想 [#zefab816]
部品不足に悩まされた。
**反省 [#a3585139]
反省はいっぱいです。
***苦労した点 [#y655d84f]
-アームの構造が複雑で、組み立てが大変だったこと(構造案のメインはたろう様)
-機体同士の赤外線センサのやり取りがなかなか反応しなかったこと。
-マシンの前後の重心のバランスをとること(ウェイトととしてライトセンサを設置)
-手動での細かい誤差修正のため、コースでの練習が何度も何度も必要だったこと(頑張った!)
-缶が木の棒を越えて、なかなかゴールに押し入らずに苦労した(後に飛び出たパーツが缶を遮っていた事が分かり、そのパーツを変更して出っ張りを無くすことで解決)
-明らかなる部品不足は痛すぎる…(代用品を探すのにまた一苦労)
***工夫した点 [#rd2bf6f3]
-すべての行動パターンを細かく入力したこと。
-誤差修正のプログラムを入れていないため、できるだけ誤差の出ない様な機構にしたこと。その点を以下に示す。
--最初はキャタピラを作ったが、方向転換を良くしてその際の誤差を少なくするためにタイヤに変更した。
--前進の際、重心が高すぎたため前後にガックンガックンするのを防ぐため、機体の後ろ部分にウェイトを設置した(因みにそのウェイトとは、先ほども言ったが光センサのことである)
--缶をゴールさせた後、真っ直ぐに後進できるよう方向修正を無理やりできるようにした(ゴールに無理やり突っ込んで下部の平行なパーツにより真っ直ぐに方向転換する)
-ライトセンサ式にはできない黒線を無視した小回りな動きを利用し、移動時間を短縮させたこと。
-缶をうまくゴールに入れられるように、強く押し出すと缶の下が持ち上がる様なパーツを取り付けたこと。
***感想 [#zefab816]
部品不足に疲れました。~
微調整何度も何度もやるのにも疲れました。~
1日でも早めに始めたのは良いことでした。~
↓この添付ファイルの写真使ってくださいなー(随時追加予定)
ファイル名の一部が10と05で機体別になっています。