2016a/Member/kobayan219/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2016a/Member]]
*課題3 [#d20fff3c]
~&ref(./index1.jpeg.png);
~ 課題2で用いたコースを使い、プログラミングロボットにC...
*機体概要 [#o380a3c8]
**全体像 [#ke15e03c]
~&ref(./index7.jpeg.jpg,50%,aaa);
~ クワガタのようなアームをしている。アーム前方にゴムタイ...
~&ref(./index5.jpeg.jpg,50%,aaa);
~ 上図のように機体はアーム、電源、車体の3つに分かれてい...
**アームのシステム [#n53cf8f4]
~&ref(./index9.jpeg.jpg,50%,aaa);
~ 左から大、小、中サイズの3つの歯車があり、動力のはたら...
**センサーについて [#hb03d08a]
~?ライントレース用の光センサー
~?コップが一定の高さに持ち上がって次の動作をするタッチセ...
~?前に紙コップがあると認識する光センサー
~の3つを考えていたが、本番で紙コップ1個運ぶという方針に...
*プログラム概要 [#o6b63913]
**実際に使用 [#a89898c4]
~●ライントレースの中央値
#define Middle 45
~●センサー、パワーの初期設定
sub setting();
{
SetSensor(SENSOR_1,SENSOR_LIGHT); //ライントレース用
SetSensor(SENSOR_2,SENSOR_TOUCH); //モータBの停止用
SetSensor(SENSOR_3,SENSOR_LIGHT); //紙コップ確認用
SetPower(OUT_AC,4); //タイヤ用
SetPower(OUT_B,7); //アームの上下、開閉用
}
~●スタートのA地点の四角枠から脱出する動作
sub STARTING_OPERATION()
{
while(SENSOR_1<Middle)
{
OnRev(OUT_AC);
}
while(SENSOR_1>Middle)
{
OnRev(OUT_AC);
}
OnRev(OUT_AC);
Wait(50);
Off(OUT_C);
OnRev(OUT_A);
Wait(40);
while(SENSOR_1<Middle)
{
OnRev(OUT_AC);
}
Off(OUT_AC);
}
~●回転動作
~(※180°回転して、次に黒線を認識したら停止する)
~(※ロボットの長さを考えて、光センサーが回転の前後で同じ...
sub TURN_180();
{
OnFwd(OUT_AC);
Wait(80);
Off(OUT_AC);
OnRev(OUT_A);
Wait(130);
while(SENSOR_1>40)
{
OnFwd(OUT_C);
OnRev(OUT_A);
}
Off(OUT_AC);
}
~●アームを下げる動作
sub down();
{
OnRev(OUT_B);
Wait(200);
}
**未使用 [#fbae4797]
~●紙コップの認識
(※コップの前に来るまで前進)
sub copjugde()
{
while(SENSOR_3 < 46)
OnRev(OUT_AC);
Off(OUT_AC);
Wait(100);
}
~●紙コップの保持
~(※上に持ち上げてキープする。ライントレースと並行動作す...
task keep()
{
while(1)
{
OnRev(OUT_B);
Wait(1);
OnFwd(OUT_B);
Wait(1);
}
}
*実際の動作 [#r7e08f93]
(※紙コップ1つだけを運ぶプログラム)
(※それぞれの動作をプログラム順に説明する。)
task main()
{
?交差点からD地点へ向かう
setting();
STARTING_OPERATION();
repeat(2)
{
TRACE();
zensin();
}
?誤差修正
TRACE();
OnRev(OUT_C);
Wait(25);
TRACE();
?D地点に到着
OnRev(OUT_A);
Wait(95);
Off(OUT_AC);
?コップつかむ
OnFwd(OUT_B);
Wait(250);
start keep;
?180°回転
TURN_180();
?Qの方向を向く
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(200);
Off(OUT_AC);
?進む
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
?センサー使って進む
while(SENSOR_1 > Middle-4)
OnRev(OUT_AC);
stop keep;
?放す
Off(OUT_AC);
down();
}
sub setting()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);//ライントレース用
SetSensor(SENSOR_2,SENSOR_TOUCH);//モータB止める用
SetSensor(SENSOR_3,SENSOR_LIGHT);//紙コップを確認する用
SetPower(OUT_AC,4);//タイヤ
SetPower(OUT_B,7);//アームの上下、開き
}
sub zensin()
{
OnRev(OUT_A);
Wait(106);
Off(OUT_A);
}
?※未使用
sub copjugde()
{
while(SENSOR_3 < 46)
OnRev(OUT_AC);
Off(OUT_AC);
Wait(100);
}
?紙コップの保持
task keep()
{
while(1)
{
OnRev(OUT_B);
Wait(1);
OnFwd(OUT_B);
Wait(1);
}
?ライントレース用メソッド
sub TRACE()
{
ClearTimer(0);
while(FastTimer(0)<=42){
if(SENSOR_1>Middle+4)//白 左旋回
{
OnFwd(OUT_C);
OnRev(OUT_A);
ClearTimer(0);
}
else if(SENSOR_1>Middle+2)//やや白 左折
{
Off(OUT_C);
OnRev(OUT_A);
ClearTimer(0);
}
else if(SENSOR_1>Middle)//直進
{
OnRev(OUT_AC);
ClearTimer(0);
}
else if(SENSOR_1>Middle-2)//やや黒 右折
{
Off(OUT_A);
OnRev(OUT_C);
}
else //黒 右旋回
{
OnFwd(OUT_A);
OnRev(OUT_C);
}
}
?トレース終了、交差点認識
Off(OUT_AC);
PlaySound(SOUND_FAST_UP);
}
sub down()
{
OnRev(OUT_B);
Wait(200);
}
sub STARTING_OPERATION()
{
while(SENSOR_1<Middle)
{
OnRev(OUT_AC);
}
while(SENSOR_1>Middle)
{
OnRev(OUT_AC);
}
OnRev(OUT_AC);
Wait(50);
Off(OUT_C);
OnRev(OUT_A);
Wait(40);
while(SENSOR_1<Middle)
{
OnRev(OUT_AC);
}
Off(OUT_AC);
}
sub TURN_180()
{
OnFwd(OUT_AC);
Wait(80);
Off(OUT_AC);
OnRev(OUT_A);
Wait(130);
while(SENSOR_1>40)
{
OnFwd(OUT_C);
OnRev(OUT_A);
}
Off(OUT_AC);
}
*今回の課題の反省点と感想 [#d57c808d]
~2つの班を組み合わせて計6人で作業をし、結構はかどりやすい...
*ゼミ全体をふまえての感想 [#ae3da6ac]
~初めはシンプルなプログラムでロボットを動かして顔を描き、...
終了行:
[[2016a/Member]]
*課題3 [#d20fff3c]
~&ref(./index1.jpeg.png);
~ 課題2で用いたコースを使い、プログラミングロボットにC...
*機体概要 [#o380a3c8]
**全体像 [#ke15e03c]
~&ref(./index7.jpeg.jpg,50%,aaa);
~ クワガタのようなアームをしている。アーム前方にゴムタイ...
~&ref(./index5.jpeg.jpg,50%,aaa);
~ 上図のように機体はアーム、電源、車体の3つに分かれてい...
**アームのシステム [#n53cf8f4]
~&ref(./index9.jpeg.jpg,50%,aaa);
~ 左から大、小、中サイズの3つの歯車があり、動力のはたら...
**センサーについて [#hb03d08a]
~?ライントレース用の光センサー
~?コップが一定の高さに持ち上がって次の動作をするタッチセ...
~?前に紙コップがあると認識する光センサー
~の3つを考えていたが、本番で紙コップ1個運ぶという方針に...
*プログラム概要 [#o6b63913]
**実際に使用 [#a89898c4]
~●ライントレースの中央値
#define Middle 45
~●センサー、パワーの初期設定
sub setting();
{
SetSensor(SENSOR_1,SENSOR_LIGHT); //ライントレース用
SetSensor(SENSOR_2,SENSOR_TOUCH); //モータBの停止用
SetSensor(SENSOR_3,SENSOR_LIGHT); //紙コップ確認用
SetPower(OUT_AC,4); //タイヤ用
SetPower(OUT_B,7); //アームの上下、開閉用
}
~●スタートのA地点の四角枠から脱出する動作
sub STARTING_OPERATION()
{
while(SENSOR_1<Middle)
{
OnRev(OUT_AC);
}
while(SENSOR_1>Middle)
{
OnRev(OUT_AC);
}
OnRev(OUT_AC);
Wait(50);
Off(OUT_C);
OnRev(OUT_A);
Wait(40);
while(SENSOR_1<Middle)
{
OnRev(OUT_AC);
}
Off(OUT_AC);
}
~●回転動作
~(※180°回転して、次に黒線を認識したら停止する)
~(※ロボットの長さを考えて、光センサーが回転の前後で同じ...
sub TURN_180();
{
OnFwd(OUT_AC);
Wait(80);
Off(OUT_AC);
OnRev(OUT_A);
Wait(130);
while(SENSOR_1>40)
{
OnFwd(OUT_C);
OnRev(OUT_A);
}
Off(OUT_AC);
}
~●アームを下げる動作
sub down();
{
OnRev(OUT_B);
Wait(200);
}
**未使用 [#fbae4797]
~●紙コップの認識
(※コップの前に来るまで前進)
sub copjugde()
{
while(SENSOR_3 < 46)
OnRev(OUT_AC);
Off(OUT_AC);
Wait(100);
}
~●紙コップの保持
~(※上に持ち上げてキープする。ライントレースと並行動作す...
task keep()
{
while(1)
{
OnRev(OUT_B);
Wait(1);
OnFwd(OUT_B);
Wait(1);
}
}
*実際の動作 [#r7e08f93]
(※紙コップ1つだけを運ぶプログラム)
(※それぞれの動作をプログラム順に説明する。)
task main()
{
?交差点からD地点へ向かう
setting();
STARTING_OPERATION();
repeat(2)
{
TRACE();
zensin();
}
?誤差修正
TRACE();
OnRev(OUT_C);
Wait(25);
TRACE();
?D地点に到着
OnRev(OUT_A);
Wait(95);
Off(OUT_AC);
?コップつかむ
OnFwd(OUT_B);
Wait(250);
start keep;
?180°回転
TURN_180();
?Qの方向を向く
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(200);
Off(OUT_AC);
?進む
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
?センサー使って進む
while(SENSOR_1 > Middle-4)
OnRev(OUT_AC);
stop keep;
?放す
Off(OUT_AC);
down();
}
sub setting()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);//ライントレース用
SetSensor(SENSOR_2,SENSOR_TOUCH);//モータB止める用
SetSensor(SENSOR_3,SENSOR_LIGHT);//紙コップを確認する用
SetPower(OUT_AC,4);//タイヤ
SetPower(OUT_B,7);//アームの上下、開き
}
sub zensin()
{
OnRev(OUT_A);
Wait(106);
Off(OUT_A);
}
?※未使用
sub copjugde()
{
while(SENSOR_3 < 46)
OnRev(OUT_AC);
Off(OUT_AC);
Wait(100);
}
?紙コップの保持
task keep()
{
while(1)
{
OnRev(OUT_B);
Wait(1);
OnFwd(OUT_B);
Wait(1);
}
?ライントレース用メソッド
sub TRACE()
{
ClearTimer(0);
while(FastTimer(0)<=42){
if(SENSOR_1>Middle+4)//白 左旋回
{
OnFwd(OUT_C);
OnRev(OUT_A);
ClearTimer(0);
}
else if(SENSOR_1>Middle+2)//やや白 左折
{
Off(OUT_C);
OnRev(OUT_A);
ClearTimer(0);
}
else if(SENSOR_1>Middle)//直進
{
OnRev(OUT_AC);
ClearTimer(0);
}
else if(SENSOR_1>Middle-2)//やや黒 右折
{
Off(OUT_A);
OnRev(OUT_C);
}
else //黒 右旋回
{
OnFwd(OUT_A);
OnRev(OUT_C);
}
}
?トレース終了、交差点認識
Off(OUT_AC);
PlaySound(SOUND_FAST_UP);
}
sub down()
{
OnRev(OUT_B);
Wait(200);
}
sub STARTING_OPERATION()
{
while(SENSOR_1<Middle)
{
OnRev(OUT_AC);
}
while(SENSOR_1>Middle)
{
OnRev(OUT_AC);
}
OnRev(OUT_AC);
Wait(50);
Off(OUT_C);
OnRev(OUT_A);
Wait(40);
while(SENSOR_1<Middle)
{
OnRev(OUT_AC);
}
Off(OUT_AC);
}
sub TURN_180()
{
OnFwd(OUT_AC);
Wait(80);
Off(OUT_AC);
OnRev(OUT_A);
Wait(130);
while(SENSOR_1>40)
{
OnFwd(OUT_C);
OnRev(OUT_A);
}
Off(OUT_AC);
}
*今回の課題の反省点と感想 [#d57c808d]
~2つの班を組み合わせて計6人で作業をし、結構はかどりやすい...
*ゼミ全体をふまえての感想 [#ae3da6ac]
~初めはシンプルなプログラムでロボットを動かして顔を描き、...
ページ名: