2019a/Member/yuichiro/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2019a/Member]]
目次
#contents
*課題3 [#pae9cfc7]
-赤と青のボールを運搬し、所定の容器の中に入れる。
**フィールドの説明 [#jae1939e]
-フィールドは課題2で使用した紙を使用する。
-生協のお弁当の四角いプラ容器2つをそれぞれ円内に置き、片...
-残りの2個の玉は課題2と同じ位置に置く。その際、ゴムタイヤ...
-プラ容器には色をつけたり文字や記号を書いてもよい。
-プラ容器は両面テープ等でフィールドに固定してもよい。
-2枚の紙の境界にはそれぞれ幅1cm、合計2cmの黒線を描いても...
#ref(ruuto3.png)
**基本ルール [#y68f3f41]
-競技時間は審判が続行不能と判断するまで、あるいはリタイア...
-図のA地点または(および)A'地点からスタートする。ただし...
-開始の合図から5秒以内にスタートボタンを押す作業を完了す...
-競技が終了するまで、ロボットに触ったり人間が遠隔で操作し...
-途中でうまく動かなくなった場合、1回限り再スタートするこ...
-競技終了後、ロボットが、ゴールのプラ容器に触れていてはい...
-競技終了後、もともと玉が入っていたプラ容器が、のプラ容器...
**基本得点の計算方法 [#n44bde02]
-プラ容器内の玉を1個運べば8点。二つとも運べば20点。
-地点とL'地点の玉をどちらか1個運べば4点、2個とも運べば12...
-競技終了後、ゴールのプラ容器が完全に円から出しまった場合...
-競技終了後、ゴールのプラ容器の半分以上が円から出ていれば...
-競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
-競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
-競技終了後、ゴールのプラ容器にロボットが触れていれば、も...
-技術点の計算方法
-以下の動作の精度・スピード・確実性などを含めた技術的な工...
-得点の目安:
**得点の目安: [#r4fe0d10]
--玉を探し取りにいくまでの動作 (3点)
--玉を掴む動作 (3点)
--玉をを運ぶ動作 (2点)
--玉を容器の中に入れる動作 (2点)
--2台のRIS、NXT、EV3の連携の良さ(2点)
--自立型のロボットとしての形や動作の美しさ、斬新さ(2点)
--その他 (3点)
*作戦 [#fa46dfb5]
**ルート [#q3d32318]
自分たちは容器内のボールで点数を獲得しようとした。そのた...
#ref(ruuto.png)
**ロボットの説明 [#y4d65ed4]
比較的大型のロボットであるので多少カーブが苦手になるが四...
#ref(image1.jpeg)
まず、手前にあるアームの開いた部分で容器をつかめるように...
#ref(image5a.jpg)
ここで問題となったことはアームが重く簡単に持ち上がらない...
#ref(image2.jpeg)
最後に集めたボールを少ない手間で別の容器に移すため、ボー...
#ref(image4a.jpg)
*プログラム [#l451e791]
マスター側にラインセンサーと車輪のためのモーター2つ、スレ...
このメリットとしてアーム動作と車体移動を明確に分けること...
**マクロ [#tcfdf134]
***マスター側(マクロ) [#h7caa456]
#define CONN 1
#define on1 1
#define on2 2
#define on3 3
#define zenshin OnFwd(OUT_BC,60); //前進
#define koushin OnFwd(OUT_BC,-60); //後進
#define migi OnFwd(OUT_B,-70);OnFwd(OUT_C,40); //右回転
#define hidari OnFwd(OUT_B,40);OnFwd(OUT_C,-70); //左回転
#define mi OnFwd(OUT_C,40);Off(OUT_B);//右に進む
#define hi OnFwd(OUT_B,40);Off(OUT_C); //左に進む
#define tomaru Off(OUT_BC); //ストップ
long A=0;//コーナーで止まる時間を計測する変数
long B=0;//ライントレースしている時間を計測する変数
***スレーブ側(マクロ) [#j77a0f02]
#define on1 1
#define on2 2
#define on3 3
#define tomaru Off(OUT_AB);Wait(100);//ストップ
**サブルーチン [#q86bcd04]
void re_stop_corner(){
SetSensorLight(S1);
while(A<400){//角のタイマーが400になると繰り返し終わり
if(SENSOR_1>40){
hi;//白の時左へ
A=0;//角のタイマーをリセット
B=B+1;ライントレース時間追加
}else{
mi;//黒の時右へ
A=A+1;//角のタイマーに1追加
B=B+1;
}
}
tomaru;//停止
Wait(1000);
B=0;
}//コーナーで止まるライントレース(ラ...
void re_cross_line(){
SetSensorLight(S1);
if(SENSOR_1>40){
hi;//白の時左へ
B=B+1;
}else{
mi;//黒の時右へ
B=B+1;
}
}//コーナーを直進するライント...
**メインプログラム [#sfbeb843]
***マスター側(メイン) [#fa98ff6e]
task main()
{
SetSensorLight(S1);
while(B<8000){//ライントレースをしている時間をはかるタイ...
re_cross_line();//ライントレース、交差点渡る
}
while(B>=8000){//8000以上の時
re_stop_corner();
}//ライントレース、交差点止まる
tomaru;
Wait(500);
koushin;
Wait(1600);
mi;
Wait(300);
zenshin;
Wait(1300);
migi;
Wait(1300);
tomaru;
Wait(100);
koushin;
Wait(300);
tomaru;
Wait(100);
zenshin;
Wait(300);
tomaru;
Wait(100);//容器をつかむ位置に移動するための動作
(アームが移動中に容器に当たらないようアームは上に上げた...
SendRemoteNumber(CONN,MAILBOX1,on2);//スレーブにアームを...
Wait(18000);
zenshin;//容器の前まで移動
Wait(300);
tomaru;
Wait(100);
SendRemoteNumber(CONN,MAILBOX1,on1); //容器をつかむ、...
Wait(30000);
OnFwd(OUT_B,50);OnFwd(OUT_C,-80);
Wait(400);
tomaru;
Wait(100);
koushin;
Wait(1500);
tomaru;
Wait(100);//空の容器に回収部分のボール出口が来るよう...
SendRemoteNumber(CONN,MAILBOX1,on3);//ボールを止めて...
Wait(1000);
tomaru;
Wait(100);
}
***スレーブ側(メイン) [#k32b6765]
task main()
{
int msg1;
int msg2;
while(1){
ReceiveRemoteNumber(MAILBOX1,true,msg1);
if(msg1==on1){
OnFwd(OUT_B,50);
Wait(1500);//容器をつかむ
tomaru;
OnFwd(OUT_A,-100);アームをあげる
Wait(20000);//
OnFwd(OUT_A,100);
Wait(20000);//アームを下げる
tomaru;
OnFwd(OUT_B,-50);
Wait(1500);//容器を放す
tomaru;
msg1=100;//msg1に1,2,3以外の値を代入し、ifの外へ
}
if(msg1==on3){
OnFwd(OUT_C,-30);
Wait(200);//蓋を開ける動作
msg1=100;
}
if(msg1==on2){
OnFwd(OUT_A,100);
Wait(20000);//アームを下げる動作
msg1=100;
}
}
}
*考察 [#f8eac18f]
ロボコン本番であと少しで計画通りボールが回収できそうとい...
容器内のボールしか拾えないロボットとなってしまったが容器...
問題点は、上でも少し触れたがアームの重量にある。容器をつ...
今回のロボティクス入門ゼミでロボットとプログラミングをさ...
終了行:
[[2019a/Member]]
目次
#contents
*課題3 [#pae9cfc7]
-赤と青のボールを運搬し、所定の容器の中に入れる。
**フィールドの説明 [#jae1939e]
-フィールドは課題2で使用した紙を使用する。
-生協のお弁当の四角いプラ容器2つをそれぞれ円内に置き、片...
-残りの2個の玉は課題2と同じ位置に置く。その際、ゴムタイヤ...
-プラ容器には色をつけたり文字や記号を書いてもよい。
-プラ容器は両面テープ等でフィールドに固定してもよい。
-2枚の紙の境界にはそれぞれ幅1cm、合計2cmの黒線を描いても...
#ref(ruuto3.png)
**基本ルール [#y68f3f41]
-競技時間は審判が続行不能と判断するまで、あるいはリタイア...
-図のA地点または(および)A'地点からスタートする。ただし...
-開始の合図から5秒以内にスタートボタンを押す作業を完了す...
-競技が終了するまで、ロボットに触ったり人間が遠隔で操作し...
-途中でうまく動かなくなった場合、1回限り再スタートするこ...
-競技終了後、ロボットが、ゴールのプラ容器に触れていてはい...
-競技終了後、もともと玉が入っていたプラ容器が、のプラ容器...
**基本得点の計算方法 [#n44bde02]
-プラ容器内の玉を1個運べば8点。二つとも運べば20点。
-地点とL'地点の玉をどちらか1個運べば4点、2個とも運べば12...
-競技終了後、ゴールのプラ容器が完全に円から出しまった場合...
-競技終了後、ゴールのプラ容器の半分以上が円から出ていれば...
-競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
-競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
-競技終了後、ゴールのプラ容器にロボットが触れていれば、も...
-技術点の計算方法
-以下の動作の精度・スピード・確実性などを含めた技術的な工...
-得点の目安:
**得点の目安: [#r4fe0d10]
--玉を探し取りにいくまでの動作 (3点)
--玉を掴む動作 (3点)
--玉をを運ぶ動作 (2点)
--玉を容器の中に入れる動作 (2点)
--2台のRIS、NXT、EV3の連携の良さ(2点)
--自立型のロボットとしての形や動作の美しさ、斬新さ(2点)
--その他 (3点)
*作戦 [#fa46dfb5]
**ルート [#q3d32318]
自分たちは容器内のボールで点数を獲得しようとした。そのた...
#ref(ruuto.png)
**ロボットの説明 [#y4d65ed4]
比較的大型のロボットであるので多少カーブが苦手になるが四...
#ref(image1.jpeg)
まず、手前にあるアームの開いた部分で容器をつかめるように...
#ref(image5a.jpg)
ここで問題となったことはアームが重く簡単に持ち上がらない...
#ref(image2.jpeg)
最後に集めたボールを少ない手間で別の容器に移すため、ボー...
#ref(image4a.jpg)
*プログラム [#l451e791]
マスター側にラインセンサーと車輪のためのモーター2つ、スレ...
このメリットとしてアーム動作と車体移動を明確に分けること...
**マクロ [#tcfdf134]
***マスター側(マクロ) [#h7caa456]
#define CONN 1
#define on1 1
#define on2 2
#define on3 3
#define zenshin OnFwd(OUT_BC,60); //前進
#define koushin OnFwd(OUT_BC,-60); //後進
#define migi OnFwd(OUT_B,-70);OnFwd(OUT_C,40); //右回転
#define hidari OnFwd(OUT_B,40);OnFwd(OUT_C,-70); //左回転
#define mi OnFwd(OUT_C,40);Off(OUT_B);//右に進む
#define hi OnFwd(OUT_B,40);Off(OUT_C); //左に進む
#define tomaru Off(OUT_BC); //ストップ
long A=0;//コーナーで止まる時間を計測する変数
long B=0;//ライントレースしている時間を計測する変数
***スレーブ側(マクロ) [#j77a0f02]
#define on1 1
#define on2 2
#define on3 3
#define tomaru Off(OUT_AB);Wait(100);//ストップ
**サブルーチン [#q86bcd04]
void re_stop_corner(){
SetSensorLight(S1);
while(A<400){//角のタイマーが400になると繰り返し終わり
if(SENSOR_1>40){
hi;//白の時左へ
A=0;//角のタイマーをリセット
B=B+1;ライントレース時間追加
}else{
mi;//黒の時右へ
A=A+1;//角のタイマーに1追加
B=B+1;
}
}
tomaru;//停止
Wait(1000);
B=0;
}//コーナーで止まるライントレース(ラ...
void re_cross_line(){
SetSensorLight(S1);
if(SENSOR_1>40){
hi;//白の時左へ
B=B+1;
}else{
mi;//黒の時右へ
B=B+1;
}
}//コーナーを直進するライント...
**メインプログラム [#sfbeb843]
***マスター側(メイン) [#fa98ff6e]
task main()
{
SetSensorLight(S1);
while(B<8000){//ライントレースをしている時間をはかるタイ...
re_cross_line();//ライントレース、交差点渡る
}
while(B>=8000){//8000以上の時
re_stop_corner();
}//ライントレース、交差点止まる
tomaru;
Wait(500);
koushin;
Wait(1600);
mi;
Wait(300);
zenshin;
Wait(1300);
migi;
Wait(1300);
tomaru;
Wait(100);
koushin;
Wait(300);
tomaru;
Wait(100);
zenshin;
Wait(300);
tomaru;
Wait(100);//容器をつかむ位置に移動するための動作
(アームが移動中に容器に当たらないようアームは上に上げた...
SendRemoteNumber(CONN,MAILBOX1,on2);//スレーブにアームを...
Wait(18000);
zenshin;//容器の前まで移動
Wait(300);
tomaru;
Wait(100);
SendRemoteNumber(CONN,MAILBOX1,on1); //容器をつかむ、...
Wait(30000);
OnFwd(OUT_B,50);OnFwd(OUT_C,-80);
Wait(400);
tomaru;
Wait(100);
koushin;
Wait(1500);
tomaru;
Wait(100);//空の容器に回収部分のボール出口が来るよう...
SendRemoteNumber(CONN,MAILBOX1,on3);//ボールを止めて...
Wait(1000);
tomaru;
Wait(100);
}
***スレーブ側(メイン) [#k32b6765]
task main()
{
int msg1;
int msg2;
while(1){
ReceiveRemoteNumber(MAILBOX1,true,msg1);
if(msg1==on1){
OnFwd(OUT_B,50);
Wait(1500);//容器をつかむ
tomaru;
OnFwd(OUT_A,-100);アームをあげる
Wait(20000);//
OnFwd(OUT_A,100);
Wait(20000);//アームを下げる
tomaru;
OnFwd(OUT_B,-50);
Wait(1500);//容器を放す
tomaru;
msg1=100;//msg1に1,2,3以外の値を代入し、ifの外へ
}
if(msg1==on3){
OnFwd(OUT_C,-30);
Wait(200);//蓋を開ける動作
msg1=100;
}
if(msg1==on2){
OnFwd(OUT_A,100);
Wait(20000);//アームを下げる動作
msg1=100;
}
}
}
*考察 [#f8eac18f]
ロボコン本番であと少しで計画通りボールが回収できそうとい...
容器内のボールしか拾えないロボットとなってしまったが容器...
問題点は、上でも少し触れたがアームの重量にある。容器をつ...
今回のロボティクス入門ゼミでロボットとプログラミングをさ...
ページ名: