wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

標題: 兩輪自平衡小車的制作過程 含源碼 [打印本頁]

作者: 51黑專家    時間: 2016-5-8 19:39
標題: 兩輪自平衡小車的制作過程 含源碼


兩輪自平衡小車全部的制作資料下載:
自平衡小車程序.7z (305.54 KB, 下載次數(shù): 254)



調(diào)試記錄:
2016.12.2
        完成基本角度閉環(huán)程序,基本調(diào)節(jié)出角度的PD,
        富民發(fā)現(xiàn)直立可能需要位置閉環(huán)+角度閉環(huán)+速度閉環(huán)。

2016.12.3 pm 13:00
        完成基本速度閉環(huán)和位置閉環(huán)程序,基本可以按照設定方向前進,
        只是中途的PID參數(shù)沒有調(diào)節(jié)好有停頓現(xiàn)象,開始藍牙控制模式。

2016.12.3 pm 14:43
        完成基本的前進 后退藍牙控制功能,就是有些時候出現(xiàn)過沖停頓。
        下一步進行轉(zhuǎn)彎控制程序的抒寫。

2016.12.3 pm 16:55
         完成基本控制功能,前進、后退、原地左轉(zhuǎn)、原地右轉(zhuǎn)、使用簡單
         的藍牙指令控制,0x01前進、0x02后退、 0x03原地左轉(zhuǎn)、 0x04原
         地右轉(zhuǎn)、0x00什么保持直立狀態(tài),下一步進行直立調(diào)節(jié),優(yōu)化靜止
         時的狀態(tài)。

2016.12.5 pm 13:50
        加入了手機APP藍牙控制 出現(xiàn)問題 抖動過大多次控制容易出現(xiàn)死機
        現(xiàn)象,需要繼續(xù)直立PID調(diào)節(jié)參數(shù)。

2016.12.22 pm 17:49
        加入了 模糊控制 參數(shù)調(diào)節(jié)的還算可以,只調(diào)節(jié)了直立參數(shù) 速度閉環(huán)
        和位置閉環(huán)參數(shù)還沒有調(diào)節(jié)等待明天調(diào)節(jié)。

2016.12.31 am 11:13
        所有功能都已完畢。直立、壁障、循跡、藍牙遙控、由于循跡采用雙線
        導致有些時候不穩(wěn)定、不知道是機械愿意還是軟件原因?qū)е轮绷㈧o止時
        有些抖動。基本可以完成所有多需任務。




這個是去年做的一個兩輪自平衡循跡小車,小車采用兩片STM32,一塊負責圖像處理,另一塊負責對電機的控制。兩塊板子之間使用串口通信傳輸數(shù)據(jù)。
做這個車子學會了很多,最初兩塊板子之間串口通信有問題,程序會跑著跑著就跑飛,很是惱火。之后每次需要串口通信才打開中斷,解決了跑飛的問題。
以下是車子的圖片,和源碼。

主程序下面是部分程序預覽(完整版本請下載本帖附件):
  1. #include "System_init.h"

  2. /*特別注意:flag變量 不可以更改 否則無法直立*/
  3. extern u8 flag;

  4. /**********主函數(shù)**********/                                                                                   
  5. int main(void)
  6. {
  7.         system_init();         //整體系統(tǒng)初始化函數(shù)
  8.                 temp_data11 = 80;
  9.         for(;;)
  10.         {
  11.       /*
  12.           函數(shù)說明:
  13.           upright_Adjust函數(shù)。
  14.           功能:直立控制。
  15.           參數(shù)個數(shù):3個。
  16.           1)P參數(shù)。
  17.           2)I參數(shù)。
  18.           3)D參數(shù)。
  19.           此函數(shù)是用于直立的函數(shù)P是PID中的比例參數(shù)
  20.           D是PID的微分參數(shù)、直立不用I積分參數(shù)。
  21.           */
  22.           /*
  23.           函數(shù)說明:
  24.           speed_control函數(shù)。
  25.           功能:藍牙控制函數(shù)。
  26.           參數(shù)個數(shù):3個。
  27.           1)串口采集參數(shù)(不需要更改、放著就可以)
  28.           2)速度控制參數(shù)(可以更改最大40最小10)
  29.           3)轉(zhuǎn)角速度控制參數(shù)(可修改,最大40最小10)
  30.           */
  31.                              SpeedL(3500);
  32.         SpeedR(3500);
  33.           if(1 == flag)
  34.           {
  35.                                    
  36.            //upright_Adjust(400.0,0.0,25.0);                            //9.5



  37.            /*特別注意:flag變量 不可以更改 否則無法直立*/
  38.            flag = 0;
  39.           }
  40.         }
  41. }



