機(jī)器人的模糊控制是一種基于模糊邏輯理論的計(jì)算機(jī)控制方法,它通過模擬人類思維和決策過程來實(shí)現(xiàn)對機(jī)器人行為的控制。
本文中所介紹使用的競技機(jī)器人先進(jìn)模糊控制器是在FreeRTOS環(huán)境下基于XR806為項(xiàng)目主控,給機(jī)器人部署先進(jìn)模糊控制器,它通過將機(jī)器人的輸入信號轉(zhuǎn)化為模糊變量,并根據(jù)模糊規(guī)則對這些變量進(jìn)行處理,實(shí)現(xiàn)對于競技機(jī)器人的結(jié)構(gòu)控制和定位控制等功能。
項(xiàng)目介紹
開發(fā)環(huán)境使用window10+VMware+ubuntu 18.04,并基于XR806——FreeRTOS為項(xiàng)目主控,部署先進(jìn)模糊控制器,實(shí)現(xiàn)對于競技機(jī)器人的結(jié)構(gòu)控制和定位控制等。
競技機(jī)器人的無線控制器選擇上使用可以實(shí)現(xiàn)多維狀態(tài)機(jī)功能的XR806作為主控,并通過USART進(jìn)行CAN轉(zhuǎn)換來向電機(jī)發(fā)送信息,收到信息后電機(jī)驅(qū)動對機(jī)器人做出控制,此時(shí)機(jī)器人通過模糊控制器來反饋定位器、雷達(dá)等傳感器傳來的數(shù)據(jù)實(shí)現(xiàn)信息交互。
控制部署
在封裝好電機(jī)驅(qū)動電流環(huán)時(shí),實(shí)現(xiàn)對電機(jī)的控制,相當(dāng)于建立了一種繼電特性的非線性控制,此時(shí)使用繼電整定法的Z-N臨界比例度法去建立模糊域。
根據(jù)以下臨界系數(shù)表,整定求出模糊域。
模糊推理及清晰化
模糊推理的核心就是計(jì)算出E和EC的隸屬度。同時(shí)把E和EC分為多種子集情況:負(fù)最大NB,負(fù)中NM,負(fù)小NS,零ZO,正小PS,正中PM,正大PB等七種情況。然后計(jì)算E/EC種子集的隸屬度。
進(jìn)行模糊推理后,可以根據(jù)計(jì)算的隸屬度,建立模糊規(guī)則表,實(shí)現(xiàn)對輸出值的清晰化。對應(yīng)到應(yīng)用層的輸出函數(shù),實(shí)現(xiàn)控制輸出。
FOC控制及仿真效果
FOC控制邏輯
仿真效果
代碼實(shí)現(xiàn)
自動整定部分核心代碼:
void PID_AutoTune_Task(void) { if(pid.AutoRegurating_Status != START) return; /*定義臨界Tc*/ float Tc = 0.0; static int start_cnt; //記錄最大值出現(xiàn)的時(shí)間 static int end_cnt; //記錄周期結(jié)束時(shí)的時(shí)間值 static uint16_t cool_cnt = 0; static uint16_t heat_cnt = 0; // pid.Autotune_Cnt ++; //計(jì)數(shù) if((pid.Pv_position == UP) && (pid.Pv < pid.Sv)) ? ?{ ? ? ? ?cool_cnt ++; ? ? ? ?if(cool_cnt >= 3) //連續(xù)三次都越過,則說明真的越過了 { pid.Pv_position = DOWN; //標(biāo)記當(dāng)前在下方了 pid.Zero_Across_Cnt ++; //標(biāo)記穿越一次 cool_cnt = 0; } } else if((pid.Pv_position == DOWN)&&(pid.Pv > pid.Sv))//剛才在下方,現(xiàn)在在上方 { heat_cnt++; if(heat_cnt >= 3) //連續(xù)三次都越過,則說明真的越過了 { pid.Pv_position = UP; //標(biāo)記當(dāng)前在下方了 pid.Zero_Across_Cnt ++; //標(biāo)記穿越一次 heat_cnt = 0; } }
實(shí)現(xiàn)模糊控制的核心代碼:
ecFuzzy[1] = 1.0 - ecFuzzy[0]; /*********查詢模糊規(guī)則表*********/ num = KpRule[pe][pec]; KpFuzzy[num] += (eFuzzy[0]*ecFuzzy[0]); num = KpRule[pe][pec+1]; KpFuzzy[num] += (eFuzzy[0]*ecFuzzy[1]); num =KpRule[pe+1][pec]; KpFuzzy[num] += (eFuzzy[1]*ecFuzzy[0]); num = KpRule[pe+1][pec+1]; KpFuzzy[num] += (eFuzzy[1]*ecFuzzy[1]); /*********加權(quán)平均法解模糊*********/ Kp_calcu = KpFuzzy[0]*kpRule[0] +KpFuzzy[1]*kpRule[1]+ KpFuzzy[2]*kpRule[2] +KpFuzzy[3]*kpRule[3]+ KpFuzzy[4]*kpRule[4] +KpFuzzy[5]*kpRule[5]+ +KpFuzzy[6]*kpRule[6]; printf(" %f,%f,%d,%d,kp = %f ", err, errchange, pe, pec, Kp_calcu); return(Kp_calcu);
實(shí)物展示
無刷電機(jī)控制:
整體定位控制:
審核編輯:湯梓紅
-
控制器
+關(guān)注
關(guān)注
114文章
17072瀏覽量
183852 -
機(jī)器人
+關(guān)注
關(guān)注
213文章
29664瀏覽量
212468 -
電機(jī)
+關(guān)注
關(guān)注
143文章
9276瀏覽量
149125 -
FreeRTOS
+關(guān)注
關(guān)注
12文章
492瀏覽量
64159 -
xr806
+關(guān)注
關(guān)注
0文章
14瀏覽量
1455
原文標(biāo)題:XR806實(shí)現(xiàn)競技機(jī)器人先進(jìn)模糊控制器
文章出處:【微信號:gh_79acfa3aa3e3,微信公眾號:全志在線】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
使用XR806聯(lián)調(diào)控制四足馬術(shù)機(jī)器人

評論