- Äɲ䵤줿¹Ô¤Ï¤³¤Î¿§¤Ç¤¹¡£
- ºï½ü¤µ¤ì¤¿¹Ô¤Ï¤³¤Î¿§¤Ç¤¹¡£
[[2016a/Member]]
#contents
*¤Ï¤¸¤á¤Ë [#db5768ef]
º£²ó¤Î²ÝÂê¤Ï²¼¤Î¿Þ¤Î¤è¤¦¤Ê¥³¡¼¥¹¤ò³Æ¥Á¡¼¥à¤ÇºîÀ®¤·¡¢¥ß¥Ã¥·¥ç¥ó¤ò¿ë¹Ô¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£
#ref(2016a-mission2.png)
¤Ê¤ª¡¢º£²ó¤Î»ä¤Î¥ß¥Ã¥·¥ç¥ó¤Ï
BÃÏÅÀ¤«¤éCÃÏÅÀ¤Ø
(BÃÏÅÀ ¢ª R±¦ÀÞ ¢ª Qľ¿Ê ¢ª Qľ¿Ê ¢ªP±¦ÀÞ ¢ª S±¦ÀÞ ¢ª CÃÏÅÀ)
¤Ç¤¢¤ë¡£([[2016ǯÅÙÁ°´ü ²ÝÂê2:http://yakushi.shinshu-u.ac.jp/robotics/?2016a%2FMission2]]°úÍÑ)
*¥í¥Ü¥Ã¥È¤ÎÀâÌÀ [#dcc4ff80]
¥¥Ã¥È¤ËÉÕ°¤·¤Æ¤¤¤¿ÀâÌÀ½ñ¤ËºÜ¤Ã¤Æ¤¤¤¿¤è¤¦¤Ë¡¢¸÷¥»¥ó¥µ¤ò¼è¤êÉÕ¤±¤Þ¤·¤¿¡£
#ref(robo3.jpg)
¤Ê¤ª¡¢¤è¤êÀµ³Î¤Ê¬Ä꤬½ÐÍè¤ë¤è¤¦¡¢¾²¤È¤Îµ÷Î¥¤ò½Ì¤á¤ë¤è¤¦¤Ë¤·¤Þ¤·¤¿¡£
#ref(robo4.jpg)
*¥×¥í¥°¥é¥à [#h080aa93]
float GetAngle(float d)
{
**float·¿´Ø¿ô¥×¥í¥°¥é¥à [#i7675aa0]
Á°²ó¤Î¡ÖÅÅÃÓ»ÄÎ̤ˤè¤Ã¤Æ¥â¡¼¥¿¡¼¤Î²óž®ÅÙ¤¬ÃÙ¤¯¤Ê¤ë¡×¤³¤È¤ÎÂкö¤È¤·¤Æ([[2016a/Member/ngtrz/Mission1:http://yakushi.shinshu-u.ac.jp/robotics/?2016a%2FMember%2Fngtrz%2FMission1]]»²¾È)¡¢
º£²ó¤Ï¿Ê¤ß¤¿¤¤µ÷Î¥¤«¤é¥¿¥¤¥ä¤Î²óž³Ñ¤ò·×»»¤¹¤ëfloat·¿¤Î´Ø¿ô¤ò»È¤Ã¤¿¥×¥í¥°¥é¥à¤òÍѤ¤¤Þ¤·¤¿¡£
float GetAngle(float d) /* d¤Ë¤Ï¿Ê¤ß¤¿¤¤µ÷Î¥¤¬Æþ¤ë */
{
const float diameter=5.45; //¥¿¥¤¥ä¤Îľ·Â(Ñ)
const float pi=3.1415; //±ß¼þΨ(¦Ð)
float ang =d/(diameter*pi)*360.0; //³ÑÅÙ¤ò·×»»¤¹¤ë
return ang; //³ÑÅÙ¤òÊÖ¤¹¡¡
}
#define Ninety GetAngle(16.5)
***90¡ë²óž [#w1d6ee16]
±¦Àޤξì¹ç¡¢90¡ë²óž¤¬É¬ÍפȤʤê¤Þ¤¹¡£
¥¿¥¤¥ä¤È¥¿¥¤¥ä¤ÎŤµ(¥¿¥¤¥ä¤¬ÉÁ¤¯±ß¤ÎȾ·Âr)¤¬10.5ѤǤ¢¤ë¤Î¤Ç¡¢¤³¤ì¤ò¸µ¤Ëfloat·¿¤Î´Ø¿ô¤òÍøÍѤ·¤Æ¥¿¥¤¥ä¤Îé¤ë±ß¼þ¤ÎŤµ( L = 2¦Ðrx / 360 ) (x:³ÑÅÙ) ¤òµá¤á¤Þ¤¹¡£
90¡ë²óž¤¹¤ë¾ì¹ç¤Î¥¿¥¤¥ä¤Îé¤ë±ß¼þ¤ÎŤµ¤Ï
L¡ád¡á2¡ß3.1415¡ß10.5¡ß90/360¢â16.5Ñ
¤¿¤À¤·¡¢º£²ó»ä¤Ï¥¿¥¤¥ä¤ò¤É¤Á¤é¤âÆ°¤«¤·¤Æ±¦Àû²ó¤µ¤»¤è¤¦¤È¤·¤Æ¤¤¤Æ¡¢16.5cm¤Ç¤ä¤ë¤È180¡ë²óž¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¤Î¤Ç¡¢È¾Ê¬¤Î8.25cm¤Ë¤·¤Þ¤·¤¿¡£
¤³¤ì¤è¤ê¡¢90¡ë²óž¤òÄêµÁ¤·¤Þ¤·¤¿¡£
#define Ninety GetAngle(8.25)
***2cm¿Ê¤à [#e3d3987b]
¸òº¹ÅÀ¤òľ¿Ê¤¹¤ëºÝ¡¢2cm¿Ê¤à¤³¤È(Àþ¤ÎÂÀ¤µ¤¬Ìó2cm¤Ç¤¢¤ë¤¿¤á)¤¬É¬ÍפȤʤê¤Þ¤¹¡£
¤³¤Î¾ì¹ç¤ÏÉáÄ̤Ë
d¡á2
¤Ç¤Ç¤¤Þ¤¹¡£
¤³¤ì¤è¤ê¡¢2cm¿Ê¤à¤³¤È¤òÄêµÁ¤·¤Þ¤·¤¿¡£
#define Two GetAngle(2)
#define Usetsu RotateMotorEx(OUT_BC,50,Ninety,100,true,false);
#define Tyokushin RotateMotorEx(OUT_BC,50,Two,0,true,true);
#define SHIKIICHI 45
#define OnRL(b,c) OnFwd(OUT_B,b);OnFwd(OUT_C,c);
#define go_forward OnRL(50,50);
#define turn_left1 OnRL(25,-25); // º¸Àû²ó
#define turn_left0 OnRL(25,0); // º¸ÀÞ
#define turn_right0 OnRL(0,25); // ±¦ÀÞ
#define turn_right1 OnRL(-25,25); // ±¦Àû²ó
#define nMAX 120
#define Sound PlaySound(SOUND_UP);Off(OUT_BC);Wait(2000); //¸òº¹ÅÀ¤Ç²»¤òÌĤ餹
int t=0; //¸òº¹ÅÀ¤òÄ̤俲ó¿ô
sub L_susumu() //¹õÀþ¤Îº¸Â¦¤ò¿Ê¤à
**ÄêµÁ [#je60c3f9]
Àè¤Û¤É¤Î¡Ö90¡ë²óž¡×¡¢¡Ö2cm¿Ê¤à¡×ÄêµÁ¤ò¸µ¤Ë¡¢¡Ö¸òº¹ÅÀ±¦Àޡפȡָòº¹ÅÀľ¿Ê¡×¤òÄêµÁ¤·¤Þ¤·¤¿¡£
#define usetsu RotateMotorEx(OUT_BC,50,Ninety,100,true,false); //¸òº¹ÅÀ±¦ÀÞ(¥â¡¼¥¿B¤ÈC¤ò50%¤Î¥¹¥Ô¡¼¥É¤ÇƱ´ü¤µ¤»¤º90ÅÙÁ°Å¾)
#define tyokushin RotateMotorEx(OUT_BC,50,Two,0,true,true); //¸òº¹ÅÀľ¿Ê(¥â¡¼¥¿B¤ÈC¤ò50%¤Î¥¹¥Ô¡¼¥É¤ÇƱ´ü¤µ¤»¤Æ2cmʬÁ°Å¾)
¤µ¤é¤Ë¡¢¥é¥¤¥ó¥È¥ì¡¼¥¹¤ËɬÍפʤ³¤È¤ÎÄêµÁ¤ò¤·¤Þ¤·¤¿¡£
#define OnRL(b,c) OnFwd(OUT_B,b);OnFwd(OUT_C,c); //¥¿¥¤¥äB¤òb¡ó¡¢¥¿¥¤¥äC¤òc¡ó¤Î¥¹¥Ô¡¼¥É¤Ç¤½¤ì¤¾¤ì¿Ê¤Þ¤»¤ë(¡Ü:Á°¿Ê¡¢¡Ý:¸å¿Ê)
#define go_forward OnRL(30,30); //Á°¿Ê
#define turn_left1 OnRL(15,-15); //º¸Àû²ó
#define turn_left0 OnRL(15,0); //º¸ÀÞ
#define turn_right0 OnRL(0,15); //±¦ÀÞ
#define turn_right1 OnRL(-15,15); //±¦Àû²ó
**¥é¥¤¥ó¾åÁö¹Ô¡¦¸òº¹ÅÀǧ¼±¥µ¥Ö¥ë¡¼¥Á¥ó [#i41302c1]
»ä¤Ï¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¤µ¤»¤ëºÝ¡¢¸÷¥»¥ó¥µ¤¬¹õÀþ¤Èº¸Â¦¤ÎÇò¤¤Éôʬ¤Î¶³¦¾å¤òÆ°¤¯¤è¤¦¤Ë¤·¤Þ¤·¤¿¡£
¸÷¥»¥ó¥µ¤¬Çò¤¤Éôʬ¤Ë¤µ¤·¤«¤«¤Ã¤¿¤é¹õÀþ¦¤Ø¡¢¹õ¤¤Éôʬ¤Ë¤µ¤·¤«¤«¤Ã¤¿¤éÇò¤¤Êý¤Ø¸þ¤«¤¦¤è¤¦¤Ë¥«¡¼¥Ö¤µ¤»¤Þ¤·¤¿¡£
¤Þ¤º¥é¥¤¥ó¾å¤òÁö¹Ô¤¹¤ë¤¿¤á¤Ë¹õ¤¤Àþ¤Î¼þ°Ï¤ÎÌÀ¤ë¤µ¤ò¥»¥ó¥µ¡¼¤Ç¤Ï¤«¤ê¡¢¤·¤¤¤Ãͤò·èÄꤷ¤Þ¤·¤¿¡£
#ref(Line.png)
¼ÂºÝ¬¤ë¤È¾å¿Þ¤Î¤è¤¦¤Ë¤Ê¤Ã¤¿¤Î¤Ç¡¢¤·¤¤¤Ãͤò44¤ËÀßÄê¡¢ÄêµÁ¤·¤Þ¤·¤¿¡£
#define THRESHOLD 44
¤½¤Î¸å¡¢¡Þ¤ÎÈϰϤòÄ´À°¤¹¤ë¤³¤È¤Ë¤è¤Ã¤ÆÀþ¾å¤Ç¸ÞÃʳ¬¤ÎÌÀ¤ë¤µ¤òǧÃΤ¹¤ë¤è¤¦¤Ë¤µ¤»¡¢°Å¤¤½ç¤Ëº¸Àû²ó¡¢º¸ÀÞ¡¢Ä¾¿Ê¡¢±¦ÀÞ¡¢±¦Àû²ó¤ò¹Ô¤¦¤è¤¦¤Ë¤·¤Þ¤·¤¿¡£
¤Ê¤ª¡¢¸òº¹ÅÀǧ¼±¤Ë¤Ä¤¤¤Æ¤Ï¡¢¾åµ¤Î¸ÞÃʳ¬Ç§¼±¤Î¤¦¤Á¡Ö¤â¤Ã¤È¤â¹õ¤¤¡×»þ¤¬nMAX²ó³¤¤¤¿¤È¤¤Ë¸òº¹ÅÀ¤Èǧ¼±¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤·¤¿¡£
»î¹Ôºø¸í¤ò½Å¤Í¤Æ¤¤¤Ã¤¿·ë²Ì¡¢nMAX¡á160¤¬ÂÅÅö¤Ç¤·¤¿¤Î¤ÇÄêµÁ¤·¤Þ¤·¤¿¡£
#define nMAX 160
¤³¤³¤Ç¤Þ¤¿Á°²ó¤ÎÈ¿¾Ê¤òƧ¤Þ¤¨¡¢¥µ¥Ö¥ë¡¼¥Á¥ó¤òÍѤ¤¤Þ¤·¤¿¡£
sub Line_toresu() //¥é¥¤¥ó¾åÁö¹Ô¥µ¥Ö¥ë¡¼¥Á¥ó
{
SetSensorLight(S3);
int n=0;
while (n < nMAX) {
if (SENSOR_3 < SHIKIICHI-15) {
turn_left1
n++;
t=t+1;
} else {
if (SENSOR_3 < SHIKIICHI-7) {
turn_left0
} else if (SENSOR_3 < SHIKIICHI+7) {
go_forward
} else if (SENSOR_3 < SHIKIICHI+15) {
turn_right0
} else {
turn_right1
}
n=0;
}
Wait(1000);
SetSensorLight(S3);
int n=0; //³¤±¤Æ¹õ¤Ë¤Ê¤Ã¤¿²ó¿ô
while (n <= nMAX) {
/* ¹õ¤ò³¤±¤ÆnMAX²ó·«¤êÊÖ¤µ¤Ê¤±¤ì¤ÐÄ̾ï¤Î¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¤¹¤ë */
if (SENSOR_3 < THRESHOLD-15) {
turn_left1
n++; //²ó¿ô¤òÁý¤ä¤¹¡¢¸òº¹ÅÀǧ¼±
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_left0
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward
} else if (SENSOR_3 < THRESHOLD+15) {
turn_right0
} else {
turn_right1
}
n=0; //²ó¿ô¥ê¥»¥Ã¥È
}
}
Off(OUT_BC);
Wait(1000); // ¸òº¹ÅÀǧ¼±¤·¤¿¤é1ÉôֻߤޤäÆ
PlaySound(SOUND_UP); //¥Ô¥í¥Ô¥í¡Á¤È²»¤ò½Ð¤¹
Wait(2000);
}
**¸òº¹ÅÀǧ¼±¸å¤Î¹ÔÆ°¥µ¥Ö¥ë¡¼¥Á¥ó [#md370fd2]
¸òº¹ÅÀǧ¼±¸å¡¢¡Ö±¦Àޡס¢¡Öľ¿Ê¡×¤Î£²¥Ñ¥¿¡¼¥ó¤ÎÆ°ºî¤ò¤·¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¤Î¤Ç¡¢¼¡¤Î¤è¤¦¤Ë¥µ¥Ö¥ë¡¼¥Á¥ó¤òºî¤ê¤Þ¤·¤¿¡£
sub Usetsu() //±¦ÀÞ¥µ¥Ö¥ë¡¼¥Á¥ó
{
OnFwd(OUT_BC,30);
Wait(650);
Off(OUT_BC); //±¦ÀÞ¸å¤Ë¥é¥¤¥ó¤ÈÇò¤¤Éôʬ¤Î¶³¦¤Ë¤¤¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤ÎÄ´À°
usetsu; //±¦ÀÞ
Off(OUT_B);
Off(OUT_C);
}
sub R_susumu() //¹õÀþ¤Î±¦Â¦¤ò¿Ê¤à
sub Tyokushin() //ľ¿Ê¥µ¥Ö¥ë¡¼¥Á¥ó
{
SetSensorLight(S3);
int n=0;
while (n < nMAX) {
if (SENSOR_3 < SHIKIICHI-15) {
turn_right1
n++;
t=t+1;
} else {
if (SENSOR_3 < SHIKIICHI-7) {
turn_right0
} else if (SENSOR_3 < SHIKIICHI+7) {
go_forward
} else if (SENSOR_3 < SHIKIICHI+15) {
turn_left0
} else {
turn_left1
}
n=0;
}
Wait(1000);
}
tyokushin; //ľ¿Ê
Off(OUT_BC);
}
**¥é¥¤¥ó¥È¥ì¡¼¥¹¥×¥í¥°¥é¥à [#nd5fefc0]
µÞ¥«¡¼¥ÖÃÏÅÀ¤Ë´Ø¤·¤Æ¤Ï¡¢¤Ç¤¤ë¸Â¤ê´Ë¤á¤Ë¤Ê¤ë¤è¤¦¥«¡¼¥Ö¤Î³°Â¦¤Î¶³¦¤òÁö¤ë¤è¤¦¤Ë¤·¤Þ¤·¤¿¡£
task main()
{
SetSensorLight(S3);
int n=0;
while (t <= 6) {
if(t <= 1){
L_susumu();
Sound
Tyokushin //¥¹¥¿¡¼¥ÈÃÏÅÀ¤Ïľ¿Ê
n=0;
} else if (t <= 2){
Sound
Usetsu
n=0;
Off(OUT_BC);
OnFwd(OUT_B,50);
Wait(200);
Off(OUT_B); //1¤ÄÌܤθòº¹ÅÀ¤ò±¦À޸塢¹õÀþ¤Î±¦Â¦¤ò¿Ê¤à¤¿¤á°ÌÃÖÊÑ
R_susumu();
} else if (t <= 3){
Sound
Tyokushin
n=0;
Off(OUT_BC);
OnFwd(OUT_C,50);
Wait(200);
Off(OUT_C); //2¤ÄÌܤθòº¹ÅÀ¤òľ¿Ê¸å¡¢¹õÀþ¤Îº¸Â¦¤ò¿Ê¤à¤¿¤á°ÌÃÖÊÑ
L_susumu();
} else if (t <= 4){
Sound
Tyokushin //3¤ÄÌܤθòº¹ÅÀ¤Ïľ¿Ê
n=0;
L_susumu();
} else {
Sound
Usetsu //4,5¤ÄÌܤθòº¹ÅÀ¤Ï±¦ÀÞ
n=0;
L_susumu();
}
}
/* ¥é¥¤¥ó¤Îº¸Â¦¶³¦¤ò¿Ê¤à */
OnFwd(OUT_BC,50);
Wait(3000);
Off(OUT_BC);
Wait(200);
Off(OUT_BC); //¥¹¥¿¡¼¥È¾ì½ê¤«¤é¤ÎÁ°¿Ê
Line_toresu();
Usetsu(); //R±¦ÀÞ
OnFwd(OUT_C,50);
Wait(100);
Off(OUT_C);
OnFwd(OUT_B,50);
Wait(75);
Off(OUT_B); //Àè¤Ë¤¢¤ëµÞ¥«¡¼¥Ö¤òÂн褹¤ë¤¿¤á¡¢¥é¥¤¥ó¤Î±¦Â¦¶³¦¤Ø°ÜÆ°
/* ¥é¥¤¥ó¤Î±¦Â¦¶³¦¤ò¿Ê¤à */
Line_toresu();
Tyokushin(); //Qľ¿Ê
OnFwd(OUT_B,50);
Wait(100);
Off(OUT_B);
OnFwd(OUT_C,50);
Wait(75);
Off(OUT_C); //Àè¤Ë¤¢¤ëµÞ¥«¡¼¥Ö¤òÂн褹¤ë¤¿¤á¡¢¥é¥¤¥ó¤Îº¸Â¦¶³¦¤Ø°ÜÆ°
/* ¥é¥¤¥ó¤Îº¸Â¦¶³¦¤ò¿Ê¤à */
Line_toresu();
Tyokushin(); //Qľ¿Ê
Line_toresu();
Usetsu(); //P±¦ÀÞ
Line_toresu();
Usetsu(); //S±¦ÀÞ
Line_toresu();
OnFwd(OUT_BC,50);
Wait(500);
Off(OUT_BC); //¥´¡¼¥ë¾ì½ê¤ØÆͤÃÀÚ¤ë
}
*´¶ÁÛ¡¦¹Í»¡ [#r903969b]