2015a/Member/sagasa/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2015a/Member]]
#contents
*課題の説明 [#m418f4ac]
**コース [#m976740f]
#ref(./course1.png)
黒線の幅は20mmでなるべく均等な濃さにすること。ゴールは1x1...
*ロボット本体の説明 [#fe1716d1]
**全体図 [#r4dee8da]
#ref(./honntai4.png)
アームはピンポン玉をしっかりと掴めるように二重にしてそれ...
シュートは、一度アームを開いてからロボット本体がぶつかる...
またアーム全体を上と下で固定してある。
**アーム [#dfaec952]
#ref(./arm4.png)
写真の赤線で囲まれた部分がかなめであり、モーターが回転す...
**タイヤ部分 [#p9c61ff8]
基本の物をベースに真ん中のビームでできている部分をなくし...
**光センサー [#v3946372]
光センサーはなるべくタイヤに近い位置に固定した。
センサー1を使っている。
#ref(./sensor1.png)
***部品 [#if002973]
モーター ビームにさかさまに付いている。
光センサー L字ブロックと組み合わせて入れている。
ビーム 本体上部と走行する下部をつなぐようにL字の形に...
**本体 [#mfbcf3e3]
基本の物の中央部分を外してよりコンパクトに、使いやすいよ...
アームとの兼ね合いから、大きい方のタイヤを前にした。
**問題点 [#o1055129]
アームはモーターの開展により取れやすく、また光センサーと...
*プログラムの説明 [#qcd64785]
ではこれからプログラムの説明に入る。
**コース説明 [#y8e10aa9]
#ref(./course3.png)
上の図からも分かる通り、今回、ロボットを走らせるコースは...
**プログラムの解説 [#j69a10a9]
***定義 [#w0dc38f3]
まずプログラムで定義した物を挙げていく。
#define THRESHOLD 47 /*しきい値の設定*/
#define LOWPOWER 3 /*パワーの値*/
#define set_power_l SetPower(OUT_AC,LOWPOWER); /*パワー...
#define straight set_power_l; OnFwd(OUT_AC); /*前進*/
#define back set_power_l; OnRev(OUT_AC); Wait(60); /*後...
#define LEFT set_power_l; OnFwd(OUT_C); Off(OUT_A); /*...
#define RIGHT set_power_l; OnFwd(OUT_A); Off(OUT_C); /*...
#define LEFT_L set_power_l; OnFwd(OUT_C); OnRev(OUT_A);...
#define RIGHT_L set_power_l; OnFwd(OUT_A); OnRev(OUT_C)...
#define STOP1 Off(OUT_AC); Wait(200); /*2秒間停止*/
#define STOP2 Off(OUT_AC); Wait(20); /*0.2秒間停止*/
#define STEP 1 /*判断に要する時間*/
#define arm_on OnRev(OUT_B); Wait(11); Off(OUT_B); /*ア...
#define arm_close OnFwd(OUT_B); Wait(8); Off(OUT_B); /*...
#define music PlayTone(523,25); /*ドの音を出す*/
#define MOVE_TIME 30 /*この間に動く*/
#define judge_time 33 /*交差点または三叉路であるか判断...
***サブルーチン [#u98024da]
通常のライントレース
sub line1(){
if(SENSOR_1 <= THRESHOLD-10) {
LEFT; /*光センサーが...
}else{
if (SENSOR_1 <= THRESHOLD-12) {
straight;
}else{
RIGHT;
} ClearTimer(0);
} /*光センサーが35以下の値を示した時は直進、...
}
急カーブに使用するライントレース
sub line2(){
if(SENSOR_1 <= THRESHOLD-10) {
LEFT_L; /*光センサーが...
}else{
if (SENSOR_1 <=THRESHOLD-12) {
straight;} /*光センサーが...
}else if (SENSOR_1<= THRESHOLD-3){
RIGHT_L;} /*光センサーが...
}else{
RIGHT; } /*上記以外の状況...
}
}
三叉路、交差点を通過する時
sub cross()
{
STOP1; /* 二秒間停止する*/
RIGHT_L; Wait(30); /*ロボットの向きを調整するため...
music; /*交差点、三叉路についたことを示すために鳴...
straight; Wait(MOVE_TIME); /* 交差点、三叉路を横断...
}
今回の課題では、交差点や三叉路を判断し二秒間停止する必要...
サブルーチンのline1は、タイマー0が設定してある時、光セン...
しかし、急カーブに差し掛かると交差点の判断をしてしまう他...
line2は曲がる際は旋回を使うことで急カーブを曲がり切り、設...
また、三叉路や交差点を通過するときに、どうしてもまっすぐ...
ボールは急カーブの位置に置くことでline1を使用して判断する。
**メインタスク [#oe0770ce]
?〜?
task main()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
ClearTimer(0);
while( FastTimer(0) <= judge_time) {
line1(); Wait(STEP); /*交差点に差し掛かるま...
}cross();
ClearTimer(0);
?〜?
while( FastTimer(0) <= judge_time) {
line1(); Wait(STEP);
}STOP2; arm_close; /*ボールのあるところ...
?〜?
while( FastTimer(0) <= judge_time) {
line1(); Wait(STEP); /*急カーブに差し掛か...
}ClearTimer(0); /*タイマー0をリセットする。*/
?〜?
while( Timer(0) <= 200) {
line2(); Wait(STEP); /*タイマーで200の値ま...
}ClearTimer(0); /*タイマー0をリセットする*/
while( FastTimer(0) <= judge_time){
line1();
}cross(); /*交差点の位置まで通常のライントレー...
ClearTimer(1); ClearTimer(0); /*タイマー0とタイマー...
?〜?
while( Timer(1) <= 180){
line2(); Wait(STEP); /*直角カーブの部分を渡る...
}
?〜?
while(FastTimer(0) <= judge_time){
line1(); Wait(STEP); /*シュートするB地...
}STOP2; /*B地点に来たら停止する。*/
arm_on; music;back; straight; Wait(80); STOP2;/*シュ...
}
*全体の反省点 [#jfa94a7a]
一 ?〜?の間で、誤作動で先に動いてしまうためにTimer(0)だ...
二 また急カーブを曲がり切れずに何回か、やり直さなければ...
三 旋回ではどうしても時間指定でなければなれず、時間を測...
*感想 [#u6afa3e8]
今回の課題も初めはできるか不安であったが、何とかやり終え...
終了行:
[[2015a/Member]]
#contents
*課題の説明 [#m418f4ac]
**コース [#m976740f]
#ref(./course1.png)
黒線の幅は20mmでなるべく均等な濃さにすること。ゴールは1x1...
*ロボット本体の説明 [#fe1716d1]
**全体図 [#r4dee8da]
#ref(./honntai4.png)
アームはピンポン玉をしっかりと掴めるように二重にしてそれ...
シュートは、一度アームを開いてからロボット本体がぶつかる...
またアーム全体を上と下で固定してある。
**アーム [#dfaec952]
#ref(./arm4.png)
写真の赤線で囲まれた部分がかなめであり、モーターが回転す...
**タイヤ部分 [#p9c61ff8]
基本の物をベースに真ん中のビームでできている部分をなくし...
**光センサー [#v3946372]
光センサーはなるべくタイヤに近い位置に固定した。
センサー1を使っている。
#ref(./sensor1.png)
***部品 [#if002973]
モーター ビームにさかさまに付いている。
光センサー L字ブロックと組み合わせて入れている。
ビーム 本体上部と走行する下部をつなぐようにL字の形に...
**本体 [#mfbcf3e3]
基本の物の中央部分を外してよりコンパクトに、使いやすいよ...
アームとの兼ね合いから、大きい方のタイヤを前にした。
**問題点 [#o1055129]
アームはモーターの開展により取れやすく、また光センサーと...
*プログラムの説明 [#qcd64785]
ではこれからプログラムの説明に入る。
**コース説明 [#y8e10aa9]
#ref(./course3.png)
上の図からも分かる通り、今回、ロボットを走らせるコースは...
**プログラムの解説 [#j69a10a9]
***定義 [#w0dc38f3]
まずプログラムで定義した物を挙げていく。
#define THRESHOLD 47 /*しきい値の設定*/
#define LOWPOWER 3 /*パワーの値*/
#define set_power_l SetPower(OUT_AC,LOWPOWER); /*パワー...
#define straight set_power_l; OnFwd(OUT_AC); /*前進*/
#define back set_power_l; OnRev(OUT_AC); Wait(60); /*後...
#define LEFT set_power_l; OnFwd(OUT_C); Off(OUT_A); /*...
#define RIGHT set_power_l; OnFwd(OUT_A); Off(OUT_C); /*...
#define LEFT_L set_power_l; OnFwd(OUT_C); OnRev(OUT_A);...
#define RIGHT_L set_power_l; OnFwd(OUT_A); OnRev(OUT_C)...
#define STOP1 Off(OUT_AC); Wait(200); /*2秒間停止*/
#define STOP2 Off(OUT_AC); Wait(20); /*0.2秒間停止*/
#define STEP 1 /*判断に要する時間*/
#define arm_on OnRev(OUT_B); Wait(11); Off(OUT_B); /*ア...
#define arm_close OnFwd(OUT_B); Wait(8); Off(OUT_B); /*...
#define music PlayTone(523,25); /*ドの音を出す*/
#define MOVE_TIME 30 /*この間に動く*/
#define judge_time 33 /*交差点または三叉路であるか判断...
***サブルーチン [#u98024da]
通常のライントレース
sub line1(){
if(SENSOR_1 <= THRESHOLD-10) {
LEFT; /*光センサーが...
}else{
if (SENSOR_1 <= THRESHOLD-12) {
straight;
}else{
RIGHT;
} ClearTimer(0);
} /*光センサーが35以下の値を示した時は直進、...
}
急カーブに使用するライントレース
sub line2(){
if(SENSOR_1 <= THRESHOLD-10) {
LEFT_L; /*光センサーが...
}else{
if (SENSOR_1 <=THRESHOLD-12) {
straight;} /*光センサーが...
}else if (SENSOR_1<= THRESHOLD-3){
RIGHT_L;} /*光センサーが...
}else{
RIGHT; } /*上記以外の状況...
}
}
三叉路、交差点を通過する時
sub cross()
{
STOP1; /* 二秒間停止する*/
RIGHT_L; Wait(30); /*ロボットの向きを調整するため...
music; /*交差点、三叉路についたことを示すために鳴...
straight; Wait(MOVE_TIME); /* 交差点、三叉路を横断...
}
今回の課題では、交差点や三叉路を判断し二秒間停止する必要...
サブルーチンのline1は、タイマー0が設定してある時、光セン...
しかし、急カーブに差し掛かると交差点の判断をしてしまう他...
line2は曲がる際は旋回を使うことで急カーブを曲がり切り、設...
また、三叉路や交差点を通過するときに、どうしてもまっすぐ...
ボールは急カーブの位置に置くことでline1を使用して判断する。
**メインタスク [#oe0770ce]
?〜?
task main()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
ClearTimer(0);
while( FastTimer(0) <= judge_time) {
line1(); Wait(STEP); /*交差点に差し掛かるま...
}cross();
ClearTimer(0);
?〜?
while( FastTimer(0) <= judge_time) {
line1(); Wait(STEP);
}STOP2; arm_close; /*ボールのあるところ...
?〜?
while( FastTimer(0) <= judge_time) {
line1(); Wait(STEP); /*急カーブに差し掛か...
}ClearTimer(0); /*タイマー0をリセットする。*/
?〜?
while( Timer(0) <= 200) {
line2(); Wait(STEP); /*タイマーで200の値ま...
}ClearTimer(0); /*タイマー0をリセットする*/
while( FastTimer(0) <= judge_time){
line1();
}cross(); /*交差点の位置まで通常のライントレー...
ClearTimer(1); ClearTimer(0); /*タイマー0とタイマー...
?〜?
while( Timer(1) <= 180){
line2(); Wait(STEP); /*直角カーブの部分を渡る...
}
?〜?
while(FastTimer(0) <= judge_time){
line1(); Wait(STEP); /*シュートするB地...
}STOP2; /*B地点に来たら停止する。*/
arm_on; music;back; straight; Wait(80); STOP2;/*シュ...
}
*全体の反省点 [#jfa94a7a]
一 ?〜?の間で、誤作動で先に動いてしまうためにTimer(0)だ...
二 また急カーブを曲がり切れずに何回か、やり直さなければ...
三 旋回ではどうしても時間指定でなければなれず、時間を測...
*感想 [#u6afa3e8]
今回の課題も初めはできるか不安であったが、何とかやり終え...
ページ名: