2017a/Member/miso/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&size(20){目次};
#contents
*課題について [#g34ae2fa]
「空き缶を収集し、ゴールに空き缶をなるべく高く積み上げる...
#ref(./2017a-mission3.png,80%,misson3)
&size(20){フィールドの説明};~
◦フィールドは課題2で使用した紙を使用する~
◦図のピンク色の場所に350mlの空き缶を置く~
◦図のライトブルーの円のいずれか一箇所に中身の入った...
◦中身の入った缶には紙をはったり図などを描いてもよい~
%%%課題の内容に関して詳しくはこちら%%%[[課題3>2017a/Missi...
~
-----
私たちのグループは都合により8月7日の発表会に出ることが...
*作戦 [#b792b5d5]
ロボットを組み立てる前にどのように点数を取っていくのかを...
そこで私たちは、Eの交差点の缶→Gの交差点の缶→中身の入った...
~
~
プログラムをしていくうえで中身の入った缶をとるのがとても...
*ロボット本体について [#g4599cbc]
二台のロボットで動かすのではなく、二つのキットを一つに組...
ロボットの形状については、缶をできるだけ高く積むためにレ...
**試作機での失敗 [#l842cd16]
一番最初に作った試作機では、アーム部分に多くの部品を用い...
ほかの失敗としては、ロボット本体を前後に長くしすぎてしま...
**ロボット本体の写真と各部の説明 [#v18e935e]
***全体像 [#ue07210f]
#ref(./全体像.jpg.jpg,65%,全体像)
ロボット本体を斜め上から写した画像である。
~
~
~
#ref(./全体像(横).jpg.jpg,65%,全体像(横))
ロボット本体を横から写した画像である。
~
~
~
#ref(./全体像(前).jpg.jpg,65%,全体像(前))
ロボット本体を前から写した画像である。
~
~
-----
アームを本体の前側に付けるため重心がどうしても前に寄って...
タイヤは小回りを利かせるため小さなタイヤを用いた。後ろの...
光センサーは全部で3つ搭載しており、下に向く2つの光セン...
***各部の説明と工夫した点 [#e25128a2]
---アーム部分
#ref(./アーム説明.jpg.jpg,65%,アーム)
アームを作るうえでうまくいかなかったことは、うまく缶を固...
他には、摩擦を大きくして落ちにくくするためにアームにタイ...
---光センサー部分,アームのギア部分
#ref(./光センサー.jpg,65%,光センサー)
光っているところが3つの光センサーである。下を向いている...
前を向いている光センサーは缶判別用であり、缶に黒い紙を巻...
~
アーム部分は缶をつかむときにずっとモーターを回し続けなけ...
---レール部分
#ref(./レール部分.jpg,40%,レール部分)
レール部分は4つのギアを用いて固定した。レール部分が十分...
*プログラムについて [#yeaf25b0]
私はアーム部分のプログラムを担当した。缶判別用の光センサ...
**define、sub、voidなどの説明 [#ef71bfe2]
//A アーム上下
//C アーム開閉
#define kan_hanbetu 26 //光センサーが缶を判別する値
缶には黒い紙を貼ることで光センサーが缶と認識できるように...
void arm_close(int time)
{
OnRev(OUT_C); //アームを閉じる
Wait(time);
OnRev(OUT_A); //上に上がる
Wait(280);
Off(OUT_A);
}
アームを閉じ、一番上まで上がるというvoidである。アームを...
sub arm_open()
{
Wait(300);
OnFwd(OUT_A); //下に下がる
Wait(20);
Off(OUT_A);
OnFwd(OUT_C); //アームを開く
Wait(20);
Off(OUT_AC);
OnFwd(OUT_A); //下に下がる
Wait(250);
Off(OUT_A);
}
缶を持った状態でアームが一番上にHOLDされているところから...
**task mainの中身 [#gb2189f8]
task main ()
{
while (true)
{
if (SENSOR_2 <= kan_hanbetu)
{
Wait(300);
arm_close(300);
Wait(100);
OnRev(OUT_A); //上に上がる
Wait(500);
while (true)
{
if (SENSOR_2 <= kan_hanbetu)
{
arm_open();
Wait(80);
arm_close(30);
OnRev(OUT_A); //上に上がる
Wait(500);
while (true)
{
if (SENSOR_2 <= kan_hanbetu)
{
OnFwd(OUT_A); //下に下がる
Wait(200);
Off(OUT_A);
Wait(200);
OnFwd(OUT_C); //アームを開く
Wait(30);
Off(OUT_C);
}
}
}
}
}
}
}
Whileとifを使うことで缶を判別したときに次のプログラムに進...
光センサーが缶を直前ではなく少し前の段階で判別してしまう...
その他のWaitは次の缶の場所に移動するときや、ゴールまで運...
**タイヤ側(ライントレース側)のプログラム [#g1e57b8d]
#define senkai_left OnRev(OUT_C);OnFwd(OUT_A);//左旋回
#define senkai_right OnFwd(OUT_C);OnRev(OUT_A); //右旋回
#define turn_left Off(OUT_C);OnFwd(OUT_A);//左折
#define turn_right OnFwd(OUT_C);Off(OUT_A);//右折
#define fwd OnFwd(OUT_AC);//直進
void go_fwd(int time)
{
fwd;
Wait(time);
Off(OUT_AC);
}
sub usetu()
{
turn_right;
Wait(230);
Off(OUT_C);
senkai_right;
Wait(50);
Off(OUT_AC);
OnRev(OUT_AC);
Wait(30);
Off(OUT_AC);
}
sub sasetu()
{
turn_left;
Wait(190);
Off(OUT_A);
senkai_left;
Wait(40);
Off(OUT_AC);
}
sub naname_usetu()
{
OnFwd(OUT_C);
Off(OUT_A);
Wait(200);
Off(OUT_C);
OnRev(OUT_AC);
Wait(40);
Off(OUT_AC);
}
sub owari()
{
turn_right;
Wait(70);
Off(OUT_AC);
Wait(450);
OnRev(OUT_AC);
Wait(200);
Off(OUT_AC);
}
sub line_trace()
{
SetSensor(SENSOR_1, SENSOR_LIGHT); //右
SetSensor(SENSOR_3, SENSOR_LIGHT); //左
ClearTimer(0);
PlaySound(SOUND_CLICK);
while(FastTimer(0)<11){
if(SENSOR_1>=49&&SENSOR_3>=55){
fwd;
ClearTimer(0);
}else if(SENSOR_3>=50){
turn_right;
ClearTimer(0);
}else if(SENSOR_1>=40){
turn_left;
ClearTimer(0);
}else if(SENSOR_3>=48){
senkai_right;
ClearTimer(0);
}else if(SENSOR_1>=38){
senkai_left;
ClearTimer(0);
}else if(SENSOR_1>=30){
Off(OUT_AC);
PlaySound(SOUND_LOW_BEEP);
}else if(SENSOR_3>=30){
Off(OUT_AC);
PlaySound(SOUND_LOW_BEEP);
}else{
fwd;
Wait(30);
Off(OUT_AC);
}
}
Off(OUT_AC);
PlaySound(SOUND_CLICK);
}
void line_trace_2(int time)
{
SetSensor(SENSOR_1, SENSOR_LIGHT); //右
SetSensor(SENSOR_3, SENSOR_LIGHT); //左
ClearTimer(0);
ClearTimer(1);
PlaySound(SOUND_CLICK);
while(FastTimer(0)<11&&FastTimer(1)<time){
if(SENSOR_1>=49&&SENSOR_3>=55){
fwd;
ClearTimer(0);
}else if(SENSOR_3>=50){
turn_right;
ClearTimer(0);
}else if(SENSOR_1>=40){
turn_left;
ClearTimer(0);
}else if(SENSOR_3>=48){
senkai_right;
ClearTimer(0);
}else if(SENSOR_1>=38){
senkai_left;
ClearTimer(0);
}else if(SENSOR_1>=30){
Off(OUT_AC);
PlaySound(SOUND_LOW_BEEP);
}else if(SENSOR_3>=30){
Off(OUT_AC);
PlaySound(SOUND_LOW_BEEP);
}else{
fwd;
Wait(30);
Off(OUT_AC);
}
}
Off(OUT_AC);
}
task main()
{
go_fwd(50);
line_trace();
usetu();
repeat(2){
line_trace();
Wait(50);
naname_usetu();
Wait(50);
}
line_trace_2(230);
Wait(500);
senkai_left;
Wait(200);
Off(OUT_AC);
go_fwd(30);
line_trace();
Wait(450);
sasetu();
line_trace();
owari();
}
タイヤ側のプログラムはrockが担当したため詳しい解説はこち...
[[rockのmisson3>2017a/Member/rock/Mission3]]
*結果 [#b7db843a]
結果は中身の入っていない缶3つを積み上げたため3+6+9で18点...
実際に動かした動画はこちら[[misson3動画>https://www.youtu...
*感想 [#xf0c38b9]
今回のmission3では多くの失敗を繰り返した。ロボットを作る...
しかし、多くの時間をかけたため完成した時の喜びは大きかっ...
ロボティクスを通じて自ら研究・探求する力を身に付けること...
~
~
~
訪問者合計&counter;
終了行:
&size(20){目次};
#contents
*課題について [#g34ae2fa]
「空き缶を収集し、ゴールに空き缶をなるべく高く積み上げる...
#ref(./2017a-mission3.png,80%,misson3)
&size(20){フィールドの説明};~
◦フィールドは課題2で使用した紙を使用する~
◦図のピンク色の場所に350mlの空き缶を置く~
◦図のライトブルーの円のいずれか一箇所に中身の入った...
◦中身の入った缶には紙をはったり図などを描いてもよい~
%%%課題の内容に関して詳しくはこちら%%%[[課題3>2017a/Missi...
~
-----
私たちのグループは都合により8月7日の発表会に出ることが...
*作戦 [#b792b5d5]
ロボットを組み立てる前にどのように点数を取っていくのかを...
そこで私たちは、Eの交差点の缶→Gの交差点の缶→中身の入った...
~
~
プログラムをしていくうえで中身の入った缶をとるのがとても...
*ロボット本体について [#g4599cbc]
二台のロボットで動かすのではなく、二つのキットを一つに組...
ロボットの形状については、缶をできるだけ高く積むためにレ...
**試作機での失敗 [#l842cd16]
一番最初に作った試作機では、アーム部分に多くの部品を用い...
ほかの失敗としては、ロボット本体を前後に長くしすぎてしま...
**ロボット本体の写真と各部の説明 [#v18e935e]
***全体像 [#ue07210f]
#ref(./全体像.jpg.jpg,65%,全体像)
ロボット本体を斜め上から写した画像である。
~
~
~
#ref(./全体像(横).jpg.jpg,65%,全体像(横))
ロボット本体を横から写した画像である。
~
~
~
#ref(./全体像(前).jpg.jpg,65%,全体像(前))
ロボット本体を前から写した画像である。
~
~
-----
アームを本体の前側に付けるため重心がどうしても前に寄って...
タイヤは小回りを利かせるため小さなタイヤを用いた。後ろの...
光センサーは全部で3つ搭載しており、下に向く2つの光セン...
***各部の説明と工夫した点 [#e25128a2]
---アーム部分
#ref(./アーム説明.jpg.jpg,65%,アーム)
アームを作るうえでうまくいかなかったことは、うまく缶を固...
他には、摩擦を大きくして落ちにくくするためにアームにタイ...
---光センサー部分,アームのギア部分
#ref(./光センサー.jpg,65%,光センサー)
光っているところが3つの光センサーである。下を向いている...
前を向いている光センサーは缶判別用であり、缶に黒い紙を巻...
~
アーム部分は缶をつかむときにずっとモーターを回し続けなけ...
---レール部分
#ref(./レール部分.jpg,40%,レール部分)
レール部分は4つのギアを用いて固定した。レール部分が十分...
*プログラムについて [#yeaf25b0]
私はアーム部分のプログラムを担当した。缶判別用の光センサ...
**define、sub、voidなどの説明 [#ef71bfe2]
//A アーム上下
//C アーム開閉
#define kan_hanbetu 26 //光センサーが缶を判別する値
缶には黒い紙を貼ることで光センサーが缶と認識できるように...
void arm_close(int time)
{
OnRev(OUT_C); //アームを閉じる
Wait(time);
OnRev(OUT_A); //上に上がる
Wait(280);
Off(OUT_A);
}
アームを閉じ、一番上まで上がるというvoidである。アームを...
sub arm_open()
{
Wait(300);
OnFwd(OUT_A); //下に下がる
Wait(20);
Off(OUT_A);
OnFwd(OUT_C); //アームを開く
Wait(20);
Off(OUT_AC);
OnFwd(OUT_A); //下に下がる
Wait(250);
Off(OUT_A);
}
缶を持った状態でアームが一番上にHOLDされているところから...
**task mainの中身 [#gb2189f8]
task main ()
{
while (true)
{
if (SENSOR_2 <= kan_hanbetu)
{
Wait(300);
arm_close(300);
Wait(100);
OnRev(OUT_A); //上に上がる
Wait(500);
while (true)
{
if (SENSOR_2 <= kan_hanbetu)
{
arm_open();
Wait(80);
arm_close(30);
OnRev(OUT_A); //上に上がる
Wait(500);
while (true)
{
if (SENSOR_2 <= kan_hanbetu)
{
OnFwd(OUT_A); //下に下がる
Wait(200);
Off(OUT_A);
Wait(200);
OnFwd(OUT_C); //アームを開く
Wait(30);
Off(OUT_C);
}
}
}
}
}
}
}
Whileとifを使うことで缶を判別したときに次のプログラムに進...
光センサーが缶を直前ではなく少し前の段階で判別してしまう...
その他のWaitは次の缶の場所に移動するときや、ゴールまで運...
**タイヤ側(ライントレース側)のプログラム [#g1e57b8d]
#define senkai_left OnRev(OUT_C);OnFwd(OUT_A);//左旋回
#define senkai_right OnFwd(OUT_C);OnRev(OUT_A); //右旋回
#define turn_left Off(OUT_C);OnFwd(OUT_A);//左折
#define turn_right OnFwd(OUT_C);Off(OUT_A);//右折
#define fwd OnFwd(OUT_AC);//直進
void go_fwd(int time)
{
fwd;
Wait(time);
Off(OUT_AC);
}
sub usetu()
{
turn_right;
Wait(230);
Off(OUT_C);
senkai_right;
Wait(50);
Off(OUT_AC);
OnRev(OUT_AC);
Wait(30);
Off(OUT_AC);
}
sub sasetu()
{
turn_left;
Wait(190);
Off(OUT_A);
senkai_left;
Wait(40);
Off(OUT_AC);
}
sub naname_usetu()
{
OnFwd(OUT_C);
Off(OUT_A);
Wait(200);
Off(OUT_C);
OnRev(OUT_AC);
Wait(40);
Off(OUT_AC);
}
sub owari()
{
turn_right;
Wait(70);
Off(OUT_AC);
Wait(450);
OnRev(OUT_AC);
Wait(200);
Off(OUT_AC);
}
sub line_trace()
{
SetSensor(SENSOR_1, SENSOR_LIGHT); //右
SetSensor(SENSOR_3, SENSOR_LIGHT); //左
ClearTimer(0);
PlaySound(SOUND_CLICK);
while(FastTimer(0)<11){
if(SENSOR_1>=49&&SENSOR_3>=55){
fwd;
ClearTimer(0);
}else if(SENSOR_3>=50){
turn_right;
ClearTimer(0);
}else if(SENSOR_1>=40){
turn_left;
ClearTimer(0);
}else if(SENSOR_3>=48){
senkai_right;
ClearTimer(0);
}else if(SENSOR_1>=38){
senkai_left;
ClearTimer(0);
}else if(SENSOR_1>=30){
Off(OUT_AC);
PlaySound(SOUND_LOW_BEEP);
}else if(SENSOR_3>=30){
Off(OUT_AC);
PlaySound(SOUND_LOW_BEEP);
}else{
fwd;
Wait(30);
Off(OUT_AC);
}
}
Off(OUT_AC);
PlaySound(SOUND_CLICK);
}
void line_trace_2(int time)
{
SetSensor(SENSOR_1, SENSOR_LIGHT); //右
SetSensor(SENSOR_3, SENSOR_LIGHT); //左
ClearTimer(0);
ClearTimer(1);
PlaySound(SOUND_CLICK);
while(FastTimer(0)<11&&FastTimer(1)<time){
if(SENSOR_1>=49&&SENSOR_3>=55){
fwd;
ClearTimer(0);
}else if(SENSOR_3>=50){
turn_right;
ClearTimer(0);
}else if(SENSOR_1>=40){
turn_left;
ClearTimer(0);
}else if(SENSOR_3>=48){
senkai_right;
ClearTimer(0);
}else if(SENSOR_1>=38){
senkai_left;
ClearTimer(0);
}else if(SENSOR_1>=30){
Off(OUT_AC);
PlaySound(SOUND_LOW_BEEP);
}else if(SENSOR_3>=30){
Off(OUT_AC);
PlaySound(SOUND_LOW_BEEP);
}else{
fwd;
Wait(30);
Off(OUT_AC);
}
}
Off(OUT_AC);
}
task main()
{
go_fwd(50);
line_trace();
usetu();
repeat(2){
line_trace();
Wait(50);
naname_usetu();
Wait(50);
}
line_trace_2(230);
Wait(500);
senkai_left;
Wait(200);
Off(OUT_AC);
go_fwd(30);
line_trace();
Wait(450);
sasetu();
line_trace();
owari();
}
タイヤ側のプログラムはrockが担当したため詳しい解説はこち...
[[rockのmisson3>2017a/Member/rock/Mission3]]
*結果 [#b7db843a]
結果は中身の入っていない缶3つを積み上げたため3+6+9で18点...
実際に動かした動画はこちら[[misson3動画>https://www.youtu...
*感想 [#xf0c38b9]
今回のmission3では多くの失敗を繰り返した。ロボットを作る...
しかし、多くの時間をかけたため完成した時の喜びは大きかっ...
ロボティクスを通じて自ら研究・探求する力を身に付けること...
~
~
~
訪問者合計&counter;
ページ名: