2016a/Member/jake57/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2016a/Member]]
目次
#contents
*課題内容 [#rb1c1d6b]
今回の課題は、2班合同で行うもので課題2で用いたコース...
・C地点とD地点にそれぞれ紙コップを3個ずつ置...
・紙コップは下から数えて奇数番目はC地点から、...
・紙コップは最終的に交差点Qを含む円の中に重ね...
・ロボットはA地点、B地点からそれぞれ1機ずつ...
といった規定があり、ルールの詳細については以下参照。
[[asd:http://yakushi.shinshu-u.ac.jp/robotics/?2016a%2FMi...
#ref(2016a/Member/jake57/Mission3/2016a-mission2.png,40%,...
*ロボット [#x9bed8d1]
今回の課題で使用したロボットがこちらです。~
#ref(2016a/Member/jake57/Mission3/Image_e96ab92.jpg,50%,...
このロボットは先端に付けてあるタイヤのゴムによって紙コ...
紙コップをつかんだあと先端のアームで紙コップ上に持ち上...
また、下に付いている紫色のパーツは紙コップを重ねる時に...
#ref(2016a/Member/jake57/Mission3/Image_24378f2.jpg,50%,...
このロボットで使用しているセンサーは、ライントレース用...
このセンサーのほかに~
・「コップがある高さまで持ち上がったら次の動作...
・紙コップがロボットの前にあることを認識する光...
なども考えていたが、試行錯誤の結果本番は紙コップ1個を...
*プログラム [#f580972c]
・白と黒を見分けるライントレース用の中央値
#define Middle 45
・センサーやモーターの力の初期設定
(実際にセンサーは、SENSOR1のみ使用)
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 copjugde()
{
while(SENSOR_3 < 46)//
OnRev(OUT_AC);
Off(OUT_AC);
Wait(100);
}
・紙コップを上に持ち上げたまま維持~
「sub」ではなく「task」を用いているのはライントレース...
task keep()
{
while(1)
{
OnRev(OUT_B);
Wait(1);
OnFwd(OUT_B);
Wait(1);
}
}
・紙コップを下に下げる動作
sub down()
{
OnRev(OUT_B);
Wait(200);
}
・スタートの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);
}
【今回の課題で使用したプログラムの全容(紙コップ1個用)】
task main()
{
setting();
STARTING_OPERATION();
repeat(2)
{
TRACE();
zensin();
}
//交差点からD地点へ向かう
TRACE();
OnRev(OUT_C);
Wait(25);
TRACE();
//誤差修正
OnRev(OUT_A);
Wait(95);
Off(OUT_AC);
//D地点に到着
OnFwd(OUT_B);//コップつかむ
Wait(250);
start keep;
TURN_180();//180°回転
OnFwd(OUT_A);//Qの方向を向く
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);
}
*結果 [#tdfe2910]
本番は紙コップ1個を円の中に運び入れることができなかっ...
スタートを上手くすることはできたが、ライントレースが上...
*感想 [#q9a8d717]
今回の課題は、ライントレースをしつつ紙コップを交互に重...
また、課題の紙コップ6個というのを意識していて初めから...
この「ロボティクス入門ゼミ」には興味があって受講しまし...
私はロボットはプログラム通りに動いてくれるものだと思って...
最後に、この講義を通してプログラミングの難しさ、楽しさ、...
終了行:
[[2016a/Member]]
目次
#contents
*課題内容 [#rb1c1d6b]
今回の課題は、2班合同で行うもので課題2で用いたコース...
・C地点とD地点にそれぞれ紙コップを3個ずつ置...
・紙コップは下から数えて奇数番目はC地点から、...
・紙コップは最終的に交差点Qを含む円の中に重ね...
・ロボットはA地点、B地点からそれぞれ1機ずつ...
といった規定があり、ルールの詳細については以下参照。
[[asd:http://yakushi.shinshu-u.ac.jp/robotics/?2016a%2FMi...
#ref(2016a/Member/jake57/Mission3/2016a-mission2.png,40%,...
*ロボット [#x9bed8d1]
今回の課題で使用したロボットがこちらです。~
#ref(2016a/Member/jake57/Mission3/Image_e96ab92.jpg,50%,...
このロボットは先端に付けてあるタイヤのゴムによって紙コ...
紙コップをつかんだあと先端のアームで紙コップ上に持ち上...
また、下に付いている紫色のパーツは紙コップを重ねる時に...
#ref(2016a/Member/jake57/Mission3/Image_24378f2.jpg,50%,...
このロボットで使用しているセンサーは、ライントレース用...
このセンサーのほかに~
・「コップがある高さまで持ち上がったら次の動作...
・紙コップがロボットの前にあることを認識する光...
なども考えていたが、試行錯誤の結果本番は紙コップ1個を...
*プログラム [#f580972c]
・白と黒を見分けるライントレース用の中央値
#define Middle 45
・センサーやモーターの力の初期設定
(実際にセンサーは、SENSOR1のみ使用)
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 copjugde()
{
while(SENSOR_3 < 46)//
OnRev(OUT_AC);
Off(OUT_AC);
Wait(100);
}
・紙コップを上に持ち上げたまま維持~
「sub」ではなく「task」を用いているのはライントレース...
task keep()
{
while(1)
{
OnRev(OUT_B);
Wait(1);
OnFwd(OUT_B);
Wait(1);
}
}
・紙コップを下に下げる動作
sub down()
{
OnRev(OUT_B);
Wait(200);
}
・スタートの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);
}
【今回の課題で使用したプログラムの全容(紙コップ1個用)】
task main()
{
setting();
STARTING_OPERATION();
repeat(2)
{
TRACE();
zensin();
}
//交差点からD地点へ向かう
TRACE();
OnRev(OUT_C);
Wait(25);
TRACE();
//誤差修正
OnRev(OUT_A);
Wait(95);
Off(OUT_AC);
//D地点に到着
OnFwd(OUT_B);//コップつかむ
Wait(250);
start keep;
TURN_180();//180°回転
OnFwd(OUT_A);//Qの方向を向く
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);
}
*結果 [#tdfe2910]
本番は紙コップ1個を円の中に運び入れることができなかっ...
スタートを上手くすることはできたが、ライントレースが上...
*感想 [#q9a8d717]
今回の課題は、ライントレースをしつつ紙コップを交互に重...
また、課題の紙コップ6個というのを意識していて初めから...
この「ロボティクス入門ゼミ」には興味があって受講しまし...
私はロボットはプログラム通りに動いてくれるものだと思って...
最後に、この講義を通してプログラミングの難しさ、楽しさ、...
ページ名: