- 追加された行はこの色です。
- 削除された行はこの色です。
[[2016a/Member]]
#contents
*はじめに [#i20cfcd5]
**課題の説明 [#ee601fc1]
***課題:紙コップを運ぶロボット~ [#f14151ac]
[[課題2:http://yakushi.shinshu-u.ac.jp/robotics/?2016a%2FMission2]]で作成したコースを用いてタイムレースを行う。~
***ルール [#k23ce22c]
-基本ルール~
◦紙コップをC地点、D地点にそれぞれ3個(合計6個)置き、C地点に置いた紙コップにはCを、D地点に置いた紙コップにはDを紙コップの底面にマークする~
◦紙コップは上下どちらにおいてもかまわない~
◦2台のロボットの場合はA地点とB地点からスタート、一体型の場合はA地点とB地点のいずれかからスタートする~
◦最終的に黒線で囲まれた輪の中にC地点からの紙コップとD地点からの紙コップを交互に重ねる (下側から数えて奇数番目はC地点からのコップ、偶数番目はD地点からのコップになるようにする)~
◦紙コップを重ねる場所は、必ずしも目的地点の輪の中でなくてもかまわない~
◦最終的に紙コップが自力で立っていること、またロボットが紙コップに触れていないこと、ただしスタート時と上下逆になっていてもかまわない~
◦競技時間はすべてのコップを重ね終わるまで、あるいは審判が続行不能と判断するまで。~
◦審判の合図の後、5秒以内にロボットをスタートさせ、それ以降はロボットや紙コップに触ってはいけない~
◦EV3のチームはA,B,Cにそれぞれマークした紙コップをそれぞれ3個置く~
◦EV3のチームはA,B,C,Dのどこからスタートしてもよいが、別の地点にある合計9個の紙コップを運ぶこと~
◦紙コップに色を塗ったり文字や絵をかいてもよいが、穴を開けたり故意に変形させてはいけない~
◦光センサは2セット合わせて2つまで使って良い、その他のセンサや部品はキットに含まれているものだけを使用すること~
#br
-基本得点の計算方法~
◦1段目の紙コップ3点、2段目の紙コップ6点、・・、n段目のコップ3n点、6段目のコップ18点~
◦奇数段目にあるDのコップと偶数段目にあるCのコップは0点~
◦EV3は1段目のAのカップ2点、2段目のBのカップ4点、3段目のCのカップ6点、4段目のAのカップ8点、5段目のBのカップ10点、6段目のCのカップ12点、7段目のAのカップ14点、8段目のBのカップ16点、9段目のCのカップ18点、それ以外は0点~
#br
-技術点の計算方法~
以下の動作の精度・スピード・確実性などを含めた技術的な工夫や芸術性について他の全てのチームが20点満点で採点し、その平均点を求める。 得点の目安: ~
◦スタートしてから紙コップの地点まで移動する速さ、正確さ (2点)~
◦紙コップをつかむ動作 (3点)~
◦紙コップをゴールまで運ぶ動作の速さ、正確さ (2点)~
◦紙コップを重ねる動作 (3点)~
◦2台のロボットの連携の良さ (3点)~
◦自立型のロボットとしての形や動作の美しさ、斬新さ (3点)~
◦ロボコン出場ロボットとしての完成度 (2点)~
◦その他 (2点)~
RIGHT:([[2016年度前期 課題3:http://yakushi.shinshu-u.ac.jp/robotics/?2016a%2FMission3]]より)~
*ロボットの説明 [#m356b69c]
これが今回使ったロボットの機体である。~
&ref(1470979350384.png);~
センサは光センサと超音波センサを搭載した。~
2台のロボットを1台にまとめ、Bluetoothを使って通信している。~
*プログラムの説明 [#rba5f8ab]
**構想 [#g0c11928]
最初は、アームが紙コップを全て重ねて運べるので、スタート地点(A地点)からライントレースを始め、P、Sの交差点を通りC地点へ行き紙コップを掴み半回転してD地点へライントレースをし紙コップを掴み半回転をし、またC地点へ…と繰り返し、全ての紙コップを掴みSからQへ行きゴールする、というのを目標としていた。
最初は、アームが紙コップを全て重ねて運べるので、スタート地点(A地点)からライントレースを始め、P、Sの交差点を通りC地点へ行き紙コップを掴み半回転してD地点へライントレースをし紙コップを掴み半回転をし、またC地点へ…と繰り返し、全ての紙コップを掴みSからQへ行きゴールする、というのを目標としていた。しかし、車体の幅が広く、前回の課題(課題2)で使ったライントレースでは交差点でうまく曲がれなかった。そして一番問題だったのがロボットの重さである。機体を安定させようとしたせいなのか上部分が重くなってしまい、タイヤに負荷がかかってしまった。そのせいで、カーブになると動かなくなってしまった。
**最終的なプログラム [#x6f56e71]
最終的に紙コップを1個運ぶことを目標とし、ライントレースをあきらめた。~
以下が今回使用した最終的なプログラムの全体である。~
***マスター [#e84a6122]
***スレーブ [#z91a344f]
#define SIGNALON 21 //腕を動かすためにマスターがスレーブに送る信号
#define SIGNALOFF 22 //腕を動かし終わったことをスレーブがマスターに送る信号
#define LIFT_up OnRev(OUT_C,35);Wait(520);Off(OUT_BC); //腕を上げる
#define LIFT_down OnFwd(OUT_C,20);Wait(550);Off(OUT_BC); //腕を下ろす
#define CATCH OnFwd(OUT_B,60);Wait(2000);Off(OUT_B); //紙コップを持つ
#define RELEASE OnFwd(OUT_B,50);Wait(1500);Off(OUT_B); //紙コップを離す
#define CONN 0 //マスターとつながっている
#define SIGNALON2 31
#define SIGNALOFF2 32
void ude() //サブルーチン
{
LIFT_down;
CATCH;
LIFT_up;
CATCH;
Off(OUT_B);
}
task main ()
{
int msg;
while (true) {
ReceiveRemoteNumber(MAILBOX1,true,msg); //msgを受けている間
if (msg == SIGNALON) { //信号を受け取ったら紙コップを持ち上げる
ude();
SendResponseNumber(MAILBOX2,SIGNALOFF); //本体に次の行動をするように信号を送る
} if (msg == SIGNALON2) { //信号を受け取ったら紙コップを離す
RELEASE;
SendResponseNumber(MAILBOX2,SIGNALOFF2); //本体に次の行動をするように信号を送る
} else { //どちらでもなかったら動かない
Off(OUT_BC);
}
}
}
*結果 [#h6f0fcc6]
基本点は0点、技術点は2点で合計2点だった。~
*反省・感想 [#s443f617]
機体が重くなってしまい、また幅がかなり広くなってしまっていたのでライントレースがまともにできなくなってしまった。うまく機体の軽量化と幅の改善ができるか、それでも動くようなライントレースのプログラムを書ければよかったのだが、時間と技術力が足りず最初の構想から大きく変更せざるを得なくなってしまった。アームの機構は他のグループには無くオリジナリティがあり、その上6個の紙コップを全て運べるポテンシャルがあったにもかかわらず、それが生かせなかったのが残念だった。