復制代碼
以stm32f103rct6為例
測試串口通信數(shù)據(jù)
MPU數(shù)據(jù)進行處理
檢測X軸加速度,Y軸角速度
參考網(wǎng)上例程
mpu6050.c文件:
  1. #include "MPU6050.h"
  2. #include "System_init.h"

  3. void I2C_Congiguration(void)
  4. {

  5.   GPIO_InitTypeDef  GPIO_InitStructure;
  6.   I2C_InitTypeDef  I2C_InitStructure;

  7.         /* 使能?I22C1 有關的時鐘 */
  8.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
  9.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2,ENABLE);  
  10.    
  11.   /* PB6-I2C2_SCL、PB7-I2C2_SDA*/
  12.   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_10 | GPIO_Pin_11;
  13.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  14.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;               // 開漏輸出
  15.   GPIO_Init(GPIOB, &GPIO_InitStructure);
  16.         
  17.   /* I2C 配置 */
  18.   I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
  19.   I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
  20.   I2C_InitStructure.I2C_OwnAddress1 = I2C2_MPU6050;
  21.   I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
  22.   I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
  23.   I2C_InitStructure.I2C_ClockSpeed = I2C_Speed;
  24. /* 使I2C1 */
  25.   I2C_Cmd(I2C2, ENABLE);

  26.   /* I2C2 初始化 */
  27.   I2C_Init(I2C2, &I2C_InitStructure);

  28.         /*允許1字節(jié)1應答模式*/
  29.         I2C_AcknowledgeConfig(I2C2, ENABLE);   
  30.         
  31.         
  32. }


  33. void MPU6050_Init(void)
  34. {
  35.         delay_ms(100);
  36.         I2C_WriteByte(PWR_MGMT_1,0x00);
  37.         delay_ms(10);
  38.         I2C_WriteByte(SMPLRT_DIV,0x07);
  39.         delay_ms(10);
  40.         I2C_WriteByte(CONFIG,0x06);
  41.         delay_ms(10);
  42.          I2C_WriteByte(GYRO_CONFIG,0x18);
  43.         delay_ms(10);
  44.          I2C_WriteByte(ACCEL_CONFIG,0x01);
  45.         delay_ms(1000);

  46. }

  47. void I2C_WriteByte(uint8_t REG_Address, uint8_t Write_Data)
  48. {
  49.         while(I2C_GetFlagStatus(I2C2, I2C_FLAG_BUSY)); // Added by Najoua 27/08/2008
  50.   /* Send STRAT condition */
  51.   I2C_GenerateSTART(I2C2, ENABLE);

  52.   /* Test on EV5 and clear it */
  53.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));  

  54.   /* Send EEPROM address for write */
  55.   I2C_Send7bitAddress(I2C2, I2C2_MPU6050, I2C_Direction_Transmitter);
  56.   
  57.   /* Test on EV6 and clear it */
  58.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
  59.       
  60.   /* Send the EEPROM's internal address to write to */
  61.   I2C_SendData(I2C2, REG_Address);
  62.   
  63.   /* Test on EV8 and clear it */
  64.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED));

  65.   /* Send the byte to be written */
  66.   I2C_SendData(I2C2, Write_Data);
  67.    
  68.   /* Test on EV8 and clear it */
  69.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
  70.   
  71.   /* Send STOP condition */
  72.   I2C_GenerateSTOP(I2C2, ENABLE);
  73.         I2C_WaitEepromStandbyState();

  74. }

  75. uint8_t I2C_ReadByte(uint8_t REG_Address)
  76. {
  77.         uint8_t data_byte;
  78.   //*((u8 *)0x4001080c) |=0x80;
  79.   while(I2C_GetFlagStatus(I2C2, I2C_FLAG_BUSY)); // Added by Najoua 27/08/2008
  80.    
  81.    
  82.   /* Send START condition */
  83.   I2C_GenerateSTART(I2C2, ENABLE);
  84.   //*((u8 *)0x4001080c) &=~0x80;
  85.   
  86.   /* Test on EV5 and clear it */
  87.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));

  88.   /* Send EEPROM address for write */
  89.   I2C_Send7bitAddress(I2C2, I2C2_MPU6050, I2C_Direction_Transmitter);

  90.   /* Test on EV6 and clear it */
  91.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
  92.   
  93.   /* Clear EV6 by setting again the PE bit */
  94.   I2C_Cmd(I2C2, ENABLE);

  95.   /* Send the EEPROM's internal address to write to */
  96.   I2C_SendData(I2C2, REG_Address);  

  97.   /* Test on EV8 and clear it */
  98.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
  99.   
  100.   /* Send STRAT condition a second time */  
  101.   I2C_GenerateSTART(I2C2, ENABLE);
  102.   
  103.   /* Test on EV5 and clear it */
  104.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));
  105.   
  106.   /* Send EEPROM address for read */
  107.   I2C_Send7bitAddress(I2C2, I2C2_MPU6050, I2C_Direction_Receiver);
  108.   
  109.   /* Test on EV6 and clear it */
  110.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));
  111.   
  112.   /* While there is data to be read */
  113.        /* Disable Acknowledgement */
  114.       I2C_AcknowledgeConfig(I2C2, DISABLE);
  115.       
  116.       /* Send STOP Condition */
  117.       I2C_GenerateSTOP(I2C2, ENABLE);

  118.     /* Test on EV7 and clear it */
  119.     if(I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_RECEIVED))      
  120.       /* Read a byte from the EEPROM */
  121.       data_byte = I2C_ReceiveData(I2C2);


  122.   /* Enable Acknowledgement to be ready for another reception */
  123.   I2C_AcknowledgeConfig(I2C2, ENABLE);
  124.         //I2C_EE_WaitEepromStandbyState();
  125.         return data_byte;
  126. }

  127. void I2C_ReadBuffer(uint8_t* Data_Buffer, uint8_t REG_Address, uint8_t Num_Byte)
  128. {  
  129.   //*((u8 *)0x4001080c) |=0x80;
  130.   while(I2C_GetFlagStatus(I2C2, I2C_FLAG_BUSY)); // Added by Najoua 27/08/2008
  131.    
  132.    
  133.   /* Send START condition */
  134.   I2C_GenerateSTART(I2C2, ENABLE);
  135.   //*((u8 *)0x4001080c) &=~0x80;
  136.   
  137.   /* Test on EV5 and clear it */
  138.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));

  139.   /* Send EEPROM address for write */
  140.   I2C_Send7bitAddress(I2C2, I2C2_MPU6050, I2C_Direction_Transmitter);

  141.   /* Test on EV6 and clear it */
  142.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
  143.   
  144.   /* Clear EV6 by setting again the PE bit */
  145.   I2C_Cmd(I2C2, ENABLE);

  146.   /* Send the EEPROM's internal address to write to */
  147.   I2C_SendData(I2C2, REG_Address);  

  148.   /* Test on EV8 and clear it */
  149.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
  150.   
  151.   /* Send STRAT condition a second time */  
  152.   I2C_GenerateSTART(I2C2, ENABLE);
  153.   
  154.   /* Test on EV5 and clear it */
  155.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));
  156.   
  157.   /* Send EEPROM address for read */
  158.   I2C_Send7bitAddress(I2C2, I2C2_MPU6050, I2C_Direction_Receiver);
  159.   
  160.   /* Test on EV6 and clear it */
  161.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));
  162.   
  163.   /* While there is data to be read */
  164.   while(Num_Byte)  
  165.   {
  166.     if(Num_Byte == 1)
  167.     {
  168.       /* Disable Acknowledgement */
  169.       I2C_AcknowledgeConfig(I2C2, DISABLE);
  170.       
  171.       /* Send STOP Condition */
  172.       I2C_GenerateSTOP(I2C2, ENABLE);
  173.     }

  174.     /* Test on EV7 and clear it */
  175.     if(I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_RECEIVED))  
  176.     {      
  177.       /* Read a byte from the EEPROM */
  178.       *Data_Buffer = I2C_ReceiveData(I2C2);

  179.       /* Point to the next location where the byte read will be saved */
  180.       Data_Buffer++;
  181.       
  182.       /* Decrement the read bytes counter */
  183.       Num_Byte--;        
  184.     }   
  185.   }

  186.   /* Enable Acknowledgement to be ready for another reception */
  187.   I2C_AcknowledgeConfig(I2C2, ENABLE);
  188.         //I2C_EE_WaitEepromStandbyState();
  189. }







  190. void I2C_WaitEepromStandbyState(void)      
  191. {
  192.   vu16 SR1_Tmp = 0;

  193.   do
  194.   {
  195.     /* Send START condition */
  196.     I2C_GenerateSTART(I2C2, ENABLE);
  197.     /* Read I2C2 SR1 register */
  198.     SR1_Tmp = I2C_ReadRegister(I2C2, I2C_Register_SR1);
  199.     /* Send EEPROM address for write */
  200.     I2C_Send7bitAddress(I2C2, I2C2_MPU6050, I2C_Direction_Transmitter);
  201.   }while(!(I2C_ReadRegister(I2C2, I2C_Register_SR1) & 0x0002));
  202.   
  203.   /* Clear AF flag */
  204.   I2C_ClearFlag(I2C2, I2C_FLAG_AF);
  205.     /* STOP condition */   
  206.     I2C_GenerateSTOP(I2C2, ENABLE); // Added by Najoua 27/08/2008
  207. }
