2012b/Member/blackcat/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2012b/Member/blackcat/Mission1/programBBB2]]
*課題1 [#a58ec2cc]
図のようなコースを各自で作成した上で、次のような動作をす...
1人目
1.スタート地点から出発し、スタート地点外のすぐ近くに置か...
2.ピンポン玉をつかんだら速やかにスタート地点の境界の黒線...
※ただしT字路では、直進、右折、左折を正しく判断させること...
3.ゴール地点に到達したら、ゴールエリア外からピンポン玉を...
※ただし、どうしてもエリア外からのシュートが難しい場合は、...
2人目
1.上の動作でスタートとゴールを逆にして同様の動きをするプ...
課題1のコース
# http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attac...
※上図は2012年度後期の課題ページの図を使わせてもらいました。
*メンバー [#n6c88ad6]
・blackcat …このページの製作者。スポーツ平凡。勉強平凡。...
・yoshi …スペック不明。ロボットの形を決めたのは彼であり、...
*ロボット解説 [#pf29ad9d]
&ref(2012b/Member/blackcat/Mission1/P1000118s.jpg,50%,ロ...
これが本番用のロボットです。
見た目少しキリギリスとかカマドウマとか、そういう昆虫に似...
しかし、こいつには恐るべき能力があります。
&ref(2012b/Member/blackcat/Mission1/P1000115s.jpg,50%,ロ...
これがロボット本体を横から見たものです。
ここまでは普通のロボットと違わないですが・・・
&ref(2012b/Member/blackcat/Mission1/P1000116s.jpg,50%,ロ...
シャキーン!
どうでしょうか?
そうです。このロボットはお腹の部分から手が大きく伸びるタ...
その最大の利点は・・・
&ref(2012b/Member/blackcat/Mission1/P1000121s.jpg,50%,ロ...
前を向いたまま高速でボールをかっさらっていくことです。
それだけです。
お腹の部分にボールを取り込んだまま走行します。
ゴールしたときのシュートのことなどまるで頭にありません。
必然的にシュート時は、回転して遠心力で半ば強引にボールを...
そのため、シュート能力はかなり低いです。バッテリー次第で...
続いて、もう片方の側面は・・・
&ref(2012b/Member/blackcat/Mission1/P1000117s.jpg,50%,ロ...
こんな感じです。
あまりパッとしませんね。
次は内部構造を見てみましょう。
&ref(2012b/Member/blackcat/Mission1/P1000120s.jpg,50%,ロ...
図から読み取れるように、モーターの力が、取り込んだボール...
また、歯車を通して外側の手にも力を与えます。
これは、なかなかおもしろい構造だと思います。
発案者の相方に感謝しています。
しかし、最大の欠点は、内部がかなりもろいということです。
発案者曰く、適当に組み立てていったら、いらないパーツがつ...
デリケートです。取り扱い注意ですね。
*プログラム [#h68d3c07]
#define SPEED_H 45
#define SPEED_L 35
#define THRESHOULD 47 //しきい値(黒か白か見分けるため...
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define go_forward OnRL(SPEED_H,SPEED_H);
#define turn_left1 OnRL(SPEED_L,-SPEED_L);
#define turn_left0 OnRL(SPEED_L,-20);
#define turn_right0 OnRL(-20,SPEED_L);
#define turn_right1 OnRL(-SPEED_L,SPEED_L);
#define STEP 1
#define nMAX 140
#define short_break Off(OUT_BC);Wait(1000);
#define CROSS_TIME 350
#define cross_line OnRL(SPEED_H,0);Wait(CROSS_TIME);
#define shoot OnRL(-50,50);Wait(1000);Off(OUT_BC);OnRL(5...
Wait(1500);Off(OUT_BC);OnFwd(OUT_A,300);Wait(250);Off(...
上は定義一覧です。
#define SO 392
#define RA 440
#define SI 494
#define DO 523
#define RE 587
#define MI 659
#define MII 685
#define FA 698
#define FAA 740
これらは音の周波数です。音楽を作るために定義しました。
task play_music()
{
while (true) {
PlayTone(RA,400);Wait(500);
PlayTone(SI,400);Wait(500);
PlayTone(DO,1200);Wait(1500);
PlayTone(SI,400);Wait(500);
PlayTone(DO,650);Wait(800);
PlayTone(MII,800);Wait(1000);
PlayTone(SI,1600);Wait(2000);
PlayTone(MI,400);Wait(500);
PlayTone(FA,1300);Wait(1500);
PlayTone(SO,400);Wait(500);
PlayTone(RA,650);Wait(800);
PlayTone(DO,800);Wait(1000);
PlayTone(SO,1600);Wait(2000);
PlayTone(MI,600);Wait(700);
PlayTone(FA,1000);Wait(1200);
PlayTone(MI,400);Wait(500);
PlayTone(FA,800);Wait(1000);
PlayTone(DO,400);Wait(500);
PlayTone(SI,1300);Wait(1500);
PlayTone(DO,180);Wait(230);
PlayTone(DO,180);Wait(230);
PlayTone(DO,180);Wait(230);
PlayTone(SI,400);Wait(500);
PlayTone(FA,230);Wait(300);
PlayTone(FA,500);Wait(600);
PlayTone(SI,400);Wait(500);
PlayTone(SI,1300);Wait(1500);
PlayTone(RA,400);Wait(500);
PlayTone(SI,400);Wait(500);
PlayTone(DO,1300);Wait(1500);
PlayTone(SI,400);Wait(500);
PlayTone(DO,700);Wait(800);
PlayTone(MII,800);Wait(1000);
PlayTone(SI,1600);Wait(2000);
PlayTone(MI,400);Wait(500);
PlayTone(FA,1300);Wait(1500);
PlayTone(SO,400);Wait(500);
PlayTone(RA,650);Wait(800);
PlayTone(DO,800);Wait(1000);
PlayTone(SO,1600);Wait(2000);
PlayTone(MI,400);Wait(500);
PlayTone(FA,650);Wait(800);
PlayTone(DO,230);Wait(300);
PlayTone(SI,700);Wait(800);
PlayTone(SI,230);Wait(300);
PlayTone(DO,320);Wait(400);
PlayTone(RE,230);Wait(300);
PlayTone(RE,400);Wait(500);
PlayTone(MII,320);Wait(300);
PlayTone(DO,650);Wait(800);
PlayTone(DO,400);Wait(500);
PlayTone(SI,400);Wait(500);
PlayTone(RA,800);Wait(1000);
PlayTone(SI,650);Wait(800);
PlayTone(SO,800);Wait(1000);
PlayTone(RA,1600);Wait(2000);
}
}
これは天空の城ラピュタの「君をのせて」という歌です。
小学校のころ、リコーダーで演奏したのを思い出しながら作り...
しかし、音楽センスのない私には不向きだったようで何か呪い...
task main()
{
SetSensorLight(S1);
int nOnline=0; //続けて黒になった回数(カウンタ)
int nCurve=0; //急カーブの回数
long t0 = CurrentTick();
OnRL(-SPEED_L,SPEED_H);
Wait(300);
Off(OUT_BC);
OnRev(OUT_A,30);
Wait(500);
Off(OUT_A);
OnRL(2*SPEED_H,SPEED_H);
Wait(350);
Off(OUT_BC);
上はボールを確保して出発するまでのプログラムです。
while (CurrentTick() - t0 < 10000) { //10秒経過する...
if(SENSOR_1 < THRESHOULD - 13) {
turn_right1;
} else {
if (SENSOR_1 < THRESHOULD - 7){
turn_right0;
} else if (SENSOR_1 < THRESHOULD + 7){
go_forward;
} else if (SENSOR_1 < THRESHOULD + 15){
turn_left0;
} else {
turn_left1;
}
Wait(STEP);
}
}
if (CurrentTick() - t0 == 10000) { //10秒経過したら...
cross_line;
t0 = CurrentTick();
while (nCurve < 2) { //交差点は一回目普通に通過//
if(SENSOR_1 < THRESHOULD - 13) {
turn_left1;
nOnline++;
if (nOnline == nMAX) {
nCurve++;
nOnline=0;
PlaySound(SOUND_CLICK);
Off(OUT_BC);
Wait(300);
OnRL(SPEED_H,-SPEED_H);
Wait(500);
}
} else {
if (SENSOR_1 < THRESHOULD - 7){
turn_left0;
} else if (SENSOR_1 < THRESHOULD + 7){
go_forward;
} else if (SENSOR_1 < THRESHOULD + 15){
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
}
while (nCurve >= 2) { //交差点二回目...
while (nOnline < nMAX) {
if(SENSOR_1 < THRESHOULD - 13) {
turn_left1;
nOnline++;
} else {
if (SENSOR_1 < THRESHOULD - 7){
turn_left0;
} else if (SENSOR_1 < THRESHOULD + 7){
go_forward;
} else if (SENSOR_1 < THRESHOULD + 15){
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
PlaySound(SOUND_LOW_BEEP);
shoot; //シュート//
PlaySound(SOUND_FAST_UP);
Wait(300);
OnRL(SPEED_H,SPEED_H);
Wait(2000);
Off(OUT_BC);
Wait(300);
start play_music;
}
}
}
・交差点はラストのシュートまでなるべく通らないように工夫...
・電池が元気なうちはこのプログラムで十分だが、時がたつに...
・音楽は頑張ったのにあまり出来はよろしくない。
*まとめ [#xce024d9]
**工夫した点 [#u04ce925]
・交差点の判断は難しいのでなるべく通らないようにしたこと
・シュートしたら音楽が祝ってくれるようにしたこと
**反省点 [#ae60aa00]
・あまりシュートが入らないこと(構造の問題、電池による回...
・コースの黒色にムラが多いこと
・シュートする機構を作ることにほとんど携わっていないこと
・作った音楽がひどいこと(音楽センスのなさを感じる)
・コースの脱線が多いこと
**感想 [#uc2309b9]
はじめてロボットを組み立てたり、プログラムを組んだりした...
終了行:
[[2012b/Member/blackcat/Mission1/programBBB2]]
*課題1 [#a58ec2cc]
図のようなコースを各自で作成した上で、次のような動作をす...
1人目
1.スタート地点から出発し、スタート地点外のすぐ近くに置か...
2.ピンポン玉をつかんだら速やかにスタート地点の境界の黒線...
※ただしT字路では、直進、右折、左折を正しく判断させること...
3.ゴール地点に到達したら、ゴールエリア外からピンポン玉を...
※ただし、どうしてもエリア外からのシュートが難しい場合は、...
2人目
1.上の動作でスタートとゴールを逆にして同様の動きをするプ...
課題1のコース
# http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attac...
※上図は2012年度後期の課題ページの図を使わせてもらいました。
*メンバー [#n6c88ad6]
・blackcat …このページの製作者。スポーツ平凡。勉強平凡。...
・yoshi …スペック不明。ロボットの形を決めたのは彼であり、...
*ロボット解説 [#pf29ad9d]
&ref(2012b/Member/blackcat/Mission1/P1000118s.jpg,50%,ロ...
これが本番用のロボットです。
見た目少しキリギリスとかカマドウマとか、そういう昆虫に似...
しかし、こいつには恐るべき能力があります。
&ref(2012b/Member/blackcat/Mission1/P1000115s.jpg,50%,ロ...
これがロボット本体を横から見たものです。
ここまでは普通のロボットと違わないですが・・・
&ref(2012b/Member/blackcat/Mission1/P1000116s.jpg,50%,ロ...
シャキーン!
どうでしょうか?
そうです。このロボットはお腹の部分から手が大きく伸びるタ...
その最大の利点は・・・
&ref(2012b/Member/blackcat/Mission1/P1000121s.jpg,50%,ロ...
前を向いたまま高速でボールをかっさらっていくことです。
それだけです。
お腹の部分にボールを取り込んだまま走行します。
ゴールしたときのシュートのことなどまるで頭にありません。
必然的にシュート時は、回転して遠心力で半ば強引にボールを...
そのため、シュート能力はかなり低いです。バッテリー次第で...
続いて、もう片方の側面は・・・
&ref(2012b/Member/blackcat/Mission1/P1000117s.jpg,50%,ロ...
こんな感じです。
あまりパッとしませんね。
次は内部構造を見てみましょう。
&ref(2012b/Member/blackcat/Mission1/P1000120s.jpg,50%,ロ...
図から読み取れるように、モーターの力が、取り込んだボール...
また、歯車を通して外側の手にも力を与えます。
これは、なかなかおもしろい構造だと思います。
発案者の相方に感謝しています。
しかし、最大の欠点は、内部がかなりもろいということです。
発案者曰く、適当に組み立てていったら、いらないパーツがつ...
デリケートです。取り扱い注意ですね。
*プログラム [#h68d3c07]
#define SPEED_H 45
#define SPEED_L 35
#define THRESHOULD 47 //しきい値(黒か白か見分けるため...
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define go_forward OnRL(SPEED_H,SPEED_H);
#define turn_left1 OnRL(SPEED_L,-SPEED_L);
#define turn_left0 OnRL(SPEED_L,-20);
#define turn_right0 OnRL(-20,SPEED_L);
#define turn_right1 OnRL(-SPEED_L,SPEED_L);
#define STEP 1
#define nMAX 140
#define short_break Off(OUT_BC);Wait(1000);
#define CROSS_TIME 350
#define cross_line OnRL(SPEED_H,0);Wait(CROSS_TIME);
#define shoot OnRL(-50,50);Wait(1000);Off(OUT_BC);OnRL(5...
Wait(1500);Off(OUT_BC);OnFwd(OUT_A,300);Wait(250);Off(...
上は定義一覧です。
#define SO 392
#define RA 440
#define SI 494
#define DO 523
#define RE 587
#define MI 659
#define MII 685
#define FA 698
#define FAA 740
これらは音の周波数です。音楽を作るために定義しました。
task play_music()
{
while (true) {
PlayTone(RA,400);Wait(500);
PlayTone(SI,400);Wait(500);
PlayTone(DO,1200);Wait(1500);
PlayTone(SI,400);Wait(500);
PlayTone(DO,650);Wait(800);
PlayTone(MII,800);Wait(1000);
PlayTone(SI,1600);Wait(2000);
PlayTone(MI,400);Wait(500);
PlayTone(FA,1300);Wait(1500);
PlayTone(SO,400);Wait(500);
PlayTone(RA,650);Wait(800);
PlayTone(DO,800);Wait(1000);
PlayTone(SO,1600);Wait(2000);
PlayTone(MI,600);Wait(700);
PlayTone(FA,1000);Wait(1200);
PlayTone(MI,400);Wait(500);
PlayTone(FA,800);Wait(1000);
PlayTone(DO,400);Wait(500);
PlayTone(SI,1300);Wait(1500);
PlayTone(DO,180);Wait(230);
PlayTone(DO,180);Wait(230);
PlayTone(DO,180);Wait(230);
PlayTone(SI,400);Wait(500);
PlayTone(FA,230);Wait(300);
PlayTone(FA,500);Wait(600);
PlayTone(SI,400);Wait(500);
PlayTone(SI,1300);Wait(1500);
PlayTone(RA,400);Wait(500);
PlayTone(SI,400);Wait(500);
PlayTone(DO,1300);Wait(1500);
PlayTone(SI,400);Wait(500);
PlayTone(DO,700);Wait(800);
PlayTone(MII,800);Wait(1000);
PlayTone(SI,1600);Wait(2000);
PlayTone(MI,400);Wait(500);
PlayTone(FA,1300);Wait(1500);
PlayTone(SO,400);Wait(500);
PlayTone(RA,650);Wait(800);
PlayTone(DO,800);Wait(1000);
PlayTone(SO,1600);Wait(2000);
PlayTone(MI,400);Wait(500);
PlayTone(FA,650);Wait(800);
PlayTone(DO,230);Wait(300);
PlayTone(SI,700);Wait(800);
PlayTone(SI,230);Wait(300);
PlayTone(DO,320);Wait(400);
PlayTone(RE,230);Wait(300);
PlayTone(RE,400);Wait(500);
PlayTone(MII,320);Wait(300);
PlayTone(DO,650);Wait(800);
PlayTone(DO,400);Wait(500);
PlayTone(SI,400);Wait(500);
PlayTone(RA,800);Wait(1000);
PlayTone(SI,650);Wait(800);
PlayTone(SO,800);Wait(1000);
PlayTone(RA,1600);Wait(2000);
}
}
これは天空の城ラピュタの「君をのせて」という歌です。
小学校のころ、リコーダーで演奏したのを思い出しながら作り...
しかし、音楽センスのない私には不向きだったようで何か呪い...
task main()
{
SetSensorLight(S1);
int nOnline=0; //続けて黒になった回数(カウンタ)
int nCurve=0; //急カーブの回数
long t0 = CurrentTick();
OnRL(-SPEED_L,SPEED_H);
Wait(300);
Off(OUT_BC);
OnRev(OUT_A,30);
Wait(500);
Off(OUT_A);
OnRL(2*SPEED_H,SPEED_H);
Wait(350);
Off(OUT_BC);
上はボールを確保して出発するまでのプログラムです。
while (CurrentTick() - t0 < 10000) { //10秒経過する...
if(SENSOR_1 < THRESHOULD - 13) {
turn_right1;
} else {
if (SENSOR_1 < THRESHOULD - 7){
turn_right0;
} else if (SENSOR_1 < THRESHOULD + 7){
go_forward;
} else if (SENSOR_1 < THRESHOULD + 15){
turn_left0;
} else {
turn_left1;
}
Wait(STEP);
}
}
if (CurrentTick() - t0 == 10000) { //10秒経過したら...
cross_line;
t0 = CurrentTick();
while (nCurve < 2) { //交差点は一回目普通に通過//
if(SENSOR_1 < THRESHOULD - 13) {
turn_left1;
nOnline++;
if (nOnline == nMAX) {
nCurve++;
nOnline=0;
PlaySound(SOUND_CLICK);
Off(OUT_BC);
Wait(300);
OnRL(SPEED_H,-SPEED_H);
Wait(500);
}
} else {
if (SENSOR_1 < THRESHOULD - 7){
turn_left0;
} else if (SENSOR_1 < THRESHOULD + 7){
go_forward;
} else if (SENSOR_1 < THRESHOULD + 15){
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
}
while (nCurve >= 2) { //交差点二回目...
while (nOnline < nMAX) {
if(SENSOR_1 < THRESHOULD - 13) {
turn_left1;
nOnline++;
} else {
if (SENSOR_1 < THRESHOULD - 7){
turn_left0;
} else if (SENSOR_1 < THRESHOULD + 7){
go_forward;
} else if (SENSOR_1 < THRESHOULD + 15){
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
PlaySound(SOUND_LOW_BEEP);
shoot; //シュート//
PlaySound(SOUND_FAST_UP);
Wait(300);
OnRL(SPEED_H,SPEED_H);
Wait(2000);
Off(OUT_BC);
Wait(300);
start play_music;
}
}
}
・交差点はラストのシュートまでなるべく通らないように工夫...
・電池が元気なうちはこのプログラムで十分だが、時がたつに...
・音楽は頑張ったのにあまり出来はよろしくない。
*まとめ [#xce024d9]
**工夫した点 [#u04ce925]
・交差点の判断は難しいのでなるべく通らないようにしたこと
・シュートしたら音楽が祝ってくれるようにしたこと
**反省点 [#ae60aa00]
・あまりシュートが入らないこと(構造の問題、電池による回...
・コースの黒色にムラが多いこと
・シュートする機構を作ることにほとんど携わっていないこと
・作った音楽がひどいこと(音楽センスのなさを感じる)
・コースの脱線が多いこと
**感想 [#uc2309b9]
はじめてロボットを組み立てたり、プログラムを組んだりした...
ページ名: