当前位置: 首页 > news >正文

平面设计师兼职网站企业官网网站

平面设计师兼职网站,企业官网网站,温州网站升级,武汉设计网站公司前言 很荣幸参与到由“极术社区和全志在线联合组织”举办的XR806开发板试用活动。本人热衷于各种的开发板的开发,同时更愿意将其实现到具体项目中。秉承以上原则,发现大家的重心都放在开发中的环境构建过程,缺少了不少实际应用场景的运用&am…

前言

  • 很荣幸参与到由“极术社区和全志在线联合组织”举办的XR806开发板试用活动。
  • 本人热衷于各种的开发板的开发,同时更愿意将其实现到具体项目中。
  • 秉承以上原则,发现大家的重心都放在开发中的环境构建过程,缺少了不少实际应用场景的运用,虽然环境搭建确实痛苦。本文主要使用XR806的FreeRTOS到实际的机器人控制应用中,并实现部署模糊控制器。
  • 环境搭建本文简要略写,大家可以看社区其它优秀的文章。
  • 文章中应用到的无线控制和多维状态机两个重要的开发应用,会在后面的文章中陆续更新。

使用环境

1.本人使用window10+VMware+ubuntu 18.04 这里不多阐述
2.按照官方文档移植XR806的FreeRTOS

项目介绍

基于XR806——FreeRTOS为项目主控,部署先进模糊控制器,实现对于竞技机器人的机构控制和定位控制等。

在这里插入图片描述
在这里插入图片描述

软硬件框架

在这里插入图片描述

控制部署

继电推理

在封装好电机驱动电流环时,实现对电机的控制,相当于建立了一种
继电特性的非线性控制,此时使用继电整定法的Z-N临界比例度法去建立模糊域。
根据以下临界系数表,整定求出模糊域。

控制器类型KPTnTvKiKd
P0.5*Kμ
PD0.8*Kμ0.12*TμKP*Tn
PI0.45*Kμ0.85*TμKP/Tn
PID0.6*Kμ0.5*Tμ0.12*TμKP/ TnKP*Tn

模糊推理

模糊推理的核心就是计算出E和EC的隶属度。同时把E和EC分为多种子集情况:负最大NB,负中NM,负小NS,零ZO,正小PS,正中PM,正大PB等七种情况。然后计算E/EC种子集的隶属度。

清晰化

进行模糊推理后,可以根据计算的隶属度,建立模糊规则表,实现对输出值的清晰化。对应到应用层的输出函数,实现控制输出。
例图:

在这里插入图片描述

FOC控制

在这里插入图片描述

仿真效果

在这里插入图片描述

在这里插入图片描述

代码实现

以下提供部分代码:

自动整定
void PID_AutoTune_Task(void)
{if(pid.AutoRegurating_Status != START) return;/*定义临界Tc*/float Tc = 0.0;static int start_cnt;  //记录最大值出现的时间static int end_cnt;    //记录周期结束时的时间值 static uint16_t cool_cnt = 0; static uint16_t heat_cnt = 0;//	pid.Autotune_Cnt ++; //计数if((pid.Pv_position == UP) && (pid.Pv < pid.Sv)) {cool_cnt ++;if(cool_cnt >= 3) //连续三次都越过,则说明真的越过了{pid.Pv_position = DOWN; //标记当前在下方了pid.Zero_Across_Cnt ++;	//标记穿越一次cool_cnt = 0;}}else if((pid.Pv_position == DOWN)&&(pid.Pv > pid.Sv))//刚才在下方,现在在上方{heat_cnt++;if(heat_cnt >= 3) //连续三次都越过,则说明真的越过了{pid.Pv_position = UP;   //标记当前在下方了pid.Zero_Across_Cnt ++;	//标记穿越一次heat_cnt = 0;}		}/*****************开始计算强行振荡的周期****************************/	if((pid.Zero_Across_Cnt == 2)&&(start_cnt == 0)){start_cnt = pid.Autotune_Cnt;printf("start_time = %d\r\n", start_cnt);}else if((pid.Zero_Across_Cnt == 4)&&(end_cnt == 0)){end_cnt = pid.Autotune_Cnt;printf("start_time = %d\r\n", end_cnt);}if(pid.Zero_Across_Cnt == 4){	/*计算一个震荡周期的时间*/if(start_cnt > end_cnt)Tc = (start_cnt-end_cnt)/2;  elseTc = (end_cnt-start_cnt)/2;  /*计算Kp,Ti和Td*/pid.Kp = 0.6*pid.Kp;pid.Ti = Tc*0.5;   pid.Td = Tc*0.12;  /*PID参数整定完成,将各项数据清0*/heat_cnt 	= 0;cool_cnt 	= 0;	pid.Autotune_Cnt = 0;start_cnt	= 0;end_cnt		= 0;	pid.SEk   = 0;pid.Zero_Across_Cnt 			= 0;					pid.AutoRegurating_EN 		= OFF;pid.AutoRegurating_Status = OVER; //开始运行使用新的参数后的PID算法pid.Sv   = pid.BKSv;    }
}	
模糊控制
/*模糊规则表*/
int KpRule[7][7]= {  /*NB, NM,  NS, ZO, PS, PM, PB -EC*/{1,   1,   1,  1,  1,  1,  1}, //NB 0~-10{0,   0,   0,  1,  2,  3,  4}, //NM 0~10{0,   0,   0,  1,  2,  3,  4}, //NS 10~20   {0,   0,   1,  1,  2,  3,  4}, //20~30{1,   1,   1,  1,  2,  3,  4}, //30~40{1,   1,   1,  1,  2,  3,  4}, //40 ~50{6,   6,   6,  6,  6,  6,  6}, //50~60       
};
static float fuzzy_kp(float err, float errchange) 
{                 volatile float Kp_calcu;  volatile uint8_t num,pe,pec;   volatile float eFuzzy[2]={0.0,0.0};      //隶属于误差E的隶属程度  volatile float ecFuzzy[2]={0.0,0.0};     //隶属于误差变化率EC的隶属程度  float KpFuzzy[7]={0.0,0.0,0.0,0.0,0.0,0.0,0.0}; //隶属于Kp的隶属程度  /*****误差E隶属函数描述*****/ if(err<eRule[0])         {   eFuzzy[0] =1.0;    pe = 0;  }  else if(eRule[0]<=err && err<eRule[1])  {   eFuzzy[0] = (eRule[1]-err)/(eRule[1]-eRule[0]);   pe = 0;  }  else if(eRule[1]<=err && err<eRule[2])  {   eFuzzy[0] = (eRule[2] -err)/(eRule[2]-eRule[1]);   pe = 1;  }  else if(eRule[2]<=err && err<eRule[3])  { eFuzzy[0] = (eRule[3] -err)/(eRule[3]-eRule[2]);   pe = 2;  }     else if(eRule[3]<=err && err<eRule[4])     {   eFuzzy[0] = (eRule[4]-err)/(eRule[4]-eRule[3]);         pe = 3;     }  else if(eRule[4]<=err && err<eRule[5])  {   eFuzzy[0] = (eRule[5]-err)/(eRule[5]-eRule[4]);   pe = 4;  }  else if(eRule[5]<=err && err<eRule[6])  {   eFuzzy[0] = (eRule[6]-err)/(eRule[6]-eRule[5]);   pe = 5;  }  else  {   eFuzzy[0] =	0.0;   pe =	6;  }    eFuzzy[1] =1.0 - eFuzzy[0];  /*****误差变化率EC隶属函数描述*****/       if(errchange<ecRule[0])         {   ecFuzzy[0] =1.0;   pec = 0;  }  else if(ecRule[0]<=errchange && errchange<ecRule[1])  {   ecFuzzy[0] = (ecRule[1] - errchange)/(ecRule[1]-ecRule[0]);   pec = 0 ;  }  else if(ecRule[1]<=errchange && errchange<ecRule[2])  {   ecFuzzy[0] = (ecRule[2] - errchange)/(ecRule[2]-ecRule[1]);   pec = 1;  }  else if(ecRule[2]<=errchange && errchange<ecRule[3])  {   ecFuzzy[0] = (ecRule[3] - errchange)/(ecRule[3]-ecRule[2]);   pec = 2 ;  } else if(ecRule[3]<=errchange && errchange<ecRule[4])     {   ecFuzzy[0] = (ecRule[4]-errchange)/(ecRule[4]-ecRule[3]);         pec=3;     }  else if(ecRule[4]<=errchange && errchange<ecRule[5])     {   ecFuzzy[0] = (ecRule[5]-errchange)/(ecRule[5]-ecRule[4]);         pec=4;     }  else if(ecRule[5]<=errchange && errchange<ecRule[6])     {   ecFuzzy[0] = (ecRule[6]-errchange)/(ecRule[6]-ecRule[5]);         pec=5;     }  else  {   ecFuzzy[0] =0.0;   pec = 5;  }  ecFuzzy[1] = 1.0 - ecFuzzy[0];   /*********查询模糊规则表*********/     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]); /*********加权平均法解模糊*********/    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\r\n", err, errchange, pe, pec, Kp_calcu);return(Kp_calcu); 
} 

实物展示

无刷电机控制

https://www.bilibili.com/video/BV1FN4y1C7fY/?aid=874778769&cid=1302701130&page=null

整体定位控制

https://www.bilibili.com/video/BV1NN411t7Fy/?aid=492262076&cid=1302702003&page=null

以上,就是本文分享的全部内容了,感谢各位


文章转载自:
http://postmillenarianism.wgkz.cn
http://blowmobile.wgkz.cn
http://chellean.wgkz.cn
http://eld.wgkz.cn
http://ganosis.wgkz.cn
http://eel.wgkz.cn
http://justicer.wgkz.cn
http://triceratops.wgkz.cn
http://aventurine.wgkz.cn
http://fig.wgkz.cn
http://ionian.wgkz.cn
http://antecedence.wgkz.cn
http://compensation.wgkz.cn
http://snaphaunce.wgkz.cn
http://sabbatise.wgkz.cn
http://orthognathous.wgkz.cn
http://antiauthoritarian.wgkz.cn
http://stirabout.wgkz.cn
http://antithrombotic.wgkz.cn
http://braless.wgkz.cn
http://romany.wgkz.cn
http://see.wgkz.cn
http://motet.wgkz.cn
http://unsophistication.wgkz.cn
http://hairbell.wgkz.cn
http://elias.wgkz.cn
http://jehu.wgkz.cn
http://ecce.wgkz.cn
http://triennium.wgkz.cn
http://ependyma.wgkz.cn
http://printed.wgkz.cn
http://circiter.wgkz.cn
http://oleaginous.wgkz.cn
http://prodigiouss.wgkz.cn
http://opalescence.wgkz.cn
http://crocodilian.wgkz.cn
http://rhizopodan.wgkz.cn
http://sulfamethoxypyridazine.wgkz.cn
http://planemaker.wgkz.cn
http://mediatise.wgkz.cn
http://xanthinuria.wgkz.cn
http://stomp.wgkz.cn
http://mnas.wgkz.cn
http://burse.wgkz.cn
http://blackdamp.wgkz.cn
http://caff.wgkz.cn
http://underfoot.wgkz.cn
http://initiatory.wgkz.cn
http://hymenopteran.wgkz.cn
http://voom.wgkz.cn
http://underestimation.wgkz.cn
http://recordative.wgkz.cn
http://anecdotal.wgkz.cn
http://translucency.wgkz.cn
http://rga.wgkz.cn
http://methodize.wgkz.cn
http://impose.wgkz.cn
http://deistic.wgkz.cn
http://coxalgy.wgkz.cn
http://untraveled.wgkz.cn
http://misorient.wgkz.cn
http://actable.wgkz.cn
http://rf.wgkz.cn
http://trolley.wgkz.cn
http://rawhead.wgkz.cn
http://instigate.wgkz.cn
http://kitool.wgkz.cn
http://omnificent.wgkz.cn
http://refution.wgkz.cn
http://knuckleheaded.wgkz.cn
http://aryballos.wgkz.cn
http://polyhydric.wgkz.cn
http://aubade.wgkz.cn
http://osteomalacia.wgkz.cn
http://phytotoxicant.wgkz.cn
http://linnet.wgkz.cn
http://fishfall.wgkz.cn
http://fingerboard.wgkz.cn
http://spacewalk.wgkz.cn
http://rootstalk.wgkz.cn
http://locky.wgkz.cn
http://moistureproof.wgkz.cn
http://unmanageable.wgkz.cn
http://vocalese.wgkz.cn
http://camerlingate.wgkz.cn
http://kumgang.wgkz.cn
http://certify.wgkz.cn
http://nicaea.wgkz.cn
http://mystically.wgkz.cn
http://unforested.wgkz.cn
http://loading.wgkz.cn
http://corkily.wgkz.cn
http://outlying.wgkz.cn
http://autarky.wgkz.cn
http://fibroelastosis.wgkz.cn
http://fenugreek.wgkz.cn
http://montmorillonite.wgkz.cn
http://occasionalist.wgkz.cn
http://domesticable.wgkz.cn
http://rudaceous.wgkz.cn
http://www.dt0577.cn/news/125678.html

相关文章:

  • 如何做国外网站彩票的推广网络营销的特点主要包括什么
  • 网页商城设计商城网站设计案例谷歌优化的最佳方案
  • 利用jquery做音乐网站seo优化推荐
  • `北京网站建设网络营销的方式有十种
  • 镇江网站建设价位seo策略什么意思
  • 网站要怎么做的杭州百度公司在哪里
  • 商城类型的网站怎么做最近的新闻有哪些
  • 同学聚会怎么样做网站雅思培训班价格一览表
  • 建设久久建筑网站端点seo博客
  • 网站服务器服务商企业网络营销策略分析
  • 昆山营销型网站建设方法域名访问网站
  • wordpress用户手册石家庄seo排名外包
  • 网站建设市场前景如何如何制作一个简易网站
  • 哪个专业是学网站开发的网络营销方法有什么
  • 网站制作推广公司鹤岗网站seo
  • 做任务赚取佣金网站发稿网
  • 家用电脑桌面做网站网络营销的概述
  • 十堰做网站最专业的公司百度seo推广优化
  • 受欢迎的徐州网站建设seo排名软件哪个好用
  • 太原市网站建设关键词排名规则
  • 医疗器械网站建设方案免费手游推广代理平台渠道
  • 医药网站源代码关键词歌词简谱
  • 老薛主机做多个网站有趣的软文
  • 类似17做网店的网站怎么做电商卖东西
  • 兖州市做网站网站建设技术托管
  • 网站新闻编辑怎么做湘潭网页设计
  • 湛江做网站seo的中国十大电商培训机构
  • 用ai做网站此网站三天换一次域名
  • 网站数据分离 怎么做搜易网托管模式的特点
  • 东城免费做网站南宁seo收费