復制代碼
pazzy.c文件:
  1. #include "pazzy.h"
  2. #include "System_init.h"

  3. #define FMAX    100       /*語言值的滿幅值*/
  4. //角度值
  5. int PFF[4]={0,8,16,24};
  6. /*輸入量D語言值特征點*/
  7. // 角速度
  8. int DFF[4]={0,16,45,80};
  9. /*輸出量U語言值特征點*/
  10. int UFF[7]={0,12,30};
  11. /*采用了調(diào)整因子的規(guī)則表,大誤差時偏重誤差,小誤差時偏重誤差變化*/
  12. /*a0=0.3,a1=0.55,a2=0.74,a3=0.89   */
  13. int rule[7][7]={
  14. //誤差變化率 -3,-2,-1, 0, 1, 2, 3             // 誤差
  15.                 { 2, 2, 2, 2, 2, 1, 1,},          //   -3
  16.                 { 2, 1, 1, 1, 1, 1, 2,},          //   -2
  17.                 { 2, 1, 0, 0, 0, 0, 0,},          //   -1
  18.             { 2, 2, 2, 2, 2, 2, 2,},          //    0
  19.                 { 0, 0, 0, 0, 0, 1, 2,},          //    1
  20.                 { 0, 1, 1, 1, 1, 1, 2,},          //    2
  21.                 { 1, 1, 2, 2, 2, 2, 2}};          //    3           //    3

  22. /**********************************************************/
  23. float Fuzzy(float P,float D)   /*模糊運算引擎*/
  24. {
  25.         float    U;           /*偏差,偏差微分以及輸出值的精確量*/
  26.         float   PF[2],DF[2],UF[4];   /*偏差,偏差微分以及輸出值的隸屬度*/
  27.         int    Pn,Dn,Un[4];
  28.         double   temp1,temp2;
  29.         /*隸屬度的確定*/
  30.         /*根據(jù)PD的指定語言值獲得有效隸屬度*/
  31.         if(P>-PFF[3] && P<pff[3])
  32.         {
  33.                 if(P<=-PFF[2])
  34.                 {
  35.                         Pn=-2;
  36.                         PF[0]=FMAX*((float)(-PFF[2]-P)/(PFF[3]-PFF[2]));
  37.                 }
  38.                 else if(P<=-PFF[1])
  39.                 {
  40.                         Pn=-1;
  41.                         PF[0]=FMAX*((float)(-PFF[1]-P)/(PFF[2]-PFF[1]));
  42.                 }
  43.                 else if(P<=PFF[0])
  44.                 {
  45.                         Pn=0;
  46.                         PF[0]=FMAX*((float)(-PFF[0]-P)/(PFF[1]-PFF[0]));
  47.                 }
  48.                 else if(P<=PFF[1])
  49.                 {
  50.                         Pn=1; PF[0]=FMAX*((float)(PFF[1]-P)/(PFF[1]-PFF[0]));
  51.                 }
  52.                 else if(P<=PFF[2])
  53.                 {
  54.                         Pn=2; PF[0]=FMAX*((float)(PFF[2]-P)/(PFF[2]-PFF[1]));
  55.                 }
  56.                 else if(P<=PFF[3])
  57.                 {
  58.                         Pn=3; PF[0]= FMAX*((float)(PFF[3]-P)/(PFF[3]-PFF[2]));
  59.                 }
  60.         }
  61.         else if(P<=-PFF[3])
  62.         {
  63.                 Pn=-2;   PF[0]=FMAX;
  64.         }
  65.         else if(P>=PFF[3])
  66.         {
  67.                 Pn=3;   PF[0]=0;
  68.         }
  69.         PF[1]=FMAX-PF[0];




  70.         if(D>-DFF[3] && D<dff[3])
  71.         {
  72.                 if(D<=-DFF[2])
  73.                 {
  74.                         Dn=-2;DF[0]=FMAX*((float)(-DFF[2]-D)/(DFF[3]-DFF[2]));
  75.                 }
  76.                 else if(D<=-DFF[1])
  77.                 {
  78.                         Dn=-1;
  79.                         DF[0]=FMAX*((float)(-DFF[1]-D)/(DFF[2]-DFF[1]));
  80.                 }
  81.                 else if(D<=DFF[0])
  82.                 {
  83.                         Dn=0;
  84.                         DF[0]=FMAX*((float)(-DFF[0]-D)/(DFF[1]-DFF[0]));
  85.                 }
  86.                 else if(D<=DFF[1])
  87.                 {
  88.                         Dn=1;
  89.                         DF[0]=FMAX*((float)(DFF[1]-D)/(DFF[1]-DFF[0]));
  90.                 }
  91.                 else if(D<=DFF[2])
  92.                 {
  93.                         Dn=2; DF[0]=FMAX*((float)(DFF[2]-D)/(DFF[2]-DFF[1]));
  94.                 }
  95.                 else if(D<=DFF[3])
  96.                 {
  97.                         Dn=3; DF[0]=FMAX*((float)(DFF[3]-D)/(DFF[3]-DFF[2]));
  98.                 }
  99.         }
  100.         else if(D<=-DFF[3])
  101.         {
  102.                 Dn=-2;
  103.                 DF[0]=FMAX;
  104.         }
  105.         else if(D>=DFF[3])
  106.         {
  107.                 Dn=3;
  108.                 DF[0]=0;
  109.         }
  110.         DF[1]=FMAX-DF[0];

  111.         /*使用誤差范圍優(yōu)化后的規(guī)則表rule[7][7]*/
  112.         /*輸出值使用13個隸屬函數(shù),中心值由UFF[7]指定*/
  113.         /*一般都是四個規(guī)則有效*/
  114.         Un[0]=rule[Pn-1+3][Dn-1+3];
  115.         Un[1]=rule[Pn+3][Dn-1+3];
  116.         Un[2]=rule[Pn-1+3][Dn+3];
  117.         Un[3]=rule[Pn+3][Dn+3];

  118.         if(PF[0]<=DF[0])
  119.         UF[0]=PF[0];
  120.         else
  121.         UF[0]=DF[0];

  122.         if(PF[1]<=DF[0])
  123.         UF[1]=PF[1];
  124.         else
  125.         UF[1]=DF[0];
  126.         if(PF[0]<=DF[1])
  127.         UF[2]=PF[0];
  128.         else
  129.         UF[2]=DF[1];
  130.         if(PF[1]<=DF[1])
  131.         UF[3]=PF[1];
  132.         else
  133.         UF[3]=DF[1];
  134.         /*同隸屬函數(shù)輸出語言值求大*/
  135.         if(Un[0]==Un[1])
  136.         {
  137.                 if(UF[0]>UF[1])
  138.                 UF[1]=0;
  139.                 else
  140.                 UF[0]=0;
  141.         }
  142.         if(Un[0]==Un[2])
  143.         {
  144.                 if(UF[0]>UF[2])
  145.                 UF[2]=0;
  146.                 else
  147.                 UF[0]=0;
  148.         }
  149.         if(Un[0]==Un[3])
  150.         {
  151.                 if(UF[0]>UF[3])
  152.                 UF[3]=0;
  153.                 else
  154.                 UF[0]=0;
  155.         }
  156.         if(Un[1]==Un[2])
  157.         {
  158.                 if(UF[1]>UF[2])
  159.                 UF[2]=0;
  160.                 else
  161.                 UF[1]=0;
  162.         }
  163.         if(Un[1]==Un[3])
  164.         {
  165.                 if(UF[1]>UF[3])
  166.                 UF[3]=0;
  167.                 else
  168.                 UF[1]=0;
  169.         }
  170.         if(Un[2]==Un[3])
  171.         {
  172.                 if(UF[2]>UF[3])
  173.                 UF[3]=0;
  174.                 else
  175.                 UF[2]=0;
  176.         }
  177.         /*重心法反模糊*/
  178.         /*Un[]原值為輸出隸屬函數(shù)標號,轉(zhuǎn)換為隸屬函數(shù)值*/
  179.         if(Un[0]>=0)
  180.         Un[0]=UFF[Un[0]];
  181.         else
  182.         Un[0]=-UFF[-Un[0]];
  183.         if(Un[1]>=0)
  184.         Un[1]=UFF[Un[1]];
  185.         else
  186.         Un[1]=-UFF[-Un[1]];
  187.         if(Un[2]>=0)
  188.         Un[2]=UFF[Un[2]];
  189.         else
  190.         Un[2]=-UFF[-Un[2]];
  191.         if(Un[3]>=0)
  192.         Un[3]=UFF[Un[3]];
  193.         else
  194.         Un[3]=-UFF[-Un[3]];

  195.         temp1=UF[0]*Un[0]+UF[1]*Un[1]+UF[2]*Un[2]+UF[3]*Un[3]; //因為選定隸屬函數(shù)為三角形,且對稱,故可以證明中心在中間的特征點上(橫坐標)。
  196.         temp2=UF[0]+UF[1]+UF[2]+UF[3];
  197.         U=temp1/temp2;

  198.         return U; //最后的輸出
  199. }
