·É˼¿¨¶ûÖÇÄܳµ´óÈü¼¼Êõ±¨¸æ ÏÂÔØ±¾ÎÄ

ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2026/7/10 19:48:22ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£

5.3.3

»ñÈ¡ÈüµÀÐÅÏ¢£»Í¨¹ý¶Ô×ó¶ªÏß»¹ÊÇÓÒ¶ªÏßÀ´Åбð³µÌ寫ÀëÖÐÐÄÏߵijÌ

¶È¡£

uchar RightLostCnt,LeftLostCnt; void Getline2 (uchar *a) {

uchar i;

uchar LeftLostFlog=1,RightLostFlog=1; for(i=2;i<124;i++) {

if(abs(a[i]-a[i+2])>Threshold) {

if(abs(a[i-1]-a[i+3])&&abs(a[i-2]-a[i+4])) {

if(a[i]

LeftPot=i+1; LeftLostFlog=0; LeftLostCnt=0; }

if(a[i]>a[i+2]) {

RightPot=i+1; RightLostFlog=0; RightLostCnt=0; } } } }

if((LeftLostFlog==0)&&(RightLostFlog==0))

21

RaceFlog=NotLost; else if(LeftLostFlog==0) {

RightLostCnt++; RaceFlog=RightLost; }

else if(RightLostFlog==0) {

LeftLostCnt++; RaceFlog=LeftLost; } else

RaceFlog=AllLost;

5.4תÏò¿ØÖƲßÂÔ;

תÏò¿ØÖÆÐźŵÄÔ´ÊäÈë¿ØÖÆÐźÅÔ´×ÔCPU¶Ô±àÂëÆ÷ÐÅÏ¢ºÍ´«¸ÐÆ÷CCDÐÅÏ¢¾­¹ýһϵPID¼ÆËã·Ö±ð¶Ôµç»ú¿ØÖÆÄ£¿éÊä³öµ±Ç°Ð¡³µ×´Ì¬ÏÂÈüµÀ¶Ôµç»úÔËתµÄÒªÇó¡£ ÌáÈ¡ÈüµÀÐÅÏ¢:

float Direction_P; float Direction_D;

float DirectionError0,DirectionError1,DirectionDiff; //0µ±Ç°²îÖµ£¬1ÉϴβîÖµ int DirectionOut;

void DirectionControl1(void) {

float fP,fD;

float BorderCom;//¶ªÏß²¹³¥Á¿

22

float BorderError;//¶ªÏ߯«²î //È¡ÖÐÏ߯«²î

if(RaceFlog==NotLost) {

Centerpot=(LeftPot+RightPot)/2; DirectionError0=Centerpot-LineCenter; }

else if (RaceFlog==RightLost) {

BorderError=LeftPot;

BorderCom=BorderError_p1*BorderError*BorderError*BorderError +BorderError_p2*BorderError*BorderError Centerpot = (LeftPot +127+BorderCom)/2; DirectionError0 = Centerpot -LineCenter; }

else if (RaceFlog==LeftLost) {

BorderError=127-RightPot;

BorderCom=BorderError_p1*BorderError*BorderError*BorderError +BorderError_p2*BorderError*BorderError +BorderError_p3*BorderError+BorderError_p4;; Centerpot = (RightPot - BorderCom)/2; DirectionError0 = Centerpot-LineCenter; } else {

DirectionError0=DirectionError1; } //λÖÃʽpid

DirectionDiff=DirectionError0-DirectionError1

23

DirectionError1 = DirectionError0; DirectionOut = fP +fD; //½Ç¶ÈÏÞÖÆÔÚ-290~290 if(DirectionOut>290) DirectionOut=290; if(DirectionOut<-290) DirectionOut=-290; //¶æ»úת½Ç

ServoAction(DirectionOut); }

5.5ËÙ¶È¿ØÖƲßÂÔ

ʵ¼ÊÉÏÊǶԵç»úÇý¶¯Ä£¿éµÄ¿ØÖÆÍ¨¹ý±àÂëÆ÷½«µ±Ç°Ð¡³µµÄËÙ¶ÈÖµ·´À¡»ØÀ´£¬´Ó¶øÐγɿØÖƱջ·£¬ÀûÓÃPIDÖÆÆ÷ÅäºÏ²»¸ß£¬¶ø¶ÔËٶȵı仯ËÙ¶ÈÒªÇóºÜËùÒÔÔÚ¿ØÖƵĹý³ÌÖе±ËٶȺÍÉýËٶȲî±ðºÜ´óµÄʱºòÓÃang-Bang¿ØÖÆ´Ó¶ø¿ÉÒÔѸËÙ´ïµ½É趨ËÙ¶ÈÖÜΧ£¬È»ºóÔÙͨ¹ýPID¿ØÖÆÆ½ÎÈ¿ØÖÆËÙ¶È´ïµ½É趨ֵ¡£ÔÚʵÔËÐе±ÖУ¬PµÄÔö´ó¿ÉÒÔ¼Ó¿ìÉÏÉýʱ¼ä£¬Ê¹µ÷½Ú¸ü¿ì£¬µ«»áÒýÆð½Ï´óÕðµ´£¬¶øÔö¼Ó

D¿ÉÒÔ¼õÉÙÕðµ´»áÊÇÉÏÉýÖ®Îȶ¨µÄʱ¼ä¼Ó³¤£¬ÓÉÓÚ³µÔÚÔËÐйý³ÌÖÐÊôÓÚ´ó¹ßÐÔϵͳ£¬µ÷ÕûPDµÄʱºòÓÅÏȵ÷ÕûÔÚ´ïµ½ÊʺϵÄʱ¼äÖ®ºóÔÙÈ¥µ÷ÕûDʹËٶȱ仯ƽÎÈ¡£

Ëٶȸø¶¨²ßÂÔ»ù±¾Ë¼ÏëÊ·ÈëÍä¼õËÙ£¬³öÍä¼ÓËÙ£¬ÔÚÇúÂʲ»±äµÄÈüµÀÉÏÈçÖ±µÀ£¬´óµÄ»·ÐÎÍ䣬ʮ×ÖÍäÉ϶¼¼ÓËÙͨ¹ý¡£Í¬Ê±ÉèÖÃ×î¿ì×îÂýËÙ¶ÈãÐÖµ±£Ö¤ÄÜ˳ÀûÈëÍä²»»á³å³öÈüµÀ¡£³ÌÐòÒ»¿ªÊ¼Ð¡³µÐèÒª¾²Ö¹ÔÚ¹ìµÀÉÏÁ½Ã룬ȻºóѸËÙ¼ÓËÙ´ïµ½É趨ËÙ¶È£¬È»ºó½øÈëÐÐÊ»½×¶Î£¬ÔÚÐÐÊ»½×¶Î°´ÕÕËÙ¶È¿ØÖƲßÂÔ¾¡Á¿×öµ½¼ÓËÙɲ³µ¿ìËÙ£¬±ä»¯¹ý³ÌƽÎÈûÓÐÕðµ´£¬É趨һ¸öËٶȱ仯µÄãÐÖµ£¬±ÜÃâËٶȾçÁұ仯£¬ãÐÖµµÄÔö¼Ó¶ÔÓÚС³µµÄÊÊÓ¦ÐÔÓÐÓ°Ï죬ËùÁ¿±ÜÃâÏÞÖÆµÄ¹ý½ô¡£

24

×ܽá

6.1Ч¹û:

Æô¶¯ºó£¬Òº¾§ÏÔʾģ¿é¸÷Ïî²ÎÊýÏÔʾÕý³££¬ÆðÅܺóÄÜ˳Àûͨ¹ý´óСÍäµÀÖ±µÀ¡£À¶ÑÀÄ£¿éÄÜÕý³£´«Ë͸÷Ïî²ÎÊýµ½ÉÏλ»ú¡£

6.2Óöµ½µÄÎÊÌâºÍ½â¾ö°ì·¨:

6.2.1»úе°²×°ÉÏ

ÓÉÓÚ¶æ»ú°²×°¹ý³ÌºÍ¶æ»ú±¾ÉíµÄÔ­Òò£¬ÔÚ½ÃÕýǰÂÖ³õʼ°ÚÕý¹ý³ÌÖÐδÄÜ´ïµ½ÀíÏëÒªÇó¡£½â¾ö°ì·¨:Êʵ±µ÷ÕûÀ­¸ËµÄ³¤¶ÈºÍ¶æ»ú±ÛËø¶¨ÂÝË¿µÄλÖá£Õâ¸ö¾ÍÒªÂýÂýµÄµ÷ÕûÁË¡£

6.2.2·½°¸ÎÊÌâ: (1)ʱÐòÎÊÌâ:

²É¼¯ÓõÄÊÇÀ¶ÖæµÄ20msÆØ¹â×ÔÊÊÓ¦³ÌÐò£¬µ«ÊÇÉÔ΢°µ»·¾³ÏÂÉÏλ»úÏÔʾµçѹÒÀÈ»ºÜµÍ¡£Ò²ÐíÊÇÎÒÃÇûÓÐÁìÂÔµ½ËûµÄ¾«»ªËùÔÚ°É£¬ÍíÉϲ»Äܵ÷³µ¡£µ±¹âÏߺÜÇ¿µÄÇé¿öÏ£¬ÒÀÈ»µ÷²»Á˳µ¡­¡­ ¾­¹ýһϵÁе÷Õû²ÎÊý£¬Ð޸ijÌÐò£¬×îÖÕÈ·¶¨·½°¸ÈçÏÂ:

5msÆØ¹â£¬Êý¾Ý²É¼¯£¬Â˲¨£¬¶¯Ì¬ãÐÖµ¶þÖµ»¯£¬È¥³ýÔëµã£¬¸ù¾Ý»ñÈ¡µ½µÄÈüµÀÐÅÏ¢£¬Åж¨¶ªÏßÇé¿ö¡£

¸ù¾Ý¶ªÏßµãÊýµÄ¶àÉÙ½øÐв¹¹âÁ¿µÄ¼ÆËã²¢½øÐжæ»ú°Ú½ÇµÄ¿ØÖÆÊä³ö¡£ (2)¶Ô»·¾³¹âÇ¿ÀµÐÔºÜÇ¿µÄÎÊÌâÈõ

¶¯Ì¬ãÐÖµ¶þÖµ»¯¿ÉÒÔÓÐЧ½â¾ö¡±×ÔÊÊÓ¦ÆØ¹â¡±ÒÀÈ»Óеݵ¹âÏ£¬Êä³öµçƽÒÀÈ»ºÜµÍµÄÎÊÌâ¡£

25