ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 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