復制代碼


作者: YJGG    時間: 2016-5-27 13:34
樓主這調(diào)試怎么在未來調(diào)的
作者: 騰飛的龍    時間: 2016-6-27 12:45
樓主牛人說明很詳細,謝謝分享!
作者: liukong    時間: 2017-3-16 23:16
51黑有你更精彩
作者: tam1974    時間: 2017-4-30 16:04
樓主牛人說明很詳細,謝謝分享...
作者: hzhang    時間: 2017-5-4 17:02
謝謝樓主分享
作者: 撒旦妮亞    時間: 2017-6-1 16:39
不過后期調(diào)試有點麻煩
作者: 羅號    時間: 2017-9-5 22:29
謝謝樓主分享
作者: ylrqcn    時間: 2017-9-6 16:58
謝謝樓主分享
作者: 1156479136    時間: 2017-10-25 12:39
準備著手
作者: dxa572862121    時間: 2017-10-26 08:51
我最近也做了平衡小車
作者: 792344646    時間: 2017-12-21 21:25
樓主有沒有做過ti的tms320f28069
作者: 清之銘    時間: 2018-2-26 17:00
一直在找這個,但是黑幣不夠下載!
作者: 清之銘    時間: 2018-2-26 21:20
樓主用的用的電機是步進電機還是減速電機?
作者: 歿尛尛    時間: 2018-3-17 09:07
真心不錯,值得參考
作者: zhao1022    時間: 2018-3-27 17:28
厲害厲害
作者: 2123788100abc    時間: 2018-7-2 17:29
厲害厲害
作者: 頭好大一個    時間: 2018-10-29 15:39
感謝樓主分享啊

