- 追加された行はこの色です。
- 削除された行はこの色です。
[[2011a]]
目次
#contents
*今回の課題 [#b4ba7f13]
画用紙の上に置かれているテニスボールをランタンの元へ送る(手段は問わない)
*MEMBER [#ffff6220]
-ばるす!
-
-TOKIO
*ROBOTTO [#sfccc0c9]
-お名前
デリケート
デリケートなやつなんです
-特徴
角!(張りぼて)
デリケートさ(おそらく全ロボット中TOP)
センサー類が一箇所に集まっている(まともな特徴ねえなあ…)
・ ボールを打ち出す機能としてはブロックで作った壁(太い棒?)で押しだすことにした。しかし、タッチセンサーや、ランタンを探すための光センサーの邪魔をしないような構造になっている。
・ ボールがタッチセンサーにしっかりと当たるように、ボールをセンサーへ誘導するためのサイドアームも、ボールを打ち出したときに連動するようになっている。
・ 3つのそれぞれのセンサーを一か所にかためることにより、コンパクトなデザインのロボットに仕上がった。これにより、小回りのきくロボットになった。ただ、センサー部分がとても脆いことが最後まで課題だった(よほどの衝撃がなければ大丈夫)。
-見た目
写真
*PROGRAMs [#o56ec15f]
-ばるす!
SetSensor(SENSOR_1,SENSOR_LIGHT); // ライントレースのセンサー
SetSensor(SENSOR_2,SENSOR_TOUCH); // タッチセンサー
SetSensor(SENSOR_3,SENSOR_LIGHT); // ランタンを探すセンサー
#define THRESHOLD 50 // 閾値
#define go OnFwd(OUT_A+OUT_C); //前進
#define right OnFwd(OUT_A);Off(OUT_C); //右折
#define left OnFwd(OUT_C);Off(OUT_A); //左折
#define STOP Off (OUT_A+OUT_C); //止まる
#define throught OnFwd(OUT_B);Wait(100);Off(OUT_B); //ボール投げる
int T = 350 ;
int lmax = 0 ;
int tmax = 0 ;
task light() //光の最大値を計るタスク
{
ClearTimer(0);
while(FastTimer(0)<T)
{
right;
if( Sensor_1 > lmax )
{ lmax=Sensor_1;tmax = FastTimer(0) ; }
STOP;
left;Wait(T - tmax );
}
}
task sub() //ボールを投げるタスク
{
STOP;
start light; //ライトのタスクを起動
throught;
left;
Wait(tmax);
}
task main() //ラインをトレースするタスク
{
go;
until(SENSOR_1<50){right;}
until(SENSOR_1>50){left;}
if(SENSOR_1> == 1);
start sub; //サブのタスクを起動
}
プログラムはこの上なくシンプルになったがシンプルすぎて複雑なコースに適応できてない気がする…が、一応一度だけ成功したからこのままで完成とする。せめてライントレース用にもう一つ光センサーがあればなぁ…
-TOKIO
*まとめ [#f70c7851]
- あとはまかせた! -- [[ばるす!]] &new{2011-07-09 (土) 10:45:40};
- ごめん、特徴のとこ書き換えたw -- [[TOKIO]]
#comment