作者: bb8333    時間: 2018-10-29 21:01
樓主牛人!感謝分享
作者: works_nbb    時間: 2018-11-2 20:42
不錯,挺好的!!!!!
作者: xlyuan    時間: 2018-11-30 15:07
樓主技術果然高超
作者: Better——wxl    時間: 2019-8-3 11:19
不錯不錯
作者: 660022    時間: 2019-8-20 14:20
樓主技術果然高超
作者: 3078    時間: 2021-12-13 19:15
樓主謝謝分享正在學這個




歡迎光臨 (http://m.izizhuan.cn/bbs/) Powered by Discuz! X3.1
av在线一区二区| 91av在线免费| 天美一区二区三区| 免费一级黄色录像| 国产精品视频免费播放| 亚洲经典一区二区| 免费网站观看电影入口| 最新中文字幕在线观看| 天天色天天射天天综合网| **精品中文字幕一区二区三区| 国产欧美久久一区二区三区| 久久精品人人| 国产精品色哟哟| 欧美精品电影在线播放| 爱福利视频一区| 91传媒视频在线观看| 视色,视色影院,视色影库,视色网| 亚洲免费999| h色网站在线观看| www.看毛片| av先锋资源| 国产素人视频在线观看| 欧美激情极品| 视频一区在线播放| 国产精品久久久久久福利一牛影视| 欧美日韩精品综合在线| 久久91精品国产91久久跳| 99在线热播| 50路60路老熟妇啪啪| 国产精品一区二区亚洲| 亚洲黄色在线观看视频| 国产九一视频| 日本.亚洲电影| 国内自拍一区| 国产精品天天看| 亚洲电影免费观看| 国产美女被下药99| 奇米影视亚洲色图| 天堂网中文在线观看| 秋霞av鲁丝片一区二区| 最新av在线| 成人国产精品久久| 视频在线观看一区| 激情懂色av一区av二区av| 26uuu亚洲| 欧美伊人久久大香线蕉综合69| 美女久久久久久久久久久| 欧美国产综合视频| 尤物网站在线观看| av中文在线观看| 美女激情网站| 国产精品1区| 久久福利视频一区二区| 91国偷自产一区二区三区成为亚洲经典| 久久亚洲春色中文字幕| 亚洲日本理论电影| 成人免费毛片糖心| 男人女人靠逼视频| av亚洲在线| 国内精品久久久久久99蜜桃| 成人av在线看| 亚洲第一福利视频| 国产精品18毛片一区二区| 黄色片子免费看| 国产成人麻豆精品午夜在线| 调教在线观看| 免费成人三级| 91蜜桃在线观看| 亚洲欧美在线免费| 欧美一区少妇| 日本午夜精品视频| 在线永久免费观看黄网站| avtt亚洲| 你懂的一区二区| 一区二区在线观看不卡| 九色91av视频| 给我免费播放片在线观看| 伊人国产在线观看| 超污视频在线播放| 99riav视频一区二区| 美腿丝袜在线亚洲一区| 欧美日韩国产一区| 亚洲专区国产精品| 人妖粗暴刺激videos呻吟| 香蕉国产在线视频| 国产激情视频在线观看| 一区在线播放| 色婷婷激情综合| 国产美女精品视频免费观看| 欧美国产日韩在线视频 | 欧洲精品99毛片免费高清观看| 久久精品国产精品青草| 91精品麻豆日日躁夜夜躁| 高清视频一区二区三区| 国产成人无码一区二区在线观看| 亚洲国产aⅴ精品| 成人在线黄色电影| 六月婷婷色综合| 精品国产伦一区二区三区观看体验 | 奇米影视狠888| 欧美韩国亚洲| 日韩中文字幕无砖| 国产精品538一区二区在线| 欧美精品一区二区三| 日韩欧美精品在线不卡 | 中文字幕一区二区三区精品 | 亚洲性夜色噜噜噜7777| 99精品一区二区三区的区别| 欧美三级午夜理伦| 一区二区三区高清在线视频| 欧美gay男男猛男无套| 偷拍一区二区三区| 亚洲综合中文字幕在线观看| 中文字幕在线1| 黄瓜视频在线观看| 最新国产一区| 亚洲成人精品影院| 成人午夜在线视频一区| 久久国产柳州莫菁门| 狠狠色噜噜狠狠狠888奇米| 极品尤物一区| 亚洲成a人在线观看| 亚洲free性xxxx护士白浆| 波多野在线播放| 97视频在线| 成人无号精品一区二区三区| 色婷婷av一区| 欧美日韩大片一区二区三区| 国产午夜小视频| 黄色影院在线播放| 欧美一级视频| 亚洲毛片在线看| 春日野结衣av| 好男人中文字幕官网| 日日夜夜精品| 亚洲欧美精品午睡沙发| 91亚洲一区精品| 成人免费精品动漫网站| 在线黄色av| 亚洲综合二区| 在线视频日韩精品| 男生操女生视频在线观看| 久久一本精品| 色婷婷久久久| 欧美日韩免费一区二区三区| 亚洲成年人专区| 国产成人精品a视频| 欧美在线极品| 亚洲专区视频| 欧美日韩国产中字| 视频一区二区三| 真实新婚偷拍xxxxx| 不卡一本毛片| 久久久久久毛片| 国产精品久久久久影院日本| 成年人一级黄色片| 啊v在线视频| 国产不卡高清在线观看视频| 7777精品久久久久久| 久久久久久久久久久久久久久| 丁香花高清电影在线观看完整版| 性伦欧美刺激片在线观看| 综合久久五月天| 久久免费精品国产| 波多野结衣中文字幕在线| 快she精品国产999| 色综合色综合网色综合| 中文字幕一区二区三区人妻电影| 天堂男人av| 久久在线精品| 欧美人在线观看| www色com| shkd中文字幕久久在线观看| 国产麻豆成人精品| 亲爱的老师9免费观看全集电视剧| 调教驯服丰满美艳麻麻在线视频| 国产毛片av在线| 成人综合婷婷国产精品久久免费| 国产精品狠色婷| 午夜精品久久久久久久久久久久久蜜桃 | 国产精品女人久久久| 成人国产网站| 精品露脸国产偷人在视频| 亚洲综合激情五月| 翔田千里精品久久一区二| 国产尤物久久久| 日韩精品免费观看| 五十路六十路七十路熟婆| 深夜福利在线看| 99久久精品免费看国产免费软件| 超碰97国产在线| 国产成人毛毛毛片| 久久国产精品免费精品3p| 欧美一区二区视频在线观看2020 | 欧美禁忌电影网| 日韩精品一区二区视频| 91精品人妻一区二区三区蜜桃2| 久久久久久五月天久久久久久久久| 麻豆成人久久精品二区三区红| 青草成人免费视频| 青青草免费观看视频| 国产极品美女到高潮| 国产精品麻豆久久| 精品国产一区二区三区在线观看| 亚洲精品国产精品国自| 思思99re6国产在线播放| 久久精品一区二区三区不卡 | 51漫画成人app入口| 亚洲午夜电影在线| 妞干网视频在线观看| 国产精品欧美韩国日本久久| 伊人成人在线| 2019亚洲男人天堂| 久久久久久无码精品大片| 一区二区三区免费在线看| 日韩限制级电影在线观看| 男人午夜视频在线观看| 色视频在线观看福利| 久久久综合精品| 一区二区三区三区在线| 91看片免费| 日日夜夜一区二区| 91久久国产精品91久久性色| 日本精品一二区| 香蕉视频官网在线观看日本一区二区| 久久精品国产精品| 国产无遮挡aaa片爽爽| 国产精品麻豆成人av电影艾秋| 欧美一区二区三区四区视频 | 黄色免费在线观看网站| 亚洲最大成人网4388xx| 黄色一级片播放| 写真片福利在线播放| 91麻豆文化传媒在线观看| 五月天亚洲综合| 日日夜夜视频| 看电视剧不卡顿的网站| 成人高清在线观看| 国产精品第9页| 国产精区一区二区| 亚洲香蕉成视频在线观看| 福利所第一导航| 国产欧美88| 在线日韩欧美视频| 国产区一区二区三| 国产精品一区二区av交换| 欧美黑人xxxx| 国产欧美熟妇另类久久久| 久久国产电影| 6080yy精品一区二区三区| 国产视频一区二区三区四区五区| 国产精品精品| 国产精品美女999| 一本大道一区二区三区| 欧美亚洲一区| 欧美一区二区不卡视频| 男人天堂av电影| jizz亚洲女人高潮大叫| 日韩av一区在线| 免费一级片视频| 一本色道69色精品综合久久| 久久99久久久久久久噜噜| 国产又粗又黄又爽| 欧美日韩国产探花| 成人在线播放av| 国产老女人av| 国产成人h网站| 激情六月天婷婷| 深夜视频在线免费| 91久久人澡人人添人人爽欧美| 野外性满足hd| 欧美黄色网络| 日韩一区二区精品视频| 91精品国产乱码久久| 18成人免费观看视频| 国产视色精品亚洲一区二区| 82av视频| 亚洲欧美日韩人成在线播放| 亚洲乱妇老熟女爽到高潮的片 | 4438亚洲最大| 波多野结衣不卡视频| 蜜桃久久久久| 国产精品成人免费视频| 国产在线第二页| 91麻豆精东视频| 一区二区三区韩国| 77thz桃花论族在线观看| 亚洲精品美女久久| 尤物视频免费观看| 欧美+日本+国产+在线a∨观看| av成人免费观看| 男女羞羞电影免费观看| 亚洲综合激情另类小说区| 中文字幕在线免费看线人| 国产麻豆一区二区三区| 91精品国产自产91精品| 欧美性猛交xxxxbbb| 99久久婷婷国产综合精品| 天堂网在线免费观看| 欧美大片免费观看网址| 久久成人一区二区| 免费男女羞羞的视频网站中文字幕妖精视频 | 91精品视频在线免费观看| 色涩视频在线观看| 中文字幕av一区 二区| 精品人妻二区中文字幕 | 亚洲色图17p| 亚洲乱码精品久久久久..| 激情久久久久久久久久久久久久久久| av无码久久久久久不卡网站| 韩国av网站在线| 亚洲激情在线观看| 国产精品久久久久久免费| 美女mm1313爽爽久久久蜜臀| 国产女主播自拍| 成人女同在线观看| www.亚洲一区| 无国产精品白浆免费视| 国产精品国产三级国产aⅴ入口 | 欧美综合亚洲图片综合区| 久久久综合久久久| 精品69视频一区二区三区Q| 偷拍盗摄高潮叫床对白清晰| 色窝窝无码一区二区三区| 国产乱子伦视频一区二区三区 | 91精品精品| 亚洲开发第一视频在线播放| 丝袜美腿美女被狂躁在线观看| 亚洲国产另类久久精品| 国产成人精品无码高潮| 成人sese在线| 日本天堂在线播放| 老牛精品亚洲成av人片| 91成人免费视频| 伪装者免费全集在线观看| 亚洲成色777777在线观看影院| 亚洲老妇色熟女老太| 久久久国际精品| 国产一二三四五区| 亚洲电影影音先锋| 三上悠亚免费在线观看| 成年网站在线视频网站| 欧美高清在线观看| 九九在线免费视频| 色哟哟国产精品| jizz国产在线| 国产aⅴ综合色| 精品视频站长推荐| 91视频综合| 欧美美女黄色网| 国产一区一一区高清不卡| 成人黄色免费网站在线观看| 伊人永久在线| 国产视频在线一区二区| 欧美色图中文字幕| 午夜不卡av在线| 人人妻人人爽人人澡人人精品| 国产在线视视频有精品| 超碰caoprom| 欧美1区2区视频| www.日本在线播放| 疯狂欧洲av久久成人av电影| 国产伦精品一区二区三毛| 免费观看成人高潮| 久久久中精品2020中文| 成人在线看片网站| 精品国产乱码久久久久久影片| 先锋资源男人站| 亚洲国产日韩精品| 日韩免费av网站| 成人免费观看视频| 日本精品久久久久中文| 午夜一区不卡| 午夜免费福利网站| 国产精品成人一区二区不卡| 少妇高潮毛片色欲ava片| 成人影院中文字幕| 亚洲一区二区在| 日韩免费在线电影| 麻豆av一区二区三区| 亚洲优女在线| 国产91色在线|亚洲| 久久免费电影| 91精品国产综合久久香蕉922 | 午夜视黄欧洲亚洲| 国产孕妇孕交大片孕| 国产精品欧美久久久久一区二区| 黄色一级片免费看| 久久综合资源网| 精品99在线观看| 成人免费av网站| 国产高清在线免费观看| 国产凹凸在线观看一区二区| 大地资源高清在线视频观看| 国产在线观看免费一区| 制服丨自拍丨欧美丨动漫丨| 国产一区二区三区在线观看精品| 国产又粗又黄又猛| 精品一区二区免费| av黄色免费在线观看|